Skip to content

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/docscp test.txt /home/user/docs
      • 将目录/home/user/olddir及其所有内容复制到目录/home/user/newdircp -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.txtmv test.txt new.txt
      • 将目录/home/user/olddir移动到目录/home/user/newdirmv /home/user/olddir /home/user/newdir

1.4 删除文件

1.4.1 删除文件

  • rm:删除文件或目录
    • 语法:rm [选项] 文件/目录
    • 选项:
      • -c:检查文件是否存在,如果存在则显示确认信息。
      • -d:删除空目录。
      • -f:强制删除,即使文件具有写保护属性。
      • -i:如果要删除的文件或目录存在,则提示用户是否确认。
      • -l:删除链接文件本身,而不是指向的文件。
      • -R:递归删除目录及其所有子目录和文件。
      • -r:递归删除目录及其所有子目录和文件。
      • -v:显示详细的删除操作信息。
    • 示例:
      • 删除文件test.txtrm 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.txtshred 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/emptydirrmdir /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/dir1cd /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.txtless 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)
    • 简易写法:
      • 除了使用完整的权限表示方法外,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)
    • 简易写法:
      • 除了使用完整的权限表示方法外,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 的所有者更改为用户 user1chown user1 test.txt
      • 将文件 test.txt 的所有者和组更改为用户 user1 和组 group1chown 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 [权限掩码]
    • 示例:
      • 设置默认权限掩码为 022umask 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:指定显示的标签,例如UUIDTYPELABEL
      • -L:根据标签名称查找设备。
      • -U:根据UUID查找设备。
      • -p:扫描设备的第一个超级块并打印信息。
      • -g:不触发设备的调度(一般用于安全模式)。
    • 示例:
      • 显示所有块设备的UUID和文件系统类型:blkid
      • 仅显示设备/dev/sda1的UUID:blkid -s UUID -o value /dev/sda1
      • 查找UUID为abcd-1234的设备:blkid -U abcd-1234
  • 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

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-hostnamehostnamectl 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

6.8 包管理

Package Managers