您的当前位置:首页正文

命令如诗,步入Linux的晨曦:指令初学者的旅程(下)

2024-11-01 来源:个人技术集锦


前言

继上篇命令如诗,步入Linux的晨曦:指令初学者的旅程(上)
Linux系统因其高效、灵活和安全性,广泛应用于服务器、开发、运维等各个领域。对于刚接触Linux的新手来说,熟练掌握基本指令是开启Linux之旅的第一步。本文将帮助您快速了解和使用Linux中最常用的基础指令,为您在日常操作和管理中打下扎实的基础。


?补充内容——管道

管道在计算机科学中,特别是在操作系统和命令行环境中,具有深远的意义。它代表了一种将数据从一个程序或命令的输出直接传递给另一个程序或命令的输入的能力,而无需通过中间文件或用户干预。这种机制极大地提高了数据处理的灵活性和效率。

管道的意义

示例

假设我们有一个名为data.txt的文件,其中包含一些文本数据。我们想要统计这个文件中有多少行包含单词“error”。

我们可以使用以下管道命令来实现这一目标:

grep 'error' data.txt | wc -l

在这个例子中:

  • grep 'error' data.txt:这个命令会在data.txt文件中搜索包含单词“error”的行,并将这些行作为输出。
  • |:这个符号是管道符号,它表示将前一个命令的输出作为后一个命令的输入。
  • wc -l:这个命令会统计输入中的行数。在这里,它会统计grep命令输出的行数,即包含单词“error”的行数。

通过运行这个管道命令,我们可以得到data.txt文件中包含单词“error”的行数。

这个示例展示了管道如何允许我们组合多个简单的命令来执行复杂的任务,而无需编写复杂的脚本或程序。这种能力使得命令行成为数据处理和自动化任务的强大工具。

?11. cat - 显示文件内容

11.1 显示文件内容

使用 cat 命令来显示文件的内容:

cat 文件名

例如,显示 file.txt 的内容:

cat file.txt

11.2 连接多个文件并显示内容

可以将多个文件的内容连接后输出:

cat 文件1 文件2

例如,将 file1.txtfile2.txt 的内容连接后输出:

cat file1.txt file2.txt

11.3 显示行号

通过 -n 选项可以显示输出内容的行号:

cat -n 文件名

例如,显示 file.txt 的内容并带有行号:

cat -n file.txt

11.4 合并文件

通过重定向操作符 > 可以将 cat 命令的输出写入新文件,从而合并文件内容:

cat 文件1 文件2 > 新文件

例如,将 file1.txtfile2.txt 的内容合并到 combined.txt 中:

cat file1.txt file2.txt > combined.txt

11.5 显示非打印字符

使用 -v 选项可以显示非打印字符(不可见字符):

cat -v 文件名

例如,显示 file.txt 的内容并显示非打印字符:

cat -v file.txt

11.6 将标准输入输出到文件

通过不带任何参数的 cat 命令,可以将标准输入的内容重定向到文件中:

cat > 文件名

然后输入内容,按 Ctrl + D 结束输入并保存到文件中。

?12. less - 分页查看文件内容

12.1 基本用法

  1. 查看文件内容

    less filename
    
  • 先写一个脚本,写1000个Hello World追加到data.txt文件中。

    这个命令会打开指定的文件,并在终端中显示其内容。你可以使用键盘上的箭头键来上下滚动文件内容。

  1. 搜索内容
    less 中,你可以使用 / 搜索字符串。例如,输入 /search_term 然后按 Enter 键,less 会高亮显示所有匹配的字符串。你可以使用 n 键跳转到下一个匹配项,N 键跳转到上一个匹配项。

  2. 跳转到指定行
    你可以使用 g 命令后跟行号来跳转到文件中的指定行。例如,输入 g100 然后按 Enter 键,less 会跳转到文件的第100行。

  3. 向上/向下翻页
    使用 空格键f 键可以向下翻页,使用 b 键可以向上翻页。你也可以使用 Page UpPage Down 键来翻页。

  4. 退出 less
    要退出 less,你可以按 q 键。

12.2 高级用法

  1. 标记和跳转
    你可以在文件中设置标记,以便稍后能够快速跳转到该位置。使用 ma 命令(其中 a 可以是任何小写字母)来设置一个标记,然后使用 'a(注意是单引号)来跳转到该标记。
  2. 跟随文件更新
    如果你想要实时查看文件的更新(例如日志文件),可以使用 less +F filename 命令。这类似于 tail -f 命令,但提供了 less 的所有导航和搜索功能。要退出跟随模式,你可以按 Ctrl+C
  3. 上下滚动
    除了箭头键,你还可以使用 kj 键来上下滚动一行,使用 yu 键来上下滚动半屏。
  4. 改变滚动行为
    默认情况下,less 会以半屏为单位滚动。你可以使用 z 命令来改变滚动行为。例如,z- 会将滚动行为更改为单行滚动,z. 会将其重置为默认行为。
  5. 显示帮助
    less 中,你可以按 h 键来显示帮助信息,其中包含了所有可用的命令和快捷键。

注意事项

  • less 命令通常不会修改文件内容,它只是用于查看文件。
  • 如果你在 less 中进行了搜索或设置了标记,当你退出 less 时,这些状态不会被保存。
  • less 支持多种文本编码和字符集,但你需要确保你的终端也支持这些编码和字符集。

?13. head - 查看文件的前几行内容

13.1 基本用法

head 指令的基本语法如下:

head [选项] 文件名
  • 选项head 指令支持多个选项,用于定制其行为。例如,-n 选项允许用户指定要显示的行数。
  • 文件名:这是你想要查看的文件的路径和名称。

13.2 常用选项

  • -n:指定要显示的行数。如果不使用这个选项,head 默认显示文件的前10行。
  • -c:指定要显示的字节数。这个选项允许用户按字节而不是按行来查看文件内容。
  • -v:总是显示文件名。当head 从标准输入读取数据时,这个选项很有用,因为它会显示一个默认的文件名(通常是-)来表示输入来自标准输入。

13.3 示例

  1. 显示文件example.txt的前5行:
head -n 5 example.txt

  1. 显示文件example.txt的前20个字节:
head -c 20 example.txt

  1. 显示标准输入的前3行(例如,从键盘输入):
head -n 3

在这种情况下,用户需要手动输入数据,并在完成后按Ctrl+DCtrl+Z然后回车来表示输入的结束。

注意事项

  • 如果指定的行数或字节数超过了文件的内容长度,head 会显示文件的全部内容。
  • head 指令对于快速预览文件内容非常有用,特别是在处理大型日志文件时。
  • 在某些情况下,head 可以与其他命令结合使用,通过管道传递数据。例如,可以使用tail -n +1000 | head -n 5来查看文件从第1000行开始的5行内容(注意,这通常不是head 的直接用途,但展示了管道的使用)。

?14. tail - 显示文件的末尾部分内容

14.1 基本用法

tail指令的基本语法如下:

tail [选项] [文件名]
  • 选项tail指令支持多个选项,用于定制其行为。
  • 文件名:指定要显示末尾内容的文件。

14.2 常用选项

  • -n <行数>:显示文件的最后n行。如果不指定该选项,tail默认显示文件的最后10行。
  • -f <文件名/描述符>--follow=<name/descriptor>:实时显示文件的新增内容。这对于监控日志文件非常有用。
  • -c <字节数>:显示文件的最后n个字节。
  • -v--verbose:当有多个文件参数时,总是输出各个文件名。
  • -q--quiet--silent:当有多个文件参数时,不输出各个文件名。
  • --pid=<进程号>:与-f选项连用,当指定的进程号终止后,tail命令自动退出。
  • -s <秒数>--sleep-interval=<秒数>:与-f选项连用,指定监视文件变化的时间间隔(以秒为单位)。
  • --retry:在tail命令启动时,如果文件不可访问或稍后变得不可访问,则始终尝试打开文件。此选项通常与--follow=name连用。
  • -F:与--follow=name--retry功能相同,用于在文件名变化时继续追踪文件内容。

14.3 示例

  1. 显示文件logfile.txt的最后20行:
tail -n 20 logfile.txt

先写入30个hello i (1<=i<=30) 到logfile.txt里面去

执行命令后:

  1. 实时显示文件syslog的新增内容:
tail -f /var/log/syslog
  1. 显示文件data.txt的最后50个字节:
tail -c 50 data.txt
  1. 同时显示文件file1.txtfile2.txt的最后10行(默认行为,无需额外选项):
tail file1.txt file2.txt
  1. 使用-F选项追踪文件名可能变化的日志文件:
tail -F /path/to/potentially/renamed/logfile.txt

注意事项

  • 如果指定的行数或字节数超过了文件的内容长度,tail会显示文件的全部内容。
  • -f选项是tail命令中最常用的选项之一,它允许用户实时查看文件的更新内容,非常适合用于监控日志文件。
  • 当使用-f选项时,可以通过按Ctrl+C来中断tail命令,停止实时查看文件内容。
  • tail指令与其他命令(如grepawksed等)结合使用时,可以通过管道传递数据,实现更复杂的数据处理任务。

?15. date – 显示或设置系统的日期和时间

在Linux中,date命令用于显示或设置系统的日期和时间。以下是date命令的常用用法和选项:

15.1 查看当前日期和时间

date

默认情况下,此命令会输出当前的系统日期和时间,格式如:

Wed Oct 30 08:50:27 PM CST 2024

15.2 自定义日期和时间格式

date命令支持通过格式化选项来自定义输出格式。常用格式符包括:

  • %Y:四位数年份(如:2024)
  • %m:月份(01-12)
  • %d:日期(01-31)
  • %H:小时(00-23,24小时制)
  • %M:分钟(00-59)
  • %S:秒数(00-59)

例如,显示当前日期为YYYY-MM-DD格式:

date +"%Y-%m-%d"

显示当前时间为HH:MM:SS格式:

date +"%H:%M:%S"

15.3 时间戳

时间戳(Timestamp)在Linux中通常指的是Unix时间戳,表示从1970年1月1日00:00:00 UTC到当前时间的秒数。这种格式广泛用于计算机系统中,因其便于计算和排序。

15.3.1 获取当前时间的时间戳

使用date命令可以轻松获取当前时间的Unix时间戳:

date +%s

输出的结果类似于:1730292783,表示当前时刻的秒数。

15.3.2 将时间戳转换为可读日期

可以使用date命令将特定的时间戳转换为人类可读的日期格式。例如,转换时间戳1730292783

date -d @1730292783

这将显示为标准格式的日期和时间,如Wed Oct 30 08:53:03 PM CST 2024

15.3.3 获取特定时间的时间戳

如果想要查询过去或未来某个时间点的时间戳,可以通过-d选项指定该时间。比如获取2024-12-25 10:00:00的时间戳:

date -d "2024-12-25 10:00:00" +%s

?16. cal – 显示日历

cal命令用于显示日历,它是一个简单且非常实用的工具。下面是一些常用的cal命令用法:

16.1 显示当前月的日历

cal

这个命令会显示当前月的日历。例如,执行后可能会看到类似以下输出:

    October 2024
Su Mo Tu We Th Fr Sa
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

16.2 显示特定年份的日历

可以指定年份来查看该年所有月份的日历。例如,查看2023年的日历:

cal 2023

16.3 显示特定月份的日历

cal命令允许查看特定月份和年份。例如,要查看2024年3月的日历:

cal 3 2024

?17. find – 查找符合特定条件的文件和目录

17.1 查找指定目录中的所有文件和目录

find /path/to/directory
find /home/user

17.2 按名称查找文件

使用-name选项查找特定名称的文件(区分大小写):

find /path/to/directory -name "filename"
find ./linux/lesson4 -name "file.txt"

如果需要忽略大小写,可以使用-iname

find /path/to/directory -iname "filename"

17.3 按文件类型查找

  • 查找目录:-type d
  • 查找普通文件:-type f
find ./linux -type d

17.4 按大小查找文件

使用-size选项查找特定大小的文件,支持以下单位:

  • c:字节
  • k:千字节
  • M:兆字节
  • G:千兆字节

例如,查找大于100MB的文件:

find /path/to/directory -size +100M

?18. grep – 在文件中搜索文本

grep命令用于在文件中搜索文本,特别适合查找包含特定字符串的行。它支持正则表达式,是文本处理的强大工具。以下是一些常用的grep命令用法:

18.1 在文件中查找文本

grep "search_term" filename

例如,在文件file.txt中查找包含“hello”的行:

grep "hello" file.txt

18.2 递归查找

grep -r "search_term" /path/to/directory
grep -r "error" /var/log

18.3 忽略大小写

使用-i选项忽略大小写。例如,查找“Hello”和“hello”:

grep -i "hello" file.txt

18.4 显示行号

使用-n选项在输出中显示匹配行的行号:

grep -n "search_term" filename

例如,在file.txt中查找并显示行号:

grep -n "hello" file.txt

这里我们组合使用-i-n

18.5 匹配整个单词

使用-w选项匹配整个单词(避免匹配部分单词)。例如,仅匹配单词“hello”而不是“hello123”:

grep -w "hello" example.txt

18.6 查找不匹配的行

使用-v选项查找不包含指定模式的行。例如,查找不包含“hello”的行:

grep -v "hello" example.txt

?19. tar – 创建、解压和管理归档文件

19.1 基本选项

  • -c:创建归档文件
  • -x:解压归档文件
  • -v:显示详细信息
  • -f:指定文件名
  • -z:使用gzip压缩/解压(生成.tar.gz文件)
  • -j:使用bzip2压缩/解压(生成.tar.bz2文件)
  • -J:使用xz压缩/解压(生成.tar.xz文件)

19.2 czf:创建压缩文件

c表示“create”(创建),z表示使用gzip压缩,f表示指定文件名。
tar czf用于创建一个.tar.gz压缩文件:

tar czf archive.tar.gz /path/to/directory_or_file

