Linux常用命令

 常用Linux命令

以下是常用的一些Linux命令,帮助您进行系统操作、文件管理、故障排查等工作。

1. 系统信息与用户管理

  • hostname: 查看当前系统的主机名。

    • 参数名词解释: 无。该命令直接显示当前系统设置的主机名。
    • 补充: 主机名是在网络中唯一标识一台计算机的名称。
  • who: 查看当前登录到服务器的所有用户信息。

    • 参数名词解释: 无。该命令会列出登录用户名、登录终端、登录时间以及登录来源IP地址。
    • 补充: Linux是多用户多任务系统,允许多个用户同时登录操作。
  • whoami (who am i): 显示当前操作用户的用户名。

    • 参数名词解释: 无。
    • 补充: 用于确认当前是以哪个用户身份在进行操作。
  • ip address (或 ip a): 查看和管理网络接口的IP地址信息。

    • 参数名词解释: 无。
    • 补充: 这个命令会显示所有网络接口的详细信息,包括IP地址、MAC地址、接口状态等。在车载测试中,常用于确认网络连接状态和IP配置。提到的 127.0.0.1 是本地回环地址,通常指本机。
  • ping [网址或IP地址]: 检测与目标主机之间的网络连通性。

    • 参数名词解释:
      • [网址或IP地址]: 您想要检测连通性的目标主机域名或IP地址。
    • 补充: ping 命令通过发送ICMP Echo Request包到目标主机并等待ICMP Echo Reply包来判断网络是否通畅。输出信息中包含发送的字节数、响应时间 (TTL, time to live) 和丢包率等。按 Ctrl + C 可以终止 ping 命令的执行。
  • history: 查看当前用户执行过的历史命令记录。

    • 参数名词解释: 无。
    • 补充: 可以方便地查找和重复执行之前使用过的命令。

2. 目录与文件操作

  • pwd (print working directory): 打印当前所在的完整工作目录路径。

    • 参数名词解释: 无。
    • 补充: 帮助用户了解当前在文件系统中的位置。
  • ls (list): 列出目录中的文件和子目录。

    • 常用参数:
      • 无参数: 列出当前目录下的文件和目录名(不包括隐藏文件)。
      • -a: 列出所有文件和目录,包括以"."开头的隐藏文件。
      • -l: 以长列表格式显示文件和目录的详细信息,包括权限、所有者、大小、修改时间等。
      • ll: 通常是 ls -l 的别名,功能相同,以长列表格式显示详细信息,并且可能包含隐藏文件。
    • 文件颜色区分 (常见配置):
      • 白色: 普通文件 (如文本文件, Word文档, Excel表格)。
      • 蓝色: 目录 (文件夹)。
      • 绿色: 可执行文件 (如脚本)。
      • 红色: 压缩包文件。
    • -l 输出详解:
      • 第一部分 (1位): 文件类型 ( - 普通文件, d 目录, l 链接文件, b 设备文件等)。
      • 第二部分 (3位): 文件所有者的权限 (r:读, w:写, x:执行, -:无权限)。
      • 第三部分 (3位): 文件所属组的权限。
      • 第四部分 (3位): 其他用户的权限。
      • 数字: 硬链接数。
      • 用户名: 文件所有者。
      • 组名: 文件所属组。
      • 文件大小: 以字节为单位。
      • 修改时间: 文件最后修改的时间。
      • 文件名: 文件或目录的名称。
      • 权限数字表示: r=4, w=2, x=1。例如,rwx = 4+2+1 = 7。
  • cd [目录路径] (change directory): 切换当前工作目录。

    • 参数名词解释:
      • [目录路径]: 目标目录的路径,可以是绝对路径或相对路径。
    • 常用用法:
      • cd [目录名]: 进入当前目录下的指定子目录。
      • cd /: 切换到根目录。
      • cd ..: 切换到上一级目录。
      • cd ../..: 切换到上两级目录。
      • cd ~cd: 切换到当前用户的主目录。
    • 路径解释:
      • 绝对路径: 从根目录 (/) 开始的完整路径。
      • 相对路径: 从当前目录开始的路径。
    • 注意: cd 命令只能进入目录,不能进入文件。
  • mkdir [目录名] (make directory): 创建新的目录。

    • 常用参数:
      • mkdir [目录名1] [目录名2] ...: 同时创建多个目录。
      • -p: 递归创建目录,如果父目录不存在则一并创建。例如 mkdir -p A/B/C 会创建A、A/B、A/B/C三级目录。
  • touch [文件名]: 创建新的空文件,或者更新已有文件的时间戳。

    • 常用参数:
      • touch [文件名1] [文件名2] ...: 同时创建多个文件。
    • 注意: touch 命令不能像 mkdir -p 那样递归创建文件所在的目录。
  • rm [文件名] (remove): 删除文件。

    • 常用参数:
      • -f (force): 强制删除,不进行提示。
      • -r (recursive): 递归删除目录及其内容。 此参数非常危险,请谨慎使用!
      • rm -rf [目录名]: 强制递归删除目录及其所有内容,极度危险,使用前务必确认!
      • rm -r *: 删除当前目录下的所有文件和子目录 (通配符 * 代表所有)。
    • 注意: rm 直接删除文件,通常无法恢复,请务必小心。
  • mv [源文件/目录] [目标文件/目录] (move): 移动文件或目录,或者重命名文件或目录。

    • 用法:
      • 重命名: mv [旧名称] [新名称]。如果新名称与旧名称在同一目录下,则为重命名。
      • 移动: mv [源路径/文件] [目标路径]。将文件或目录从源路径移动到目标路径。移动后,源位置不再存在该文件或目录。
  • cp [源文件] [目标文件/目录] (copy): 复制文件。

    • 常用参数:
      • -r: 递归复制目录及其内容。当需要复制整个文件夹时使用。
    • 用法:
      • cp [源文件] [新文件名]: 复制文件并命名为新文件名。
      • cp [源文件] [目标目录]: 将文件复制到目标目录下,文件名不变。
      • cp -r [源目录] [目标目录]: 复制整个目录到目标位置。
    • 注意: 复制操作会在目标位置创建一个新的副本,原始文件或目录仍然存在于原位置。

3. 文件内容查看

  • cat [文件名] (concatenate): 查看文件的全部内容,一次性显示在终端。

    • 常用参数:
      • -n: 显示行号,包括空行。
      • -b: 显示行号,但不包括空行。
    • 注意: cat 不适用于查看非常大的文件,因为它会一次性加载所有内容。 cat 不能用于查看目录内容,会报错。
  • tac [文件名] (cat anacagram): 反向查看文件的内容,从最后一行开始显示。

    • 参数名词解释: 无。
    • 补充: 与 cat 命令的输出顺序相反。
  • head [文件名]: 查看文件的开头部分,默认显示前10行。

    • 常用参数:
      • -n [行数] (或直接 -数字): 指定显示的行数。例如 head -n 5 [文件名]head -5 [文件名] 显示前5行。
  • tail [文件名]: 查看文件的末尾部分,默认显示最后10行。

    • 常用参数:
      • -n [行数] (或直接 -数字): 指定显示的行数。例如 tail -n 5 [文件名]tail -5 [文件名] 显示后5行。会包含空白行。
      • -f: 实时跟踪文件的末尾内容。当文件内容增加时,会动态显示新增的内容。常用于查看实时生成的日志文件。按 Ctrl + C 退出。
  • more [文件名]: 分页查看文件内容。

    • 操作:
      • 空格键: 向下翻一页。
      • 回车键: 向下滚动一行。
      • q: 退出查看。
      • Ctrl + C: 强制退出。
    • 补充: 屏幕底部会显示当前查看进度的百分比。
  • less [文件名]: 功能更强大的分页查看器,允许向上和向下翻页。

    • 操作:
      • 空格键 / Page Down: 向下翻一页。
      • Page Up: 向上翻一页。
      • 方向键上/下: 向上/下滚动一行。
      • /关键字: 向下搜索关键字。
      • ?关键字: 向上搜索关键字。
      • n: 跳转到下一个搜索结果。
      • N: 跳转到上一个搜索结果。
      • q: 退出查看。
      • Ctrl + C: 强制退出。

4. VI/VIM 编辑器

  • vi [文件名]vim [文件名]: Linux 内置的文本编辑器,用于创建或修改文件内容。
    • VIM与VI的区别: VIM (Vi IMproved) 是 VI 的增强版,兼容所有VI指令,并提供了更多功能,如语法高亮、多级撤销等。VIM 可以适用于多个操作系统平台。
    • 模式:
      • 命令模式 (Command Mode): 默认进入的模式,可以移动光标、删除文本、复制粘贴等。
      • 插入模式 (Insert Mode): 用于输入文本。
        • 从命令模式进入插入模式的常用按键:
          • i: 在光标当前位置前插入。
          • a: 在光标当前位置后追加。
          • o: 在当前行下方插入一个新行。
          • O: 在当前行上方插入一个新行。
      • 末行模式 (Last Line Mode / ex Mode): 用于执行保存、退出、搜索替换等命令。
        • 从命令模式按 : 进入。
    • 常用命令 (命令模式下):
      • 移动光标: h (左), j (下), k (上), l (右), 方向键。
      • gg: 跳转到文件第一行。
      • G (Shift + g): 跳转到文件最后一行。
      • dd: 删除当前行。
      • yy: 复制当前行。
      • p: 粘贴。
      • u: 撤销上一步操作。
      • Ctrl + r: 重做。
    • 常用命令 (末行模式下):
      • :w: 保存文件。
      • :q: 退出编辑器 (如果文件已修改且未保存,会提示)。
      • :wq:x: 保存并退出。
      • :q!: 强制退出,不保存修改。
      • :w [新文件名]: 另存为新文件。
      • :/关键字: 向下查找关键字。
      • :?关键字: 向上查找关键字。
      • :n: 跳转到下一个搜索结果。
      • :N: 跳转到上一个搜索结果。
      • :%s/旧内容/新内容/g: 全局替换文本 (g表示全局替换当前行所有匹配,若无g则只替换第一个)。
      • :n1,n2s/旧内容/新内容/g: 在第n1行到n2行之间替换文本。
      • :n1,n2s/旧内容/新内容/c: 在第n1行到n2行之间替换文本,每次替换前询问确认。
      • :1,$s/旧内容/新内容/g: 从第一行到最后一行全局替换 ($代表最后一行)。
      • :set nu: 显示行号。
      • :set nonu: 取消显示行号。
    • 注意:
      • 如果VI/VIM出现异常无法退出,可以尝试按 Ctrl + Z 强制退出 (这通常是将进程置于后台,可能需要 kill 命令来彻底终止)。
      • 快捷键如 dd, gg, G 等仅在命令模式(查看模式)下生效,在编辑(插入)模式下会作为文本输入。

5. 文件压缩与解压缩

  • tar: 用于打包和解包 .tar 文件,常与压缩命令结合使用 (如 gzip, bzip2)。

    • 压缩 (打包并用gzip压缩为 .tar.gz.tgz): tar -zcvf [压缩包名.tar.gz] [要压缩的文件/目录列表]
      • 参数解释:
        • -z: 通过 gzip 进行压缩/解压缩。
        • -c: 创建新的归档文件 (压缩)。
        • -v: 显示详细过程。
        • -f: 指定归档文件名。
        • [压缩包名.tar.gz]: 你要创建的压缩包的名称。
        • [要压缩的文件/目录列表]: 一个或多个要压缩的文件或目录,用空格隔开。
    • 解压缩 (解压 .tar.gz.tgz 文件): tar -zxvf [压缩包名.tar.gz]
      • 参数解释:
        • -x: 从归档文件中提取文件 (解压缩)。
    • 解压缩到指定目录: tar -zxvf [压缩包名.tar.gz] -C [目标目录]
      • 参数解释:
        • -C [目标目录]: 指定解压缩到的目标目录 (注意是大写C)。
    • 查看压缩包内容 (不解压): tar -tzvf [压缩包名.tar.gz]
      • 参数解释:
        • -t: 列出归档文件中的内容。
  • zip / unzip: 用于处理 .zip 格式的压缩文件。

    • 压缩: zip [压缩包名.zip] [要压缩的文件/目录列表]
      • 参数解释:
        • 如果压缩目录,会自动包含目录内的所有文件和子目录。
    • 解压缩: unzip [压缩包名.zip]
      • 补充: 如果目标位置已存在同名文件,unzip 通常会询问是否替换。
    • 解压缩到指定目录: unzip [压缩包名.zip] -d [目标目录]
      • 参数解释:
        • -d [目标目录]: 指定解压缩到的目标目录 (注意是小写d)。
    • 查看压缩包内容 (不解压): unzip -l [压缩包名.zip]
      • 参数解释:
        • -l: 列出压缩包内的文件列表。

