tulip notes
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Star-Lord

希望一天成为大师的学徒
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 各种MQ

  • Nginx

  • IdentityServer

  • Redis

  • Linux

    • Linux简介
    • Linux中一些常用命令
    • Linux中的文件复制与查找
    • 初识shell
    • shell-续与查看文件内容
      • bash shell命令
        • rm删除
        • mkdir创建目录
        • 多样的文件
        • file查看文件类型
        • cat查看
        • more 查看
        • less 查看
        • 查看部分 tail
        • 查看部分 head
    • 查看进程与shell
    • 查找数据与压缩
    • 再探shell
    • Linux系统中各个文件的作用
    • 【开发常用】Java开发必看
    • 【开发常用】软件安装利器
  • 中间件
  • Linux
EffectTang
2024-06-11
目录

shell-续与查看文件内容

# shell-续与查看文件内容

上一篇中,介绍了Linux系统中对文件的一些常用且重要的操作,新建,复制,移动,展示等等。

不过还有一些重要,且可能有危险的操作未介绍,这里就补充上。

# bash shell命令

# rm删除

使用Linux一段时间后,在某一天,你不得不删除已有的一些文件,或许是因为磁盘空间满了,或许是为了不与将要创建的新文件冲突。总之,你总有删除文件的时候。

而rm刚好是完成这一动作的命令,它来自英文单词remove的缩写,中文译为“消除”,其功能是删除文件或目录,一次可以删除多个文件,或递归删除目录及其内的所有子文件。

之所以说它有些危险,是因为bash shell中没有回收站或垃圾箱,文件一旦删除,通常来说就无法再找回了。因此,在使用rm命令时,要养成总是加入-i参数的好习惯。(如果在被删除文件的位置,又进行了写入操作,就基本不可能了)

rm -i te.txt
1

因为,使用-i命令后,在删除时,会提示“你是不是真的要删除该文件”。

如果要删除很多文件且不受提示符的打扰,可以用-f参数强制删除。不过,还要记住,删除操作时,小心为妙!切勿误删。

rm -f new?.txt
# 使用统配符 删除多个文件 且不提示
rm -rf dira
# 删除指定目录dira及其内部的所有子文件 强制删除不提示
1
2
3
4

# mkdir创建目录

在Linux中创建目录很简单,用mkdir即可(它是英文单词 make directories的缩写):

mkdir sdir
# 在当前目录下 创建名为sdir的文件夹
mkdir  adir bdir
# 同时创建adir bdir文件夹
1
2
3
4

需要注意的是,若要创建的目标目录已经存在,则会提示已存在而不继续创建,不会覆盖已有文件。若目录不存在,但具有嵌套的依赖关系时,例如/dir1/dir2/dir3,或者说父目录不存在时,在使用mkdir时需要加入-p参数。

mkdir -p adir/bdir/aa
# 在当前目录下创建 目录 adir/bdir/aa
1
2

如果删除空文件夹,则可以用rmdir,当然你通过rm的方式也是可以的

rmdir adir
1

# 多样的文件

windows中能执行的文件都是带有后缀(扩展名),但Linux中却不是如此,它的系统中即使文件没有扩展名也能运行。在Linux系统中,文件是否带有后缀(扩展名)并不决定文件的性质或其可执行性,而是通过文件的inode和文件内容来识别文件的实际类型。

以下是一些主要的判断方式:

  1. Magic Number(魔数):这是最直接也是最常用的方法之一。许多类型的文件在其开头几个字节包含一个特定的、预定义的二进制序列,称为“魔数”或文件签名。通过读取这些字节,可以准确判断文件类型。例如,JPEG图像文件通常以FF D8 FF E0或FF D8 FF E1开始,而PNG文件则以89 50 4E 47 0D 0A 1A 0A开头。
  2. inode信息:Linux文件系统中的每个文件都有一个inode,它包含文件的元数据,但不直接包含文件类型信息。不过,inode可以间接帮助,因为它关联了文件权限,比如执行权限表明文件可能是一个可执行的脚本或二进制程序。
  3. file命令:file 是一个强大的命令行工具,能够分析文件内容并报告文件类型。它通过检查魔数等文件特征来识别文件。例如,运行 file somefile 会输出该文件的类型信息。

# file查看文件类型

file my_file
hello.txt: ASCII text
#文件是一个text(文本)文件。且字符编码为,ASCII。
1
2
3

不同类型的文件,输出不同,对于可执行文件还有对应的标识,这里就不一一展示了

那如果我们想看文件本身的内容呢?哪些命令能帮助我们呢?

# cat查看

它是自英文词组concatenate files and print的缩写,其功能是在终端设备上显示文件内容。

语法格式:cat 参数 文件名

cat test1
hello 
 
this is a world
1
2
3
4

如果你想在显示内容的基础上,加上行数的显示,则可以使用-n,它会给所有行加上行号

cat test1
 1  this is world
 2
 3  hello world
1
2
3
4

有时,内容中会有些空行,就是该行无任何内容,如果你只想给有文本的行加上行号,可以使用-b

cat -b test1
 1  this is world

 3  hello world
1
2
3
4

对于内容较多的文件,使用cat命令查看后会在屏幕上快速滚屏,用户往往看不清所显示的具体内容,只好按Ctrl+C组合键中断命令执行,所以cat命令只适合查看内容较少的纯文本文件。

对于大文件,不太适用。

# more 查看

那怎么看内容过多的文件呢?答案是more,它是将内容进行分页显示,用户每按一次Enter键即向下一行,每按一次空格键即向下一页,直至看完为止。

more history.txt
clear
pwd
ls
cd ~
ls
ls -l
--More--(3%)
1
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

使用向上或向下键进行换行,或者使用b进行向上翻页,或者使用空格,或者使用d进行向下翻页。

  • 使用导航:
  1. 向下翻页:按 Space 键。
  2. 向上翻页:按 b 键。
  3. 向下滚动一行:按 Enter 键或 j 键。
  4. 向上滚动一行:按 k 键或 y 键。
  5. 跳到文件开头:按 g 键。
  6. 跳到文件末尾:按 G 键。
  7. 跳到特定行:输入 :100 并按 Enter 键,跳到第 100 行。
  8. 搜索:
    • 输入 /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
1
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 可以控制显示的行数
1
2
3
4
5
6
7
8
9

其中还有一个很重要的参数,-f参数。加上它后,此时的展示会变为持续刷新显示。如果有内容添加到文件中,它会及时更新。这是实时监测系统日志的绝妙方式。

tail -f hello.txt
1

如果你要退出实时更新状态,直接ctrl+c即可。

# 查看部分 head

与tail相对应的就是head,它就是显示文件头部的几行。

head a.txt
# 默认显示 10行
head -n 5 a.txt
# 显示 a.txt文件 头部的5行内容
1
2
3
4

head的可选参数中,没有-f,因为内容的追加都是在文件尾部进行,实时显示头部没必要。

本文介绍的都是常用基本的操作,它们每个都还有更多详细的参数可选,欢迎大家自行查阅资料。

上次更新: 2025/04/23, 16:23:16
初识shell
查看进程与shell

← 初识shell 查看进程与shell→

最近更新
01
面向切面跟自定义注解的结合
05-22
02
时间跟其他数据的序列化
05-19
03
数据加密与安全
05-17
更多文章>
Theme by Vdoing | Copyright © 2023-2025 EffectTang
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式