[Linux] 文件与目录管理

文章标题

  • 前言
  • 相对路径和绝对路径
  • 目录的相关管理
    • cd(切换目录)
    • pwd(显示当前目录)
    • mkdir(创建新目录)
    • rmdir(删除空目录)
  • 文件的相关管理
    • ls(查看文件与目录)
    • cp(复制文件或目录)
    • rm(移除文件或目录)
    • mv(移动文件与目录,或更名)
    • touch(创建新文件或修改文件时间)
    • file(查看文件类型)
    • which(寻找“执行文件”)
    • whereis(寻找特定文件,快)
    • locate(寻找特定文件,快)
    • find(寻找特定文件,慢)
  • 文件内容的查阅
    • cat(显示文件内容,从第一行开始)
    • tac(显示文件内容,从最后一行开始)
    • nl(添加行号显示)
    • more(一页一页的翻动)
    • less(一页一页翻动)
    • head(读取文件前几行)
    • tail(读取文件后几行)

前言

本篇文章没有太多理解性的东西,主要是记录有关于文件和目录的各种常用命令使用方法。

熟悉Linux基础命令的请略过~~

相对路径和绝对路径

Linux的目录结构就是一颗枝繁叶茂的树,根目录/就是这颗树的根。

寻找目录的过程就是沿着树节点移动。移动方法有两种:

  1. 相对路径:以工作目录.为起点,移动到目标节点的路径
  2. 绝对路径:以根目录/为起点,移动到目标节点的路径

目录的相关管理

cd(切换目录)

为了简化切换操作,Linux设置了几个比较特殊的目录:

.		代表当前所在目录
..		代表上一层的父目录
-		代表前一个工作目录
~		代表当前用户的家目录
~git	代表git用户的家目录

假设以git用户身份登陆系统进入家目录/home/git,然后顺序执行以下cd命令:

语法: cd [相对路径或绝对路径]
全称: Change Directory

[root@www ~] cd .               # 还是在 /home/git 目录,这样执行cd命令其实没什么意义
[root@www ~] cd ..              # 切换到上一层目录 /home
[root@www ~] cd -               # 切换回上一个目录 /home/git
[root@www ~] cd ~vip            # 切换到vip用户家目录 /home/vip
[root@www ~] cd ~               # 切换到当前用户家目录 /home/git
[root@www ~] cd book            # 相对路径,切换到当前目录的子目录 /home/vip/book
[root@www ~] cd /home/vip/book  # 绝对路径,直接切换到目录 /home/vip/book

pwd(显示当前目录)

语法: pwd [-P]
全称: Print Working Directory

参数: 
-P : 显示实际路径,而非连接(link)路径

# 使用 ls 查看目录 /var/mail 属性,发现这是个连接目录,指向的实际目录 /var/spool/mail
lrwxrwxrwx   1 root root   10 814 2019 mail -> spool/mail

# 在 /var/mail 目录下执行命令
[root@www ~] pwd    # 显示当前目录 /var/mail
[root@www ~] pwd -P # 显示实际目录 /var/spool/mail

mkdir(创建新目录)

语法: mkdir [-mp] 目录名称

参数:
-m : 配置目录的权限,直接设置,不需要看默认权限(umask)
-p : 递归创建多级目录

示例:
[root@www ~] mkdir test  # 创建一个名为test的新目录,默认权限
[root@www ~] mkdir -m 711 test  # 创建权限为rwx--x--x的新目录
[root@www ~] mkdir -p test1/test2/test3/test4  # 创建四级目录

rmdir(删除空目录)

空目录的意思是目录中不存在文件或者子目录。

语法: rmdir [-p] 目录名称

参数: 
-p : 连同上层空目录一起删除

示例:
[root@www ~] rmdir test  # 可直接删除空目录,不是空目录的话不能删除,命令会报错
[root@www ~] rmdir -p test1/test2/test3/test4  # 如果都是空目录,可以一起删除

文件的相关管理

ls(查看文件与目录)

列举出某个目录中包括的文件及子目录。

这个命令参数挺多,但每个人常用的形式就那么一两种,不用都记,用习惯了就好。

语法: ls [-aAdfFhilnrRSt] [目录名称,默认是当前目录]

