控制符

输出重定向 > >>

order1 > file1 将 order1 返回的内容覆盖写入 file1 中。

order1 >> file1 将 order1 返回的内容追加写入 file1 中。

管道符 |

order1 | order2 将 命令1 执行的结果返回给 命令2 作为输入。

常用和 grep 一起用。

权限概念

权限表示

文件或者目录的权限表示: r-xr-xr-x 每三位一组,分别表示 user group others 所属的权限。

u (user) 表示该文件的拥有者,g (group) 表示与该文件的拥有者属于同一个群体者,o (others) 表示其他以外的人,a (all) 表示这三者皆是。

一组的三位表示权限的意思分别是:r (read) 读取,w (write) 写入,x (executable) 执行,- 表示没有此项权限。文件和目录对于权限的解释是不同的。


文件:注意拥有文件的 w 权限不代表可以删除文件。要删除文件需要有当前目录的 w 权限才可以。

目录:r 表示可以 ls 查看目录内容。w 表示可以删除新增重命名新目录或文件。x 表示可以进入当前目录。

chmod 改变权限

change mode 改变模式,用来改变文件的权限。

  • 权限作用人 [who] 分为:u (user) 表示该文件的拥有者,g (group) 表示与该文件的拥有者属于同一个群体者,o (others) 表示其他以外的人,a (all) 表示这三者皆是。

  • 权限 [mode] 分为:r (read) 读取,w (write) 写入,x (executable) 执行。

  • 权限操作 [operator] 分为:+ 增加权限,- 取消权限, = 表示唯一设定权限(也就是清除所有权限之后再增加设定权限)
  1. 对指定的用户组进行修改

格式:chmod [who][operator][mode] file

例:chmod u=rw waifu.jpg 命令表示将 waifu.jpg 文件所有者的权限重新设定为只有读写权限。

  1. 对所有用户组进行修改

格式:chmod [OperatorNumber][OperatorNumber][OperatorNumber] file

上面每一个都表示某一个用户组的权限:第一位表示 user 第二位表示 group 第三位表示 others。

[OperatorNumber] 表示将权限符号用数字替代,没有权限用 - 代表,r 4、w 2、x 1,然后相加就是代表的权限。如 7 表示同时拥有读写执行权限。

例:chmod 764 waifu.jpg.

  1. 对文件夹下面的所有文件/目录一起修改权限

chomd -R [OperatorNumber][OperatorNumber][OperatorNumber] -R 递归改变,包括子目录。要慎用此命令。

改变所属用户和组

可以将文件绑定的用户和组进行更改,使用 chown 和 chgrp 命令。

chown 用户 文件/目录 更改绑定用户,加上 -R 则是目录递归修改。

chgrp 组名 文件/目录 更改绑定组,加上 -R 则是目录递归修改。

用户管理

添加切换删除修改查看用户

1
2
useradd 用户名 (功能描述:添加新用户)
useradd -g 组名 用户名 (功能描述:添加新用户到某个组)

添加完用户之后

1
passwd 用户名 (功能描述:设置用户的密码)

可以使用 su 用户名 来切换当前登录的用户 switch user。


userdel 用户名 删除用户


  • usermod -g 用户组 用户名 modify 修改用户所在的用户组

  • cat /etc/passwd 查看所有用户信息。

sudo 管理员权限

一般我们禁止使用 root 账号,给一些重要的普通账号执行管理员命令的权限。这些普通账号想要执行管理员命令的时候,要加上 sudo 关键字。

首先我们需要用 root 账号下发权限给其他账号:修改 /etc/sudoers 文件:

1
2
3
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
Xorex ALL=(ALL) ALL

这样就给普通账户 Xorex 了执行 sudo 的权限,如果想用 root 权限执行命令,则在前面加上 sudo 前缀即可,比如 sudo shutdown


