目录
前言:
Linux由林纳斯·托瓦兹于1991.10.5发布,是一款开放源代码的操作系统,Linux的应用场景非常广泛,例如服务器后台、车载系统、嵌入式设备等等,在Linux下有一句很经典的话叫做:一切皆为文件。本文着重介绍对普通文件的内容进行查看、修改、筛选的相关指令,以及查找普通文件和管道的使用场景。
1、输入、输出重定向
1.1 输入重定向'<'
输入重定向的意思是:首先输入指的是从键盘中写入到显示器中,而发生重定向后输入的位置从键盘变成了普通文件,即读取普通文件的内容并输入显示器中,将这个过程称为输入重定向。
输入重定向的指令:cat < 文件名。
cat的具体用法如下:
从上图中可以得出一个结论,单纯的输入指令是cat,而输入重定向的指令是cat <,‘<'的作用可以理解为’读文件‘的动作。
1.2 输出重定向'>'
输出的本质也是从键盘中写入到显示器中,然而发生重定向后,输出的位置由显示器变成了普通文件,即从键盘中输出并更改普通文件的内容,将这个过程称为输出重定向。
输出重定向的指令:echo “字符串” > 普通文件名。
当我们要对一个普通文件进行修改时,前提是该文件必须存在,而echo指令有趣的地方在于若目标文件不存在,则会自动创建该文件,因此当新建一个文件并且要写入内容时,无需先touch..在echo...,而是直接echo即可。
echo的具体使用如下:
从上图中可以发现,和cat有着异曲同工之妙,单独的echo也只是从键盘中写入至显示器中,加上’>'后,有些类似c语言中“写文件”的动作。
由于在linux下一切皆为文件,所以键盘和显示器本质上也都是文件,因此可以理解为无论是输出重定向还是输入重定向,他们的本质都是写入(即从一个文件写入另一个文件),只不过一个是写入至普通文件一个是写入至显示器文件。
输入、输出重定向理解图:
1.2.1 追加重定向'>>‘
输出重定向虽然可以更改普通文件的内容,但是这里的更改是覆盖的动作,即对同一个文件执行多次输出重定向,最终文件里的内容是最后一次输出重定向的内容, 若想在普通文件的原有基础下进行“添加数据”,则需用到追加重定向。
输出重定向“覆盖”数据的例子:
追加重定向的用法:
2、more
more指令的作用是为了更好的查看文件的海里内容,比如当一个文件的内容超过了屏幕所能装载的范围,这时候虽然可以用cat <查看文件内容,但是显示在屏幕上的是该文件的末尾内容,如果想要看前面的内容还需要往前翻,很不方便,而more相比于cat的优势在于可以从前面的内容开始阅读,并且可以手动往下滑。
more与cat对比测试:
3、less
more虽然相比于cat可以往下翻阅,但是more的缺点是不能往回翻,比如当阅读到文件的后半部分内容时,突然想回头看之前的内容,这时候more是做不到的,因此推出Linux下最常用的阅读文件的指令less,less不仅可以前后随意翻阅,还自带搜索功能。
less的用法:
less的查找功能(在输入处输入’/‘后跟要查找的文件名):
4、head
head顾名思义就是将普通文件的头部分内容显示在屏幕上,默认显示文件中的头十行。
用法如下:
当然,也可以选择要显示的行数:
5、tail
tail与head相反,他显示文件中末尾内容,默认显示也是十行,并且也可以自己选择显示的行数。
tail的使用如下:
6、管道
管道的作用是形象的将两个指令联系在一起,通过管道指令’|‘实现,在没有使用管道之前,我们的指令都是一条条的执行的,当有了管道之后,可以两条甚至多条指令同时执行。
比如上述的test文件,若想取其中hello world51 - hello world60这十个文件,就可以使用管道实现,并且方便又快捷,具体使用如下:
7、find
find可以指定在某一个路径下精确查找文件,他的功能及其强大,通常我们认为find一般是通过文件名进行查找的,但是Linux下的find甚至可以通过文件的权限进行查找。find的语法:find 路径 选项。 常用选项是:-name,表示按照文件名进行文件的查找,也是最常用的一种查找方式。
find的使用如下:
8、grep
grep可以在普通文件中筛选出含特定字符串的文件,其语法为:grep 选项 要筛选的字符串 文件名。
具体使用如下:
并且可以搭配管道使用倒着打印tac:
9、xargs
xargs主要是搭配管道进行使用,他可以将原本写入至显示器上的参数作为指令传递给xargs修饰的指令,具体用法如下:
10、打包和压缩文件
通常下载软件时,为了防止该软件过大,通常会将其进行压缩成一个压缩包再进行下载传输,因为若直接把整个软件下载下来,则很容易发生传输时数据丢失,而压缩后再传输则更加安全快速。
打包的目的也是为了提高效率,比如各种各样的物品装进行李箱就叫做打包,若把文件一个个的传输则十个文件需要传输十次,而将这十个文件打包后则传输一次即可。
10.1 zip/unzip
zip的语法:zip 选项 压缩后的文件名.zip 要压缩的目录/文件。 zip压缩普通文件测试如下:
unzip(解压)的语法:unzip 压缩的文件 选项。选项若为-d则表示可以将解压后的文件放在指定路径下(若不加选项则默认解压后的文件放在当前路径下),使用如下:
压缩目录时,需要加上选项-r才可以正确的压缩文件:
解压时,即使该压缩包是目录的压缩包,无需加-r也可以解压:
10.2 tar
tar的玩法和zip不同,zip是压缩,unzip是解压,而打包和解包的指令都是使用tar完成,只是tar搭配不同的选项可以实现打包和解包的效果。tar的语法:tar 选项 打包/解包(选项不同具体写法也就不同)。
常用的选项有:
-c:将文件进行打包,和压缩有些相似。
-x:解开一个已经打包好的文件。
-z:是否gzip的属性,加上-z后,打包好的文件的后缀为.tgz。
-v:显示打包过程的各个文件。
-f:使用档名,在f之后不能加任何参数。
-C:解包时可以放到指定路径下,和zip的-d相似。
tar打包的使用如下:
解包时注意选项不是c而是x,并且也可以指定解包的目标路径,若不指定路径则默认放在当前路径下,测试如下:
结语
以上就是关于Linux指令的讲解,本文讲述的指令主要是针对于普通文件的查看和筛选,以上的指令看起来用的很简单,但是指令间的选项千变万化,不同的选项有不同的功能,合理使用这些选项才可以在操作文件时更加的快捷。
最后希望本文可以给你带来更多的收获,如果本文对你起到了帮助,希望可以动动小指头帮忙点赞👍+关注😎+收藏👌!如果有遗漏或者有误的地方欢迎大家在评论区补充,谢谢大家!!