参数: 
-a : 列举全部文件,连同隐藏文件及目录,默认不会列举隐藏文件及目录
-A : 列举全部文件,连同隐藏文件及目录,但是不包括 ... 这两个目录
-d : 仅列举目录本身,不包含目录中的文件及子目录
-f : 直接列举结果,不进行排序,默认会以文件名排序展示
-F : 根据文件、目录等信息给予附加数据结构,例如*代表可执行文件,/代表目录,=代表socket文件,|代表FIFO文件
-h : 以人类较易读的方式列举出文件容量,例如GB,KB等
-i : 列出inode号码
-l : 列出更为详细的信息,包括文件属性和权限等
-n : 列出UID与GID,而非用户和用户组名称
-r : 排序结果反向输出
-R : 连同子目录内容一起列出,等于该目录及其子目录下所有的文件都会显示出来
-S : 以文件内容大小排序,而不是用文件名称
-t : 以时间排序,而不是用文件名称
--color=never : 不要依据文件特性给予颜色显示
--color=always : 显示颜色
--color=auto : 让系统自行依据设置来判断是否给予颜色
--full-time : 以完整时间模式输出,包含年月日时分
--time=[atime,ctime] : 输出访问时间(atime)或改变权限属性时间(ctime),而非内容变更时间(mtime)

示例:
[root@www ~] ls -al  # 最最常用的命令,列举出当前目录下的文件及目录信息
[root@www ~] ls -al ~  # 列举当前用户家目录下的文件及目录
[root@www ~] ls -al -color=never ~  # 同上,不显示颜色,文件名称后面显示文件类型
[root@www ~] ls -al --full-time ~  # 显示完整的文件时间,默认是内容修改时间

cp(复制文件或目录)

复制操作会涉及到文件的属性和权限,因此在复制时,必须了解清楚几件事情:

  1. 是否需要完整保留源文件的信息
  2. 源文件是否为软连接文件
  3. 源文件是否为特殊文件,例如FIFO、socket等
  4. 源文件是否为目录
语法:
cp [-adfilprsu] 源文件(source) 目标文件(destination)
# 如果源文件有两个以上,则最后一个目标文件一定要是“目录”才行
cp [options] source1 source2 source3 .... directory


参数:
-a : 相当于 -pdr 的意思
-d : 若源文件是连接文件属性(link file),则复制连接文件属性而非文件本身
-f : 强制(force)的意思,若目标文件已经存在且无法开启,则删除后再尝试一次
-i : 若目标文件已经存在,覆盖时先询问操作的进行
-l : 进行硬连接(hard link)的连接文件创建,而非复制文件本身
-p : 连同文件的属性一起复制,而非使用默认属性(备份常用)
-r : 递归复制,用于目录的复制行为
-s : 复制成为符号链接文件(symbolic link),即“快捷方式”文件
-u : 若目标文件比源文件旧才更新目标文件

# 不同的用户身份执行cp命令会有不同的结果,尤其是 -a -p 参数,不同身份区别很大

示例:
# 用 root 身份将主文件夹下的 .bashrc 复制到 /tmp 下,并改名为 bashrc
[root@www ~] cp ~/.bashrc /tmp/bashrc
[root@www ~] cp -i ~/.bashrc /tmp/bashrc  # 第二次复制的时候,会询问操作是否进行

# 切换到 /tmp 目录,将 /var/log/wtmp 复制到 /tmp 且查看属性
[root@www ~] cp /var/log/wtmp .     # 目标文件某些属性、权限、创建时间会发生变化
[root@www ~] cp -a /var/log/wtmp .  # 目标文件和源文件特性都是一样的

# 复制 /etc 目录下的所有内容到 /tmp 下面
[root@www ~] cp -r /etc/ /tmp

# 创建硬连接(hard link)和软连接(symbolic link)
[root@www ~] cp -l bashrc bashrc_hlink  # 硬连接
[root@www ~] cp -s bashrc bashrc_slink  # 软连接,即“快捷方式”

# 复制连接文件(link file)
[root@www ~] cp bashrc_slink bashrc_slink_1     # bashrc_slink_1 与源文件相同
[root@www ~] cp -d bashrc_slink bashrc_slink_2  # bashrc_slink_2 是连接文件

# 若 ~/.bashrc 比 /tmp/bashrc 新才复制过来
[root@www ~] cp -u ~/.bashrc /tmp/bashrc  # 也就是文件有新的差异才会复制,常用于备份

# 将多个数据一次复制到同一个目录中,最后的参数一定得是目录
[root@www ~] cp ~/.bashrc ~/.bash_history /tmp

