查看原文
其他

原来Linux中有这么多查看文件内容的命令

良许Linux 2024-03-18

The following article is from 工厂数字化 Author 开发运维架构


今天我来介绍一下我经常用来查看文件内容的常用命令,希望对大家有所帮助。

1. head 命令

head 命令用于读取给定文件名的前十行。head 命令的基本语法为:

head [options] [file(s)]

例如,以下命令将显示名为 '/etc/passwd' 的文件的前十行。

# head /etc/passwd 

root:x:0:0:root:/root:/bin/bash 
daemon:x:1:1:daemon:/usr/sbin:/bin/sh 
bin:x:2:2:bin:/bin:/bin/sh 
sys:x:3:3:sys:/dev:/bin/sh 
sync:x:4:65534:sync:/bin:/bin/sync 
games:x:5:60:games:/usr/games:/bin/sh 
man:x:6:12:man:/var/cache/man:/bin/sh 
lp:x:7:7:lp:/var/spool/lpd:/bin/sh 
mail:x:8:8:mail:/var/mail:/bin/sh 
news:x:9:9:news:/var/spool/news:/bin/sh

如果提供了多个文件,则 head 命令将分别显示每个文件的前十行。例如,以下命令将显示每个文件的十行。

# head /etc/passwd /etc/shadow

==> /etc/passwd <== 
root:x:0:0:root:/root:/bin/bash 
bin:x:1:1:bin:/bin:/sbin/nologin 
daemon:x:2:2:daemon:/sbin:/sbin/nologin 
adm:x:3:4:adm:/var/adm:/sbin/nologin 
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 
sync:x:5:0:sync:/sbin:/bin/sync 
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 
halt:x:7:0:halt:/sbin:/sbin/halt 
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin 
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

==> /etc/shadow <== 
root:$6$85e1:15740:0:99999:7:::
bin:*:15513:0:99999:7:::
daemon:*:15513:0:99999:7:::
adm:*:15513:0:99999:7:::
lp:*:15513:0:99999:7:::
sync:*:15513:0:99999:7:::
shutdown:*:15513:0:99999:7:::
halt:*:15513:0:99999:7:::
mail:*:15513:0:99999:7:::
uucp:*:15513:0:99999:7:::

如果需要检索的行数多于默认的十行,则使用 '-n' 选项与一个指定的整数一起使用,告诉它要检索的行数。例如,以下命令将显示文件 '/var/log/yum.log' 的前 5 行。

# head -n5 /var/log/yum.log

Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el6_5.4.i686
Jan 10 00:06:56 Updated: openssl-devel-1.0.1e-16.el6_5.4.i686
Jan 10 00:11:42 Installed: perl-Net-SSLeay-1.35-9.el6.i686
Jan 13 22:13:31 Installed: python-configobj-4.6.0-3.el6.noarch
Jan 13 22:13:36 Installed: terminator-0.95-3.el6.rf.noarch

2. tail 命令

tail 命令与 head 命令相反,用于读取给定文件名的最后十行。tail 命令的基本语法为:

tail [options] [filenames]

例如,以下命令将显示名为 '/etc/passwd' 的文件的最后十行。

# tail /etc/passwd 

Debian-exim:x:115:122::/var/spool/exim4:/bin/false 
statd:x:111:65534::/var/lib/nfs:/bin/false 
sshd:x:112:65534::/var/run/sshd:/usr/sbin/nologin 
backup:x:34:34:backup:/var/backups:/bin/bash 
ntp:x:112:120::/home/ntp:/bin/false 
messagebus:x:113:125::/var/run/dbus:/bin/false 
landscape:x:114:125::/var/lib/landscape:/bin/false 
pollinate:x:115:1::/var/cache/pollinate:/bin/false 
md5:x:1000:1000:MD5 User,,,:/home/md5:/bin/bash 

同样,如果提供了多个文件,tail 命令将分别显示每个文件的最后十行。例如,以下命令将显示每个文件的十行。

# tail /etc/passwd /etc/shadow

==> /etc/passwd <== 
Debian-exim:x:115:122::/var/spool/exim4:/bin/false 
sshd:x:112:65534::/var/run/sshd:/usr/sbin/nologin 
backup:x:34:34:backup:/var/backups:/bin/bash 
ntp:x:112:120::/home/ntp:/bin/false 
messagebus:x:113:125::/var/run/dbus:/bin/false 
landscape:x:114:125::/var/lib/landscape:/bin/false 
pollinate:x:115:1::/var/cache/pollinate:/bin/false 
md5:x:1000:1000:MD5 User,,,:/home/md5:/bin/bash 
mysql:x:116:124:MySQL Server,,,:/nonexistent:/bin/false 
ntp:x:117:123:NTP daemon,,,:/home/ntp:/bin/false

==> /etc/shadow <== 
root:$6$2uo5:17373:0:99999:7::: 
backup:*:17371:0:99999:7::: 
ntp:*:17371:0:99999:7::: 
sshd:*:17371:0:99999:7::: 
messagebus:*:17371:0:99999:7::: 
landscape:*:17371:0:99999:7::: 
pollinate:*:17371:0:99999:7::: 
md5:$6$51ev:17371:0:99999:7::: 
mysql:!:17392:0:99999:7:::
ntp:!:17392:0:99999:7:::

与 head 命令一样,如果需要检索的行数多于默认的十行,则使用 '-n' 选项与一个指定的整数一起使用,告诉它要检索的行数。例如,以下命令将显示文件 '/var/log/yum.log' 的最后 20 行。

# tail -n20 /var/log/yum.log

Jan 16 00:05:30 Updated: fipscheck-lib-1.4.1-6.el7.x86_64 
Jan 16 00:05:31 Updated: libselinux-utils-2.5-15.el7.x86_64 
Jan 16 00:05:31 Updated: python-slip-dbus-0.4.0-4.el7.noarch 
Jan 16 00:05:31 Updated: mlterm-common-3.8.7-7.el7.x86_64 
Jan 16 00:05:31 Updated: libselinux-python-2.5-15.el7.x86_64 
Jan 16 00:05:31 Updated: libreport-plugin-rhtsupport-2.1.11-43.el7.x86_64 
Jan 16 00:05:31 Updated: libXpm-3.5.12-1.el7.x86_64 
Jan 16 00:05:32 Updated: libnl3-cli-3.2.21-10.el7.x86_64 
Jan 16 00:05:33 Updated: runc-1.0.0-57.rc8.git9abbd9b.el7.x86_64 
Jan 16 00:05:33 Updated: open-vm-tools-11.2.5-2.el7.x86_64 
Jan 16 00:05:33 Updated: qemu-guest-agent-4.2.0-31.el7_9.x86_64 
Jan 16 00:05:34 Updated: 1:vixie-cron-4.2-25.el7.x86_64 
Jan 16 00:05:34 Updated: libXfont-1.5.4-4.el7.x86_64 
Jan 16 00:05:34 Updated: libreport-filesystem-2.1.11-43.el7.x86_64 
Jan 16 00:05:34 Updated: libXv-1.0.11-1.el7.x86_64 
Jan 16 00:05:34 Updated: libjpeg-turbo-1.2.90-8.el7.x86_64 
Jan 16 00:05:34 Updated: gnutls-dane-3.3.29-9.el7.x86_64 
Jan 16 00:05:34 Updated: libreport-web-2.1.11-43.el7.noarch 
Jan 16 00:05:36 Updated: 1:java-1.8.0-openjdk-headless-1.8.0.272.b10-1.el7_9.x86_64 
Jan 16 00:05:36 Updated: tuned-profiles-oracle-2.11.0-8.el7.noarch 

注意,tail 命令还可以使用 '-f' 选项来实时追踪一个文件的变化,即显示最新的内容。例如,以下命令将实时显示文件 '/var/log/messages' 的新内容。

# tail -f /var/log/messages

3. more 命令

more 命令用于一页一页地显示文件内容。more 命令的基本语法为:

more [options] [filenames]

例如,以下命令将一页一页地显示名为 '/var/log/messages' 的文件内容。

# more /var/log/messages

使用 more 命令,您可以按回车键逐行查看文件内容。如果需要向下滚动到下一页,请按空格键。要退出 more 命令,请按 'q' 键。

more 命令还有一些其他的有用选项:

  • '-num':设置一次显示的行数为 num 行。例如,使用下面的命令将一页显示15行。
# more -15 /var/log/messages
  • '+num':从文件的第 num 行开始显示。例如,使用下面的命令将从文件的第20行开始显示内容。