6. 输入/输出重定向与管道

  • 输出重定向 >>>:

    • 命令 > 文件名: 将命令的输出结果覆盖写入到指定文件中。如果文件不存在则创建,如果文件存在则其原有内容会被覆盖。
    • 命令 >> 文件名: 将命令的输出结果追加到指定文件的末尾。如果文件不存在则创建,如果文件存在则新内容会添加到原有内容的后面。
    • 示例: history > my_commands.txt (将历史命令覆盖写入文件), ls -l >> file_list.txt (将文件列表追加到文件末尾)。
  • 管道符 |:

    • 命令1 | 命令2: 将命令1的输出结果作为命令2的输入。
    • 作用: 可以将多个命令连接起来,实现更复杂的功能。
    • 示例: head -n 10 file.txt | tail -n 5 (查看文件前10行中的后5行,即第6到第10行)。 cat file.txt | grep "keyword" (在文件内容中搜索包含"keyword"的行)。

7. 文件查找

  • find [路径] [选项] [表达式]: 在指定路径下查找文件。
    • 常用选项与表达式:
      • [路径]: 开始查找的目录路径。例如 / (根目录), . (当前目录)。
      • -name "文件名": 按文件名查找 (区分大小写)。可以使用通配符,如 *.txt 查找所有txt文件。文件名通常用单引号或双引号括起来,以防止特殊字符被shell解释。
        • 通配符解释:
          • *关键字**关键字关键字*: 模糊查询,* 代表任意多个字符。
            • *A*: 文件名中包含A的。
            • A*: 文件名以A开头的。
            • *A: 文件名以A结尾的。
      • -iname "文件名": 按文件名查找 (不区分大小写)。
      • -type [文件类型]: 按文件类型查找。
        • f: 普通文件。
        • d: 目录。
        • l: 符号链接。
      • -size [大小]: 按文件大小查找。
        • +100M: 大于100MB的文件。
        • -1G: 小于1GB的文件。
        • 100M: 等于100MB的文件。
        • 单位: c (字节), k (KB), M (MB), G (GB)。
      • -user [用户名]: 按文件所有者查找。
      • -group [组名]: 按文件所属组查找。
      • -mtime [天数]: 按文件修改时间查找。
        • -[天数]: [天数]天内修改过的文件。
        • +[天数]: [天数]天前修改过的文件。
        • [天数]: 正好在[天数]天前修改过的文件。
      • -exec [命令] {} \;: 对查找到的每个文件执行指定的命令。{} 代表查找到的文件名。
    • 示例: find /tmp -name "*.log" -type f -size +10M (在/tmp目录下查找所有大于10MB的.log普通文件)。
    • 注意: 在根目录 (/) 下执行 find 命令可能会花费较长时间,因为它会遍历整个文件系统。如果遇到 "Permission denied" 错误,通常是因为当前用户没有权限访问某些目录。

8. 快捷键

  • Ctrl + L: 清屏,清除终端当前显示的内容,但历史内容仍然可以通过向上滚动查看。
  • Ctrl + C: 中断当前正在执行的命令或程序。
  • Ctrl + Z: 将当前正在执行的命令放到后台并暂停 (挂起)。可以使用 fg 命令恢复到前台,或 bg 命令使其在后台继续运行 (如果程序支持),或 kill 命令终止。
  • Tab: 命令或路径自动补全。在输入命令或文件名/路径时,按Tab键可以尝试自动补全,如果存在多个匹配项,按两次Tab通常会列出所有匹配项。