前面博客我们学习关于文件属性的操作:增删查改。如何看待这么多的指令,记不住。指令不需要刻意记忆,补充知识才是比较重要的。
制作小文件&查看
如何快速在Linux上写代码
【1】我们使用【nano指令】,nano是Linux相当于记事本的作用的指令。
如果没有nano,请安装:yum insall -y nano 安装和卸载的本质都是将这个指令拷贝/删除到这个路径下。如果你没有某个指令,都可以yum install -y 指令 安装一下。(若有不同上网搜索一下)
【2】我们使用【cat指令】去查看文件的内容。
【3】我们使用【gcc指令】去编译和【./可执行程序】去运行。
如何快速写出代码?制作小文件?
nano 源文件----->ctrl+x---->y----->回车(写代码)--->gcc 源文件(编译)---->./可执行程序
nano指令
创建一个文件(类似记事本)可以写入数据,crtl+x退出。
cat指令
语法:cat [选项][文件]
功能:查看目标文件的内容,本质是显示文件内容
常用选项:
- -b 对非空输出行编号
- -n 对输出的所有行编号
- -s 不输出多行空行
tac指令
与cat相反除外,无选项,把内容倒置打印出来。
cat/tac都是去查看一些小文件内容,ls ll是去查看文件/目录的属性。上面我们也制作了一个小文件并且查看了,那我们如何制作一个大文件,并且查看呢?
制作大文件&查看
以下操作都是以【文件】为主体。角度都是站在【显示器】角度
一切皆文件
一切皆文件是Linux的基本哲学之一。普通文件、目录、字符设备、块设备和网络设备(套接字)等都被当做文件来对待。虽然他们类型不同,但是linux系统为它们提供了一套统一的操作接口。Linux可以以统一的方式来进行文件/设备的访问!
为什么说Linux下“一切皆文件”? - 知乎 (zhihu.com)
Linux 下 “一切皆文件” 思想的本质和好处在哪里?与 Windows 下的文件管理思想有啥差别? - 知乎 (zhihu.com)
Linux中的理念"一切皆文件",对于任何文件来讲,操作文件内容,当前无非就是【读】和【写】,所以:向显示器设备写入文件,就是向显示器文件,向显示器打印数据,即显示器文件写入数据。
包括我们所看到的终端也是文件! 👇证明
终端文件的路径:/dev/pts/
首先我们创建了【多个终端】
接着我们用echo 字符串 > 终端文件 把数据输入终端文件
至此,我们可以证明终端是一个文件。
echo指令
echo指令在屏幕上打印了"hello Linux”。在Linux当中一切皆文件,那么显示屏也是显示屏文件。所以可以说 echo是向显示屏这个文件,输入字符串。
> 输出重定向
此时我们这样写,相当于把写入显示器文件的字符串,写入文件 log.txt !把本来应该显示到显示器上的数据,显示到了文件中!
这个动作被称作:输出重定向
写作:>
当然我们也可以直接重定向!
以写"w"的形式打开文件
>输出重定向-----以写的形式打开文件写入数据
- 如果文件不存在,创建一个空文件,写入数据(可以不写只创建)
- 如果文件存在,清空数据,写入数据(可以不写只创建)
我们发现我们每次用echo写入数据都是,清空了原文件,重新写入。
在我们学习C语言进阶阶段,我们学习过文件以写的形式打开,并写入数据,这里复习一下。
所以重定向和上面代码是一样的,打开文件,文件不存在就创建,存在就清空。
以追加"a"的形式打开文件
>> 输出追加重定向-----以追加的形式打开文件写入数据(>>之间不能有空格)
- 如果文件不存在,创建一个空文件,写入数据(可以不写只创建)
- 如果文件存在,写入数据(如果有数据,就追加数据)
cat指令
我们一般都是从键盘获取数据,一切皆文件,那么ca也可以从【键盘文件】获取数据,输入【显示器文件】。
< 输入重定向
当然,我们也可以从【普通文件】获取数据输入【显示器文件】!此刻我们将【键盘文件】输入【显示器】重定向为【普通文件】获取数据输入【显示器文件】!
这个动作被称为:输入重定向
写作:<
特别提醒:cat log.txt 和cat < log.txt是区别很大的🆗!不一样!
创建big.txt
有了上面知识的铺垫,终于我们来创建一个大文件。
i=1; while [ $i -le 1000 ]; do echo "hello Linux $i"; let i++; done > big.txt
我们发现用cat 去查看这个大文件是非常不方便的,所以接下来我们学习一些查看大文件的指令!
more指令
语法:more [选项][文件]
功能:more命令,功能类似 cat。
- cat一次性全部把文件的数据全部打印出来,
- more首先会打印出占满屏幕的数据,按下Enter(回车下翻)之后,逐行打印。(可以逐行查看)。存在弊端:就是不能上下查看,只能回车下翻逐行查看
- more会特定查看。输入/关键字,就会出现关键字所对应的数据,以及上下文的数据。
常用选项:
- -n 对输出的所有行编号
- q 退出more
上面的more是存在只能下翻的弊端,那Linux就引入了我们的less指令。
less指令(推荐使用)
- less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。
- less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看但若使用了 less 时,就可以使用 [pageup][pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!
- 除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
语法: less [参数] 文件
功能:less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。
- 上下键即可上下翻动,q即可退出。
现在可以上下翻动大文件的数据查看,也可以逐行特定查看,那么我们想指定查看前几行或后几行,该用下面指令了。
head指令
head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾。
语法:head [参数]... [文件]...
功能:head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行
选项:
- -n<行数> 显示的行数
tail指令
tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容。
语法: tail[必要参数][选择参数][文件]
功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
选项:
- -f 循环读取
- -n<行数> 显示行数
wc指令
统计文本行数
wc -l big.txt
管道
在Linux中的管道类似生活中的天然气/石油/自来水管道。Linux的管道是资源传输的,运输数据。
管道是用来级联多条指令的
现在我们可以less上下翻动查看数据。程序(大文件)在运行的时候会产生很多记录信息,如果发生错误,我们需要用日志来排查(大文件)/var/log/messages,现在我们可以查看日志的tail head头尾部分,如果我们想要查看big.txt的中间数据呢?
- 方法1
head -n50 test > tmp #将前50行装入临时文件tmp
tail -n1 tmp #得到中建行
- 方法2
head -n50 test | tail -n1
- command > filename :输出重定向
- command >> filename :输出追加重定向
- command < filename :输入重定向
- 快捷键:输入指令出,只有上下键即可翻看历史指令了🆗
✔✔✔✔✔最后,感谢大家的阅读,若有错误和不足,欢迎指正!