# more +20 /var/log/messages
  • '/pattern':按指定的模式搜索文件内容,并定位到第一个匹配的行。例如,使用下面的命令查找包含 'error' 的行。
# more /var/log/messages
/error

在 more 命令中,您可以使用上述选项的组合来进行更复杂的操作。例如,以下命令将从文件的第20行开始显示内容,并一次显示10行。

# more +20 -10 /var/log/messages

4. less 命令

less 命令也用于一页一页地显示文件内容,但可以向上和向下滚动,并且可以按关键字搜索文件内容。less 命令的基本语法为:

less [options] [filenames]

例如,以下命令将一页一页地显示名为 '/var/log/messages' 的文件内容。

# less /var/log/messages

使用 less 命令时,您可以使用下列键盘命令:

  • 向下滚动一页:按空格键
  • 向上滚动一页:按 'b' 键
  • 向下滚动一行:按 'j' 键
  • 向上滚动一行:按 'k' 键
  • 高亮显示搜索关键字:按 '/' 键,然后输入要搜索的关键字(按 'n' 键定位到下一个匹配)
  • 退出 less 命令:按 'q' 键

less 命令也支持上述的选项,例如,使用 '-num' 选项一次显示 num 行。

# less -15 /var/log/messages

使用 '+num' 选项从文件的第 num 行开始显示。

# less +20 /var/log/messages

使用 '/pattern' 选项按指定的模式搜索文件内容。

# less /var/log/messages
/error

在 less 命令中,您可以使用上述选项的组合来进行更灵活的操作。

这是网站列表。

cat urls.txt
https://google.com
https://twitter.com
https://linkedin.com

5. less 命令

less 命令不仅可以用于查看文件内容,还可以与其他命令的输出一起使用。例如,以下命令将使用管道操作符将 'cat urls.txt' 命令的输出传递给 less 命令,并对其进行逐页查看。

cat urls.txt | less

这将打开一个 less 窗口,您可以使用上面提到的 less 命令来查看输出的内容。您可以按空格键向下滚动一页,按 'b' 键向上滚动一页,按 '/' 键搜索关键字,按 'q' 键退出查看。

6.cat命令

'cat' 命令是一种广泛使用的通用工具。它将标准输入复制到标准输出。

cat 命令的基本语法是:

cat [options] [filenames] [-] [filenames]

cat最常见的用法是读取文件的内容。要打开一个文件进行读取,只需输入 cat,后面跟一个空格和文件名。

# cat /etc/passwd 

root:x:0:0:root:/root:/bin/bash 
daemon:x:1:1:daemon:/usr/sbin:/bin/sh 
bin:x:2:2:bin:/bin:/bin/sh 
sys:x:3:3:sys:/dev:/bin/sh 
sync:x:4:65534:sync:/bin:/bin/sync 
games:x:5:60:games:/usr/games:/bin/sh 
man:x:6:12:man:/var/cache/man:/bin/sh 
lp:x:7:7:lp:/var/spool/lpd:/bin/sh 

cat 命令还可以用于将多个文件连接在一起。

# echo 'Hi devops-Team' > 1 
# echo 'Keep connected' > 2 
# echo 'Share your thought' > 3 
# echo 'connect us devops.com@gmail.com' > 4
# cat 1 2 3 4 > 5
# cat 5 

Hi devops-Team 
Keep connected 
Share your thought 
connect us devops.com@gmail.com

它还可以用于创建文件。通过执行 cat,后面跟输出重定向操作符和要创建的文件名,可以实现这一点。

# cat > devops.txt

devops 是唯一一个完全致力于 Linux 的网站。

我们可以为 'cat' 命令自定义结束符号。在这里,我们将其实现。

# cat > test.txt << end 

I am Avishek 
Here i am writing this post 
Hope your are enjoying 
end
# cat test.txt 

I am Avishek 
Here i am writing this post 
Hope your are enjoying

还可以用于复制文件。

# cat name.txt

I am a Programmer by birth and Admin by profession
# cat name.txt > name1.txt
# cat name1.txt

I am a Programmer by birth and Admin by profession


春招已经开始啦,大家如果不做好充足准备的话,春招很难找到好工作。


送大家一份就业大礼包,大家可以突击一下春招,找个好工作!


继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存