1、复习基本指令:man、cp、mv、cat、tac、more、less、head、tail、date、cal、find、grep
2、介绍:输入重定向、输出重定向、追加重定向
功能:可用来查看命令、系统调用、c库函数。
用法:man 选项 命令
常用选项:1、2、3
1:命令
2:系统调用
3:c库函数(如果没有,需要安装)
安装c库函数命令: yum install -y man-pages
需要安装其他语言库函数及汉化版可自行百度搜索
默认选项是1,如果库函数和命令查找冲突,在不指明选项的情况下,查找的是命令。
如:printf,man printf查找的是指令printf,man 3 printf查找的是c库函数。
如果man指令不熟悉,可以man man来查阅man命令的使用方式。
cp是copy的缩写,用来拷贝目录和文件
拷贝文件:
拷贝目录:
【cp 原目录 目标目录】这样直接拷贝目录是不被允许的,需要加上-r选项才能完成目录拷贝
还有两个不是很常用的选项,-f和-i。
-f:是force的缩写,用来强制拷贝,因为有的时候该文件和目录不是你的,在你拷贝的时候linux可能会询问你是否确认拷贝。
需要注意的是,当目标文件和当前目录的文件重名的时候,直接拷贝会覆盖掉重名的文件。
比如:
-i:覆盖文件之前先询问用户。
如:
还有需要了解:默认拷贝生成的文件和目录都是在当前目录下。
mv是move的缩写,有两个功能:
1、类是于剪切文件和目录的功能。
2、对文件或目录进行重命名。
该指令的用法和cp非常相似,不同的是:mv剪切目录时不需要带-r选项。
功能:查看目标文件的内容。
常用选项:-n
如果cat后面没有跟文件,则从键盘读取数据。
cat + 文件名的使用方式,实际上是一种输入重定向,与cat < 文件名是一样的。
输入重定向:简单来说就是原本从键盘上读取数据改为从目标文件读取数据。
功能:逆序打印文件内容
与cat功能相似,但需要了解的是tac没有-n选项。
功能:一般用于查看长文本。
cat更适合查看短文本,more更适合查看长文本。
因为:当文本很长的时候cat会将文本打印出来,这样不仅消耗了很多时间,同时不断的刷屏让我们难以查看前面的内容,而more则是选择将屏幕打满,然后等待你按Enter向下翻阅。
使用:more + 文件名
在翻阅的同时,more也可以使用 / 来实现搜索功能。
但一般我们跟喜欢使用less,因为more不能向前翻,只能向后翻,less可以使用上下键实现前后翻。除此之外,less有更多的搜索功能,不仅可以向下搜索,也可以向上搜索。
功能:用于查看长文本,比more功能更强大。
在使用less指令之前,先生成一个100000行的文件。
这里我直接用shell脚本生成:
cnt=1; while [ $cnt -le 100000 ]; do echo "hello bit $cnt"; let cnt++; done > file.txt
再用wc命令查看file文件的内容行数
说明我们数据写入成功。
查看file文件,输入命令:less file.txt
可通过上下键或者j、k来上下翻阅文件内容。
功能:查看前n行文本。
常用选项:-数字
如查看file.txt的前5行文本:
不带-数字,默认显示前10行内容。
功能:查看后n行文本
常用选项:-数字
如查看file.txt的后5行文本:
不带-数字,默认显示前10行内容。
既然可以查看前n行内容和后n行内容,怎么查看[30000-30020]行的内容呢?
方法一:使用临时文件
方法二:使用管道
功能:显示时间
直接使用date,不加任何选项,显示的是英文的年、月、日、时、分、秒。
如果不习惯这种显示格式,可以自己控制显示的格式。
还可以打印时间戳(时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。)
有两种方式打印时间戳
1、使用命令打印
2、使用c库函数打印
还可以将时间戳转化为对应的日期时间。
功能:打印日期
直接使用cal命令:打印本月的日期
cal 年份:打印该年的日期
cal -3:打印本月并打印与本月相近的2个月份的日期。
功能:在目录结构中搜索文件,功能非常强大。
用法:find pathname -options
如:在/usr/include目录下查找stdio.h头文件在哪
功能:常用于进行行文本过滤
常用选项:
-n:顺便输出行号
-i:忽略大小写
-v:反向过滤
1、输入重定向:原本从键盘读取数据改为从目标文件读取数据
在使用的时候,我们一般省略<,直接写cat test.c
2、输出重定向:原本将数据往显示器打印变为将数据往目标文件打印。(会清空原数据)
3、追加重定向:原本将数据往显示器打印变为将数据往目标文件打印(不会清空原数据)