咖啡图片
正在将巧克力泡入咖啡
ntainer" style="display: none">
文章

Linux命令

整理 Linux 命令格式、通配符、grep、wc、管道、tee、常见命令和文件类型判断等命令行基础

Linux命令

命令格式

Unix/Linux 命令的基本格式为 command [options] [arguments]

  1. 命令名称 command:这是执行的指令,例如 lscpmv
  2. 选项或参数 [options]:这些是用来修改命令行为的标志,通常以短选项(单个破折号和一个字母,例如 l)或长选项(两个破折号和一个单词,例如 -all)的形式出现;短选项一般可以组合使用
  3. 操作对象 [arguments]:这是命令要操作的文件、目录或其他对象

这个格式其实是文档编写和命令行工具帮助文档中的一种常见约定:

  • command:表示命令名称,必选项,执行的命令。
  • [options]:可选项,表示命令的选项参数。
  • :必选项,表示命令的操作对象或参数。
  • [argument]:可选项,表示可选的操作对象或参数。
  • {choice1choice2choice3}:必选项,表示在给定选项中选择一个。
  • -long-option:表示长选项,通常用于详细说明命令的功能。
  • option: 表示短选项,通常是长选项的首字母或缩写。
  • …:表示可以重复的参数或选项,表示多个相同类型的参数。

通配符

Linux 命令行支持一系列的通配符,常见的通配符如下

  1. 星号(*):匹配零个或多个字符。例如 *.txt 会匹配所有以 .txt 结尾的文件。

  2. 问号(?):匹配任意单个字符。例如 ?.txt 会匹配所有单个字符后跟 .txt 的文件,如 a.txt,但不会匹配 ab.txt

  3. 方括号([ ]):
    1. 匹配方括号中的任意单个字符。例如,file[1-3].txt 会匹配 file1.txtfile2.txtfile3.txt
    2. 可以包含字符范围,如 [a-z] 匹配任意小写字母,[0-9] 匹配任意数字。
    3. 通过使用 !^ 在方括号内部的第一个位置,可以表示不匹配这个集合中的字符。例如,file[!0-9].txt 匹配不含数字开头的文件名后跟 .txt
  4. 花括号({ }):
    1. 匹配花括号内的字符串中的任意一项。例如,file{1,2,3}.txt 会匹配 file1.txtfile2.txtfile3.txt
    2. 也可以用来创建序列,如 {a..z}{1..10}
  5. 反斜线(\\):用于转义特殊字符,使之成为字面量。例如,\\?[] 需要在命令行中用 \\ 来转义,如 \\* 表示字面量星号而不是通配符。

复杂命令

  1. grep:grep(Global Regular Expression Print)是用于搜索文件中匹配给定模式的行的工具,支持正则表达式,允许复杂的搜索模式,功能强大。基本用法是 grep 'pattern' filename 在文件中搜索匹配 pattern 的行,并将其打印出来。例如,grep -i 'error' logfile.txt 会搜索 logfile.txt 中所有包含“error”(不区分大小写)的行。
    • 常用选项:
      • i:忽略大小写。
      • v:反向匹配,即显示不匹配的行。
      • c:统计匹配行的数量。
      • n:显示匹配行的行号。
      • r:递归地搜索目录中的所有文件。
  2. wc:(Word Count)用于计算文本的行数、词数或字节数。基本用法是 wc [options] [file]。例如,wc -l filename.txt 将输出 filename.txt 中的行数。
    • 常用选项:
      • l:仅计算行数。
      • w:仅计算词数。
      • m:仅计算字数。
      • c:仅计算字节数。
  3. 管道符 |:用于将一个命令的输出作为另一个命令的输入,这使得用户可以将多个简单的命令链接起来,执行复杂的任务。管道符的基本语法为:command1 | command2command1 的输出会直接传递给 command2 作为输入。

    使用技巧

    1. 组合多个命令:可以使用管道符将多个命令串联起来,比如你可以使用 grep 来过滤 ls 的输出,然后用 sort 来排序结果。ls -l | grep ".txt" | sort

    2. 高级过滤:利用 grep 命令进行正则表达式匹配,筛选出符合特定模式的行。dmesg | grep -i error

    3. 文本处理:利用 awksed 这样的文本处理工具,可以对数据进行更复杂的处理。例如,提取文本中的特定列并排序。

      cat data.txt | awk '{print $2}' | sort | uniq

    4. 使用 tee 命令同时输出到文件和屏幕:tee 是三通管道,tee 命令读取标准输入,将内容写入文件,并同时输出到标准输出。ls -l | tee output.txt | grep "config"

常见 Linux / Unix 命令

常见命令包括 cdlsmkdirtouchrmcpmvechocatgrepchmodsudodfps。其中 cat 用来连接并打印文件内容,grep 用来在文件中搜索指定模式,df 用来显示可用磁盘空间,ps 用来显示正在运行的进程信息。

grep 的基本用法是从文件或输入中查找匹配内容。例如 grep "error" log.txt 表示在 log.txt 中查找包含 error 的行,grep -r "main" ./src 表示在 src 目录及其子目录中递归搜索 maingrep 常见选项中,-n 显示行号,-i 忽略大小写,-v 反向匹配,-r 递归搜索目录,-l 只显示文件名不显示具体匹配内容,-c 统计匹配行数,-E 使用扩展正则表达式,-w 匹配完整单词,-o 只输出匹配到的部分而不是整行。

df -h 可以用人类可读的格式显示磁盘使用情况,也可以在后面接路径,用来查看指定目录所在分区的磁盘空间。ps aux 可以查看所有进程的详细信息,其中 aux 是 BSD 风格参数,可以理解为 aux 三个参数合在一起。ps -e 也可以显示所有进程,ps -f 显示完整格式,ps -u 可以查看某个用户的进程,ps -p 可以查看指定 PID 的进程。实际使用中,ps aux 经常配合 grep 查找进程,例如 ps aux | grep nginx,意思是先列出所有进程,然后从中搜索 nginx,可以用来查看某个程序是否正在运行。

在 Linux / Unix 命令里,参数风格大致可以分为 System V / POSIX 风格和 BSD 风格。System V / POSIX 风格通常带短横线,例如 -e-f;BSD 风格通常不带短横线,例如 aux

文件判断时经常会遇到“普通文件”这个概念。普通文件就是我们平时说的正常文件,里面存数据内容,可以读写,比如脚本、文本、图片、二进制程序等。set_sdk.shmain.cppREADME.mdimage.pnga.out 通常都属于普通文件。与普通文件相对的还有目录,例如 /home/user/project;符号链接,例如 link_to_file;设备文件,例如 /dev/null;管道文件 FIFO;以及用于进程间通信的 socket。

本文由作者按照 CC BY 4.0 进行授权
/body>