Linux Basic Command
字数
7035 字
阅读时间
30 分钟
1 文件管理
1.1 创建文件
- touch:创建空文件
- 语法:
touch [选项] 文件名
- 选项:
-c
:检查文件是否存在,如果存在则不创建。-d
:设置文件的时间戳。-f
:强制创建文件,即使同名文件已存在。-m
:设置文件的时间戳为修改时间。-r
:设置文件的时间戳为引用时间。-t
:设置文件的时间戳。
- 示例:
- 创建名为
test.txt
的空文件:touch test.txt
- 创建名为
test.txt
的空文件,并设置其时间戳为2024年4月17日10:08:00:touch -d "2024-04-17 10:08:00" test.txt
- 创建名为
- 语法:
1.2 复制文件
- cp:复制文件或目录
- 语法:
cp [选项] 源文件 目标文件/目录
- 选项:
-a
:保留源文件的属性、时间戳和权限。-b
:保留源文件的块大小。-f
:强制复制,即使目标文件已存在。-i
:如果目标文件已存在,则提示用户是否覆盖。-l
:创建硬链接。-p
:保留源文件的目录层次结构。-r
:递归复制,即复制源目录及其所有子目录和文件。-s
:创建符号链接。-t
:将所有源文件都复制到指定的目标目录中。-u
:更新目标文件,如果目标文件比源文件更新,则不进行复制。-v
:显示详细的复制进度信息。
- 示例:
- 将文件
test.txt
复制到目录/home/user/docs
:cp test.txt /home/user/docs
- 将目录
/home/user/olddir
及其所有内容复制到目录/home/user/newdir
:cp -r /home/user/olddir /home/user/newdir
- 创建文件
test2.txt
并使其内容与文件test.txt
相同:cp -i test.txt test2.txt
- 将文件
- 语法:
1.3 移动文件
- mv:移动或重命名文件或目录
- 语法:
mv [选项] 源文件/目录 目标文件/目录
- 选项:
-a
:保留源文件的属性、时间戳和权限。-b
:保留源文件的块大小。-f
:强制移动,即使目标文件已存在。-i
:如果目标文件已存在,则提示用户是否覆盖。-l
:创建硬链接。-n
:为重命名操作指定一个新的文件名。-p
:保留源文件的目录层次结构。-r
:递归移动,即移动源目录及其所有子目录和文件。-s
:创建符号链接。-t
:将所有源文件都移动到指定的目标目录中。-u
:更新目标文件,如果目标文件比源文件更新,则不进行移动。-v
:显示详细的移动操作信息。
- 示例:
- 将文件
test.txt
重命名为new.txt
:mv test.txt new.txt
- 将目录
/home/user/olddir
移动到目录/home/user/newdir
:mv /home/user/olddir /home/user/newdir
- 将文件
- 语法:
1.4 删除文件
1.4.1 删除文件
- rm:删除文件或目录
- 语法:
rm [选项] 文件/目录
- 选项:
-c
:检查文件是否存在,如果存在则显示确认信息。-d
:删除空目录。-f
:强制删除,即使文件具有写保护属性。-i
:如果要删除的文件或目录存在,则提示用户是否确认。-l
:删除链接文件本身,而不是指向的文件。-R
:递归删除目录及其所有子目录和文件。-r
:递归删除目录及其所有子目录和文件。-v
:显示详细的删除操作信息。
- 示例:
- 删除文件
test.txt
:rm test.txt
- 删除目录
/home/user/dir
及其所有内容:rm -rf /home/user/dir
- 删除所有名为
test.txt
的文件:rm -rf test.txt
- 删除文件
- 语法:
1.4.2 安全删除文件
- shred:安全删除文件,使其无法恢复
- 语法:
shred [选项] 文件名
- 选项:
-c
:指定要擦写的遍数。默认情况下,擦写三遍。-f
:强制删除,即使文件具有写保护属性。-s
:擦写文件内容,但不删除文件。-u
:删除文件后,立即释放磁盘空间。-v
:显示详细的删除操作信息。
- 示例:
- 安全删除文件
test.txt
:shred test.txt
- 安全删除文件
test.txt
并立即释放磁盘空间:shred -u test.txt
- 安全删除文件
- 语法:
2 目录管理
2.1 创建目录
- mkdir:创建目录
- 语法:
mkdir [选项] 目录名
- 选项:
-m
:设置目录的权限。-p
:创建必要的父目录。-v
:显示详细的创建目录信息。
- 示例:
- 创建名为
docs
的目录:mkdir docs
- 创建目录
/home/user/newdir
,并使其权限为755:mkdir -m 755 /home/user/newdir
- 创建目录
/home/user/dir1/dir2/dir3
,如果父目录不存在则自动创建:mkdir -p /home/user/dir1/dir2/dir3
- 创建名为
- 语法:
2.2 删除目录
- rmdir:删除空目录
- 语法:
rmdir [选项] 目录名
- 选项:
-p
:递归删除空目录。-v
:显示详细的删除目录信息。
- 示例:
- 删除目录
/home/user/emptydir
:rmdir /home/user/emptydir
- 递归删除目录
/home/user/dir1/dir2/dir3
, 从最深层向上删除空文件夹,找到非空文件夹时停止rmdir -p /home/user/dir1/dir2/dir3
- 删除目录
- 语法:
2.3 更改目录
- cd:更改当前工作目录
- 语法:
cd [选项] [目录]
- 选项:
-
:切换到上一个工作目录。~
:切换到用户目录。-L
:使用符号链接而不是实际路径。-P
:使用实际路径而不是符号链接。-v
:显示详细的更改目录信息。
- 示例:
- 更改到根目录:
cd /
- 更改到用户目录:
cd ~
- 更改到目录
/home/user/dir1
:cd /home/user/dir1
- 切换到上一个工作目录:
cd -
- 更改到根目录:
- 语法:
3 文本处理
3.1 查看文本文件内容
- cat:显示文件内容
- 语法:
cat [选项] 文件名
- 选项:
-A
:显示所有非打印字符,包括换行符。-E
:显示 $ 结束符。-n
:显示行号。-s
:替换多个连续空白字符为单个空格。-t
:显示制表符。-u
:将不可打印字符转换为转义序列。-v
:显示所有非打印字符,包括制表符和换行符。
- 示例:
- 显示文件
test.txt
的内容:cat test.txt
- 显示文件
test.txt
的内容,并显示行号:cat -n test.txt
- 显示文件
test.txt
的内容,并替换多个连续空白字符为单个空格:cat -s test.txt
- 显示文件
- 语法:
3.2 搜索文本文件
- grep:在文本文件中搜索字符串
- 语法:
grep [选项] 模式 文件名
- 选项:
-c
:统计匹配的行数。-i
:忽略大小写。-l
:只显示包含匹配内容的文件名。-n
:显示匹配行号。-o
:只显示匹配的模式。-p
:打印包含匹配内容的整个行。-r
:递归搜索目录及其子目录中的文件。-v
:显示不包含模式的行。-x
:完全匹配模式。-y
:不区分大小写和换行符。-e
:指定要搜索的模式。-f
:从指定的文件中读取要搜索的模式。
- 示例:
- 在文件
test.txt
中搜索字符串“hello”:grep "hello" test.txt
- 忽略大小写并显示匹配行号:
grep -i -n "hello" test.txt
- 使用管道符将
grep
命令与其他命令结合使用:ping google.com | grep "bytes from"
- 在文件
- 常见选项:
-c
:统计匹配的行数-i
:忽略大小写-n
:显示匹配行号-v
:显示不包含模式的行-E
:支持扩展正则表达式-F
:将模式视为固定字符串
- 语法:
3.3 编辑文本文件
- vim:功能强大的文本编辑器
- 语法:
vim [选项] 文件名
- 选项:
-n
:以新文件方式打开指定的文件。-r
:以只读方式打开指定的文件。-t
:以缩排模式打开指定的文件。-u
:以无底线模式打开指定的文件。-V
:显示版本信息。
- 常用模式:
- 正常模式:用于输入文本和移动光标。在正常模式下,键入的字符将被解释为命令,而不是文本。要进入正常模式,请按 Esc 键。
- 插入模式:用于在光标所在位置插入文本。在插入模式下,键入的字符将被插入到文本中。要进入插入模式,请按 i、a、o 等键。
- 命令行模式:用于执行命令。在命令行模式下,键入的字符将被解释为命令。要进入命令行模式,请按 : 键。
- 常用命令:
i
: 进入插入模式。a
: 进入插入模式,并追加到文件末尾。o
: 进入插入模式,并从新行开始。:wq
: 保存并退出。:q!
: 退出而不保存。dd
: 删除当前行。p
: 粘贴剪贴板中的内容。y
: 复制剪贴板中的内容。u
: 撤销上一次操作。r
: 重做上一次撤销的操作。/pattern
: 搜索指定模式。n
: 向下查找下一个匹配项。N
:向上查找下一个匹配项。:set nu
: 显示行号。:set nonu
: 隐藏行号。
- 语法:
3.4 其他文本处理工具
less:用于逐页查看文本文件。
- 语法:
less [选项] 文件名
- 选项:
-F
:强制显示所有控制字符。-N
:显示行号。-S
:将长行分成多行显示。-c
:显示统计信息,包括总行数、当前行数和百分比。-M
:显示当前页面的元信息,包括文件名、当前行号和总行数。-h
:显示帮助信息。
- 示例:
- 查看文件
test.txt
:less test.txt
- 使用方向键和空格键控制翻页,使用
q
键退出。
- 查看文件
- 语法:
head:显示文件开头的内容。
- 语法:
head [选项] 文件名
- 选项:
-c
:以字节数为单位显示内容。-n
:以行数为单位显示内容。-q
:不显示标题信息。-v
:显示详细的版本信息。
- 示例:
- 显示文件
test.txt
的前 10 行:head -n 10 test.txt
- 显示文件
test.txt
的前 100 个字节:head -c 100 test.txt
- 显示文件
- 语法:
tail:显示文件结尾的内容。
- 语法:
tail [选项] 文件名
- 选项:
-c
:以字节数为单位显示内容。-f
:跟随文件,即实时显示新添加的内容。-n
:以行数为单位显示内容。-q
:不显示标题信息。-v
:显示详细的版本信息。
- 示例:
- 显示文件
test.txt
的最后 10 行:tail -n 10 test.txt
- 实时显示文件
test.txt
的结尾内容:tail -f test.txt
- 显示文件
- 语法:
4 网络工具
4.1 测试网络连接
- ping:测试主机到网络目标的连通性。
- 语法:
ping [选项] 主机名/IP地址
- 选项:
-c
:指定要发送的回显请求数。-i
:指定回显请求之间的间隔时间(单位:秒)。-s
:指定回显请求的数据包大小(单位:字节)。-t
:指定等待回复的超时时间(单位:秒)。-v
:显示详细的输出信息。
- 示例:
- 测试到主机
www.google.com
的连通性:ping www.google.com
- 发送 10 个回显请求,并指定回显请求之间的间隔时间为 1 秒:
ping -c 10 -i 1 www.google.com
- 测试到主机
- 语法:
4.2 查看网络信息
- ifconfig:显示网络接口信息。
- 语法:
ifconfig [选项]
- 选项:
-a
:显示所有网络接口,包括未活动的接口。-d
:显示已关闭的接口。-l
:显示详细的接口信息。-m
:显示接口的 MAC 地址。-v
:显示详细的输出信息。
- 示例:
- 显示所有网络接口的信息:
ifconfig -a
- 显示所有网络接口的信息:
- 语法:
4.3 其他网络工具
- netstat:显示网络连接和路由表信息。
- dig:查询域名服务器的信息。
- nslookup:查询域名服务器的信息。
- curl:用于传输数据。
- wget:从网络下载文件。
5 权限管理
5.1 查看文件/目录权限
- ls:列出文件或目录的信息,包括权限信息。
- 语法:
ls [选项] [文件/目录]
- 选项:
-l
:显示详细的文件信息,包括权限信息。-d
:显示目录的信息,而不是目录中的内容。-R
:递归列出目录及其所有子目录的内容。--help
:显示帮助信息。--version
:显示版本信息。
- 示例:
- 显示当前目录下所有文件和目录的详细信息,包括权限信息:
ls -l
- 显示目录
/home/user/dir
及其所有内容的详细信息,包括权限信息:ls -lR /home/user/dir
- 显示当前目录下所有文件和目录的详细信息,包括权限信息:
5.2 更改文件权限
- chmod:更改文件或目录的权限。在Linux/Unix系统中,每个文件或目录都拥有三个级别的访问权限:用户(u)、组(g)和其他(o)。每个级别又可以细分为读(r)、写(w)和执行(x)三种权限
- 语法:
chmod [选项] 权限 文件/目录
- 示例:
- 将文件
test.txt
的权限改为 755:chmod 755 test.txt
- 将目录
/home/user/dir
及其所有内容的权限改为 700:chmod -R 700 /home/user/dir
- 将文件
- 常见选项:
-c
:仅当文件权限发生更改时才显示信息-f
:抑制错误消息的输出-R
:递归处理指定目录下的所有文件和子目录-v
:显示详细的权限变更信息--help
:显示帮助信息--version
:显示版本信息
- 权限表示方法:
- 符号模式
rwx
: 用户拥有读、写、执行权限--x
: 组拥有执行权限,其他用户无任何权限
- 八进制模式(使用八进制数字来表示权限,每个数字代表一个权限)
- 4:读权限
- 2:写权限
- 1:执行权限
- 例如:755 表示用户拥有所有权限,组拥有读、执行权限,其他用户拥有读、执行权限
- 计算不同权限:
- 权限数字的计算方法是将每个权限的数字相加。例如,755 的计算方法如下:
- 用户权限:7 = 4 + 2 + 1
- 组权限:5 = 4 + 1
- 其他用户权限:5 = 4 + 1
- 也可以使用位掩码来计算权限,例如
chmod u=rw,g=rx,o=x test.txt
表示将文件test.txt
的权限设置为:- 用户:rw (4 + 2 = 6)
- 组:rx (4 + 1 = 5)
- 其他用户:x (1)
- 权限数字的计算方法是将每个权限的数字相加。例如,755 的计算方法如下:
- 简易写法:
- 除了使用完整的权限表示方法外,
chmod
命令还支持一些简易写法,例如:+
:添加权限-
:删除权限=
:设置权限- 例如
chmod +w test.txt
表示将文件test.txt
的写权限授予所有用户chmod -x test.txt
表示从文件test.txt
中删除所有用户的执行权限chmod u=rwx,g=rx test.txt
表示设置文件test.txt
的用户权限为 rwx,组权限为 rx
- 除了使用完整的权限表示方法外,
- 符号模式
5.3 更改目录权限
- chmod:更改文件或目录的权限。在Linux/Unix系统中,每个文件或目录都拥有三个级别的访问权限:用户(u)、组(g)和其他(o)。每个级别又可以细分为读(r)、写(w)和执行(x)三种权限
- 语法:
chmod [选项] 权限 文件/目录
- 示例:
- 将目录
/home/user/dir
的权限改为 755:chmod 755 /home/user/dir
- 将目录
/home/user/dir
及其所有内容的权限改为 700:chmod -R 700 /home/user/dir
- 将目录
- 常见选项:
-c
:仅当文件权限发生更改时才显示信息-f
:抑制错误消息的输出-R
:递归处理指定目录下的所有文件和子目录-v
:显示详细的权限变更信息--help
:显示帮助信息--version
:显示版本信息
- 权限表示方法:
- 符号模式
rwx
: 用户拥有读、写、执行权限--x
: 组拥有执行权限,其他用户无任何权限
- 八进制模式(使用八进制数字来表示权限,每个数字代表一个权限)
- 4:读权限
- 2:写权限
- 1:执行权限
- 例如:755 表示用户拥有所有权限,组拥有读、执行权限,其他用户拥有读、执行权限
- 计算不同权限:
- 权限数字的计算方法是将每个权限的数字相加。例如,755 的计算方法如下:
- 用户权限:7 = 4 + 2 + 1
- 组权限:5 = 4 + 1
- 其他用户权限:5 = 4 + 1
- 也可以使用位掩码来计算权限,例如
chmod u=rw,g=rx,o=x test.txt
表示将文件test.txt
的权限设置为:- 用户:rw (4 + 2 = 6)
- 组:rx (4 + 1 = 5)
- 其他用户:x (1)
- 权限数字的计算方法是将每个权限的数字相加。例如,755 的计算方法如下:
- 简易写法:
- 除了使用完整的权限表示方法外,
chmod
命令还支持一些简易写法,例如:+
:添加权限-
:删除权限=
:设置权限- 例如
chmod +w test.txt
表示将文件test.txt
的写权限授予所有用户chmod -x test.txt
表示从文件test.txt
中删除所有用户的执行权限chmod u=rwx,g=rx test.txt
表示设置文件test.txt
的用户权限为 rwx,组权限为 rx
- 除了使用完整的权限表示方法外,
- 符号模式
5.4 更改文件所有者
- chown:更改文件或目录的所有者和组
- 语法:
chown [选项] [所有者][:组] 文件/目录
- 选项:
-c
:仅当文件的所有者或组发生更改时才显示信息。-f
:抑制错误消息的输出。-R
:递归更改指定目录下的所有文件和子目录的所有者和组。-v
:显示详细的所有者和组变更信息。--help
:显示帮助信息。--version
:显示版本信息。
- 示例:
- 将文件
test.txt
的所有者更改为用户user1
:chown user1 test.txt
- 将文件
test.txt
的所有者和组更改为用户user1
和组group1
:chown user1:group1 test.txt
- 递归更改目录
/home/user/dir
及其所有内容的所有者和组:chown -R user1:group1 /home/user/dir
- 将文件
- 语法:
5.5 设置粘滞位和setuid/setgid位
- chmod:更改文件或目录的权限。
- 语法:
chmod [选项] 权限 文件/目录
- 选项:
-c
:仅当文件权限发生更改时才显示信息。-f
:抑制错误消息的输出。-R
:递归处理指定目录下的所有文件和子目录。-v
:显示详细的更改信息。--help
:显示帮助信息。--version
:显示版本信息。
- 权限表示方法:
- 粘滞位(s):只有文件的所有者才能删除或重命名该文件,即使拥有写权限的其他用户也不能。
5.6 修改文件权限掩码
- umask:设置默认权限掩码,影响新创建文件和目录的权限
- 语法:
umask [权限掩码]
- 示例:
- 设置默认权限掩码为
022
:umask 022
- 计算权限掩码:
- 默认情况下,新文件的权限为
666
(rw-rw-rw-),目录的权限为777
(rwxrwxrwx)。 - umask 会从这些权限中减去设置的掩码值。例如,umask 设置为
022
,则新文件的权限为644
(rw-r--r--),目录的权限为755
(rwxr-xr-x)。
- 默认情况下,新文件的权限为
- 设置默认权限掩码为
- 语法:
6 系统管理
6.1 查看磁盘使用情况
- df:显示文件系统的磁盘空间使用情况。
- 语法:
df [选项]
- 选项:
-h
:以人类可读的格式显示。-T
:显示文件系统类型。-i
:显示inode使用情况。-a
:显示所有文件系统,包括大小为0的文件系统。-t
:显示指定类型的文件系统。--total
:显示总使用量。
- 示例:
- 以人类可读的格式显示所有文件系统的磁盘使用情况:
df -h
- 显示所有文件系统的磁盘使用情况,包括大小为0的文件系统:
df -a
- 以人类可读的格式显示所有文件系统的磁盘使用情况:
- 语法:
6.2 查看和管理磁盘分区
blkid:查看块设备的UUID和文件系统类型等信息。
- 语法:
blkid [选项] [设备]
- 常用选项:
-o
:指定输出格式,例如value
(仅值)、full
(详细格式)。-s
:指定显示的标签,例如UUID
、TYPE
、LABEL
。-L
:根据标签名称查找设备。-U
:根据UUID查找设备。-p
:扫描设备的第一个超级块并打印信息。-g
:不触发设备的调度(一般用于安全模式)。
- 示例:
- 显示所有块设备的UUID和文件系统类型:
blkid
- 仅显示设备
/dev/sda1
的UUID:blkid -s UUID -o value /dev/sda1
- 查找UUID为
abcd-1234
的设备:blkid -U abcd-1234
- 显示所有块设备的UUID和文件系统类型:
- 语法:
lsblk:显示块设备的信息,包括磁盘分区。
- 语法:
lsblk [选项]
- 选项:
-a
:显示所有设备,包括没有被挂载的设备。-f
:显示文件系统类型。-l
:显示所有设备信息,以列表形式展示。-n
:不显示标题行。-o
:指定输出列,例如NAME,SIZE,TYPE,MOUNTPOINT
。-p
:显示完整路径。-r
:显示只读设备。-t
:以树形结构显示。-d
:仅显示磁盘,不显示分区。
- 示例:
- 显示所有块设备的信息:
lsblk
- 显示块设备的详细信息,包括文件系统类型:
lsblk -f
- 以树形结构显示块设备的信息:
lsblk -t
- 显示所有块设备的信息:
- 语法:
6.3 管理引导加载器
- efibootmgr:管理EFI引导项。
- 语法:
efibootmgr [选项]
- 常用选项:
-v
:显示详细信息。-b
:指定引导项编号。-B
:删除指定引导项。-c
:创建新引导项。-n
:设置下次启动时使用的引导项编号。-o
:设置引导顺序。-t
:设置超时时间。
- 示例:
- 显示所有EFI引导项:
efibootmgr
- 删除引导项编号为0001的引导项:
efibootmgr -b 0001 -B
- 设置下次启动时使用的引导项编号为0003:
efibootmgr -n 0003
- 设置引导顺序为0001, 0002, 0003:
efibootmgr -o 0001,0002,0003
- 显示所有EFI引导项:
- 语法:
6.4 查看系统信息
uname:显示系统信息。
- 语法:
uname [选项]
- 选项:
-a
:显示所有系统信息。-r
:显示内核版本。-n
:显示主机名。-m
:显示系统的硬件架构类型。
- 示例:
- 显示所有系统信息:
uname -a
- 显示系统的内核版本:
uname -r
- 显示所有系统信息:
- 语法:
hostnamectl:管理系统的主机名,并查看相关的系统信息。
- 语法:
hostnamectl [选项] 命令
- 常用命令:
status
:显示系统当前的主机名和其他相关信息。set-hostname
:设置系统的主机名。set-icon-name
:设置系统的图标名。set-chassis
:设置系统的机箱类型。set-deployment
:设置系统的部署状态。set-location
:设置系统的位置。
- 示例:
- 显示系统的当前主机名和其他信息:
hostnamectl status
- 设置系统主机名为
my-hostname
:hostnamectl set-hostname my-hostname
- 显示系统的当前主机名和其他信息:
- 语法:
6.5 查看系统日志
- journalctl:查看并管理systemd的日志。
- 语法:
journalctl [选项]
- 选项:
-b
:显示当前启动过程中的日志。-k
:仅显示内核日志。-u
:显示特定服务的日志。-f
:实时显示日志。-p
:过滤指定优先级的日志。
- 示例:
- 显示系统所有日志:
journalctl
- 实时显示系统日志:
journalctl -f
- 显示特定服务(例如
nginx
)的日志:journalctl -u nginx
- 显示系统所有日志:
- 语法:
6.6 管理系统服务
- systemctl:管理systemd的系统服务和资源。
- 语法:
systemctl [选项] 命令
- 常用命令:
start
:启动服务。stop
:停止服务。restart
:重启服务。status
:查看服务状态。enable
:设置服务开机自启。disable
:取消服务开机自启。reload
:重新加载服务的配置文件。is-active
:检查服务是否正在运行。list-units
:列出所有已加载的服务单元。
- 示例:
- 启动
nginx
服务:systemctl start nginx
- 查看
nginx
服务的状态:systemctl status nginx
- 设置
nginx
服务为开机自启:systemctl enable nginx
- 启动
- 语法:
6.7 进程管理
ps:显示当前运行的进程。
- 语法:
ps [选项]
- 选项:
-e
:显示所有进程。-f
:以完整格式显示进程信息。-u
:按用户显示进程。-x
:显示无控制终端的进程。
- 示例:
- 显示所有进程:
ps -e
- 以完整格式显示所有进程信息:
ps -ef
- 显示所有进程:
- 语法:
top:实时显示系统中各个进程的资源占用情况。
- 语法:
top [选项]
- 选项:
-u
:按用户过滤进程。-p
:按进程ID过滤。-d
:设置刷新间隔时间。
- 示例:
- 实时显示系统中各个进程的资源占用情况:
top
- 实时显示系统中各个进程的资源占用情况:
- 语法:
kill:终止进程。
- 语法:
kill [选项] 进程ID
- 选项:
-9
:强制终止进程。-15
:优雅终止进程(默认)。
- 示例:
- 终止进程ID为1234的进程:
kill 1234
- 强制终止进程ID为1234的进程:
kill -9 1234
- 终止进程ID为1234的进程:
- 语法: