shell-续与查看文件内容
# shell-续与查看文件内容
上一篇中,介绍了Linux系统中对文件的一些常用且重要的操作,新建,复制,移动,展示等等。
不过还有一些重要,且可能有危险的操作未介绍,这里就补充上。
# bash shell命令
# rm删除
使用Linux一段时间后,在某一天,你不得不删除已有的一些文件,或许是因为磁盘空间满了,或许是为了不与将要创建的新文件冲突。总之,你总有删除文件的时候。
而rm
刚好是完成这一动作的命令,它来自英文单词remove的缩写,中文译为“消除”,其功能是删除文件或目录,一次可以删除多个文件,或递归删除目录及其内的所有子文件。
之所以说它有些危险,是因为bash shell中没有回收站或垃圾箱,文件一旦删除,通常来说就无法再找回了。因此,在使用rm命令时,要养成总是加入-i参数的好习惯。(如果在被删除文件的位置,又进行了写入操作,就基本不可能了)
rm -i te.txt
因为,使用-i命令后,在删除时,会提示“你是不是真的要删除该文件”。
如果要删除很多文件且不受提示符的打扰,可以用-f参数强制删除。不过,还要记住,删除操作时,小心为妙!切勿误删。
rm -f new?.txt
# 使用统配符 删除多个文件 且不提示
rm -rf dira
# 删除指定目录dira及其内部的所有子文件 强制删除不提示
2
3
4
# mkdir创建目录
在Linux中创建目录很简单,用mkdir即可(它是英文单词 make directories的缩写):
mkdir sdir
# 在当前目录下 创建名为sdir的文件夹
mkdir adir bdir
# 同时创建adir bdir文件夹
2
3
4
需要注意的是,若要创建的目标目录已经存在,则会提示已存在而不继续创建,不会覆盖已有文件。若目录不存在,但具有嵌套的依赖关系时,例如/dir1/dir2/dir3,或者说父目录不存在时,在使用mkdir时需要加入-p参数。
mkdir -p adir/bdir/aa
# 在当前目录下创建 目录 adir/bdir/aa
2
如果删除空文件夹,则可以用rmdir,当然你通过rm的方式也是可以的
rmdir adir
# 多样的文件
windows中能执行的文件都是带有后缀(扩展名),但Linux中却不是如此,它的系统中即使文件没有扩展名也能运行。在Linux系统中,文件是否带有后缀(扩展名)并不决定文件的性质或其可执行性,而是通过文件的inode和文件内容来识别文件的实际类型。
以下是一些主要的判断方式:
- Magic Number(魔数):这是最直接也是最常用的方法之一。许多类型的文件在其开头几个字节包含一个特定的、预定义的二进制序列,称为“魔数”或文件签名。通过读取这些字节,可以准确判断文件类型。例如,JPEG图像文件通常以
FF D8 FF E0
或FF D8 FF E1
开始,而PNG文件则以89 50 4E 47 0D 0A 1A 0A
开头。 - inode信息:Linux文件系统中的每个文件都有一个inode,它包含文件的元数据,但不直接包含文件类型信息。不过,inode可以间接帮助,因为它关联了文件权限,比如执行权限表明文件可能是一个可执行的脚本或二进制程序。
- file命令:
file
是一个强大的命令行工具,能够分析文件内容并报告文件类型。它通过检查魔数等文件特征来识别文件。例如,运行file somefile
会输出该文件的类型信息。
# file查看文件类型
file my_file
hello.txt: ASCII text
#文件是一个text(文本)文件。且字符编码为,ASCII。
2
3
不同类型的文件,输出不同,对于可执行文件还有对应的标识,这里就不一一展示了
那如果我们想看文件本身的内容呢?哪些命令能帮助我们呢?
# cat查看
它是自英文词组concatenate files and print的缩写,其功能是在终端设备上显示文件内容。
语法格式:cat 参数 文件名
cat test1
hello
this is a world
2
3
4
如果你想在显示内容的基础上,加上行数的显示,则可以使用-n,它会给所有行加上行号
cat test1
1 this is world
2
3 hello world
2
3
4
有时,内容中会有些空行,就是该行无任何内容,如果你只想给有文本的行加上行号,可以使用-b
cat -b test1
1 this is world
3 hello world
2
3
4
对于内容较多的文件,使用cat命令查看后会在屏幕上快速滚屏,用户往往看不清所显示的具体内容,只好按Ctrl+C组合键中断命令执行,所以cat命令只适合查看内容较少的纯文本文件。
对于大文件,不太适用。
# more 查看
那怎么看内容过多的文件呢?答案是more
,它是将内容进行分页显示,用户每按一次Enter键即向下一行,每按一次空格键即向下一页,直至看完为止。
more history.txt
clear
pwd
ls
cd ~
ls
ls -l
--More--(3%)
2
3
4
5
6
7
8
使用more后,会在终端底部显示more这个标签以及你当前在该文本内容中的位置(这里是百分比)。你可以通过enter键看下一行,或者空格键来看下一页。按 q 来进行退出。
但more命令只支持文本文件中的基本移动。只能向下翻页,无法向上,并不能满足我们的日常需求,在工作中查看长文件用得更多的反而是less
。
# less 查看
Less命令分页显示的功能与more命令很相像,但more命令只能从前向后浏览文件内容,而less命令不仅能从前向后浏览(按PageDown键),还可以从后向前浏览(按PageUp键),此外,它提供了更多高级功能,还有搜索文本、高亮匹配项等。
less .bash_history
# 查看 隐藏文件.bash_history
yum update
clear
yum update
yum install yum-utils
yum clean all
yum-complete-transactioin --cleanup-only
yum-complete-transaction --cleanup-only
clear
yum update
clear
pwd
ls
cd ~
ls
ls -l
.bash_history
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
使用向上或向下键进行换行,或者使用b
进行向上翻页,或者使用空格,或者使用d
进行向下翻页。
- 使用导航:
- 向下翻页:按
Space
键。 - 向上翻页:按
b
键。 - 向下滚动一行:按
Enter
键或j
键。 - 向上滚动一行:按
k
键或y
键。 - 跳到文件开头:按
g
键。 - 跳到文件末尾:按
G
键。 - 跳到特定行:输入
:100
并按Enter
键,跳到第 100 行。 - 搜索:
- 输入
/spring
并按Enter
键,搜索包含spring
的行。 - 按
n
键重复上次搜索。 - 按
N
键反向重复上次搜索。
- 输入
在Linux系统中,隐藏文件通常是那些文件名以点(
.
)开头的文件。这类文件默认不会被诸如ls
这样的命令列出,除非你使用了特定的选项,如ls -a
。如果你要创建隐藏文件,则直接给文件命名时以点开头即可,例如
touch .hiddenfile
。
less -N .bash_history
# 展示内容时 显示行号
1 ping baidu.com
2 yum update
3 clear
4 yum update
5 yum install yum-utils
6 yum clean all
7 yum-complete-transactioin --cleanup-only
8 yum-complete-transaction --cleanup-only
9 clear
10 yum update
11 clear
12 pwd
13 ls
14 cd ~
15 ls
16 ls -l
.bash_history
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
在使用less命令后,下方会显示文件名,光标也停留在底部,这时你还能继续使用一些指令来进行内容的跳转。
输入g
键,跳到文件开头,输入G
键,跳到文件结尾。还可以跳到指定行号,通过输入指定目标行,例如30G
,之后便会跳到30行。
如果要搜索指定内容,则输入/pattern
,然后按回车,就可以查找下一个匹配pattern
的文本。进入匹配模式后,若要退出匹配模式并返回到正常浏览状态,你可以按 Enter
键或者 ESC
键。
退出该模式(less),跟more相同,也是输入q
键。
# 查看部分 tail
实际工作中,其实有些文件我们只需要看最近的一部分内容即可(如果内容按照时间排序,比如日志),我们只需要看该文件的尾部那部分,使用cat或者more都显得有些多余,而且从耗时角度来说,加载更少的内容显然耗时更少。
为了解决我们的这个需求,只看内容的最后部分或者开头的部分,tail
和head
被设计了出来。
tail hello.txt
# 默认显示 最后10行
tail -n 5 hello.txt
better
than
better
learn
# 通过参数n 可以控制显示的行数
2
3
4
5
6
7
8
9
其中还有一个很重要的参数,-f参数。加上它后,此时的展示会变为持续刷新显示。如果有内容添加到文件中,它会及时更新。这是实时监测系统日志的绝妙方式。
tail -f hello.txt
如果你要退出实时更新状态,直接ctrl+c即可。
# 查看部分 head
与tail相对应的就是head,它就是显示文件头部的几行。
head a.txt
# 默认显示 10行
head -n 5 a.txt
# 显示 a.txt文件 头部的5行内容
2
3
4
head的可选参数中,没有-f,因为内容的追加都是在文件尾部进行,实时显示头部没必要。
本文介绍的都是常用基本的操作,它们每个都还有更多详细的参数可选,欢迎大家自行查阅资料。