文章目录
- 前言
- 🦚补充内容——管道
- 管道的意义
- 示例
- 🦚11. `cat` - 显示文件内容
- 11.1 显示文件内容
- 11.2 连接多个文件并显示内容
- 11.3 显示行号
- 11.4 合并文件
- 11.5 显示非打印字符
- 11.6 将标准输入输出到文件
- 🦚12. `less` - 分页查看文件内容
- 12.1 基本用法
- 12.2 高级用法
- 🦚13. `head` - 查看文件的前几行内容
- 13.1 基本用法
- 13.2 常用选项
- 13.3 示例
- 🦚14. `tail` - 显示文件的末尾部分内容
- 14.1 基本用法
- 14.2 常用选项
- 14.3 示例
- 🦚15. `date` -- 显示或设置系统的日期和时间
- 15.1 查看当前日期和时间
- 15.2 自定义日期和时间格式
- 15.3 时间戳
- 15.3.1 获取当前时间的时间戳
- 15.3.2 将时间戳转换为可读日期
- 15.3.3 获取特定时间的时间戳
- 🦚16. `cal` -- 显示日历
- 16.1 显示当前月的日历
- 16.2 显示特定年份的日历
- 16.3 显示特定月份的日历
- 🦚17. `find` -- 查找符合特定条件的文件和目录
- 17.1 查找指定目录中的所有文件和目录
- 17.2 按名称查找文件
- 17.3 按文件类型查找
- 17.4 按大小查找文件
- 🦚18. `grep` -- 在文件中搜索文本
- 18.1 在文件中查找文本
- 18.2 递归查找
- 18.3 忽略大小写
- 18.4 显示行号
- 18.5 匹配整个单词
- 18.6 查找不匹配的行
- 🦚19. `tar` -- 创建、解压和管理归档文件
- 19.1 基本选项
- 19.2 `czf`:创建压缩文件
- 19.3 `tzf`:列出压缩文件的内容
- 19.4 `xzf`:解压文件
- 🦚20. `bc` -- 计算器工具,用于执行精确的数学计算
- 20.1 进入`bc`交互模式
- 20.2 使用`echo`和`bc`进行简单计算
- 20.3 设置小数精度,进行浮点运算
- 20.5 计算幂次方
- 🦚21. `uname -r` -- Linux系统中查看当前内核的版本号
- 21.1 使用方法
- 21.2 示例输出
- 21.3 输出内容解析
- 🦚22. 终端快捷键
- 🦚23. `shutdown` -- 关机
- 23.1 立即关机
- 23.2 定时关机
- 23.3 指定具体时间关机
- 23.4 取消关机
- 23.5 重启系统
- 结语
前言
继上篇命令如诗,步入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.txt
和 file2.txt
的内容连接后输出:
cat file1.txt file2.txt
11.3 显示行号
通过 -n
选项可以显示输出内容的行号:
cat -n 文件名
例如,显示 file.txt
的内容并带有行号:
cat -n file.txt
11.4 合并文件
通过重定向操作符 >
可以将 cat
命令的输出写入新文件,从而合并文件内容:
cat 文件1 文件2 > 新文件
例如,将 file1.txt
和 file2.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 基本用法
-
查看文件内容
less filename
-
先写一个脚本,写1000个
Hello World
追加到data.txt
文件中。
这个命令会打开指定的文件,并在终端中显示其内容。你可以使用键盘上的箭头键来上下滚动文件内容。
-
搜索内容
在less
中,你可以使用/
搜索字符串。例如,输入/search_term
然后按 Enter 键,less
会高亮显示所有匹配的字符串。你可以使用n
键跳转到下一个匹配项,N
键跳转到上一个匹配项。
-
跳转到指定行
你可以使用g
命令后跟行号来跳转到文件中的指定行。例如,输入g100
然后按 Enter 键,less
会跳转到文件的第100行。
-
向上/向下翻页
使用空格键
或f
键可以向下翻页,使用b
键可以向上翻页。你也可以使用Page Up
和Page Down
键来翻页。 -
退出
less
要退出less
,你可以按q
键。
12.2 高级用法
- 标记和跳转
你可以在文件中设置标记,以便稍后能够快速跳转到该位置。使用ma
命令(其中a
可以是任何小写字母)来设置一个标记,然后使用'a
(注意是单引号)来跳转到该标记。 - 跟随文件更新
如果你想要实时查看文件的更新(例如日志文件),可以使用less +F filename
命令。这类似于tail -f
命令,但提供了less
的所有导航和搜索功能。要退出跟随模式,你可以按Ctrl+C
。 - 上下滚动
除了箭头键,你还可以使用k
和j
键来上下滚动一行,使用y
和u
键来上下滚动半屏。 - 改变滚动行为
默认情况下,less
会以半屏为单位滚动。你可以使用z
命令来改变滚动行为。例如,z-
会将滚动行为更改为单行滚动,z.
会将其重置为默认行为。 - 显示帮助
在less
中,你可以按h
键来显示帮助信息,其中包含了所有可用的命令和快捷键。
注意事项
less
命令通常不会修改文件内容,它只是用于查看文件。- 如果你在
less
中进行了搜索或设置了标记,当你退出less
时,这些状态不会被保存。 less
支持多种文本编码和字符集,但你需要确保你的终端也支持这些编码和字符集。
🦚13. head
- 查看文件的前几行内容
13.1 基本用法
head
指令的基本语法如下:
head [选项] 文件名
- 选项:
head
指令支持多个选项,用于定制其行为。例如,-n
选项允许用户指定要显示的行数。 - 文件名:这是你想要查看的文件的路径和名称。
13.2 常用选项
-n
:指定要显示的行数。如果不使用这个选项,head
默认显示文件的前10行。-c
:指定要显示的字节数。这个选项允许用户按字节而不是按行来查看文件内容。-v
:总是显示文件名。当head
从标准输入读取数据时,这个选项很有用,因为它会显示一个默认的文件名(通常是-
)来表示输入来自标准输入。
13.3 示例
- 显示文件
example.txt
的前5行:
head -n 5 example.txt
- 显示文件
example.txt
的前20个字节:
head -c 20 example.txt
- 显示标准输入的前3行(例如,从键盘输入):
head -n 3
在这种情况下,用户需要手动输入数据,并在完成后按Ctrl+D
或Ctrl+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 示例
- 显示文件
logfile.txt
的最后20行:
tail -n 20 logfile.txt
先写入30个hello i (1<=i<=30) 到logfile.txt里面去
执行命令后:
- 实时显示文件
syslog
的新增内容:
tail -f /var/log/syslog
- 显示文件
data.txt
的最后50个字节:
tail -c 50 data.txt
- 同时显示文件
file1.txt
和file2.txt
的最后10行(默认行为,无需额外选项):
tail file1.txt file2.txt
- 使用
-F
选项追踪文件名可能变化的日志文件:
tail -F /path/to/potentially/renamed/logfile.txt
注意事项
- 如果指定的行数或字节数超过了文件的内容长度,
tail
会显示文件的全部内容。 -f
选项是tail
命令中最常用的选项之一,它允许用户实时查看文件的更新内容,非常适合用于监控日志文件。- 当使用
-f
选项时,可以通过按Ctrl+C
来中断tail
命令,停止实时查看文件内容。 tail
指令与其他命令(如grep
、awk
、sed
等)结合使用时,可以通过管道传递数据,实现更复杂的数据处理任务。
🦚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
这会列出指定目录及其子目录中的所有文件和目录。例如,查找/home/user
目录中的所有内容:
find /home/user
17.2 按名称查找文件
使用-name
选项查找特定名称的文件(区分大小写):
find /path/to/directory -name "filename"
例如,在linux/lesson4
目录下查找名为file.txt
的文件:
find ./linux/lesson4 -name "file.txt"
如果需要忽略大小写,可以使用-iname
:
find /path/to/directory -iname "filename"
17.3 按文件类型查找
- 查找目录:
-type d
- 查找普通文件:
-type f
例如,在./linux
目录中查找所有文件:
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 递归查找
使用-r
选项在目录及其子目录中递归查找所有文件:
grep -r "search_term" /path/to/directory
例如,在/var/log
目录及其子目录中查找包含“error”的行:
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
– 创建、解压和管理归档文件
tar
命令用于创建、解压和管理归档文件,特别适合打包多个文件和目录。tar
格式的压缩文件在Linux系统中很常见。以下是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
这条命令会将指定的目录或文件压缩成archive.tar.gz
文件。
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
这条命令会将archive.tar.gz
中的文件解压到当前目录。
🦚20. bc
– 计算器工具,用于执行精确的数学计算
20.1 进入bc
交互模式
直接输入bc
命令后,可以进入交互模式,可以连续输入数学表达式并获得计算结果:
bc
例如:
3 + 5
10 * 2
退出交互模式,输入quit
或按Ctrl+D
。
20.2 使用echo
和bc
进行简单计算
可以将数学表达式通过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发行版的终端环境。以下是一些常用且重要的快捷键:
- Ctrl + C:终止当前运行的命令。
- 用于强制中断正在执行的命令或进程。
- Ctrl + Z:将当前进程挂起到后台。
- 挂起进程后,可以使用
fg
将其恢复到前台,或bg
让其在后台继续执行。
- 挂起进程后,可以使用
- Ctrl + D:退出当前终端会话或输入结束符。
- 在命令行中按
Ctrl + D
可以关闭终端,也可以结束输入(如结束cat
命令的输入)。
- 在命令行中按
- Ctrl + A:将光标移动到行首。
- 在输入长命令时,快速返回行首进行修改。
- Ctrl + E:将光标移动到行尾。
- 在输入长命令时,快速跳到行尾。
- Ctrl + U:删除光标之前的所有内容。
- 用于快速清除当前命令行中的内容,方便重新输入。
- Ctrl + K:删除光标之后的所有内容。
- 快速删除当前行中光标后的内容。
- Ctrl + R:在命令历史记录中进行反向搜索。
- 输入部分命令后,使用
Ctrl + R
可以找到之前使用过的命令。
- 输入部分命令后,使用
- Tab:自动补全命令或文件名。
- 按一次Tab尝试补全命令或文件名,按两次列出可能的选项。
- ↑和↓箭头:浏览命令历史。
- 向上箭头可以查看之前输入的命令,向下箭头则查看更新的命令。
🦚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前进的动力!