rm(移除文件或目录)

语法: rm [-fir] 文件或目录

参数:
-f : 就是 force 的意思,忽略不存在的文件,不会出现警告信息
-i : 互动模式,在删除前会询问用户是否操作
-r : 递归删除,最常用的目录删除选项,也是非常危险的参数!

示例:
# 删除文件
[root@www ~] rm bashrc       # 直接删除 bashrc 文件
[root@www ~] rm -i bashrc    # 删除 bashrc 文件前会询问是否确定删除,有机会避免误删
[root@www ~] rm -i bashrc*   # 根据通配符 * 删除文件名以 bashrc 开头的文件
[root@www ~] rm -r /tmp/etc  # 删除目录 /tmp/etc 及其中的文件和子目录

mv(移动文件与目录,或更名)

语法:
mv [-fiu] source destination
mv [optins] source1 source2 source3 .... directory

参数:
-f : 强制force的意思,如果目标文件存在直接覆盖
-i : 如果目标文件存在,会询问是否覆盖
-u : 如果目标文件存在,且源文件比较新,才会覆盖

示例:
# source是文件,destination是目录
[root@www ~] mv file1 dir1  # 将文件 file1 移动到目录 dir1 中
[root@www ~] mv file1 file2 dir1 # 将文件 file1 和 file2 移动到目录 dir1 中
[root@www ~] mv file1 dir1 dir2 # 将文件 file1 和目录 dir1 移动到目录 dir2 中

# source是文件,destination也是文件
[root@www ~] mv myfile1 myfile2  # 将文件 myfile1 重命名为 myfile2

# source是目录,destination也是目录
[root@www ~] mv mydir1 mydir2  # 将目录 mydir1 重命名为 mydir2

touch(创建新文件或修改文件时间)

理解这个命令,首先要清楚一个知识点,与文件相关的时间有三个:

  1. mtime(modification time):文件内容(存储的数据)有更新时,该时间会被更新
  2. ctime(change time):文件状态(权限、属性等)更新时,该时间会被更新
  3. atime(access time):文件内容被访问(比如cat命令读取)时,该时间会被更新

通过touch命令可以轻易修改mtimeatime时间,其中mtime也是比较重要的一个时间,因为我们关心的是文件内容何时被修改了。

另外,ctime是记录文件状态被改变的时间,常规的Linux命令是不能改变这个时间的,暂时我还没发现能改变这个时间的办法。

语法: touch [-acdmt] 文件

参数:
-a : 设置访问时间atime
-c : 若文件不存在就不创建新文件,等同于使用 --no-create 参数
-m : 设置修改时间mtime
-d : 接想要修改的具体日期,也可以使用 --date="日期或时间"
-t : 接想要修改的具体时间,格式为[YYYYMMDDhhmm]

示例:
# 新建文件,默认的 atime, ctime, mtime 都为目前的时间
[root@www ~] touch myfile

# 将 .bashrc 复制成 bashrc,假设复制完全的属性,检查其日期
[root@www ~] mkdri tmp
[root@www tmp] cp -a ~/.bashrc bashrc
[root@www tmp] ls -l bashrc; ls -l --time=atime bashrc;  ls -l --time=ctime bashrc
-rw-r--r-- 1 root root 194 828 2017 bashrc
-rw-r--r-- 1 root root 194 1111 20:26 bashrc  # 当前时间
-rw-r--r-- 1 root root 194 1111 20:26 bashrc  # 当前时间

# 将 bashrc 文件的日期调整为两天前
[root@www tmp] touch -d "2 days ago" bashrc
[root@www tmp] ls -l bashrc; ls -l --time=atime bashrc;  ls -l --time=ctime bashrc
-rw-r--r-- 1 root root 194 119 20:34 bashrc  # 当前时间2天前
-rw-r--r-- 1 root root 194 119 20:34 bashrc  # 当前时间2天前
-rw-r--r-- 1 root root 194 1111 20:34 bashrc  # 当前时间

# 继续将 bashrc 文件日期调整为 2022/05/20 13:14
[root@www ~] touch -t 202205201314 bashrc
[root@www tmp] ls -l bashrc; ls -l --time=atime bashrc;  ls -l --time=ctime bashrc
-rw-r--r-- 1 root root 194 520 2022 bashrc
-rw-r--r-- 1 root root 194 520 2022 bashrc
-rw-r--r-- 1 root root 194 1111 20:39 bashrc  # 当前时间

