继上篇命令如诗,步入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”的行数。
这个示例展示了管道如何允许我们组合多个简单的命令来执行复杂的任务,而无需编写复杂的脚本或程序。这种能力使得命令行成为数据处理和自动化任务的强大工具。
cat
- 显示文件内容使用 cat
命令来显示文件的内容:
cat 文件名
例如,显示 file.txt
的内容:
cat file.txt
可以将多个文件的内容连接后输出:
cat 文件1 文件2
例如,将 file1.txt
和 file2.txt
的内容连接后输出:
cat file1.txt file2.txt
通过 -n
选项可以显示输出内容的行号:
cat -n 文件名
例如,显示 file.txt
的内容并带有行号:
cat -n file.txt
通过重定向操作符 >
可以将 cat
命令的输出写入新文件,从而合并文件内容:
cat 文件1 文件2 > 新文件
例如,将 file1.txt
和 file2.txt
的内容合并到 combined.txt
中:
cat file1.txt file2.txt > combined.txt
使用 -v
选项可以显示非打印字符(不可见字符):
cat -v 文件名
例如,显示 file.txt
的内容并显示非打印字符:
cat -v file.txt
通过不带任何参数的 cat
命令,可以将标准输入的内容重定向到文件中:
cat > 文件名
然后输入内容,按 Ctrl + D
结束输入并保存到文件中。
less
- 分页查看文件内容查看文件内容
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
键。
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
支持多种文本编码和字符集,但你需要确保你的终端也支持这些编码和字符集。head
- 查看文件的前几行内容head
指令的基本语法如下:
head [选项] 文件名
head
指令支持多个选项,用于定制其行为。例如,-n
选项允许用户指定要显示的行数。-n
:指定要显示的行数。如果不使用这个选项,head
默认显示文件的前10行。-c
:指定要显示的字节数。这个选项允许用户按字节而不是按行来查看文件内容。-v
:总是显示文件名。当head
从标准输入读取数据时,这个选项很有用,因为它会显示一个默认的文件名(通常是-
)来表示输入来自标准输入。example.txt
的前5行:head -n 5 example.txt
example.txt
的前20个字节:head -c 20 example.txt
head -n 3
在这种情况下,用户需要手动输入数据,并在完成后按Ctrl+D
或Ctrl+Z
然后回车来表示输入的结束。
注意事项
head
会显示文件的全部内容。head
指令对于快速预览文件内容非常有用,特别是在处理大型日志文件时。head
可以与其他命令结合使用,通过管道传递数据。例如,可以使用tail -n +1000 | head -n 5
来查看文件从第1000行开始的5行内容(注意,这通常不是head
的直接用途,但展示了管道的使用)。tail
- 显示文件的末尾部分内容tail
指令的基本语法如下:
tail [选项] [文件名]
tail
指令支持多个选项,用于定制其行为。-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
功能相同,用于在文件名变化时继续追踪文件内容。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
等)结合使用时,可以通过管道传递数据,实现更复杂的数据处理任务。date
– 显示或设置系统的日期和时间在Linux中,date
命令用于显示或设置系统的日期和时间。以下是date
命令的常用用法和选项:
date
默认情况下,此命令会输出当前的系统日期和时间,格式如:
Wed Oct 30 08:50:27 PM CST 2024
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"
时间戳(Timestamp)在Linux中通常指的是Unix时间戳,表示从1970年1月1日00:00:00 UTC到当前时间的秒数。这种格式广泛用于计算机系统中,因其便于计算和排序。
使用date
命令可以轻松获取当前时间的Unix时间戳:
date +%s
输出的结果类似于:1730292783
,表示当前时刻的秒数。
可以使用date
命令将特定的时间戳转换为人类可读的日期格式。例如,转换时间戳1730292783
:
date -d @1730292783
这将显示为标准格式的日期和时间,如Wed Oct 30 08:53:03 PM CST 2024
。
如果想要查询过去或未来某个时间点的时间戳,可以通过-d
选项指定该时间。比如获取2024-12-25 10:00:00
的时间戳:
date -d "2024-12-25 10:00:00" +%s
cal
– 显示日历cal
命令用于显示日历,它是一个简单且非常实用的工具。下面是一些常用的cal
命令用法:
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
可以指定年份来查看该年所有月份的日历。例如,查看2023年的日历:
cal 2023
cal
命令允许查看特定月份和年份。例如,要查看2024年3月的日历:
cal 3 2024
find
– 查找符合特定条件的文件和目录find /path/to/directory
find /home/user
使用-name
选项查找特定名称的文件(区分大小写):
find /path/to/directory -name "filename"
find ./linux/lesson4 -name "file.txt"
如果需要忽略大小写,可以使用-iname
:
find /path/to/directory -iname "filename"
-type d
-type f
find ./linux -type d
使用-size
选项查找特定大小的文件,支持以下单位:
c
:字节k
:千字节M
:兆字节G
:千兆字节例如,查找大于100MB的文件:
find /path/to/directory -size +100M
grep
– 在文件中搜索文本grep
命令用于在文件中搜索文本,特别适合查找包含特定字符串的行。它支持正则表达式,是文本处理的强大工具。以下是一些常用的grep
命令用法:
grep "search_term" filename
例如,在文件file.txt
中查找包含“hello”的行:
grep "hello" file.txt
grep -r "search_term" /path/to/directory
grep -r "error" /var/log
使用-i
选项忽略大小写。例如,查找“Hello”和“hello”:
grep -i "hello" file.txt
使用-n
选项在输出中显示匹配行的行号:
grep -n "search_term" filename
例如,在file.txt
中查找并显示行号:
grep -n "hello" file.txt
这里我们组合使用-i
和 -n
。
使用-w
选项匹配整个单词(避免匹配部分单词)。例如,仅匹配单词“hello”而不是“hello123”:
grep -w "hello" example.txt
使用-v
选项查找不包含指定模式的行。例如,查找不包含“hello”的行:
grep -v "hello" example.txt
tar
– 创建、解压和管理归档文件-c
:创建归档文件-x
:解压归档文件-v
:显示详细信息-f
:指定文件名-z
:使用gzip压缩/解压(生成.tar.gz
文件)-j
:使用bzip2压缩/解压(生成.tar.bz2
文件)-J
:使用xz压缩/解压(生成.tar.xz
文件)czf
:创建压缩文件c
表示“create”(创建),z
表示使用gzip
压缩,f
表示指定文件名。
tar czf
用于创建一个.tar.gz
压缩文件:
tar czf archive.tar.gz /path/to/directory_or_file
tzf
:列出压缩文件的内容t
表示“list contents”(列出内容),z
表示使用gzip
解压,f
表示指定文件名。
tar tzf
用于在不解压的情况下查看.tar.gz
文件的内容:
tar tzf archive.tar.gz
这条命令会列出archive.tar.gz
文件中的所有内容。
xzf
:解压文件x
表示“extract”(解压),z
表示使用gzip
解压,f
表示指定文件名。
tar xzf
用于解压一个.tar.gz
文件:
tar xzf archive.tar.gz
bc
– 计算器工具,用于执行精确的数学计算bc
交互模式直接输入bc
命令后,可以进入交互模式,可以连续输入数学表达式并获得计算结果:
bc
例如:
3 + 5
10 * 2
退出交互模式,输入quit
或按Ctrl+D
。
echo
和bc
进行简单计算可以将数学表达式通过echo
管道传递给bc
来执行:
echo "3 + 5" | bc
使用scale
变量设置小数点后的精度。例如,将精度设置为2位:
echo "scale=2; 10 / 3" | bc
输出:3.33
使用^
符号进行幂运算:
echo "2 ^ 3" | bc
输出:8
uname -r
– Linux系统中查看当前内核的版本号uname -r
命令用于在Linux系统中查看当前内核的版本号。该命令输出的内容包含当前系统使用的内核版本,可以帮助您了解内核的更新情况或在调试时查看内核信息。
uname -r
执行后,输出可能类似于以下内容:
5.15.0-112-generic
输出的格式通常包含几个部分,以便于识别内核版本的具体信息:
generic
(通用版本),lowlatency
(低延迟版本)等。uname -r
是查看Linux系统内核版本的便捷方法,特别在排查硬件兼容性或进行系统升级时非常有用。
在Linux终端和文本编辑器中,有许多重要的快捷键可以提高效率。这些快捷键通常适用于大多数Linux发行版的终端环境。以下是一些常用且重要的快捷键:
fg
将其恢复到前台,或bg
让其在后台继续执行。Ctrl + D
可以关闭终端,也可以结束输入(如结束cat
命令的输入)。Ctrl + R
可以找到之前使用过的命令。shutdown
– 关机shutdown
是最常用的关机命令,可以设置定时关机、立即关机、重启等。
sudo shutdown now
这会立即关闭系统。
sudo shutdown +10
这会在10分钟后关机。
sudo shutdown 22:00
这会在当天晚上10点关闭系统。
sudo shutdown -c
sudo shutdown -r now
这会立即重启系统。
Linux的世界广阔而充满活力,而基础指令只是它的起点。随着对Linux的不断深入学习,您将发现更多强大而高效的工具和方法。希望这篇文章能帮助您顺利迈出第一步,为将来的深入学习奠定坚实的基础。
今天的分享到这里就结束啦!如果觉得文章还不错的话,可以三连支持一下,17的主页还有很多有趣的文章,欢迎小伙伴们前去点评,您的支持就是17前进的动力!