【Linux】基础指令

文章目录

  • Linux下基本指令
    • [ls 指令](#ls 指令)
    • [pwd&&cd 命令](#pwd&&cd 命令)
    • [touch 指令](#touch 指令)
    • [mkdir 指令](#mkdir 指令)
    • [rmdir 指令 && rm 指令](#rmdir 指令 && rm 指令)
    • [man 指令](#man 指令)
    • [cp 指令](#cp 指令)
    • [less 指令](#less 指令)
    • [head 指令](#head 指令)
    • [date 指令](#date 指令)
    • [cal 指令](#cal 指令)
    • [find 指令](#find 指令)
    • [which 指令](#which 指令)
    • [echo 指令](#echo 指令)
    • [nano 指令](#nano 指令)
    • [cat 指令](#cat 指令)
    • [tac 指令](#tac 指令)
    • [date 指令](#date 指令)
      • [1. 显示时间(格式化输出)](#1. 显示时间(格式化输出))
      • [2. 设置系统时间](#2. 设置系统时间)
      • [3. 时间戳操作](#3. 时间戳操作)
      • [4. 实用示例](#4. 实用示例)
    • [whereis 指令](#whereis 指令)
    • [grep 指令](#grep 指令)
    • [top 指令](#top 指令)
    • [zip 和 unzip 指令](#zip 和 unzip 指令)
      • [zip 命令:创建 ZIP 压缩文件](#zip 命令:创建 ZIP 压缩文件)
      • [unzip 命令:解压 ZIP 文件](#unzip 命令:解压 ZIP 文件)
      • [关于 rz/sz 工具(文件传输补充)](#关于 rz/sz 工具(文件传输补充))
    • [File 指令](#File 指令)
    • tar指令
    • bc指令
    • 关机

Linux下基本指令

ls 指令

先补充知识

语法 : ls [选项] [目录或文件]
功能 :对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名 以及其他信息。
常用选项

• -l 列出文件的详细信息
• -a 列出目录下的所有文件,包括以 . 开头的隐藏文件。

和 -l组合使用,次序不影响结果

  • 注意:

以.开头的文件称为隐藏文件,而ls默认不显示隐藏文件

pwd&&cd 命令

Linux理论知识:路径的认识

• Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件


• 理解路径存在的意义: 树状组织方式,都是为了保证快速定位查找到指定的文件,而定位文件就需要具有唯一性的方案来进行定位文件。其中任何一个节点,都只有一个父节点,所以,从根目录开始,定位指定文件,路径具有唯一性

• 绝对路径:一般从/开始,不依赖其他目录的定位文件的方式

• 相对路径:相对于当前用户所处目录,定位文件的路径方式

• 绝对路径一般不会随着用户的路径变化而丧失唯一性,一般在特定服务的配置文件中经常被使用

• 相对路径因为它的便捷性,一般在命令行中使用较多

pwd指令

语法 : pwd
功能 :显示用户当前所在的目录

cd 指令

语法 : cd 目录名
功能 :改变工作目录。将当前工作目录改变到指定的目录下
举例

返回到最近访问目录

返回上级目录

快速进入自己的家目录

touch 指令

Linux理论知识:文件类型的认识

命令语法
touch [选项]... 文件...

功能说明

touch命令主要有两个功能:

  1. 创建新的空文件(如果文件不存在)
  2. 修改文件的时间戳(如果文件已存在)

常用选项

  1. -a:仅更改访问时间(access time)

    • 示例:touch -a file.txt 只更新文件的访问时间
  2. -m:仅更改修改时间(modification time)

    • 示例:touch -m file.txt 只更新文件的修改时间
  3. -c:不创建新文件

    • 示例:touch -c non_exist.txt 如果文件不存在,不会创建新文件
  4. -t:使用指定时间戳

    • 格式:[[CC]YY]MMDDhhmm[.ss]
    • 示例:touch -t 202312311230.59 file.txt 将时间设为2023年12月31日12:30:59
  5. -d:使用字符串表示的时间

    • 示例:touch -d "2 days ago" file.txt 将时间设为两天前

实用示例

  1. 创建普通文件
bash 复制代码
touch newfile.txt  # 创建单个文件
touch file1.txt file2.txt file3.txt  # 同时创建多个文件
  1. 查看文件时间
bash 复制代码
stat filename  # 查看文件的详细时间信息

输出示例:

复制代码
Access: 2023-11-15 10:30:00.000000000 +0800
Modify: 2023-11-15 10:30:00.000000000 +0800
Change: 2023-11-15 10:30:00.000000000 +0800
  1. 修改文件时间
bash 复制代码
touch -a -t 202311151200.00 file.txt  # 将访问时间设为2023年11月15日12:00
touch -m -d "2023-11-20 18:30" file.txt  # 将修改时间设为2023年11月20日18:30

mkdir 指令

语法 : mkdir [选项] dirname...
功能 :在当前目录下创建一个名为 "dirname"的目录
常用选项

• -p/--parents: 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录

rmdir 指令 && rm 指令

rmdir是一个与mkdir相对应的命令,mkdir是建立目录,而rmdir是删除命令
语法 : rmdir [-p] [dirName]
适用对象 :具有当前目录操作权限的所有使用者
功能 :删除空目录
常用选项

• -p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。

rm 命令可以同时删除文件或目录
语法 : rm [-f-i-r-v] [dirName/dir]
适用对象 所有使用者
功能 :删除文件或目录
常用选项

• -f 即使文件属性为只读(即写保护),亦直接删除

• -i 删除前逐一询问确认

• -r 删除目录及其下所有文件

man 指令

Linux 命令的参数繁多,我们很难全部记住。此时,可以通过查看联机手册(manual pages)来获取详细的帮助信息。

语法man [选项] 命令

常用选项

  • -k:根据关键字搜索联机帮助。
  • num:只在第 num 章节查找(例如 man 2 open 只查看系统调用章节)。
  • -a:显示所有章节的内容。例如,man printf 默认从第一章开始搜索,找到匹配项后即停止;使用 -a 选项后,按下 q 退出当前章节,它会继续向后搜索,直到遍历完所有章节。

man 手册章节说明

man 手册通常分为 9 章(不同系统可能略有差异),最常用的是前三个章节:

  1. 普通命令 :用户可执行的命令(如 ls, cp)。
  2. 系统调用 :操作系统提供的底层接口(如 open, write)。通过此章节,可以方便地查到调用函数所需的头文件。
  3. 库函数 :C 语言标准库函数(如 printf, fread)。
  4. 特殊文件 :通常指 /dev 目录下的设备文件。
  5. 文件格式 :说明配置文件的格式和字段含义(如 /etc/passwd)。
  6. 游戏:为游戏保留的章节,由各个游戏自行定义。
  7. 杂项 :包含一些宏、协议和全局变量(如 environ)的说明。
  8. 系统管理命令 :通常只有 root 用户才能使用的命令(如 ifconfig)。
  9. 内核例程:内核相关的文档。

cp 指令

cp(copy 的缩写)命令用于在 Linux 系统中复制文件或目录。

语法cp [选项] 源文件或目录 目标文件或目录

功能:复制文件或目录。

说明

  • cp 指令的基本功能是复制单个文件或目录。
  • 如果同时指定两个或两个以上的文件或目录,并且最后一个参数是一个已存在的目录,则 cp 会将前面指定的所有文件或目录复制到该目标目录中。

常用选项

  • -f--force:强制复制,如果目标文件或目录已存在,则直接覆盖,不进行任何提示。
  • -i--interactive:交互式复制,在覆盖已存在的目标文件之前会询问用户进行确认。
  • -r递归处理,复制目录时,将该目录下的所有文件及子目录一并复制。如果源文件不是目录或符号链接,则按普通文件处理。## mv 指令

mv 命令是 move 的缩写,主要用于移动文件(相当于剪切 操作)或为文件/目录重命名(move (rename) files)。该命令也常用于备份文件或目录。

语法mv [选项] 源文件或目录 目标文件或目录

功能说明

  1. 移动文件/目录 :当第二个参数是已存在的目录 时,mv 命令会将指定的源文件或目录移动到该目标目录中。此时,源参数可以有多个。
  2. 重命名文件/目录 :当第二个参数是不存在的文件或目录名 ,或者是一个已存在的文件名 时,mv 命令完成重命名操作。此时,源文件或目录通常只能有一个。

常用选项

  • -fforce(强制)的缩写。如果目标文件已经存在,不会询问,直接覆盖。
  • -iinteractive(交互式)的缩写。若目标文件已存在,则会询问是否覆盖。

示例

bash 复制代码
# 1. 移动文件到目录
mv file.txt /home/user/documents/

# 2. 重命名文件
mv oldname.txt newname.txt

# 3. 移动多个文件到目录
mv file1.txt file2.txt /home/user/documents/

# 4. 强制覆盖已存在文件(不提示)
mv -f source.txt destination.txt

# 5. 交互式移动(覆盖前询问)
mv -i source.txt destination.txt

注意* 是通配符,表示所有文件。例如,rm test/* -rf 表示删除 test 目录下的所有文件及子目录。

less 指令

less 是一个功能强大的文件内容分页查看工具,常被视为 Linux 系统中查看文件内容的"正统"工具。与 more 命令相比,less 在浏览文件时提供了更高的灵活性。

主要特点

  • 双向浏览 :使用 more 时只能向前翻页,而 less 支持使用 PageUpPageDown 等按键向前或向后翻页,查看文件内容更加方便。
  • 搜索功能丰富:不仅支持向下搜索,还支持向上搜索,便于在文件中快速定位内容。
  • 无需预加载 :在打开文件时,less 不会一次性加载整个文件到内存,因此即使查看大文件也能快速启动,节省系统资源。

语法less [选项] 文件

功能

用于分页查看文件内容,支持前后翻页、搜索、跳转等操作。

常用选项

  • -i:搜索时忽略大小写。
  • -N:显示每行的行号。
  • /字符串:向下搜索指定的字符串。
  • ?字符串:向上搜索指定的字符串。
  • n:重复上一次搜索(与 /? 相关)。
  • N:反向重复上一次搜索(与 /? 相关)。
  • q:退出 less

基本操作示例

  1. 查看文件

    bash 复制代码
    less filename.txt
  2. 显示行号

    bash 复制代码
    less -N filename.txt
  3. 忽略大小写搜索
    less 界面中,先按 /,输入搜索词后按 Enter。使用 -i 选项可忽略大小写。

  4. 退出
    q 键即可退出 less

more 的对比

  • more:只能向前翻页,功能相对简单。
  • less:支持前后翻页、搜索、跳转等,功能更全面,是查看文件内容的更佳选择。## head 指令
    head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾。
    语法:
    head [参数]... [文件]...
    功能:
    head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
    选项:
    • -n<行数> 显示的行数

head 指令

head 命令用于显示文件开头部分的内容,默认情况下会输出文件的前 10 行。它常与 tail 命令一起使用,用于快速查看文件的开头或结尾。

语法head [选项] [文件]...

功能

将指定文件的开头内容输出到标准输出(屏幕)。如果未指定文件,则从标准输入读取数据。

常用选项

  • -n <行数>:指定显示文件开头的行数。例如 head -n 20 file.txt 会显示文件的前 20 行。
  • -c <字节数>:指定显示文件开头的字节数。例如 head -c 100 file.txt 会显示文件的前 100 个字节。
  • -q:不显示包含给定文件名的文件头。
  • -v:总是显示包含给定文件名的文件头(默认行为)。

实用示例

  1. 查看文件前 10 行(默认)

    bash 复制代码
    head filename.txt
  2. 查看文件前 5 行

    bash 复制代码
    head -n 5 filename.txt
  3. 查看多个文件的开头

    bash 复制代码
    head -n 3 file1.txt file2.txt

    会分别显示 file1.txtfile2.txt 的前 3 行,并在每个文件内容前显示文件名作为分隔。

  4. 与管道结合使用

    bash 复制代码
    ls -l /usr/bin | head -n 15

    ls -l 命令的输出通过管道传递给 head,只显示前 15 行结果。## tail 指令

tail 命令用于显示文件的末尾内容,默认输出文件的最后 10 行。它在查看日志文件、监控实时输出等场景中非常有用。

语法tail [选项] [文件]...

功能

将指定文件的末尾内容输出到标准输出。如果未指定文件,则从标准输入读取。

常用选项

  • -n <行数>:指定显示文件末尾的行数。例如 tail -n 20 file.txt 会显示文件的最后 20 行。
  • -f循环读取 。此选项会持续监视文件,当文件有新增内容时,tail 会实时显示出来。常用于监控正在变化的日志文件。按 Ctrl+C 可退出监视模式。
  • -c <字节数>:指定显示文件末尾的字节数。
  • -q:不显示文件名头。
  • -v:总是显示文件名头。

实用示例

  1. 查看文件最后 10 行(默认)

    bash 复制代码
    tail filename.txt
  2. 查看文件最后 5 行

    bash 复制代码
    tail -n 5 filename.txt
  3. 实时监控日志文件(最常用)

    bash 复制代码
    tail -f /var/log/syslog

    此命令会持续显示 /var/log/syslog 文件的新增内容,非常适合调试和监控应用程序日志。

  4. 显示文件的第 180 到 200 行
    这需要结合 headtail 命令,或者使用 sed。一种常见的方法是:

    bash 复制代码
    sed -n '180,200p' filename.txt

    或者使用管道:

    bash 复制代码
    head -n 200 filename.txt | tail -n 21

    解释:先用 head 取出前 200 行,再用 tail 从这 200 行中取出最后 21 行(即第 180 到 200 行)。

  5. 查看多个文件的末尾

    bash 复制代码
    tail -n 3 file1.log file2.log

    会分别显示每个日志文件的最后 3 行。

与重定向和管道
tail 常与重定向 (>, >>) 和管道 (|) 结合使用,进行日志截取、数据筛选等操作。例如,将最近 100 条日志保存到新文件:

bash 复制代码
tail -n 100 /var/log/app.log > recent.log

date 指令

指定格式显示时间: date +%Y:%m:%d

用法: date [OPTION]... [+FORMAT]

  1. 在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下

    • %H : 小时(00...23)

    • %M : 分钟(00...59)

    • %S : 秒(00...61)

    • %X : 相当于 %H:%M:%S

    • %d : 日 (01...31)

    • %m : 月份 (01...12)

    • %Y : 完整年份 (0000...9999)

    • %F : 相当于 %Y-%m-%d

  2. 在设定时间方面

    • date -s //设置当前时间,只有root权限才能设置,其他只能查看。

    • date -s 20080523 //设置成20080523,这样会把具体时间设置成空00:00:00

    • date -s 01:01:01 //设置具体时间,不会对日期做更改

    • date -s "01:01:01 2008-05-23″ //这样可以设置全部时间

    • date -s "01:01:01 20080523″ //这样可以设置全部时间

    • date -s "2008-05-23 01:01:01″ //这样可以设置全部时间

    • date -s "20080523 01:01:01″ //这样可以设置全部时间

  3. 时间戳

    • 时间->时间戳:date +%s

    • 时间戳->时间:date -d@1508749502

    • Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒

cal 指令

cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。"阳历"又名"太阳历",系以地球绕行太阳一周为一年,为西方各国所通用,故又名"西历"。

命令格式: cal 参数 [年份]

功能:用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份

常用选项:

• -3 显示系统前一个月,当前月,下一个月的月历

• -j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)

• -y 显示当前年份的日历

find 指令

find 命令是 Linux 系统中功能最强大的文件搜索工具之一,它可以在指定的目录结构中递归搜索文件,并根据多种条件执行相应的操作。

主要特点

  • 功能强大:提供了丰富的查找条件,支持按文件名、类型、大小、时间、权限等多种属性进行筛选。
  • 跨文件系统 :即使系统中包含网络文件系统(如 NFS),只要用户具有相应权限,find 命令同样有效。
  • 资源消耗 :由于 find 需要遍历目录树,在大型文件系统(例如超过 30GB)上执行时可能会消耗较多时间和系统资源。因此,对于复杂的搜索任务,建议将其放入后台执行。

语法find [路径] [选项] [操作]

功能

在指定的目录树中查找符合条件的文件,并可对找到的文件执行特定操作(如打印、删除、执行命令等)。

常用选项

  • -name <模式>:按照文件名查找文件,支持通配符(如 *.txt)。
  • -type <类型>:按文件类型查找(f 普通文件,d 目录,l 符号链接等)。
  • -size <大小>:按文件大小查找(如 +100M 表示大于 100MB)。

基本示例

  1. 按名称查找文件

    bash 复制代码
    find ~ -name test.c

    在用户的主目录(~ 代表用户主目录)下查找文件名严格为 test.c 的文件。当该命令执行后输出两个文件路径,这意味着在用户主目录及其子目录下,找到了两个名为 test.c 的文件,每个文件路径代表一个找到的 test.c 文件的具体位置 。

    例如,可能一个文件的路径是 ~/project1/test.c,另一个文件的路径是 ~/project2/test.c,这表明在 project1 和 project2 这两个项目目录下都存在 test.c 文件。

  2. 查找并删除旧文件

    bash 复制代码
    find /var/log -name "*.log" -mtime +30 -delete

    查找 /var/log 目录下 30 天前的 .log 文件并删除。

  3. 查找并执行命令

    bash 复制代码
    find . -type f -name "*.sh" -exec chmod +x {} \;

    查找当前目录下所有 .sh 脚本文件,并为其添加可执行权限。

注意事项

  • find 命令选项繁多,功能复杂,建议通过 man find 查看完整手册。
  • 使用 -exec 选项时,{} 表示找到的文件名,必须以 \; 结尾。
  • 对于大型搜索,可结合 -maxdepth 限制搜索深度以提高效率。

which 指令

功能:搜索系统指定的命令

echo 指令

echo 是 Linux 中最常用的命令之一,主要用于在终端输出文本或变量的值。它通常用于脚本中显示信息、调试,或者与管道、重定向结合使用。

语法echo [选项] [字符串]

功能

  • 将指定的字符串输出到标准输出(通常是终端屏幕)。
  • 可以显示环境变量的值。
  • 常与重定向符号(>>>)结合,将输出写入文件。

常用选项

  • -n:输出字符串后不换行。
  • -e:启用转义字符的解释(例如 \n 换行、\t 制表符等)。
  • -E:禁用转义字符的解释(默认行为)。

实用示例

  1. 基本输出

    bash 复制代码
    echo "Hello, Linux!"

    输出:Hello, Linux!

  2. 显示变量值

    bash 复制代码
    name="Alice"
    echo "My name is $name"

    输出:My name is Alice

  3. 不换行输出

    bash 复制代码
    echo -n "Processing... "
    echo "Done."

    输出:Processing... Done.(两行合并为一行)

  4. 使用转义字符

    bash 复制代码
    echo -e "Line 1\nLine 2\tTabbed"

    输出:

    复制代码
    Line 1
    Line 2	Tabbed
  5. 输出到文件

    bash 复制代码
    echo "This is a log entry" >> log.txt

    将文本追加到 log.txt 文件末尾。

  6. 显示特殊字符

    bash 复制代码
    echo "The cost is \$100"

    输出:The cost is $100\$ 防止 $ 被解释为变量)。

注意事项

  • 如果字符串中包含空格或特殊字符,建议用双引号括起来。
  • echo 是 Shell 内置命令,不同 Shell(如 bash、zsh)可能略有差异,但基本用法一致。
  • 在脚本中,echo 常用于提示用户、输出结果或调试信息。

nano 指令

nano 是一个简单易用的命令行文本编辑器,特别适合 Linux 新手使用。它提供了直观的界面和底部快捷键提示,无需记忆复杂的命令即可完成基本的文本编辑任务。

语法nano [选项] [文件名]

功能

  • 创建新文本文件或编辑已有文件。
  • 提供基本的文本编辑功能,如复制、粘贴、查找、替换等。
  • 支持语法高亮(需配置)。

常用选项

  • -B:创建备份文件(保存时会生成以 ~ 结尾的备份文件)。
  • -C <目录>:设置备份文件的保存目录。
  • -i:启用自动缩进。
  • -l:显示行号。
  • -m:启用鼠标支持(如果终端支持)。
  • -v:以只读模式打开文件。

基本操作

启动 nano 后,屏幕底部会显示常用的快捷键提示,其中 ^ 表示 Ctrl 键:

  • Ctrl+G:显示帮助文档。
  • Ctrl+O:保存文件(Write Out)。
  • Ctrl+X:退出 nano。
  • Ctrl+K:剪切当前行(或选中的文本)。
  • Ctrl+U:粘贴已剪切的内容。
  • Ctrl+W:查找文本。
  • Ctrl+\:查找并替换文本。
  • Ctrl+C:显示当前光标位置(行号、列号)。
  • Ctrl+_:跳转到指定行号。
  • Ctrl+T:检查拼写(如果系统安装了拼写检查工具)。

实用示例

  1. 创建或编辑文件

    bash 复制代码
    nano myfile.txt

    如果 myfile.txt 存在则打开编辑,不存在则创建新文件。

  2. 显示行号

    bash 复制代码
    nano -l myfile.txt

    在编辑界面左侧显示行号。

  3. 创建备份

    bash 复制代码
    nano -B myfile.txt

    保存时会在同一目录下生成 myfile.txt~ 备份文件。

  4. 以只读模式打开文件

    bash 复制代码
    nano -v config.conf

    防止意外修改配置文件。

保存与退出

  1. Ctrl+O 保存文件,按 Enter 确认文件名。
  2. Ctrl+X 退出编辑器。如果文件有未保存的更改,nano 会提示是否保存。

注意事项

  • nano 是终端下的编辑器,不支持图形界面。
  • 对于大文件,nano 可能不如 vimemacs 高效,但胜在简单易用。
  • 快捷键提示始终显示在屏幕底部,方便随时查看。

cat 指令

cat(concatenate 的缩写)是 Linux 中用于查看文件内容、创建文件、合并文件以及将文件内容输出到终端的常用命令。它通常用于快速查看小文件内容,或与管道、重定向结合进行文本处理

语法cat [选项] [文件...]

功能

  • 显示一个或多个文件的全部内容。
  • 将多个文件内容连接(concatenate)后输出。
  • 创建新文件或向已有文件追加内容(通常与重定向结合使用)。

常用选项

  • -n:显示行号(对所有行编号)。
  • -b:显示行号,但不对空行编号。
  • -s:将连续的空行压缩为一行。

实用示例

  1. 查看单个文件内容

    bash 复制代码
    cat filename.txt

    输出文件 filename.txt 的全部内容。

  2. 查看多个文件内容

    bash 复制代码
    cat file1.txt file2.txt

    依次显示 file1.txtfile2.txt 的内容。

  3. 显示行号

    bash 复制代码
    cat -n filename.txt

    输出文件内容,并在每行前显示行号。

  4. 创建新文件

    bash 复制代码
    cat > newfile.txt

    输入内容后按 Ctrl+D 保存,将输入内容写入 newfile.txt(会覆盖已有文件)。

  5. 追加内容到文件

    bash 复制代码
    cat >> existing.txt

    输入内容后按 Ctrl+D 保存,将输入内容追加到 existing.txt 末尾。

  6. 合并多个文件

    bash 复制代码
    cat part1.txt part2.txt > combined.txt

    part1.txtpart2.txt 的内容合并后输出到 combined.txt

  7. 与管道结合使用

    bash 复制代码
    cat filename.txt | grep "keyword"

    将文件内容通过管道传递给 grep 命令进行搜索。

注意事项

  • cat 适合查看较小的文本文件,对于大文件建议使用 lessmore 命令分页查看。
  • 使用 cat 查看二进制文件可能导致终端显示乱码。
  • 与重定向符号 >>> 结合时,注意前者会覆盖目标文件,后者会追加内容。## whereis 指令
    功能:用于找到程序的源、二进制文件或手册
    举例:

tac 指令

taccat 命令的"反向"版本,其名称正是 cat 倒过来拼写。它的主要功能是反向显示文件内容,即从最后一行开始,逐行向前显示到第一行。这在需要查看日志文件末尾内容、或者按时间倒序排列文本时非常有用。

语法tac [选项] [文件...]

功能

  • 将一个或多个文件的内容按行反向输出到标准输出(屏幕)。
  • 如果指定多个文件,会按文件顺序依次反向显示每个文件的内容。
  • 常与管道(|)结合,对命令输出进行反向排序。

实用示例

  1. 反向显示文件内容

    bash 复制代码
    tac file.txt

    file.txt 的内容从最后一行开始显示到第一行。

  2. 反向显示多个文件

    bash 复制代码
    tac file1.txt file2.txt

    先反向显示 file1.txt 的内容,再反向显示 file2.txt 的内容。

  3. 与管道结合,反向显示命令输出

    bash 复制代码
    ls -l | tac

    ls -l 的输出行反向显示(最后一行变成第一行)。

  4. 使用自定义分隔符

    bash 复制代码
    echo "a:b:c:d" | tac -s ':'

    输出:d:c:b:a(以冒号 : 作为分隔符进行反向)。

  5. 查看日志文件的最新条目(倒序)

    bash 复制代码
    tac /var/log/syslog | head -20

    查看系统日志的最后 20 条记录(从最新到最旧)。

cat 的对比

  • cat:按正常顺序(第一行到最后一行)显示文件内容。
  • tac:按反向顺序(最后一行到第一行)显示文件内容。

注意事项

  • tac 通常用于文本文件,对二进制文件无意义。
  • 如果文件很大,tac 会先将整个文件读入内存,因此处理超大文件时需谨慎。
  • 在需要按时间倒序查看日志等场景下,tac 比先 cat 再通过其他工具排序更直接高效。## alias 指令

功能:设置命令的别名

date 指令

date 命令用于显示或设置系统的日期和时间。它功能强大,支持多种时间格式的输出和设置,还能处理 Unix 时间戳。

语法date [选项]... [+格式]

功能

  • 显示当前日期和时间(默认行为)。
  • 按照指定格式输出时间。
  • 设置系统时间(需要 root 权限)。
  • 进行时间戳与可读时间之间的转换。

1. 显示时间(格式化输出)

使用 + 号后接格式标记来指定输出格式。常用格式标记如下:

  • %H:小时(00-23)
  • %M:分钟(00-59)
  • %S:秒(00-61,60和61用于闰秒)
  • %X:相当于 %H:%M:%S,表示本地时间表示(时:分:秒)
  • %d:日(01-31)
  • %m:月份(01-12)
  • %Y:完整年份(例如 2024)
  • %F:相当于 %Y-%m-%d(ISO 8601 日期格式)

示例

bash 复制代码
# 显示当前日期和时间(默认格式)
date
# 输出:Tue May 19 12:02:16 CST 2026

# 按指定格式显示
date +"%Y-%m-%d %H:%M:%S"
# 输出:2026-05-19 12:02:16

date +%F
# 输出:2026-05-19

2. 设置系统时间

使用 -s 选项设置系统时间,通常需要 root 权限。

示例

bash 复制代码
# 设置当前日期为 2008年5月23日,时间重置为 00:00:00
sudo date -s "20080523"

# 仅设置时间(不更改日期)
sudo date -s "01:01:01"

# 设置完整的日期和时间(多种格式均可)
sudo date -s "2008-05-23 01:01:01"
sudo date -s "01:01:01 2008-05-23"
sudo date -s "20080523 01:01:01"

3. 时间戳操作

Unix 时间戳(Unix epoch, Unix time, POSIX time)是指从 1970年1月1日 00:00:00 UTC 开始所经过的秒数,不考虑闰秒。

示例

bash 复制代码
# 获取当前时间的时间戳
date +%s
# 输出:例如 1747627336

# 将时间戳转换为可读时间
date -d @1508749502
# 输出:Tue Oct 24 09:05:02 CST 2017

# 也可以使用以下格式
date --date='@1508749502'

4. 实用示例

bash 复制代码
# 显示昨天的时间
date -d "yesterday"

# 显示明天的时间
date -d "tomorrow"

# 显示一周后的时间
date -d "next week"

# 显示特定格式的昨天日期
date -d "yesterday" +%F
# 输出:2026-05-18

# 计算命令执行时间(结合脚本)
start=$(date +%s)
# 执行一些命令...
sleep 2
end=$(date +%s)
echo "耗时:$((end - start)) 秒"

注意事项

  • 修改系统时间通常需要 sudo 权限。
  • 格式字符串中的 + 是固定前缀,不是运算符。
  • 时间戳转换时,@ 符号是必须的。
  • 对于需要高精度时间戳的场景,可以使用 date +%s%N 获取纳秒级时间戳。## grep 指令
    语法: grep [选项] 搜寻字符串 文件
    功能:在文件中搜索字符串,将找到的行打印出来
    常用选项:
    • -i :忽略大小写的不同,所以大小写视为相同
    • -n :顺便输出行号
    • -v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行

whereis 指令

whereis 命令用于快速定位指定命令的二进制文件、源代码文件和手册页(man page)的路径 。它比 find 命令更高效,因为它只搜索系统预定义的几个标准目录(如 /bin, /usr/bin, /usr/share/man 等),而不是遍历整个文件系统。

语法whereis [选项] 命令名

功能

  • 查找并显示命令的二进制文件位置。
  • 查找并显示命令的源代码文件位置(如果已安装)。
  • 查找并显示命令的联机帮助手册(man page)位置。

常用选项

  • -b:只查找二进制文件。
  • -m:只查找手册页文件。
  • -s:只查找源代码文件。
  • -B <目录列表>:限制二进制文件的搜索目录。
  • -M <目录列表>:限制手册页的搜索目录。
  • -S <目录列表>:限制源代码文件的搜索目录。
  • -f:终止目录列表,并开始指定要搜索的命令名。

实用示例

  1. 查找 ls 命令的相关文件

    bash 复制代码
    whereis ls

    输出可能类似于:

    复制代码
    ls: /bin/ls /usr/share/man/man1/ls.1.gz

    这表示 ls 的二进制文件位于 /bin/ls,其手册页位于 /usr/share/man/man1/ls.1.gz

  2. 只查找 gcc 的二进制文件

    bash 复制代码
    whereis -b gcc

    输出:

    复制代码
    gcc: /usr/bin/gcc
  3. 只查找 python3 的手册页

    bash 复制代码
    whereis -m python3

    输出:

    复制代码
    python3: /usr/share/man/man1/python3.1.gz
  4. 在指定目录中查找 bash 的二进制文件

    bash 复制代码
    whereis -B /bin -f bash

    这将在 /bin 目录中查找 bash 的二进制文件。

which 命令的区别

  • which 命令只显示在 PATH 环境变量中列出的目录里找到的第一个可执行文件(即你输入命令时实际会执行的程序)。
  • whereis 命令搜索范围更广(包括二进制文件、源代码和手册页),且不依赖于 PATH,它搜索的是系统预定义的标准目录。

注意事项

  • whereis 通常用于查找系统命令和工具,对于用户自定义的脚本或安装在非标准位置的程序可能无法找到。
  • 如果某个命令没有安装源代码或手册页,则对应的字段在输出中会省略。## zip/unzip 指令
    语法: zip 压缩文件.zip 目录或文件
    功能:将目录或文件压缩成zip格式
    常用选项
    • -r:递归处理,将指定目录下的所有文件和子目录一并处理
    举例
    将test2目录压缩: zip test2.zip test2/*
    解压到tmp目录: unzip test2.zip -d /tmp
    关于 rzsz
    这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件. 安装完毕之后可以通过拖拽的方式将文件上传过去.
    1 sudo yum/apt install -y lrzlz
    现场演示windows和Linux如何互传文件

grep 指令

grep(Global Regular Expression Print)是 Linux 系统中一个功能强大的文本搜索工具,它允许用户在文件或标准输入中查找匹配指定模式(字符串或正则表达式)的行,并将匹配到的行打印出来。

语法grep [选项] 搜寻字符串 文件

功能

在指定的一个或多个文件中搜索包含给定模式(字符串或正则表达式)的行,并将这些行输出到标准输出(屏幕)。如果未指定文件,grep 将从标准输入读取数据。

常用选项

  • -i:忽略大小写(ignore case),将大写和小写字母视为相同。
  • -n:显示匹配行的行号(line number)。
  • -v:反向选择(invert match),即输出不包含搜寻字符串的行。

实用示例

  1. 基本搜索

    bash 复制代码
    grep "error" logfile.txt

    logfile.txt 中查找包含字符串 "error" 的所有行。

  2. 忽略大小写搜索

    bash 复制代码
    grep -i "warning" system.log

    system.log 中查找 "warning"、"Warning"、"WARNING" 等(不区分大小写)。

  3. 显示行号

    bash 复制代码
    grep -n "function" script.py

    script.py 中查找 "function" 并显示每匹配行所在的行号。

  4. 反向搜索(排除某些行)

    bash 复制代码
    grep -v "#" config.conf

    输出 config.conf 中所有不包含 注释符 # 的行(常用于查看有效配置)。

  5. 递归搜索目录

    bash 复制代码
    grep -r "TODO" ./src/

    ./src/ 目录及其所有子目录的文件中搜索 "TODO" 字符串。

  6. 使用管道与其他命令结合

    bash 复制代码
    ps aux | grep "nginx"

    在进程列表(ps aux 的输出)中查找包含 "nginx" 的行,常用于检查某个进程是否在运行。

  7. 搜索多个文件

    bash 复制代码
    grep "pattern" file1.txt file2.txt file3.txt

    在多个文件中同时搜索相同的模式。

  8. 使用正则表达式

    bash 复制代码
    grep -E "^[0-9]{3}-[0-9]{2}-[0-9]{4}$" data.txt

    使用扩展正则表达式查找符合美国社保号格式(如 123-45-6789)的行。

注意事项

  • grep 默认使用基础正则表达式(BRE),若需使用更丰富的元字符(如 +, ?, |, ()),请加上 -E 选项或使用 egrep
  • 搜索字符串若包含空格或特殊字符(如 $, *, .),建议用单引号 ' 括起来。
  • grep 常与管道 | 结合,用于过滤前一个命令的输出结果。

top 指令

top 命令是 Linux 系统中一个功能强大的实时系统监控工具。它可以动态显示系统中正在运行的进程信息,包括 CPU 占用率、内存使用情况、系统负载、运行时间等,是系统管理员进行性能分析和故障排查的常用工具。

语法top [选项]

功能

  • 实时显示系统整体资源使用概况(CPU、内存、交换分区等)。
  • 动态列出当前系统中占用资源最多的进程列表。
  • 支持交互式操作,可对进程进行排序、终止等管理。

常用选项

  • -d <秒数>:指定屏幕刷新间隔时间(默认 3 秒)。
  • -p <PID>:仅监控指定进程 ID 的进程。
  • -u <用户名>:仅显示属于指定用户的进程。
  • -n <次数>:指定 top 命令运行的次数后自动退出。
  • -b:以批处理模式运行,将输出重定向到文件,适合脚本中使用。

交互式快捷键(在 top 运行界面中使用)

  • P:按 CPU 使用率排序(默认)。
  • M:按内存使用率排序。
  • T:按进程运行时间排序。
  • k:终止指定 PID 的进程(会提示输入 PID 和信号)。
  • q:退出 top 程序。
  • 1:切换显示所有 CPU 核心的详细使用情况。

实用示例

  1. 启动 top(默认 3 秒刷新)

    bash 复制代码
    top
  2. 每 5 秒刷新一次

    bash 复制代码
    top -d 5
  3. 仅监控进程 ID 为 1234 的进程

    bash 复制代码
    top -p 1234
  4. 以批处理模式运行,输出到文件

    bash 复制代码
    top -b -n 1 > system_snapshot.txt

    将当前系统进程快照保存到文件。

输出信息解读

  • 第一行:系统运行时间、登录用户数、系统平均负载(1分钟、5分钟、15分钟)。
  • 第二行:进程总数、运行中进程数、睡眠进程数、停止进程数、僵尸进程数。
  • 第三行:CPU 使用率统计(用户空间、系统空间、空闲、等待 I/O 等)。
  • 第四行:物理内存使用情况(总量、已用、空闲、缓存)。
  • 第五行:交换分区使用情况。
  • 下方列表:各进程的详细信息(PID、用户、CPU%、内存%、运行时间、命令等)。

注意事项

  • top 命令默认按 CPU 使用率降序排列进程。
  • 僵尸进程(Zombie)过多可能表示有进程未正常结束,需要关注。
  • 系统平均负载(Load Average)若持续高于 CPU 核心数,表示系统可能过载。

zip 和 unzip 指令

zipunzip 是 Linux 系统中用于处理 ZIP 压缩格式文件的常用命令。ZIP 是一种广泛使用的跨平台压缩格式,能够将多个文件或目录打包并压缩为单个 .zip 文件,便于存储和传输。

zip 命令:创建 ZIP 压缩文件

下载指令

cpp 复制代码
centos:yum install zip unzip
ubuntu:apt install zip unzip

语法zip [选项] 压缩文件名.zip 文件或目录...

功能

将指定的文件或目录压缩成 ZIP 格式的归档文件。

常用选项

  • -r递归处理。当压缩对象是目录时,使用此选项可以递归地压缩该目录下的所有文件和子目录。

实用示例

  1. 压缩单个文件

    bash 复制代码
    zip archive.zip file.txt

    file.txt 压缩为 archive.zip

  2. 压缩整个目录(递归)

    bash 复制代码
    zip -r project.zip /path/to/project/

    /path/to/project/ 目录及其所有内容压缩为 project.zip

  3. 压缩多个指定文件

    bash 复制代码
    zip images.zip pic1.jpg pic2.png pic3.gif

    将三个图片文件打包压缩为 images.zip

  4. 创建加密的 ZIP 文件

    bash 复制代码
    zip -e secret.zip confidential.doc

    压缩 confidential.docsecret.zip,并设置解压密码。

unzip 命令:解压 ZIP 文件

语法unzip [选项] 压缩文件名.zip [-d 目标目录]

功能

解压 ZIP 格式的压缩文件,将其中包含的文件提取到当前目录或指定目录。

常用选项

  • -d <目录>:指定解压目标目录。如果目录不存在,unzip 会尝试创建它。
  • -l列表查看。不解压文件,仅列出压缩包内包含的文件列表。
  • -o覆盖解压。不询问用户,直接覆盖已存在的同名文件。
  • -n不覆盖解压。跳过已存在的文件,不进行覆盖。

实用示例

  1. 解压到当前目录

    bash 复制代码
    unzip archive.zip
  2. 解压到指定目录

    bash 复制代码
    unzip archive.zip -d /tmp/extract_here/

    archive.zip 解压到 /tmp/extract_here/ 目录下。

  3. 仅查看压缩包内容(不解压)

    bash 复制代码
    unzip -l archive.zip
  4. 解压加密的 ZIP 文件

    bash 复制代码
    unzip secret.zip

    执行后会提示输入解压密码。

关于 rz/sz 工具(文件传输补充)

rzsz 是 Linux 下与终端(如 XShell、SecureCRT)配合使用的文件传输工具,常用于在本地 Windows 机器和远程 Linux 服务器之间方便地传输文件。

  • sz (send ZMODEM):将选定的文件从 Linux 服务器发送(下载)到本地 Windows 机器。
  • rz (receive ZMODEM):将文件从本地 Windows 机器上传到 Linux 服务器。

安装方法(以常见的包管理器为例):

bash 复制代码
# 对于基于 Debian/Ubuntu 的系统
apt install -y lrzsz

# 对于基于 RHEL/CentOS 的系统
yum install -y lrzsz

基本使用

安装完成后,在支持 ZMODEM 协议的终端中:

  • 上传文件到服务器 :在 Linux 命令行输入 rz,终端会弹出文件选择对话框,选择本地文件即可上传。
  • 从服务器下载文件 :在 Linux 命令行输入 sz 文件名,终端会弹出对话框让你选择本地保存位置。

注意rz/sz 依赖于终端对 ZMODEM 协议的支持,并非所有终端模拟器都默认启用。主流的 XShell、SecureCRT、MobaXterm 等通常都支持。

File 指令

file 命令用于检测给定文件的类型。它通过分析文件的内容(而不是仅依赖文件扩展名)来判断文件是文本文件、二进制可执行文件、压缩文件、数据文件还是其他特殊格式。这对于处理未知文件或验证文件格式非常有用。

语法file [选项] 文件...

功能

  • 确定一个或多个文件的类型。
  • 对于符号链接,默认会跟随链接并报告目标文件的类型。
  • 输出人类可读的描述,例如 "ASCII text", "ELF 64-bit LSB executable", "Zip archive data" 等。

常用选项

  • -b简洁模式。输出时不显示文件名,只显示文件类型描述。
  • -i:输出 MIME 类型字符串(如 text/plain; charset=us-ascii),而不是人类可读的描述。
  • -L跟随符号链接。直接检查符号链接指向的目标文件(这是默认行为)。
  • -h--no-dereference不跟随符号链接。报告符号链接本身的信息(如 "symbolic link to /usr/bin/bash")。
  • -z:尝试查看压缩文件内部,并报告压缩包内文件的类型。

实用示例

  1. 检查普通文件类型

    bash 复制代码
    file /etc/passwd

    输出:/etc/passwd: ASCII text

  2. 检查可执行文件类型

    bash 复制代码
    file /bin/ls

    输出:/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=..., for GNU/Linux 3.2.0, stripped

    复制代码

注意事项

  • file 命令的判断基于文件开头的**魔数(magic number)**和内容特征,因此非常可靠。
  • 对于纯文本文件,它还能尝试猜测文本的编码(如 UTF-8, ISO-8859-1)。
  • 它是系统管理员和开发者在处理未知文件时的必备诊断工具。## tar 指令(重要)

tar指令

tar 命令是 Linux 中用于打包和归档文件的核心工具,其名称来源于 "Tape ARchive"(磁带归档)。它可以将多个文件或目录打包成一个单独的归档文件(通常称为 tarball),并且可以配合压缩程序(如 gzip、bzip2)进行压缩,便于备份、传输和分发。

语法tar [选项] 文件或目录...

核心功能

  • 打包(归档) :将多个文件/目录合并为一个 .tar 文件。
  • 解包(提取) :从 .tar 归档中恢复原始文件。
  • 压缩/解压 :配合压缩过滤器(如 -z, -j)直接创建或解压压缩归档。
  • 列出内容:查看归档文件中包含哪些文件,而无需解压。

常用选项(必须熟记)

  • -c创建新的归档文件(create)。
  • -x提取归档文件中的内容(extract)。
  • -t列出归档文件中的内容列表(list)。
  • -z:通过 gzip 进行压缩或解压。通常与 -c-x 联用,处理 .tar.gz.tgz 文件。
  • -j:通过 bzip2 进行压缩或解压。通常与 -c-x 联用,处理 .tar.bz2 文件。
  • -J:通过 xz 进行压缩或解压。处理 .tar.xz 文件,压缩率通常更高。
  • -v详细模式,显示正在处理的文件列表(verbose)。
  • -f指定归档文件名。此选项后必须紧跟文件名。这是最关键的选项之一。
  • -C改变至目录。在解压时,指定目标目录。

选项组合记忆口诀

  • 创建归档tar -cvf
  • 查看内容tar -tvf
  • 提取归档tar -xvf
  • 压缩归档 :加上 -z (gzip), -j (bzip2), -J (xz)

实用示例

  1. 打包目录(不压缩)

    bash 复制代码
    tar -cvf project_backup.tar /home/user/project/

    /home/user/project/ 目录打包为 project_backup.tar

  2. 打包并压缩(gzip)

    bash 复制代码
    tar -zcvf project_backup.tar.gz /home/user/project/
    # 或
    tar -cvzf project_backup.tgz /home/user/project/

    打包并使用 gzip 压缩,生成 project_backup.tar.gz.tgz

  3. 打包并压缩(bzip2,压缩率更高)

    bash 复制代码
    tar -jcvf project_backup.tar.bz2 /home/user/project/

    打包并使用 bzip2 压缩,生成 project_backup.tar.bz2

  4. 查看压缩包内容

    bash 复制代码
    tar -ztvf project_backup.tar.gz

    列出 project_backup.tar.gz 中的所有文件(使用 -z 因为这是 gzip 压缩的)。

  5. 解压到当前目录

    bash 复制代码
    tar -zxvf project_backup.tar.gz

    解压 gzip 压缩的归档文件到当前目录。

  6. 解压到指定目录

    bash 复制代码
    tar -zxvf project_backup.tar.gz -C /opt/restored_project/

    将归档文件解压到 /opt/restored_project/ 目录。-C 选项的目标目录必须已存在。

  7. 仅解压特定文件

    bash 复制代码
    tar -zxvf project_backup.tar.gz path/to/important.conf

    仅从归档中提取 path/to/important.conf 文件。

  8. 保留文件权限(常用于系统备份/恢复)

    bash 复制代码
    tar -zxvpf system_backup.tar.gz -C /

    解压时保留文件的原始权限和属性,并提取到根目录 /

  9. 创建归档时排除某些文件

    bash 复制代码
    tar -zcvf backup.tar.gz --exclude="*.tmp" --exclude="logs/" /home/user/data/

    打包 /home/user/data/ 目录,但排除所有 .tmp 文件和 logs/ 子目录。

  10. 追加文件到现有归档

    bash 复制代码
    tar -rvf existing.tar newfile.txt

    newfile.txt 追加到 existing.tar 归档的末尾。注意 :此操作不支持压缩的归档(如 .tar.gz)。

注意事项

  • 顺序重要-f 选项必须紧跟指定的文件名。习惯上把 -f 放在选项串的最后。
  • 压缩格式识别 :通常通过文件扩展名选择对应选项:
    • .tar -> -cvf / -xvf
    • .tar.gz.tgz -> -zcvf / -zxvf
    • .tar.bz2 -> -jcvf / -jxvf
    • .tar.xz -> -Jcvf / -Jxvf
  • 安全警告 :解压来自不受信任来源的 tar 包时需谨慎,尤其是使用 -p(保留权限)或解压到系统目录时,可能被恶意文件覆盖。
  • 绝对路径问题 :如果用绝对路径(如 /etc/passwd)创建归档,解压时可能会显示 tar: Removing leading '/' from member names 警告,这是安全特性,防止覆盖系统关键文件。建议在打包时先进入目录再使用相对路径。

bc指令

关机

语法:shutdown 选项]

常⻅选项:

• -h:将系统的服务停掉后,⽴即关机。

• -r:在将系统的服务停掉之后就重新启动

• -t sec:-t 后⾯加秒数,亦即『过⼏秒后关机』的意思

相关推荐
Stark-C10 小时前
Obsidian官方同步贵?在NAS上自建服务器,实现多端笔记完美同步
运维·服务器·笔记
步十人10 小时前
【Linux】基础命令
linux·运维·服务器
AI人工智能+电脑小能手10 小时前
【大白话说Java面试题 第62题】【JVM篇】第22题:怎么查看服务器默认的垃圾回收器是哪一个?
java·服务器·jvm·面试
Languorous.10 小时前
Linux 开关机、重启、注销命令(新手安全操作指南)
linux·运维·安全
clear sky .10 小时前
[freeRTOS源码阅读]list.c/h
linux·服务器·windows
tudoSearcher10 小时前
服务器蓝屏了远程连不上?工业级IP KVM的硬件级抢救实战
运维·服务器·tcp/ip
睡一觉就好了。10 小时前
Linux基础指令(二)
linux
海市公约10 小时前
基于Linux的CentOS 7 下载安装 MySQL 8的全教程
linux·mysql·centos·环境搭建
WangLanguager10 小时前
Unix 命令 rm详细介绍
linux·服务器·unix