file(查看文件类型)

这是一个简单判断文件格式的命令,可以知道某个文件的基本数据类型。

比如是ASCII类型还是data类型,又或者是binary类型,且其中有没有使用到动态函数库share library等信息。

语法: file 文件

示例:
# 查看 ~/.bashrc 文件,发现是个ASCII纯文本文件
[root@www ~] file ~/.bashrc
/root/.bashrc: ASCII text

# 查看执行文件,其中的信息就很多了,这里就不展开了
[root@www ~] file /usr/bin/passwd
/usr/bin/passwd: setuid ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=1e5735bf7b317e60bcb907f1989951f6abd50e8d, stripped

# 查看data文件
[root@www ~] file /var/lib/mlocate/mlocate.db
/var/lib/mlocate/mlocate.db: data

which(寻找“执行文件”)

这个命令是专门用来寻找用户PATH路径下的可执行文件的命令,也就是寻找命令存放在哪里的命令。

需要注意的是,不在用户PATH路径下的命令,是找不到的。

语法: which [-a] command

参数:
-a : 将所有PATH目录中可以找到的命令都列举出来

示例:
# 寻找 ifconfig 命令
[root@www ~] which ifconfig
/usr/sbin/ifconfig

# 寻找 cp 命令,这个命令我是设置了alias的,所以显示稍有不一样
[root@www ~] which cp
alias cp='cp -i'
	/usr/bin/cp

whereis(寻找特定文件,快)

Linux会将系统内的所有文件都记录在一个数据库文件/var/lib/mlocate里面,whereislocate命令都是基于这个数据库来检索文件的,所以效率上会快很多。

但是有时也会遇到一点点问题,比如说找到了已经删除的文件,或者找不到最新创建的文件,这是因为数据库还没有及时更新的原因。

不同的系统版本,数据库/var/lib/mlocate更新的频率可能不一样,比较常见的频率是系统每天自动更新同步一次。等不及的话,也可以手动执行updatedb命令去读取/etc/updatedb.conf配置文件及时更新数据库,这个过程可能需要持续几分钟。

语法: whereis [-bmsu] 文件或目录名

参数:
-b : 只找二进制格式的文件
-m : 只找说明文件(manual路径下的文件)
-s : 只找source源文件
-u : 查找不在上述三个选项当中的其它特殊文件

示例:
# 查找 ifconfig 文件
[root@www ~] whereis ifconfig
ifconfig: /usr/sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz

# 查找 passwd 可执行文件
[root@www ~] whereis -b passwd
passwd: /usr/bin/passwd /etc/passwd

# 查找 passwd 相关的"说明文件"(man page)
[root@www ~] whereis -m passwd
passwd: /usr/share/man/man1/passwd.1.gz

locate(寻找特定文件,快)

locatewhereis都是用于寻找文件的,区别是locate是通过正则表达式来匹配寻找的,也可以理解为模糊查找方式。

语法: locate [-ir] keyword

参数:
-i : 忽略大小写的差异
-r : 后面可接正则表达式的显示方式

示例:
# 查找所有与 passwd 相关的文件名
[root@www ~] locate passwd
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/etc/security/opasswd
/usr/bin/gpasswd
....(下面省略很多文件)....

find(寻找特定文件,慢)

该命令寻找速度慢的原因是它直接从硬盘检索查找文件,如果硬盘比较老旧的话,寻找的时间就会更长。

但是它相对于whereislocate的好处,就是查找的结果时效性更强。

语法: find [PATH] [option] [action]

# ---------- 使用方法,第一部分 ----------
参数:
1. 与时间(atime、ctime、mtime)有关的参数,以 mtime 为例
  -mtime  n : n为数字,查找n天之前的"一天之内"被更改过的文件
  -mtime +n : 查找n天之前(不含n天本身)被更改过的文件名
  -mtime -n : 查找n天之内(含n天本身)被更改过的文件名
  -newer file : file表示一个存在的文件,查找比file还要新的文件名

示例:
# 查找过去24小时内根目录下有改动的文件
# 0 是重点!表示当前的时间,也就是从现在开始到24小时前
[root@www ~] find / -mtime 0

# 查找1天前的24小时内根目录下有改动的文件
[root@www ~] find / -mtime 1

