常用Linux命令

120 阅读8分钟

在后端开发工作中,经常需要通过Linux命令与服务器打交道,用于寻找日志和排查问题,整理一些常用Linux的用法、参数等,温故知新。

工作目录切换命令

  • pwd

用于显示用户当前所处的工作目录,全称是print working directory。当你在终端中输入 pwd 并按回车键后,终端会输出当前所在目录的绝对路径。这对于确定你正在哪个目录下工作非常有用,特别是在你进行了多次目录切换之后。

  • cd

用于改变当前工作目录的命令。cd 是 "change directory" 的缩写。通过使用 cd 命令,用户可以在文件系统的不同目录之间导航。

回到上一级目录:

cd ..

返回当前用户家目录:

   cd ~
   
  • ls

用于列出目录内容的常用命令。它的名称来源于英文单词 "list",意味着它能展示当前工作目录下的文件和子目录列表。

ls 这是最简单的用法,将列出当前目录下的所有条目,除了那些隐藏的文件和目录(以点 . 开头的)。

ls -a 列出所有文件,包括隐藏文件。

ls -l, -l 选项代表 "long listing format",它将提供更多的文件信息,如权限、所有者、大小、修改时间等。

文本文件编辑命令

  • cat

最常用于显示文本文件的内容,或者向文件追加内容。

显示文件内容:

   cat filename.txt
   

创建文件并输入内容:

   cat > newfile.txt
   

将一个文件的内容追加到另一个文件中:

   cat > newfile.txt
   
  • more

文本较长的时候,可以使用more命令进行阅读。more filename开始显示第一屏,回车显示下一行,空格键显示下一屏。

  • head

用于显示文本文件的开头部分。默认情况下,head命令会显示文件的前10行。使用格式为:head [选项] 文件名。其中,[选项]可以是以下之一:

-n 或 --lines:指定要显示的行数。例如,head -n 20 filename 将显示文件filename的前20行。

+n:从第n行开始显示。例如,head -n +20 filename 将显示从第20行开始的所有行,直到文件结束。

  • tail

用于显示文本文件的末尾部分。默认情况下,tail命令会显示文件最后10行的内容。这个命令对于监控日志文件的变化特别有用,因为它能够实时显示文件新增加的部分。使用格式:tail [选项] 文件名。其中,[选项]可以包括:

-n 或 --lines:指定要显示的行数。例如,tail -n 20 filename 将显示文件filename的最后20行。

+n:从文件中的第n行开始显示。例如,tail -n +20 filename 将从文件的第20行开始显示所有后续行。

-f 或 --follow:持续显示文件增加的新内容,即使文件增长也会一直显示最新的行。这对于监视正在被写入的日志文件非常有用。如果你想实时监控文件example.log的更新,可以使用:

tail -f example.log
  • tr

用于进行字符转换和删除。它的全称是“translate”或“transliterate”,主要用于文本处理,比如转换大小写、替换字符、删除特定字符等。tr命令的基本语法如下:tr [选项] SET1 SET2。其中: SET1 是一组源字符或字符范围, SET2 是一组目标字符或字符范围。

转换大小写:tr 'a-z' 'A-Z' < inputfile > outputfile

删除回车: tr -d '\r' < inputfile > outputfile

  • diff

用于比较两个文件之间的差异。它是非常有用的工具,尤其是在版本控制、代码审查或文件对比场景中。diff命令可以显示文件之间不同之处的详细报告,包括添加、删除或修改的具体内容。 diff命令的基本语法如下:diff [选项] 文件1 文件2。diff命令的一些常用选项包括:

-u 或 --unified:生成统一的差异报告,显示上下文行,通常用于源代码比较。

-N 或 --new-file:即使文件不存在也进行比较,将不存在的文件视为空文件。

-w 或 --ignore-all-space:忽略所有空白字符的差异。

-b 或 --ignore-space-change:忽略空白字符变化的影响。

-B 或 --ignore-blank-lines:忽略包含只有空白字符的行。

文件目录管理

  • touch

用于创建新的空文件,或者更新现有文件的时间戳。这个命令的名字来源于英文单词“touch”,意味着“接触”或“轻触”,形象地描述了该命令的功能——即不改变文件的内容,只更新文件的访问时间和修改时间。 touch命令的基本语法如下:touch [选项] 文件名。touch命令的一些常用选项包括:

-a:只更新文件的访问时间(access time),而不更新修改时间。

-m:只更新文件的修改时间(modification time),而不更新访问时间。

-c 或 --no-create:如果文件不存在,则不会创建新文件,仅更新已有文件的时间戳。

  • mkdir

用于创建新的目录(文件夹)。这是一个基本但非常重要的命令,尤其在组织文件结构和项目目录时经常使用。mkdir命令的基本语法如下:mkdir [选项] 目录名。

  • cp

用于复制文件或者目录。格式为:cp [选项] 源文件 目标文件。

cp命令的一些常用选项包括:

-r 或 --recursive:用于复制目录及其所有子目录和文件。如果不使用这个选项,尝试复制目录会导致错误。

-i 或 --interactive:在覆盖目标文件之前提示用户确认。这对于避免意外覆盖重要文件很有用。

-v 或 --verbose:显示详细的操作信息,包括复制的文件名和操作结果。

-p 或 --preserve:尽可能保留原文件的属性,如权限、所有者、时间戳等。

-u 或 --update:仅当源文件比目标文件新或目标文件不存在时才复制。

  • mv

用于剪切文件或者将文件重新命名。格式为:mv [选项] 源文件 [目标路径|目标文件名]。mv命令的一些常用选项包括:

-i 或 --interactive:在覆盖目标文件之前提示用户确认,防止意外覆盖现有文件。

-v 或 --verbose:显示详细的移动或重命名操作信息。

-u 或 --update:仅当源文件比目标文件新或目标文件不存在时才进行移动或重命名操作。

  • rm

用于删除文件或目录。这是一个非常强大的命令,但也因为其可能造成的不可逆性而需要谨慎使用。rm命令的基本语法如下:rm [选项] 文件或目录。rm命令的一些关键选项包括:

-i 或 --interactive:在删除每个文件之前询问用户确认。这有助于防止意外删除重要文件。

-f 或 --force:强制删除文件,即使文件被设置了“不可删除”标志或用户没有写入权限。

-r 或 --recursive:递归删除目录及其所有子目录和文件。没有这个选项,rm命令无法删除目录。

-v 或 --verbose:显示详细的删除操作信息,包括每个被删除的文件名。

打包压缩

  • tar

用于压缩或者解压缩。格式为 tar [选项] 归档文件名 文件或目录。tar命令的一些常用选项包括:

-c:创建一个新的归档文件。

-x:从归档文件中提取文件。

-t:列出归档文件的内容。

-v:在操作过程中显示详细信息。

-f:指定归档文件名。

-z:使用gzip压缩或解压归档文件。

-j:使用bzip2压缩或解压归档文件。

-J:使用xz压缩或解压归档文件。

-p 或 --preserve-permissions:在解压时保持文件权限不变。

例如,如果你想创建一个名为archive.tar.gz的归档文件,其中包含directory目录下的所有文件,可以运行:

tar -czvf archive.tar.gz directory

这里,-c表示创建归档,-z表示使用gzip压缩,-v表示详细输出,-f指定了归档文件名。

如果你想从archive.tar.gz中提取文件,可以使用:

tar -xzvf archive.tar.gz

这里,-x表示从归档中提取文件,-z表示使用gzip解压,-v表示详细输出,-f指定了归档文件名。

如果你想查看archive.tar.gz的内容,可以使用:

tar -tzvf archive.tar.gz

这里,-t表示列出归档内容,-z表示处理gzip压缩的文件,-v表示详细输出,-f指定了归档文件名。

搜索

  • grep

用于搜索文本文件中与给定模式匹配的行。它是一个非常强大的文本处理工具,可以帮助你在大量文档中查找特定的信息。grep命令的基本语法如下:grep [选项] 模式 文件。grep命令的一些常用选项包括:

-A:显示查找到的单词的后几行,

-B:前几行

-C:前后几行。

-i:忽略大小写差异,使搜索不区分大小写。

-v:反转选择,显示不匹配模式的行。

-n:显示匹配行所在的行号。

-l:只列出包含匹配行的文件名,不显示行内容。

-r 或 --recursive:在目录下递归搜索。

-w:仅匹配完整单词。

-E:使用扩展正则表达式进行匹配。