19.3 tzf:列出压缩文件的内容

t表示“list contents”(列出内容),z表示使用gzip解压,f表示指定文件名。
tar tzf用于在不解压的情况下查看.tar.gz文件的内容:

tar tzf archive.tar.gz

这条命令会列出archive.tar.gz文件中的所有内容。

19.4 xzf:解压文件

x表示“extract”(解压),z表示使用gzip解压,f表示指定文件名。
tar xzf用于解压一个.tar.gz文件:

tar xzf archive.tar.gz

?20. bc – 计算器工具,用于执行精确的数学计算

20.1 进入bc交互模式

直接输入bc命令后,可以进入交互模式,可以连续输入数学表达式并获得计算结果:

bc

例如:

3 + 5
10 * 2

退出交互模式,输入quit或按Ctrl+D

20.2 使用echobc进行简单计算

可以将数学表达式通过echo管道传递给bc来执行:

echo "3 + 5" | bc

20.3 设置小数精度,进行浮点运算

使用scale变量设置小数点后的精度。例如,将精度设置为2位:

echo "scale=2; 10 / 3" | bc

输出:3.33

20.5 计算幂次方

使用^符号进行幂运算:

echo "2 ^ 3" | bc

输出:8

?21. uname -r – Linux系统中查看当前内核的版本号

uname -r命令用于在Linux系统中查看当前内核的版本号。该命令输出的内容包含当前系统使用的内核版本,可以帮助您了解内核的更新情况或在调试时查看内核信息。

21.1 使用方法

uname -r

21.2 示例输出

执行后,输出可能类似于以下内容:

5.15.0-112-generic

21.3 输出内容解析

输出的格式通常包含几个部分,以便于识别内核版本的具体信息:

  • 5.15.0:主版本号和次版本号,这表示内核的主要版本和子版本。
  • 112:补丁级别,表示内核的修订号,通常代表稳定性和安全更新。
  • generic:分支或体系结构信息,可能为generic(通用版本),lowlatency(低延迟版本)等。

uname -r是查看Linux系统内核版本的便捷方法,特别在排查硬件兼容性或进行系统升级时非常有用。

?22. 终端快捷键

在Linux终端和文本编辑器中,有许多重要的快捷键可以提高效率。这些快捷键通常适用于大多数Linux发行版的终端环境。以下是一些常用且重要的快捷键:

  1. Ctrl + C:终止当前运行的命令。
    • 用于强制中断正在执行的命令或进程。
  2. Ctrl + Z:将当前进程挂起到后台。
    • 挂起进程后,可以使用fg将其恢复到前台,或bg让其在后台继续执行。
  3. Ctrl + D:退出当前终端会话或输入结束符。
    • 在命令行中按Ctrl + D可以关闭终端,也可以结束输入(如结束cat命令的输入)。
  4. Ctrl + A:将光标移动到行首。
    • 在输入长命令时,快速返回行首进行修改。
  5. Ctrl + E:将光标移动到行尾。
    • 在输入长命令时,快速跳到行尾。
  6. Ctrl + U:删除光标之前的所有内容。
    • 用于快速清除当前命令行中的内容,方便重新输入。
  7. Ctrl + K:删除光标之后的所有内容。
    • 快速删除当前行中光标后的内容。
  8. Ctrl + R:在命令历史记录中进行反向搜索。
    • 输入部分命令后,使用Ctrl + R可以找到之前使用过的命令。
  9. Tab:自动补全命令或文件名。
    • 按一次Tab尝试补全命令或文件名,按两次列出可能的选项。
  10. ↑和↓箭头:浏览命令历史。
    • 向上箭头可以查看之前输入的命令,向下箭头则查看更新的命令。

?23. shutdown – 关机

shutdown 是最常用的关机命令,可以设置定时关机、立即关机、重启等。

23.1 立即关机

sudo shutdown now

这会立即关闭系统。

23.2 定时关机

sudo shutdown +10

这会在10分钟后关机。

23.3 指定具体时间关机

sudo shutdown 22:00

这会在当天晚上10点关闭系统。

23.4 取消关机

  • 如果关机命令已下达,但还没执行,可以通过以下命令取消:
sudo shutdown -c

23.5 重启系统

sudo shutdown -r now

这会立即重启系统。


结语

Linux的世界广阔而充满活力,而基础指令只是它的起点。随着对Linux的不断深入学习,您将发现更多强大而高效的工具和方法。希望这篇文章能帮助您顺利迈出第一步,为将来的深入学习奠定坚实的基础。

今天的分享到这里就结束啦!如果觉得文章还不错的话,可以三连支持一下,17的主页还有很多有趣的文章,欢迎小伙伴们前去点评,您的支持就是17前进的动力!

Top