# 查找3天内 /var 目录下有改动的文件
[root@www ~] find /var -mtime -3

# 时间参数的相关意义可以参照下图来理解: +4、4、-4
<--------- +4 ----------|-- 4 --|------------- -4 --------------|
<-------|-------|-------|-------|-------|-------|-------|-------|
(过去时) 7       6       5       4       3       2       1       0(现在)

# 查找 /etc 目录中文件,比 /etc/passwd 新的文件
[root@www ~] find /etc -newer /etc/passwd


# ---------- 使用方法,第二部分 ----------
参数: 
2. 与用户或用户组名有关的参数:
  -uid n : 数字n是用户的账号ID,即UID(文件/etc/passwd里与账号名称对应的数字)
  -gid n : 数字n是用户组名的ID,即GID(文件/etc/group里记录)
  -user name : name表示用户账号名称
  -group name : name表示用户组名
  -nouser : 寻找文件所有者不在/etc/passwd中记录的文件
  -nogroup : 寻找文件用户组不在/etc/group中记录的文件

示例:
# 查找/home目录下属于用户alice的文件
[root@www ~] find /home -user alice

# 查找系统中不属于任何人的文件
[root@www ~] find / -nouser


# ---------- 使用方法,第三部分 ----------
参数:
3. 与文件权限和名称有关的参数
  -name filename : 查找文件名为filename的文件
  -size (+-)n[cwbkMG] : n是数字,[cwbkMG]是各种数据容量单位。查找比某个数据容量大(+)或小(-)的文件。
                        c : byte
                        w : 2byte()
                        b : 512byte(块,如果n后面不接单位,这就是默认的单位)
                        k : KB
                        M : MB
                        G : GB
  -type TYPE : 查找文件类型为TYPE的文件,TYPE取值
               b : 块设备文件
               c : 字符设备文件
               d : 目录
               p : FIFO文件
               f : 普通文件
               l : 链接文件
               s : 套接字文件
               D : door (Solaris)
  -perm mode : 查找文件权限"刚好等于"mode的文件,mode就是类似于chmod的属性值,例如-rwsr-xr-x属性值为4755
  -perm -mode : 查找文件权限"全部包含"mode的文件
  -perm +mode : 查找文件权限"包含任一"mode的文件

示例:
# 查找文件名为 passwd 的文件(常用)
[root@www ~] find / -name passwd

# 查找 /var 目录下文件类型为Socket的文件
[root@www ~] find /var -type s

# 查找文件当中含有SGID或SUID或SBIT属性的文件
[root@www ~] find / -perm +7000

# 查找/bin、/sbin目录下具有SUID(4分)或SGID(2分)的文件
[root@www ~] find /bin /sbin -perm +6000


# ---------- 使用方法,第四部分 ----------
参数:
4. 其它可进行的操作
  -exec command : command为其它命令(不支持alias设置的命令别名),表示其后可接其它命令处理查找到的结果
  -print : 将结果打印到屏幕上,这也是find命令的默认操作,无需理会

示例:
# 将查找结果使用 ls -l 列举出来
[root@www ~] find / -perm +7000 -exec ls -l {} \;
# {}代表find找到的内容
# -exec到\;中间的内容,代表后续要执行的命令
# 用\转义;是因为;在bash环境中有特殊意义

文件内容的查阅

cat(显示文件内容,从第一行开始)

这个命令会显示文件的所有内容,如果文件行数过多,屏幕上的显示会刷的飞快,根本来不及看清楚前面的内容。

因此,这个命令适用于查看内容行数较少的文件。

语法: cat [-AbEnTv]

参数:
-A : 相当于 -vET 的整合参数,可列出一些特殊字符,而不是空白而已
-b : 列出行号,仅针对非空白行做行号显示,空白行不标行号
-E : 将结尾的断行字符 $ 显示出来
-n : 打印出行号,连同空白行也会有行号,与 -b 的参数不同
-T :[Tab] 按键以 ^I 显示出来
-v : 列出一些看不出来的特殊字符

示例:
# 查看/etc/issue文件内容
[root@www ~] cat /etc/issue
CentOS release 5.3 (Final)
Kernel \r on an \m
<!-- 这里有个空行 -->

# 查看/etc/issue文件内容,加上行号
[root@www ~] cat -n /etc/issue
    1 CentOS release 5.3 (Final)
    2 Kernel \r on an \m
    3 <!-- 这里有个空行,显示行号 -->

