目录
文章目录
- 目录
- 一、基础命令
-
- 1、命令简述
- 2、文件及目录管理命令
-
- 2.01 cd:变换目录
- 2.02 ls:查看文件内容
- 2.03 tree:树状显示内容
- 2.04 mkdir:创建文件夹
- 2.05 touch:创建文件
- 2.06 cp:复制
- 2.07 mv:剪切 | 重命名
- 2.08 rm:删除
- 2.09 帮助命令
- 2.10 cat:查看
- 2.11 tac:查看
- 2.12 more:分页查看
- 2.13 less:分页查看
- 2.14 head:从头部查看
- 2.15 tail:从尾部查看
- 2.16 cut:切割
- 2.17 sort:排序
- 2.18 uniq:去重
- 2.19 wc:统计
- 2.20 tr:替换 | 删除
- 2.21 stat:文件状态信息
- 2.22 find:查找
- 2.23 xargs:管道
- 2.24 开、关机命令
- 2.25 命令行快捷键
- 2.26 环境变量
- 2.27 绝对路径与相对路径
- 3、系统文件
- 4、开机启动流程
- 5、vi/vim
- 6、符号
- 二、文本三剑客
- Linux正则表达式
- 最清晰的分组解释
- dns
一、基础命令
1、命令简述
1.1 命令行含义
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jqhmyp81-1692053238664)(assets/245-16591552947904.png)]
# 命令提示符
[py@pylinux ~]$ 普通用户py,登陆后
[root@pylinux ~]# 超级用户root,登录后
root代表当前登录的用户
@ 分隔符
pylinux 主机名
~ 当前的登录的位置,此时是家目录
# 超级用户身份提示符
$ 普通用户身份提示符
1.2 目录分隔符
windows平台命令行目录分隔符
Windows以反斜杠分割目录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xzcEh0ea-1692053238665)(assets/246.png)]
Linux平台命令行目录分隔符
linux以正斜杠分割目录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3kHNp3Uf-1692053238666)(assets/247.jpg)]
1.3 目录的特点
Linux与windows区别
windows特点:E:\学习视频\高清视频\
Linux目录特点:/etc/hosts /root/data/oldboy.txt
Linux 系统目录结构基本特点:
1.一切从根开始
2.目录是一个有层次的目录结构
3.每个目录可以挂载到不同的设备(磁盘)上
4.设备不挂载不能使用,不挂载的设备相当于没门没窗户的监狱(进不去出不来),挂载相当于给设备创造了一个入口(挂载点,一般为目录)
1.4 目录树挂载
挂载 通常是将一个 存储设备
挂接到一个已经存在的 目录
上,访问这个 目录
就是访问该存储设备的内容。
挂载操作会隐藏原本Linux目录中的文件,因此选择Linux本身的目录,最好是新建空目录用于挂载
挂载之后,这个目录被称为挂载点
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TlUaPhBx-1692053238666)(assets/321.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AybvmShV-1692053238666)(assets/322.jpg)]
1.5 目录树结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7C43f18v-1692053238667)(assets/251.png)]
/bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。
/boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev :dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
/etc:这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
/opt: 这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。 这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
/root:该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
/selinux: 这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
/srv: 该目录存放一些服务启动之后需要提取的数据。
/sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
/tmp:这个目录是用来存放一些临时文件的。
/usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
/usr/bin:系统用户使用的应用程序。
/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:内核源代码默认的放置目录。
/var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
1.5.1 重要目录
# 在linux系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。
值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。
/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。
2、文件及目录管理命令
命令 | 对应英文 | 作用 |
---|---|---|
ls | list | 查看文件夹内容 |
pwd | print work directory | 查看当前所在目录 |
cd 目录名 | Change directory | 切换文件夹 |
touch 文件名 | touch | 如果文件不存在,则创建 |
mkdir 目录名 | Make directory | 创建目录 |
rm 文件名 | Remove | 删除指定文件 |
2.01 cd:变换目录
cd 是change directory的缩写
用来变换工作目录的命令,注意命令和目录之间有一个空格
. # 当前目录
.. # 上一层目录
- # 前一个工作目录
~ # 当前【用户】所在的家目录
/ # 顶级根目录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t0eplZPv-1692053238667)(assets/259.png)]
2.02 ls:查看文件内容
显示目录下内容及属性信息。
注意:在所有目录底下都存在两个目录,分别是【.】和【…】,分别代表当前目录,上层目录!
-a 显示指定目录下所有子目录与文件,包括以.开头的隐藏文件
-l 以列表方式显示文件的详细信息 ls -l 等于ll 用法
-h, --human-readable 与-l 一起,以易于阅读的格式输出文件大小
(例如 1K 234M 2G)
-t 根据最后修改时间排序,默认是以文件名排序,通常与-l 连用
-F 在条目后加上文件类型的指示符号(* , /, = , @ , | ,其中的一个)
注:可以标识文件类型
加上 * 代表可执行的普通文件
加上 = 表示套接字
加上 | 表示FIFOS(队列系统)
加上 @表示符号链接
加上 / 表示文件夹
-d 显示目录本身的信息 而不是显示目录的内容
-r, --reverse 逆序排列
-S 根据文件大小排序,从大到小排序
-i 显示索引节点信息(索引节点相当于身份证号)
--full-time 以完整的时间格式输出(也就是按照中国的时间日期显示)
案例
ls -lt 按照时间进行排序
ls -ltr 找出最新的文件
ls -d */ 列出当前所有目录
ll -hS ./* 显示出当前目录下所有内容详细,且以kb,mb,gb单位从大到小排序
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KF1oaVla-1692053238667)(assets/256.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ly8qeDIH-1692053238668)(assets/254.png)]
2.03 tree:树状显示内容
以树形结构显示目录下内容
命令需要单独安装:yum -y install tree
tree 命令语法:
tree常用参数
-C 在文件和目录清单加上色彩,便于区分各种类型。
-d 显示目录名称而非内容。
-D 列出文件或目录的更改时间。
-f 在每个文件或目录之前,显示完整的相对路径名称。
-F 在条目后加上文件类型的指示符号(* , /, = , @ , | ,其中的一个) 目录/
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N6W748aB-1692053238668)(assets/255-165918240394818.jpeg)]
2.04 mkdir:创建文件夹
创建文件夹
用法:mkdir [选项]... 目录...
若指定目录不存在,则创建目录。
-m, --mode=模式 设置权限模式(类似chmod),而不是rwxrwxrwx 减umask
-p, --parents 需要时创建目标目录的上层目录,但即使这些目录已存在也不当作错误处理
mkdir {
1..3} 加花括号创建连续的目录,用..隔开 花括号内可以是连续的数字、连续的字母mkdir {
a..e}
案例
mkdir {
alex,pyyu,mjj} 创建三个文件夹,逗号隔开
mkdir alex{
1..5} 创建连续的目录
mkdir cunzhang longting 创建少量连续目录
mkdir -m 755 -p {
AAA/aaa,BBB/bbb,CCC/ccc} 递归创建目录,且为目录设置权限 755 (drwxr-xr-x)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wukMdgfQ-1692053238668)(assets/257.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VX0Mw91E-1692053238669)(assets/image-20220730203610899.png)]
2.05 touch:创建文件
创建文件或修改文件时间戳
用法:touch [选项]... 文件...
将每个文件的 访问时间 和 修改时间 改为当前时间。
不存在的文件将会被创建为空文件,除非使用-c 或-h 选项。
-c, --no-create 不创建任何文件
-t STAMP 使用[[CC]YY]MMDDhhmm[.ss] 格式的时间替代当前时间
-r, --reference=文件 使用指定文件的时间属性替代当前文件时间
案例
# 创建文件
touch {
连续数字或字母} # 创建多个文件序列
touch {
1..10} # 创建 1至10 文件序列
touch {
a..z} # 创建 a至z 文件序列
# 修改文件时间
touch -t 06010808 alex1 # 修改alex1文件的时间是 6月1号8点8分
touch -r alex1 alex2 # 把alex2的时间改成alex1一样
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZyPu5F1n-1692053238669)(assets/258.jpg)]
2.06 cp:复制
复制命令
用法:cp [选项]... 源文件... 目录
或:cp [选项]... [-T] 源文件 目标文件
或:cp [选项]... -t 目录 源文件...
将源文件复制至目标文件,或将多个源文件复制至目标目录。
-a 等于-pdr
-r 递归式复制目录,即复制目录下的所有层级的子目录及文件
-p 复制的时候 保持属性不变
-p 等于--preserve=模式,所有权,时间戳,复制文件时保持源文件的权限、时间属性
-d 复制的时候保持软连接(快捷方式)
-i, --interactive 覆盖前询问提示
① 案例
cp -a 等同于 cp -pdr (权限、软链接、递归)
# 1. 移动xxx.py到/tmp目录下 (复制)
cp xxx.py /tmp/
# 2. 移动xxx.py顺便改名为chaoge.py (复制+重命名)
cp xxx.py /tmp/chaoge.py
# 3. Linux下面很多命令,一般没有办法直接处理文件夹,因此需要加上(参数)
cp -a 相当于-pdr
cp -r 递归,复制目录以及目录的子孙后代
cp -p 复制文件,同时保持文件属性不变,可以用stat查看属性
# 4. 递归复制test文件夹,为test2
cp -r test test2
# 5. cp是个好命令,操作文件前,先备份
cp main.py main.py.bak
# 6.移动多个文件,放入文件夹c中
cp -r 文件1 文件2 文件夹a 文件夹c
② 案例
cp -i :提示用户确认
复制递归目录必须 + -r参数
[root@pylinux opt]# cp luffy_boy.zip luffy_boy.zip.bak2
cp:是否覆盖"luffy_boy.zip.bak2"? y
[root@pylinux opt]# cp luffy_boy.zip luffy_boy.zip.bak2 -i
cp:是否覆盖"luffy_boy.zip.bak2"? y
cp确认是否覆盖是-i参数作用,默认alias因为添加了别名
[root@pylinux opt]# alias
alias cp='cp -i'
[root@pylinux opt]# cp luffyCity/ luffyCity2 # 必须添加-r参数才可以复制递归目录
cp: omitting directory 'luffyCity/'
[root@pylinux opt]# cp -r luffyCity/ luffyCity2
[root@pylinux opt]# ls
luffyCity luffyCity2
③ 取消别名的方式
取消 cp 的别名
- 使用命令绝对路径
- 命令开头用反斜线 \
- 取消cp命令别名
- 写入环境变量配置文件
1. 使用命令绝对路径
[root@pylinux opt]# which cp
alias cp='cp -i'
/usr/bin/cp
[root@pylinux opt]# /usr/bin/cp luffy_boy.zip luffy_boy.zip.bak
2. 命令开头用反斜线 \
[root@pylinux opt]# \cp luffy_boy.zip luffy_boy.zip.bak
# 3. 取消cp命令别名
[root@pylinux opt]# unalias cp
[root@pylinux opt]# cp luffy_boy.zip luffy_boy.zip.bak
4. 写入环境变量配置文件
[root@pylinux opt]# vim ~/.bashrc #可以注释掉如下配置
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
#alias cp='cp -i'
alias mv='mv -i'
④ 快速备份配置文件
cp:快速备份相同路径的文件。(简写路径)
{,备份名称}
[root@edon ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens33{,-20220730.bak}
[root@edon ~]# ls /etc/sysconfig/network-scripts/ifcfg-ens33*
/etc/sysconfig/network-scripts/ifcfg-ens33
/etc/sysconfig/network-scripts/ifcfg-ens33.20220730.bak
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1QmDxetK-1692053238670)(assets/261.jpg)]
2.07 mv:剪切 | 重命名
mv命令就是move的缩写,作用是移动或是重命名文件。
用法:mv [选项]... 源文件... 目录
或:mv [选项]... [-T] 源文件 目标文件
或:mv [选项]... -t 目录 源文件...
将源文件重命名为目标文件,或将源文件移动至指定目录。
-f, --force 覆盖前不询问
-i, --interactive 覆盖前询问
-n, --no-clobber 不覆盖已存在文件如果您指定了-i、-f、-n 中的多个,仅最后一个生效。
-t, --target-directory=DIRECTORY 将所有参数指定的源文件或目录移动至 指定目录
-u, --update 只在源文件文件比目标文件新,或目标文件不存在时才进行移动
案例
移动(搬家)命令 > move > mv
1. 给文件重命名
mv abc abc.py
2. 如果目标文件存在,-i参数则提示是否覆盖
mv test1.txt test2.txt
3. 使用反斜杠命令屏蔽别名 `mv -i`
\mv kunkun wuyifan
4. 取消别名
unalias mv
5. 移动单个文件
mv file1.txt dir/
6. 移动多个文件
mv file1.txt file2.txt dir/
7. 通配符移动多个文件
mv dir/file* ../
[root@edon ~]# mv -u 111.txt AAA/ # 当111.txt创建时间早于AAA/目录下的111.txt文件,则不会被覆盖(反之早于就覆盖)
[root@edon AAA]# stat 111.txt
文件:"111.txt"
大小:4 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:34148303 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2022-07-31 21:37:16.480173778 +0800
最近更改:2022-07-31 21:36:44.621173900 +0800
最近改动:2022-07-31 21:36:44.621173900 +0800
创建时间:-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5howKY1F-1692053238670)(assets/264.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X3SrCHue-1692053238670)(assets/263.jpg)]
2.08 rm:删除
Linux在使用rm(删除)、cp(覆盖)、mv(搬家)等命令的时候,必须非常小心,因为这些命令都是“炸弹”,想必大家都听过“删库到跑路”,一言不合“rm -rf /”,假如你真的这么做了,那么。。。上帝保佑你。
rm命令就是remove的含义,删除一个或者多个文件,这是Linux系统重要命令
用法:rm [选项]... 文件...
删除 (unlink) 文件。
-f, --force 强制删除。忽略不存在的文件,不提示确认
-r, -R, --recursive 递归删除目录及其内容
-i 在删除前需要确认
-I 在删除超过三个文件或者递归删除前要求确认。
-d, --dir 删除空目录
-v, --verbose 详细显示进行的步骤
--help 显示此帮助信息并退出
--version 显示版本信息并退出
案例
1.删除普通文件,需要确认提示,默认添加了-i参数
rm file1.txt
2.强制删除文件,不提示
rm -f file2.txt
3.递归删除文件夹
[root@pylinux tmp]# rm -r heh/
rm:是否进入目录"heh/"? y
rm:是否删除普通空文件 "heh/kuanmian2"?y
rm:是否删除普通空文件 "heh/kuanmian"?y
rm:是否删除目录 "heh/"?y
炸弹命令
务必看清楚敲打的命令,是否正确、不得有空格
1.强制删除且不让用户确认
rm -rf 文件夹
2.强制删除且显示过程
[root@pylinux tmp]# rm -rfv ./*
已删除"./456.txt"
已删除目录:"./q/w/e/r/t/yt"
已删除目录:"./q/w/e/r/t"
已删除目录:"./q/w/e/r"
已删除目录:"./q/w/e"
已删除目录:"./q/w"
已删除目录:"./q"
rm 文件恢复
rm命令删除文件后可以通过如
ext3grep
工具恢复数据,若是想要粉碎文件,还有其他方式。
2.09 帮助命令
2.9.1 man:手册
当你不知道linux命令如何使用的时候,使用man命令帮助你
语法:
man 命令
[root@edon ~]# man ls
进入man帮助文档后,按下q退出
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RLMawPym-1692053238671)(assets/249.jpg)]
2.9.2 help:帮助
使用–help参数
只针对bash内置命令
语法:
命令 --help
帮助命令的精简版
[root@edon ~]# ls --help
2.9.3 info:帮助
语法:
info 命令
2.10 cat:查看
cat命令用于查看纯文本文件(常用于内容较少的), 可以理解为是
猫
,瞄一眼文件内容.其单词是
concatenate
,指的是可以连接多个文件且打印到屏幕,或是重定向到文件中
功能
功能 | 说明 |
---|---|
查看文件内容 | cat file.txt |
多个文件合并 | cat file.txt file2.txt > file3.tx |
非交互式编辑或追加内容 | cat >> file.txt << EOF 欢迎来到路飞学城 EOF |
清空文件内容 | cat /dev/null > file.txt 【/dev/null是linux系统的黑洞文件】 |
参数
清空文件内容,慎用:
>
文件名
用法:cat [选项] [文件]...
将[文件]或标准输入组合输出到标准输出。
-A, --show-all 等价于 -vET
-b, --number-nonblank 对非空输出行编号显示
-e 等价于 -vE
-E, --show-ends 在每行结束处显示 $
-n, --number 对输出的所有行编号
-s, --squeeze-blank 不输出多行空行
-t 与 -vT 等价
-T, --show-tabs 将跳格字符显示为 ^I
-u (被忽略)
-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
--help 显示此帮助信息并退出
--version 输出版本信息并退出
如果[文件]缺省,或者[文件]为 - ,则读取标准输入。
案例
# 1. 查看文件,显示行号
cat -n xxx.py
# 2. 猫,查看文件
cat xxx.py
# 3. 在每一行的结尾加上$符
[root@master tmp]# cat -E 1.txt
# 4. 追加文字到文件
cat >>/tmp/oldboy.txt << EOF
唧唧复唧唧
木兰开飞机
开的什么机
波音747
EOF
# 5. 输出非空行的编号
[root@luffycity tmp]# cat -b file.txt
1 欢迎来到路飞学城
2 学生还有五分钟到达战场
3 全军出击
# 6. 输出所有行的编号
[root@luffycity tmp]# cat -n file.txt
1 欢迎来到路飞学城
2 学生还有五分钟到达战场
3
4
5 全军出击
# 7. 显示出每行的结束符,$符号
[root@luffycity tmp]# cat -E file.txt
欢迎来到路飞学城$
学生还有五分钟到达战场$
$
$
全军出击$
# 8. -s参数把多个空行,换成一个,可以让文件更精炼阅读
[root@luffycity tmp]# cat -s file.txt
欢迎来到路飞学城
学生还有五分钟到达战场
全军出击
# 9. cat写入内容,用ctrl+c 结束,一般不用
[root@luffycity tmp]# cat > alex.txt
我是金角老妖怪alex
^C
2.11 tac:查看
与cat命令作用相反,反向读取文件内容
[root@luffycity tmp]# cat alex.txt
我是金角老妖怪alex
我是老妖怪alex
[root@luffycity tmp]# tac alex.txt
我是老妖怪alex
我是金角老妖怪alex
2.12 more:分页查看
More是一个过滤器, 用于分页显示 (一次一屏) 文本,以当前屏幕窗口尺寸为准
语法:
more 参数 文件
-num 指定屏幕显示大小为num行
+num 从num行开始显示
# 交互式more的命令:
空格 向下滚动一屏
Enter 向下显示一行
= 显示当前行号
q 退出
案例
# 1. 显示5行内容
[root@luffycity tmp]# more -5 alex.txt
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
--More--(0%)
#从6行开始输出内容到屏幕
more +6 alex.txt
#将显示结果分页输出,需控制窗口大小
[root@luffycity tmp]# netstat -tunlp |more -3
2.13 less:分页查看
less命令是more的反义词
语法:
less 参数 文件
-N 显示每行编号
-e 到文件结尾自动退出,否则得手动输入q退出
子命令:
# 整个的翻页:
b 向前一页
f 向后一页
空格 查看下一行,等于 ↓
y 查看上一行,等于↑
q 退出
案例
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fFytYFZk-1692053238671)(assets/287.jpg)]
2.14 head:从头部查看
用于显示文件内容头部,默认显示开头10行
用法:head [选项]... [文件]...
将每个指定文件的头10 行显示到标准输出。
如果指定了多于一个文件,在每一段输出前会给出文件名作为文件头。
如果不指定文件,或者文件为"-",则从标准输入读取数据。
-c, --bytes=[-]K 显示每个文件的前K 字节内容;
如果附加"-"参数,则除了每个文件的最后K字节数据外
显示剩余全部内容
-n, --lines=[-]K 显示每个文件的前K 行内容;
如果附加"-"参数,则除了每个文件的最后K 行外显示
剩余全部内容
-q, --quiet, --silent 不显示包含给定文件名的文件头
-v, --verbose 总是显示包含给定文件名的文件头
--help 显示此帮助信息并退出
--version 显示版本信息并退出
案例
# 1. 显示前五行
[root@luffycity ~]# head -5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
# 2. 显示文件前6个字节
[root@luffycity ~]# head -c 6 /etc/passwd
root:x[root@luffycity ~]#
# 3. 显示多个文件
[root@luffycity tmp]# echo 你就是金角大王吧 > alex.txt
[root@luffycity tmp]# echo 你就是银角大王吧 > peiqi.txt
[root@luffycity tmp]# head alex.txt peiqi.txt
==> alex.txt <== # 文件名
你就是金角大王吧
==> peiqi.txt <== # 文件名
你就是银角大王吧
2.15 tail:从尾部查看
显示文件内容的末尾,默认输出后10行
-c 数字 指定显示的字节数
-n 行数 显示指定的行数
-f 实时刷新文件变化
-F 等于 -f --retry 不断打开文件,与-f合用
--pid=进程号 进程结束后自动退出tail命令
-s 秒数 检测文件变化的间隔秒数
案例
# 1. 显示文件后10行
tail alex.txt
# 2. 显示文件后5行
tail -5 alex.txt
# 3. 从文件第3行开始显示文件
tail -n +3 alex.txt
# 4. 检测文件变化
tail -f alex.txt
# 5. -F 与 -f 参数的用法
[root@luffycity tmp]# tail -f alex.txt # -f文件不存在,直接报错,退出
tail: cannot open 'alex.txt' for reading: No such file or directory
tail: no files remaining
[root@luffycity tmp]# tail -F alex.txt # -F 文件不存在报错,等待文件生成
tail: cannot open 'alex.txt' for reading: No such file or directory
tail: 'alex.txt'</