1.查看

cat

由第一行开始显示文件内容,用来读文章或者读取配置文件

  1. #获取test.txt文件所有内容
  2. cat test.txt
  3. #无论是否为空行,都显示行号
  4. cat -n test.txt
  5. #显示行号,除了空行
  6. cat -b test.txt
  7. #连续读取两个文件,按顺序输出
  8. cat test1.txt test2.txt
  9. #倒序输出
  10. --其实就是cat倒过来写即可
  11. 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节点
  • 删除原文件后,软链接不可用
    删除原文件后,硬链接可以使用(至少有一个硬链接指向原文件)
  • 创建软连接时,应该指定原文件的绝对路径