tac(显示文件内容,从最后一行开始)

这个命令刚好与cat反向,相当于把文件内容按行号倒序展示,实用性并不是很强。

示例:
# 查看/etc/issue文件内容,加上行号
[root@www ~] tac /etc/issue
<!-- 这里有个空行 -->
Kernel \r on an \m
CentOS release 5.3 (Final)

nl(添加行号显示)

语法: nl [-bnw] 文件

参数:
-b : 指定行号包含的方式,主要有两种
    -b a : 表示不论是否为空行,也同样列出行号(类似 cat -n)
    -b t : 如果有空行,空的那一行不要列出行号(默认值)
-n : 列出行号表示的方法,主要有三种
    -n ln : 行号在屏幕的最左方显示
    -n rn : 行号在自己字段的最右方显示,且不加 0
    -n rz : 行号在自己字段的最右方显示,且加 0
-w : 行号字段占用的位数

示例:
# 显示/etc/issue的内容
[root@www ~]# nl /etc/issue
    1 CentOS release 5.3 (Final)
    2 Kernel \r on an \m
      <!-- 这里有个空行,没显示行号 -->

[root@www ~]# nl -b a /etc/issue
    1 CentOS release 5.3 (Final)
    2 Kernel \r on an \m
    3 <!-- 这里有个空行,显示行号 -->

more(一页一页的翻动)

适合文件内容多,需要从前到后一页一页(屏幕)的浏览

语法: more 文件

示例:
[root@www ~] more /etc/man.config
#
# Generated automatically from man.conf.in by the
# configure script
#
# man.conf from man-1.6d
.... (中间省略) ....
--More--(30%)  <== 重点在这一行,光标会在这里继续等待命令,此时是没有退出more命令的

说明:
文件内容一屏显示不完时,最后一行的会显示一个百分比,表示当前显示内容占文件总内容的比例。

出现百分比的时候,也就意味着文件还有内容没有展示,此时还可以有几个选择:

1. 空格键(Space) : 向下翻一页
2. Enter : 向下滚动一行
3. /字符串 : 从当前显示内容开始,向下查询"字符串"内容
4. :f : 立刻显示出文件名以及目前显示的行数
5. b 或 [ctrl]-b : 往回翻页,这个只对文件游泳,对管道没用
6. q : 立刻退出more命令

less(一页一页翻动)

作用和more命令一样,但是比more更强大,更灵活

语法: less 文件

示例:
[root@www ~] more /etc/man.config
#
# Generated automatically from man.conf.in by the
# configure script
#
# man.conf from man-1.6d
.... (中间省略) ....
:(光标或文件名)  <== 这里会等待继续输入命令

说明:
less比more欠缺的是不会在最后一行显示文件内容展示的百分比;而且文件内容不多,一屏可显示完全时,也不会自动退出该命令,需要用户主动退出

当前状态下,可以继续的操作:

1. 空格键(Space) : 向下翻一页
2. [PageDown] : 向下翻一页
3. [PageUp] : 向上翻一页
4. /字符串 : 从当前显示内容开始,向下查询"字符串"内容
5. ?字符串 : 从当前显示内容开始,向上查询"字符串"内容
6. n : 向下继续查询(与/和?相关的操作)
7. N : 向上继续查询(与/和?相关的操作)
8. q : 立刻退出less命令

head(读取文件前几行)

语法: head [-n number] 文件

参数:
-n : 后面接数字,代表显示几行的意思

示例:
[root@www ~] head /etc/man.config  # 默认情况下显示前10行
[root@www ~] head -n 20 /etc/man.config  # 指定显示前20行
[root@www ~] head -n -100 /etc/man.config  # 文件最后100行不显示,前面的都显示

tail(读取文件后几行)

该命令含义即操作正好与head命令前后相反。

语法: tail [-n number | -f] 文件

参数:
-n : 后面接数字,代表显示几行的意思
-f : 持续监听并显示文件追加的内容,按ctrl+c退出

示例:
tail /etc/man.config  # 默认情况下显示最后10行
tail -n 20 /etc/man.config  # 显示文件最后20行
tail -n +100 /etc/man.config  # 文件前100行不显示,后面的都显示
tail -f /var/log/messages  # 持续监听并显示文件内容,按ctrl+c退出

你可能感兴趣的:(Linux,linux,文件,目录,命令)