何使用 cat、more、head 和 tail 命令查看 Linux 文件的内容,而不仅仅是文本文件。
(本文字数:5839,阅读时长大约:7 分钟)
Linux 提供了许多命令来查看文件的内容,包 括 cat、more、head 和 tail,但这只是一个开始。
一方面,即使是最显而易见的命令也有很多许多用户不会去使用的选项。还有一些普普通通的命令提供了一些独特的功能。在本文中,我们将介绍查看文件内容的命令,以及如何定制这些视图以更好地满足你的需求的选项。
cat 命令将文本文件的全部内容发送到终端窗口以供查看。实际上,如果你输入 cat,然后输入包含数千行内容的文件名,那么这些行将以极快的速度在你的窗口中滚动,你将无法看到除了最后一屏外的其他文本。对于 Linux 用户来说 cat 命令很熟悉,但即使是这个基本命令也提供了许多有用的选项,例如对输出中的行进行编号,这是我们许多人可能从未使用过的。更进一步,你不仅可以对行进行编号,还可以选择如何编号。
对每行进行编号就像这样:
$ cat -n msg
1 Hello --
2
3 I hope you are having a wonderful day!
4
5
6 That's it for ... now
7
8 bye!
9
10 s.
你也可以只对有内容的行编号。请注意,对于此命令,仅包含空格的行不被视为“空”,而是会被编号。
$ cat -b msg
1 Hello --
2 I hope you are having a wonderful day!
3 That's it for ... now
4 bye!
5 s.
cat 命令允许你使用 -s 选项忽略重复的空白行,但是要完全忽略空白行你必须添加另一个命令。
$ cat -s msg
Hello --
I hope you are having a wonderful day!
That's it for ... now
bye!
s.
要忽略所有空白行,只需如下将 cat 的输出通过管道传递给 grep 命令。 点(.)匹配包含任意字符的文本,因此它将显示任意非空的行,用于结束一行的回车换行做匹配(LCTT 译注:此处原文有误,径改)。
$ cat msg | grep .
Hello --
I hope you are having a wonderful day!
That's it for ... now
bye!
s.
-E 选项通过在每行末尾加 $ 符提供视觉提示,来显示行尾是否还有多余的空格。
$ cat -E msg
Hello --$
$
I hope you are having a wonderful day! $
$
$
That's it for ... now$
$
bye!$
$
s.$
使用 -A 时,既可以在每行的末尾显示 $ 字符,并且制表符会显示为 ^I 而不是空白。
$ cat -A msg
Hello --$
$
I hope you are having a wonderful day!$
$
$
That’s it for ...^Inow$
$
bye!$
$
s.$
head 和 tail 显示文件的头部或尾部,默认为十行。 你可以使用 -3(显示 3 行)或 -11(显示 11 行)之类的字符串来指定要查看的其它行数。tail 命令与 head 的工作方式相同,但是显示文件的尾部而不是头部。
$ head -3 msg
Hello --
I hope you are having a wonderful day!
$ tail -3 msg
bye!
s.
你还可以结合使用 head 和 tail 命令来查看文件中间的文本。你只需要选择起点和想要查看行数即可。在此例中,命令将在文件中显示第二个一百行,并在 cat 的帮助下为这些行编号。
$ cat -b mybigfile | head -200 | tail -100
101 Invoice #2020-06-07a sent to vendor
...
more 命令是一次浏览一屏内容的自然之选,而 less 通过使用上下键盘箭头增加了在文件中上下移动的能力,这样你就可以遍历内容,然后在文件中回退。
od(八进制转储)命令能够以常规文本和一系列 ASCII 值(即该文本在文件中的实际编码方式)的形式查看文件。在下面的例子中可以看到,带编号的行显示了 ASCII 数字值,而其他行则显示了文本和不可打印的字符。
$ od -bc msg
0000000 110 145 154 154 157 040 055 055 012 012 111 040 150 157 160 145
H e l l o - - \n \n I h o p e
0000020 040 171 157 165 040 141 162 145 040 150 141 166 151 156 147 040
y o u a r e h a v i n g
0000040 141 040 167 157 156 144 145 162 146 165 154 040 144 141 171 041
a w o n d e r f u l d a y !
0000060 012 012 012 124 150 141 164 047 163 040 151 164 040 146 157 162
\n \n \n T h a t ' s i t f o r
0000100 040 056 056 056 011 156 157 167 012 012 142 171 145 041 012 012
. . . \t n o w \n \n b y e ! \n \n
0000120 163 056 012
s . \n
请注意,换行符显示为 \n(八进制 012),而制表符显示为 \t(八进制 011)。
od 命令特别有用的用途之一是查看非文本文件以获取可以标识文件类型的信息。在这里,我们看到 JFIF(JPEG 文件交换格式)标签,该标签让 file 之类报告文件类型的命令将它标示为 jpg 文件。这里还有很多其他有用的信息,特别是如果你对这些文件的格式感到好奇的话。
在接下来的命令中,我们查看 jpg 文件的开始部分。
$ od -bc arrow.jpg | head -12
0000000 377 330 377 340 000 020 112 106 111 106 000 001 001 000 000 001
377 330 377 340 \0 020 J F I F \0 001 001 \0 \0 001
0000020 000 001 000 000 377 333 000 103 000 003 002 002 002 002 002 003
\0 001 \0 \0 377 333 \0 C \0 003 002 002 002 002 002 003
0000040 002 002 002 003 003 003 003 004 006 004 004 004 004 004 010 006
002 002 002 003 003 003 003 004 006 004 004 004 004 004 \b 006
0000060 006 005 006 011 010 012 012 011 010 011 011 012 014 017 014 012
006 005 006 \t \b \n \n \t \b \t \t \n \f 017 \f \n
0000100 013 016 013 011 011 015 021 015 016 017 020 020 021 020 012 014
\v 016 \v \t \t \r 021 \r 016 017 020 020 021 020 \n \f
0000120 022 023 022 020 023 017 020 020 020 377 333 000 103 001 003 003
022 023 022 020 023 017 020 020 020 377 333 \0 C 001 003 003
如果我们要 file 命令提供有关此图像的信息,我们可能会看到类似下面这样的信息。file 命令从文件开头的数据中提取了所有这些描述性信息:
$ file arrow.jpg
arrow.png: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 500x375, components 3
如果你只能在命令行工作,并且想了解特定图像包含的内容,那么可以使用 jp2a(jpeg to ascii)之类的工具提供字符渲染。图像在这种格式下的识别程度取决于文件。不要有太多期待,因为你将看到的图像版本是“低分辨率”下的测试!这是一只分辨率很低的帝王企鹅。(请离远点看)
$ jp2a Emperor_Penguin.jpg
MMMMMMMMWOdkNMMMMMMMMMMMMMMMMMMM
MMMXK0kc.... ,OKMMMMMMMMMMMMMMMM
MMNK0Ol... :Xx'dNMMMMMMMMMMMMM
MMMMMMMd;lx00Oo. ..xMMMMMMMMMMMM
MMMMMMK.OXMMMMMN,...lMMMMMMMMMMM
MMMMMMx'KXNNMMMMK....0MMMMMMMMMM
MMMMMMx:kkKNWWMMMl.. 'NMMMMMMMMM
MMMMMMddx0NNNWMMMK'...;NMMMMMMMM
MMMMMMck0NNWWWWWMMd ..lMMMMMMMM
MMMMMM.d0KXNWWWWMMo ...WMMMMMMM
MMMMMM.xOXNNWNMMMW. ....KMMMMMMM
MMMMMM'kKNKWXWMMMK ..'.0MMMMMMM
MMMMMMxckXNNNNMMMX .:..XMMMMMMM
MMMMMMW;xKNWWWMMMM. .;. NMMMMMMM
MMMMMMMok0NNWNWMMMx .l..MMMMMMMM
MMMMMMMkxOKXWXNMMMMl.:'dMMMMMMMM
MMMMMMM0dKOdKXXNMMMMNx,WMMMMMMMM
MMMMMMMWoKxldXKNNMMMMM;MMMMMMMMM
MMMMMMMMxxxxdNWNXNMMMM;MMMMMMMMM
MMMMMMMMxOcoo0XOOOOWMW,kMMMMMMMM
MMMMMMM0xK;.cO0dNX:0XXd;NMMMMMMM
MMMNkdd:,'ldXXO0xl;x0kx:;lKMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
Linux 上有很多命令可以通过各种方式查看文件的内容。其中一些选项在你需要处理文件内容时可能会非常有用。其它的只是……有趣。
via: https://www.networkworld.com/article/3561490/5-ways-to-examine-the-content-of-files-on-linux.html
作者: Sandra Henry-Stocker 选题: lujun9972 译者: geekpi 校对: wxy
本文由 LCTT 原创编译, Linux中国 荣誉推出
inux下想查看网站用的是什么WEB服务
黑客都用linux ,黑客怎么查看目标网站用什么WEB服务啊?
哪除了用KAIL一类工具外查看外 linux 自带一条特别简单命令就可以查看了
使用命令 curl -I 网址或IP 如:
curl -I https://www.doujiju.com
HTTP/1.1 200 OK
Date: Mon, 25 Apr 2022 08:36:03 GMT
Server: Apache
Expires: Thu, 19 Nov 1981 08:52:00 GMT
看到了吧?咱们抖几句用的是Apache
咱们抖几句用Apache
一起群观再来看看咱们头条用的是什么WEB服务
curl -I www.toutiao.com
头条用的是Tengine 做WEB
HTTP/1.1 301 Moved Permanently
Server: Tengine
Date: Mon, 25 Apr 2022 08:45:38 GMT
Content-Type: text/html
Content-Length: 262
Connection: keep-alive
Location: https://www.toutiao.com/
Via: cache16.cn1075[,0]
Timing-Allow-Origin: *
EagleId: da3dc0a616508763382471759e
能够看到头条用的是Tengine nginx我们知道是非常主流的WEB服务了,那么Tengine 是什么
Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网、天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。
从2011年12月开始,Tengine成为一个开源项目,Tengine团队在积极地开发和维护着它。Tengine团队的核心成员来自于淘宝、搜狗等互联网企业。Tengine是社区合作的成果,我们欢迎大家参与其中,贡献自己的力量。
下面是什么信息看不懂是不是? 来一我们一个一个看
HTTP/1.1 301 OK:HTTP/1.1表示协议版本 301 是永久重定向 OK状态信息
200表示成功 百度就是200
如下
curl -I www.baidu.com
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Connection: keep-alive
Content-Length: 277
Content-Type: text/html
Date: Mon, 25 Apr 2022 09:03:21 GMT
Etag: "575e1f59-115"
Last-Modified: Mon, 13 Jun 2016 02:50:01 GMT
Pragma: no-cache
Server: bfe/1.0.8.18
Accept-Ranges: bytes
Accept:接受
Ranges:范围
bytes:字节
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Cache:缓存
Control:控制
private:私有的
store:贮存,存储
proxy-revalidate:使代理重新生效
proxy:代理
revalidate:使重新生效
transform:改变
Connection: Keep-Alive
Connection:连接
Keep-Alive:保持活力
Keep:保持
Alive:活力
Content-Length: 277
Content-Length:内容长度
Content:内容
Length:长度
Content-Type: text/html
Content-Type:内容类型
Type:类型
text:文本
html:HTML
Date: Mon, 25 Apr 2022 09:03:21 GMT 周一 25 4月 2022年 09点03分21秒
Date:时间
Sat:星期六
GMT:格林尼治时间
Etag: "575e1f71-115"
Etag:被请求变量的实体值
Last-Modified: Mon, 13 Jun 2016 02:50:25 GMT
Last:最后
Modified:改进的,修改
Mon:周一
Pragma: no-cache
Pragma:杂注;编译指示(通用首部字段,只用在客户端发送的请求中,要求中介服务器是否返回缓存资源)
cache:快速缓冲贮存区(缓存)
Server: bfe/1.0.8.18
Server:服务器
这下能看懂 curl -l的信息的含义了吧?详细学习吧
你还知道哪些WEB服务呢?
关注本头条号,每天坚持更新原创干货技术文章。
如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习
在本教程中,您将学习如何查看所有连接到Apache或Nginx web服务器的客户端(识别他们的IP地址),这些服务器位于Linux服务器的HTTP 80或HTTPS 443 端口上。
Apache
在Linux中,服务器上运行的每个服务都侦听sockett(套接字),以便客户机发出连接请求。客户端连接成功后,将创建socket(套接字),即IP地址和端口号的组合(标识客户端连接的应用程序和端口号)。
nginx
为了获得这些socket(套接字)的详细信息,我们将使用一个ss命令行工具,它用于在Linux机器上显示与网络socket(套接字)相关的信息。您还可以使用旧的netstat命令,它显示活动的socket(套接字)连接。
例如,可以使用这些工具获取连接到特定端口或服务的所有客户机的套接字统计信息。
ss
ss命令默认输出
或者
netstat
netstat命令默认输出
某些较新的Linux发行版默认已经放弃预安装netstat工具。
CentOS 7系统可以执行以下命令安装相关工具:
yum -y install net-tools
要获得连接到HTTP(端口80)或HTTPS(端口443)的所有客户机的列表,可以使用ss命令或netstat命令,这将列出所有连接(无论它们处于什么状态),包括UNIX套接字统计信息。
ss -o state established '( sport = :http or sport = :https )'
使用ss命令列出所有连接
或者
netstat -o state established '( sport = :http or sport = :https )'
使用netstat命令列出所有连接
或者,您可以运行以下命令来列出数字端口号。
ss -tn src :80 or src :443
使用ss命令来列出数字端口号
netstat -tn src :80 or src :443
使用netstat命令来列出数字端口号
查看服务器网络连接情况
通过本教程,您应该可以了解到如何在Linux系统上使用ss或者netstat工具找到所有连接到HTTP或HTTPS端口的客户端了吧?
本文已同步至博客站,尊重原创,转载时请在正文中附带以下链接:https://www.linuxrumen.com/rmxx/1770.html
*请认真填写需求信息,我们会在24小时内与您取得联系。