需要注意的是,sudo 不能作用在内嵌命令中(cd、history等),因为 sudo 也是外部程序,只能作用与外部程序,而不是自己所在的 bash。那么这个时候就需要想办法绕过这些内嵌命令(用外部命令实现类似的效果)。或者直接开一个 sudo bash 在里面调用内嵌命令,用完 exit 即可。

用户组

用户组是拥有相同特征的一组用户集合,这里的特征主要指的是 权限。也就是在一个组里面的用户,拥有相同权限。

  • groupadd xxxx 创建用户组

  • groupdel xxxx 删除用户组

  • groupmod -n oldName newName 修改用户组的名字

  • cat /etc/group 查看所有用户组信息。

用户组权限管理

同样可以给用户组 Admin 里面的所有用户授权 sudo 权限:

就是多了一个 % 表示组名。

1
2
3
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
%Admin ALL=(ALL) ALL

搜索查找

find 文件查找

find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件显示在终端。

find [搜索范围] [选项]

  • 搜索范围:不写就是从当前目录开始,写了就是从指定目录开始递归查找。

  • 选项: -xxx xxx 的形式,前面是选项类别,后面是选项参数。比如 find -name "*.txt"

  1. -name "Regex" 按照指定的文件名查找模式查找文件,如果是正则表达式,一定要加双引号 find -name "*.txt"
  2. -user 用户名 查找属于指定用户名所有文件 find -user Xorex
  3. -size +大小 -size -大小 按照指定的文件大小查找文件,单位为:

b —— 块(512 字节)
c —— 字节
w —— 字(2 字节)
k —— 千字节
M —— 兆字节
G —— 吉字节

+ 表示文件大于此大小,- 表示文件小于此大小。找 10 到 15 MB 之内的文件:find / -size +10M -size -15M 这样。

locate 路径匹配

Linux 根据文件路径建立了一个数据库,每天自动更新一次,使用前输入 updatedb 手动更新, locate 命令可以从这个数据库来查找文件和路径,速度很快,但是不支持正则表达式。

命令:locate 关键字 从路径中找含有关键字的,然后返回。

whereis 命令查找

用于查看在环境变量中的命令的位置,whereis vim 就是查找 vim 的地址。

grep 内容查找

grep:Global Regular Expression Print 全局正则匹配打印、用来对文件内容进行正则匹配并打印结果。

grep -n StringPattern FileName -n 是显示匹配字符串行号

ls | grep -n "Hello" 利用管道符去匹配命令返回结果。

压缩包

zip/unzip

  • 压缩:zip 压缩文件名.zip 被压缩文件 或者递归压缩目录,zip -r 压缩文件名.zip 被压缩目录

  • 解压 unzip -d 文件解压目录 压缩文件名.zip -d 用来指定解压位置。

tar 打包

tar 命令用来对文件进行打包,压缩或者解压操作。需要配合各种命令进行操作,格式为:tar -[选项] 压缩文件 源文件/目录

  • -c 创建压缩文件,后面需要写要创建的文件名称,一般后缀是 .tar
  • -x 解压缩文件,后面需要写解压后的文件名称。
  • -t 查看压缩包里都有什么文件。
  • -z 使用 Gzip 压缩或者解压,后缀需要是 .tar.gz
  • -v 显示压缩或者解压的过程,强烈推荐使用。
  • -f 需要被压缩或者解压的文件名,需要被放在最后。
  • -C 指定解压到的目录。

这些命令可以组合操作,比如:

  • 压缩:tar -czvf Xorex.tar.gz Xorex 就是将 Xorex 文件夹使用 Gzip 算法压缩成为 Xorex.tar.gz 压缩文件,如果不使用压缩算法,那么就是单纯的打包文件,不进行压缩。

  • 解压:tar -xzvf Xorex.tar.gz ./tmp 将压缩文件解压到 ./tmp 目录下面。


也可以选择文件进行压缩,只需要后面多写几个源文件即可:

tar -czvf Files.tar.gz file1.txt file2.txt file3.txt 这样三个文件就被打成一个压缩包了。