EdwardWong
2022/12/02阅读:40主题:姹紫
Linux文本处理之基本命令
cat
命令
cat
命令可以用来显示文本文件的内容,类似于DOS
下的type
命令,也可以把几个文件内容附加到另一个文件中,即连接合并文件。
cat
的基本格式是:
cat 文件名
cat 文件1 文件2 > 文件3

cat
命令不适合查看太大的文件,当用cat
命令查看文件内容时,不管文件内容有多少,都会一次性显示。
cat -n
会显示行号,cat -A
选项则相当于-vET
选项,可以查看文件中的所有隐藏行号,包括回车符$
、Tab
键^l
等。
cat -A anaconda-ks.cfg

cat file1.txt file2.txt>file3.txt
//将file1.txt
和file2.txt
文件的内容输出到file3
中
more
命令
当使用cat
命令查看文件内容时,如果文件过大,就需要使用PageUp
向上翻页,有时即使使用方向键也无法查看全文件中的内容,这就需要使用more
命令。
more
命令可以允许操作者分页显示文本文件的内容,下面列出了常见的选项:

使用more
命令会打开一个交互界面,可以使用一些交互命令,常见的交互命令如下:

more -c -10 anaconda-ks.cfg
这个命令会每10行显示一屏,同时清楚屏幕。
head
命令
head
命令可以显示指定文件前若干行的文件内容
head -选项 文件名

less
命令
less
命令和more
命令非常相似,都可以用来浏览文本中的内容,不同之处在于,less
命令既可以向前翻看,也可以向后翻看,而more
命令只能向后翻看。



tail
命令
tail
命令和head
命令相反,用来查看文件末尾的数据
tail -选项 文件名

tail -n 3 /etc/passwd
等价于etc -3 /etc/passwd
表示查看文件最后3行的数据内容
tail -c 100 /etc/passwd
用于查看文件末尾100
个字节的数据内容。
使用tail
命令可以监听文件的新增内容。
tail -f anaconda-ks.cfg

这条命令会显示文件最后10
行内容,而且光标不会退出命令,每隔1s
就会检查以下文件是否有新增的内容,如果有增加就追加到原来的输出结果后面显示。在新终端下可以通过echo
命令向文件中追加数据,
echo 222 >> anaconda-ks.cfg
echo 333 >> anaconda-ks.cfg
这样在原始监听的终端中,会看到以下信息:

输入输出重定向
linux
中标准的输入设备默认是键盘,标准的输出设备是显示器。
输入重定向: 重新指定设备来代替键盘作为新的输入设备
输出重定向:重新指定设备来代替显示器作为新的输出设备。
通常用文件或命令的执行结果来代替键盘作为新的输入设备,而新的输出设备通常指的就是文件。
输入重定向

cat /etc/passwd
和cat < /etc/passwd
虽然命令执行的结果是相同的,但是第一行代表的是以键盘作为输入设备,而第二行代码是以etc/passwd
文件作为输入设备。
cat << 0

可以看到当使用了0
作为分界符,只要不输入0
,就可以一直输入数据。
cat a.txt
cat < /etc/passwd >a.txt
cat a.txt
通过重定向/etc/passwd
作为输入设备,并输出重定向到a.txt
,最终实现将/etc/passwd
文件中内容复制到a.txt
中。
输出重定向
输出重定向可以细分为标准输出重定向和错误输出重定向技术,而且标准输入重定向和错误输出重定向又分别包含清空写入和追加写入两种模式。


对于2>&1
,表示把标准错误输出到标准输出中,其中>&
是一个整体,两者不能分开。
要理解2>&1
,首先要理解文件标识符,1
表示标准输出,2
表示标准输入,0
表示标准输入。
不能书写为2>1
,因为这将表示将标准错误输出到名字为1
的文件中。
下面深刻理解java -jar app.jar >log 2>&1
这句代码中为何2>&1
要放在后面的原因:
可以理解1
和2
为指针,上面的指针指向可以看作下面的过程:
1--> 指向显示屏
执行>log后,1--> log文件
执行2>&1后,2--> 1(因为此时1指向log文件,所以2也指向log文件)
所以java -jar app.jar >log 2>&1
的含义是将标准输入和输出重定向到log
文件中。
当然java -jar app.jar >log 2>&1
可以简写为java -jar app.jar &>log
作者介绍