alin的学习之路(Linux系统编程:二)(压缩、文件权限、vim)
1.压缩和解压命令
- tar.gz
- 压缩:tar -cvf 压缩包名 文件名
- 解压:tar -xvf 压缩包名 -C 解压到的路径
- tar.bz2
- 压缩:tar -cjf 压缩包名 文件名
- 解压:tar -xjf 压缩包名 -C 解压到的路径
- zip
- 如果电脑没有zip需要下载
sudo apt install zip
- 压缩:zip 压缩包名(无后缀)文件名
- 解压:unzip 压缩包名(可无后缀) -d 解压到的路径
- 如果电脑没有zip需要下载
2.用户和用户组相关命令
- 用户操作
- 创建用户
- adduser 用户名
- 如果创建用户成功,会在家目录下创建和用户名相同的目录。并且在 /etc/passwd 目录里添加一条新用户信息。信息如下:
- newuser:x1003:1007:,:/home/newuser:/bin/bash
- newuser 用户名
- x 表示密码,不可见。
- 1003 表示用户ID,唯一。
- 1007 表示用户所在组,组ID,唯一。
- 组ID后面的内容表示解释说明的内容
- /home/newuser 表示该用户的家目录
- /bin/bash 指定该用户用的是哪个命令解析器
- 删除用户
- sudo deluser 用户名:只删除用户,不删除该用户的家目录
- sudo userdel -r 用户名:删除用户的同时删除该用户的家目录
- 切换用户
- su 用户名:仅切换为该用户
- su - 用户名:切换为该用户并定位到该用户的家目录
- 修改用户密码
- sudo passwd 用户名
- 退出用户
- exit退出当前用户切换到上一个用户
- 如果当前用户是登陆终端的第一个用户,则退出终端
- 查看当前用户
- whoami
- 创建用户
- 组操作
- 创建组
- sudo addgroup 组名
- 删除组
- sudo delgroup 组名
- 修改一个用户组
- groups 用户名:查看该用户所属的主组和附加组信息
- 修改用户主组:usermod -g 组名 用户名
- 修改用户附加组
- 指定新的附加组,原附加组舍弃:usermod -G 组名 用户名
- 在原附加组的基础上追加新的附加组:usermod -aG 组名 用户名
- 创建组
- 主组和附加组的用途
- 每个文件或目录在创建的时候都会有一个主组
- 每个文件都会有同个主组和附加组下其他用户的权限
- 举例:如果你所在的组对某个文件具有权限,那么你相应也具有对该文件的权限。
3.文件和目录权限相关命令
-
权限的组成
- 权限对象:文件和目录
- 针对三种目录:普通用户,同一用户组的用户,其他用户
- 读(r)、写(w)、执行(x)
-
Linux中文件和目录的默认权限
- 文件默认权限:rw-rw-r,664
- 目录默认权限:rwxrwxr-x,775
-
umask掩码
- umask命令查看掩码,默认0002
- 文件创建时的默认权限:默认最高权限-掩码
-
修改文件和目录的权限
- 字母法
- u代表所属用户,g代表用户组,o代表其他用户,a代表全部用户,+代表增加权限,-代表减少权限
- 例如:
chmod u-x,g+x,o+wx a.txt
- 数字法
- 每一组权限用八进制表示 421
- r 是 4 ,w 是 2 ,x 是 1
- 再将三组权限拼起来组成一个三位数
- 例如:
chmod 654 a.txt
- 字母法
-
修改文件的所有者和所属用户组
-
修改所有用户:chown 用户 文件名
-
修改所属用户组:chgrp 组名 文件名
-
4.管道
-
管道符:|
-
管道是一个命令,可以将前一个命令的输出作为第二个命令的输入
-
例如:把 ls 的结果分屏显示:ls -al | more
5.重定向
-
命令的输出结果默认打印到屏幕上,可以通过重定向将结果输入到文件中
-
重定向的语法
>
当命令的执行结果重定向到文件中,如果文件有内容,则先删除。>>
当命令的执行结果将内容追加到文件尾部。
-
例如:ls -al > a.txt
-
用一个命令实现将键盘键入写入文件:
cat > a.txt
6. echo和witch命令
-
witch查看命令的路径
- which ls:输出:/usr/bin/ls
-
echo 向屏幕输出内容
- 输出一个字符串:echo “hello world”
- 输出一个变量的值:echo $PATH
-
env
- 输出环境变量
- 输出环境变量中的变量的值:echo $XXX
- 其中最重要的PATH路径:当执行命令时,命令解析器会在PATH中存的路径中去找该程序,如果有该程序,执行;如果没有该程序则报错
- 在PATH中添加路径:
export PATH=$PATH:/xxxx/
,例如:export PATH=$PATH:/home/itcast
7.vim命令
-
vim的三种模式:
- 命令模式:拷贝、剪切、移动光标、删除内容,内容缩进……
- 编辑模式:对文件的内容进行编辑
- 末行模式:退出,保存,关闭,执行一些命令,查找,替换,分屏……
-
三种模式的切换:
- 命令模式->编辑模式:i;a;s;o
- 编辑模式->命令模式:ESC
- 命令模式->末行模式:
:
- 末行模式->命令模式:ESC
-
进入vim编辑器:vim 文件名:如果存在该文件则编辑该文件,如果不存在则创建
-
末行操作模式:
- w+回车:保存文件
- wq+回车:保存并退出
- q+回车:退出
- q!+回车:强制退出,不保存
-
vimplus 插件包的安装
- 执行命令:git clone https://github.com/chxuan/vimplus.git
- cd ./vimplus
- sudo ./install.sh
-
工作管理
- 当正在vim中编辑时,首先切到命令模式,再按Ctrl+Z即可将本任务挂到后台
- 使用jobs命令即可查看后台的任务
- 使用命令fg+任务号即可将指定任务调到前台
思考
- 如何将一个任务放在后台运行?如何将一个后台任务恢复到前台?
- 按Ctrl+Z
- 用jobs命令可以查看挂载到后台的任务,使用fg+任务号即可恢复指定任务到前台
- 什么是管道?管道有什么用?如何实现只查看 ls 结果前 5 行内容?
- 管道是一个命令,可以将一个命令的输出作为另一个命令的输出
- ls | head -5
- 如何使用cat 命令向文件中输入内容?
- cat > xxx.txt 截断写文件
- cat >> xxx.txt 追加文件
- 如何打印 PATH 环境变量的值?PATH 有什么用,至少举一个例子。
- echo $PATH
- PATH变量中存的是可执行文件的路径,在命令行输入一个命令,会先在PATH中的路径中搜索有没有这个程序,如果有这个程序的话则执行该程序,如果没有则执行
- 例如:/usr/bin下的 ls 即是在PATH中保存了/usr/bin
- 存储用户信息的文件是那个文件? /etc/passwd
- 存储组信息的文件是那个文件? /etc/group
- 哪些命令可以实现文件解压缩?
- 解压tar.gz文件:ar -xcf 压缩包名 -C 解压到的路径
- 解压tar.bz2文件:tar -xjf 压缩包名 -C 解压到的路径
- 解压zip文件:unzip 压缩包名 -d 解压到的路径
- 如何从当前用户切换到其他用户?
- su 用户名:仅切换用户
- su - 用户名:切换用户且定位到该用户的家目录
- tar -cvf 命令压缩文件的扩展名是什么? tar.gz
- tar -cjf 命令压缩文件的扩展名是什么? tar.bz2
- 对于目录而言,读写执行权限分别代表什么含义?
- 读权限:对目录进行ls,tree等操作
- 写权限:在该目录内touch,mkdir等
- 执行权限:进入到该目录 cd
- Linux 默认的文件的最大权限是什么?默认的目录最大权限是什么?umask 是什么?有什么用?
- 文件默认最大权限:rw-rw-r–,664
- 目录默认最大权限:rwxrwxr-x,775
- umask是掩码,创建文件或目录的时候文件的默认权限是:最大权限-掩码