1.查看
cat
由第一行开始显示文件内容,用来读文章或者读取配置文件
#获取test.txt文件所有内容cat test.txt#无论是否为空行,都显示行号cat -n test.txt#显示行号,除了空行cat -b test.txt#连续读取两个文件,按顺序输出cat test1.txt test2.txt#倒序输出--其实就是cat倒过来写即可tac test.txt
nl
读取的内容显示行号
#显示行号,除了空行
--默认就是这个
nl test.txt
#无论是否为空行,都显示行号
nl -b a test.txt
#行号靠最左显示
nl -n ln test.txt
#行号靠最右显示
nl -n rn test.txt
#行号靠最右显示,不足位数左边补0
nl -n rz test.txt
more
- 一页一页显示内容
语法
more 文件名
#向下滚动一屏(3种方法)
z
空格键
ctrl+f
#向上滚动一屏(2种方法)
b
ctrl+b
#查看下一行内容
回车键
#输出文件名和当前行的行号
:f
#退出more模式
q
#每次显示5行
more -5 test.txt
#从第5行开始显示
more +5 test.txt
#每次翻页时,先清空屏幕内容
more -5 -p test.txt
#若遇到连续两行以上的空白行,合并为一行空白行
more -s test.txt
less
- 空格翻页
- 上下键可以前进和后退
- 通过q退出
语法
less 文件名
#显示当前行数的百分比
less -m test.txt
#显示当前行数/总行数和百分比
less -M test.txt
#显示连续空行为一行
less -s test.txt
进入less模式之后的操作
g:移动到第一行
G:移动到最后一行
u:向前移动半屏
d:向后移动半屏
f:向后移动指定行数或一屏
b:向前移动指定行数或一屏
j:向下移动一行(↑也可以替代)
k:向上移动一行(↓也可以替代)
q:结束less模式
more和less区别
- less可以按键盘上下方向键显示上下内容,more不能通过上下方向键控制显示
- less不必读整个文件,加载速度会比more更快
- less退出后shell不会留下刚显示的内容,而more退出后会在shell上留下刚显示的内容
head
- head 用来显示文件开头的内容
- 默认head命令打印其相应文件的开头10行
参数说明
-q 隐藏文件名
-v 显示文件名
-c<字节> 显示字节数
-n<行数> 显示的行数
案例
1.默认前10行
head test.log
2.输出文件的头7行(两种方式)
head -n 7 test.log
head 7 test.log
3.输出文件除了最后7行的全部内容
head -n -7 test.log
4.显示文件的前100个字符
head -c 100 test.log
5.显示文件的第10-20行
head -20 test | tail -10
tail
- tail用来显示文件尾部的内容
- 使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容.
参数说明
命令格式: tail[必要参数][选择参数][文件]
-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示行数
-q, --quiet, --silent 从不输出给出文件名的首部
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
案例
1.默认后10行
tail test.log
2.查询日志尾部最后10行的日志
tail -n 10 test.log
3.从第10行开始显示内容
tail -n +10 test.log
4.多用于查看动态内容,不用刷新
tail -f test.log
5. 循环实时查看最后1000行记录(最常用的)
tail -fn 1000 test.log
一般还会配合着grep用,例如 :
tail -fn 1000 test.log | grep '关键字'
如果一次性查询的数据量太大,可以进行翻页查看,例如:
tail -n 4700 aa.log |more -1000 可以进行多屏显示(ctrl + f 或者 空格键可以快捷键)
2.新建
vi
--如果文件不存在则新建这个文件,如果文件存在就是修改这个文件
vi 文件名
touch
--只新建。可以同时新建多个文件
touch 文件名
#同时创建两个文件
touch test1.txt test2.txt
#批量创建文件(如创建2000个文件)
touch test{0001..2000}.txt
>、>>创建
> 直接覆盖原文件,不会有任何提示
>> 追加在原文件末尾,不会覆盖原文件的内容
>意思是创建,>>是追加
#创建文件
> chen.txt
cat
--其实用的也是 > 和 >> ,但是有一点不一样的是,敲完上述命令会进入chen.txt的编辑模式,可以直接输入你想要写入的内容,最后按回车键换一行后再ctrl+d退出
cat > chen.txt
cat >> chen.txt
3.删除 rm
语法
#force(强制),不进行提示信息的提醒
rm -f
#递归删除 针对文件夹
rm -r
#删除前逐一询问确认
rm -i
#删除当前目录下所有文件,强制删除
rm -rf
4.拷贝 重命名
语法
#把hello文件拷贝到/opt/test下
cp -r hello /opt/test
#将文件newfile拷贝到opt目录下的dir01中,并重命名为new
cp -r newfile /opt/dir01/new
#远程拷贝
scp /home/administrator/news.txt root@192.168.6.129:/etc/squid**
/home/administrator/ 本地文件的绝对路径
news.txt 要复制到服务器上的本地文件
root 通过root用户登录到远程服务器(也可以使用其他拥有同等权限的用户)
192.168.6.129 远程服务器的ip地址(也可以使用域名或机器名)
/etc/squid 将本地文件复制到位于远程服务器上的路径
5.移动 重命名
语法
#重命名为file_2
mv file_1 file_2
#将文件file移动到/home/dir中
mv file /home/dir
#将文件移动到home目录下,并重命名为new
mv newfile /home/new
6.链接(面试题)
软连接
- 类似windows下的快捷方式,删除原文件,快捷方式也访问不了
- 链接文件内存储的是原文件的inode,也就是说是用来指向原文件,这两个文件的inode是不一样的。可以通过ls -i查看索引节点
语法
ln -s 原文件 目标文件
例子
#创建软链接
ln -s f1 f2 把f2 链接到f1
#echo指向文件写入内容
--给f1写入内容,通过cat查找,f2也会显示内容,删除f1,f2不能再用
echo "i love you" >>f1
cat f1
cat f2
#查看索引节点
[root@localhost home]# ls -i
33642041 f1 34353106 f2
特点
- 类似于windows中的快捷方式
- 有自己的索引和存储block模块,但是数据块只保存原文件的文件名和i节点号,并没有实际的文件数据。
- 链接文件中存储的是被链接文件的元信息,路径或者inode节点
- 原文件添加内容后,软链接里面也会有原文件的内容。但是查找过程会多一个环节,就是软链接里面存的是原文件路径,而不是内容,最后是通过原文件路径去找i节点,再通过i节点去找内容
- 删除被链接文件(原文件),软连接不能使用
- 软链接可以链接任何类型的文件,包括目录和设备文件都可以作为被链接的对象
硬链接
- 硬链接实际上是为文件建一个别名,链接文件和原文件实际上是同一个文件。可以通过ls -i来查看一下,这两个文件的inode号是同一个,说明它们是同一个文件
- A是原文件,B是硬链接,那么他们两个指向了同一个文件!允许一个文件拥有多个路径,用户可以通过这种方式链接到一些重要的文件,防止误删。
语法
ln 原文件 目标文件
例子
#创建硬链接
ln f3 f4
#echo指向文件写入内容
--给f3写入内容,通过cat查找,f4也会显示内容,删除f3,f4还能用
echo "i love you" >>f3
cat f3
cat f4
#查看索引节点
[root@localhost home]# ls -i
34353107 f3 34353107 f4
复制
- 复制产生的文件是一个独立的文件,有自己的元信息和inode节点
[root@localhost home]# touch f3
[root@localhost home]# cp f3 f4
[root@localhost home]# ls -i
34353106 f3 34353107 f4
特点
- 可以看成是同一个文件,多个入口
- 硬链接的两个文件是独立的两个引用计数文件,他们共用同一份数据,所以他们拥有相同的索引和存储block模块
- 修改链接文件和被链接文件中的其中一个,另一个都改变
- 删除硬链接中的任意一个文件,另外一个文件不会被删除。没有任何影响,链接文件一样可以访问,内容和被链接文件一模一样。
- 不能跨分区
- 不能针对目录使用
- 硬链接占用的空间和被链接文件一样大(其实就是同一片空间)
- 无论修改原文件还是硬链接文件,都是修改同一片区域
- 硬链接 ≠ 复制。复制相当于将原文件进行一个拷贝,为另一个全新的文件,与原文件没有关系了。修改任何一个都不会影响另一个。
查看索引节点
ls -i
ls -li
[root@localhost home]# ls -li
总用量 8
34353107 -rw-r--r--. 2 root root 2 3月 30 06:36 f1
34353107 -rw-r--r--. 2 root root 2 3月 30 06:36 f2
[root@localhost home]# ls -i
34353107 f1 34353107 f2
[root@localhost home]#
硬链接和复制区别
- 复制相当于将原文件进行一个拷贝,为另一个全新的文件,与原文件没有关系了,修改任何一个都不会影响另一个;而硬链接修改链接文件或被链接文件其中一个,另一个都会改变
- 复制产生的文件是一个独立的文件,有自己的元信息和inode节点
- 删除或修改复制文件,对原文件不会产生任何影响,反过来也是一样的
- 复制可以复制文件,也可以复制目录。而硬链接不能针对目录使用
软链接和硬链接区别
- 创建软链接:ln -s 原文件名 目标文件名;
创建硬链接:ln 原文件名 目标文件 - 软链接与原文件有不同的i节点
硬链接与原文件有相同的i节点 - 删除原文件后,软链接不可用
删除原文件后,硬链接可以使用(至少有一个硬链接指向原文件) - 创建软连接时,应该指定原文件的绝对路径
