Linux基础(七):Linux文件与目录管理

Linux文件与目录管理

  • 1.目录与路径
    • [1.1 cd](#1.1 cd)
    • [1.2 pwd](#1.2 pwd)
    • [1.3 mkdir](#1.3 mkdir)
    • [1.4 rmdir](#1.4 rmdir)
    • [1.5 ls](#1.5 ls)
    • [1.6 cp](#1.6 cp)
    • [1.7 rm](#1.7 rm)
    • [1.8 mv](#1.8 mv)
  • [2.可执行文件路径的变量:PATH](#2.可执行文件路径的变量:PATH)
  • 3.从字符串中获取目录名称和文件名称
  • 4.文件内容读取
    • [4.1 cat与tac](#4.1 cat与tac)
    • [4.2 nl](#4.2 nl)
    • [4.3 more和less](#4.3 more和less)
    • [4.4 head与tail](#4.4 head与tail)
    • [4.5 od](#4.5 od)
  • [5 使用touch来改变文件的时间](#5 使用touch来改变文件的时间)
  • [6 文件的隐藏属性](#6 文件的隐藏属性)
  • 7.文件的搜索
    • [7.1 指令文件的搜索](#7.1 指令文件的搜索)
    • [7.2 普通文件的搜索](#7.2 普通文件的搜索)

1.目录与路径

几种特殊的目录:

.                     代表此层目录
..                    代表上一层目录
-                     代表前一个工作目录
~                    代表"目前使用者身份"所在的主文件夹
~account        代表 account 这个使用者的主文件夹( account是个帐号名称)

[fle@CentOS7 ~]$ pwd
/home/fle
[fle@CentOS7 ~]$ cd .
[fle@CentOS7 ~]$ cd ..
[fle@CentOS7 home]$ cd ~
[fle@CentOS7 ~]$ cd -
/home
[fle@CentOS7 home]$ pwd
/home
[fle@CentOS7 home]$ 

根目录的...其实都是根目录本身:

[fle@CentOS7 home]$ cd /
[fle@CentOS7 /]$ ls -al
总用量 28
dr-xr-xr-x.  17 root root   244 6月  21 16:56 .
dr-xr-xr-x.  17 root root   244 6月  21 16:56 ..
-rw-r--r--    1 root root     0 6月  21 16:56 .autorelabel
lrwxrwxrwx.   1 root root     7 5月  18 20:57 bin -> usr/bin
dr-xr-xr-x.   6 root root  4096 5月  18 21:03 boot
drwxr-xr-x   20 root root  3400 9月  30 09:21 dev
drwxr-xr-x. 179 root root 12288 10月 12 19:47 etc
drwxr-xr-x.   7 root root    73 9月  29 16:55 home
lrwxrwxrwx.   1 root root     7 5月  18 20:57 lib -> usr/lib
lrwxrwxrwx.   1 root root     9 5月  18 20:57 lib64 -> usr/lib64
drwxr-xr-x.   2 root root     6 4月  11 2018 media
drwxr-xr-x.   2 root root     6 4月  11 2018 mnt
drwxr-xr-x.   3 root root    16 5月  18 21:00 opt
dr-xr-xr-x  243 root root     0 9月  28 21:04 proc
dr-xr-x---.   7 root root   247 10月 13 20:14 root
drwxr-xr-x   58 root root  1600 10月 13 06:31 run
lrwxrwxrwx.   1 root root     8 5月  18 20:57 sbin -> usr/sbin
drwxr-xr-x.   2 root root     6 4月  11 2018 srv
dr-xr-xr-x   13 root root     0 9月  28 21:04 sys
drwxrwxrwt.  18 root root  4096 10月 13 20:14 tmp
drwxr-xr-x.  13 root root   155 5月  18 20:57 usr
drwxr-xr-x.  24 root root  4096 5月  18 21:15 var

可以看到...的属性都是一样的。

下面介绍四种最常见的目录操作方式:cd、pwd、mkdir、rmdir

1.1 cd

cd是Change Directory的缩写, 这是用来变换工作目录的指令。看一个例子:

c 复制代码
[fle@CentOS7 ~]$ pwd           //显示当前目录,登录之后的终端就是登录账号的主文件夹
/home/fle
[fle@CentOS7 ~]$ su            //切换root身份,目录不变
密码:
[root@CentOS7 fle]# pwd        //显示当前目录,其实[root@CentOS7 fle]中的fle的位置就是表示了目前所处的文件夹
/home/fle
[root@CentOS7 fle]# cd ~       //由于当前的账号是root,所以~表示的是/root,也就是root账号的主文件夹
[root@CentOS7 ~]# pwd
/root
[root@CentOS7 ~]# cd -         //cd -表示去上一次的目录,就是/home/fle,身份是不会变的
/home/fle
[root@CentOS7 fle]# pwd
/home/fle
[root@CentOS7 fle]# 

1.2 pwd

pwd是Print Working Directory的缩写, 也就是显示目前所在目录的指令。

[fle@CentOS7 /]$ cd /lib
[fle@CentOS7 lib]$ pwd
/lib
[fle@CentOS7 lib]$ pwd -P
/usr/lib

pwd 命令的 -P 选项用于显示物理路径,即解析符号链接后的实际路径。当你在符号链接目录中运行 pwd 命令时,使用 -P 选项会返回该符号链接所指向的真实物理路径。根目录下的lib目录是一个链接目录,实际的内容存放在/usr/lib中。

1.3 mkdir

mkdir用于创建新的空目录。

[fle@CentOS7 lib]$ mkdir --help
用法:mkdir [选项]... 目录...
Create the DIRECTORY(ies), if they do not already exist.

Mandatory arguments to long options are mandatory for short options too.
  -m, --mode=MODE   set file mode (as in chmod), not a=rwx - umask
  -p, --parents     no error if existing, make parent directories as needed
  -v, --verbose     print a message for each created directory
  -Z                   set SELinux security context of each created directory
                         to the default type
      --context[=CTX]  like -Z, or if CTX is specified then set the SELinux
                         or SMACK security context to CTX
      --help		显示此帮助信息并退出
      --version		显示版本信息并退出

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
请向<http://translationproject.org/team/zh_CN.html> 报告mkdir 的翻译错误
要获取完整文档,请运行:info coreutils 'mkdir invocation'

重上面可以看到mkdir有4哥可选的参数:

①-m

设定目录的权限

②-p

当所创建的目录中存在多层目录结构时不会报错,如mkdir ./test1/test2/test3这样,这样的写法在创建的时候是先创建test3目录,而./test1/test2目录不存在,所以会报错,加-p就不会报错。

③-v

在每创建一个目录时打印信息,告诉你创建了哪个目录。

④-Z

为每个创建的目录设置默认的 SELinux 安全上下文。

其中常用的是-m和-p:

[fle@CentOS7 桌面]$ mkdir -m 777 test1
[fle@CentOS7 桌面]$ mkdir ./test1/test2/test3
mkdir: 无法创建目录"./test1/test2/test3": 没有那个文件或目录
[fle@CentOS7 桌面]$ mkdir -p ./test1/test2/test3
[fle@CentOS7 桌面]$ cd ./test1
[fle@CentOS7 test1]$ tree
.
└── test2
    └── test3

2 directories, 0 files
[fle@CentOS7 test1]$ cd ..
[fle@CentOS7 桌面]$ ls -l test1
总用量 0
drwxrwxr-x 3 fle fle 19 10月 13 21:34 test2

1.4 rmdir

删除空的目录,非空的目录不能用rmdir来删除。

[fle@CentOS7 test1]$ rmdir --help
用法:rmdir [选项]... 目录...
删除指定的空目录。

      --ignore-fail-on-non-empty
			忽略仅由目录非空产生的所有错误
  -p, --parents   remove DIRECTORY and its ancestors; e.g., 'rmdir -p a/b/c' is
                    similar to 'rmdir a/b/c a/b a'
  -v, --verbose   output a diagnostic for every directory processed
      --help		显示此帮助信息并退出
      --version		显示版本信息并退出

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
请向<http://translationproject.org/team/zh_CN.html> 报告rmdir 的翻译错误
要获取完整文档,请运行:info coreutils 'rmdir invocation'

下面的例子先创建目录再删除目录:

[fle@CentOS7 桌面]$ rm -r test1
[fle@CentOS7 桌面]$ mkdir -p test1/test2/test4 test1/test3
[fle@CentOS7 桌面]$ touch test1/test3/file
[fle@CentOS7 桌面]$ tree test1
test1
├── test2
│   └── test4
└── test3
    └── file

3 directories, 1 file
[fle@CentOS7 桌面]$ rmdir -p test1/test2/test4
rmdir: 删除目录 "test1" 失败: 目录非空
[fle@CentOS7 桌面]$ tree test1
test1
└── test3
    └── file

1 directory, 1 file

从上面的结果可以看出,rmdir的-p选项会一直删除空目录直到遇到非空的父目录。对于非空的目录,使用rm -r命令来删除。

1.5 ls

ls用来列举目录。

其中常用的是-l -a -d。注意ls命令后面是可以跟目录的,列出指定目录的文件。

[fle@CentOS7 ~]$ ls -a /
.   .autorelabel  boot  etc   lib    media  opt   root  sbin  sys  usr
..  bin           dev   home  lib64  mnt    proc  run   srv   tmp  var
[fle@CentOS7 ~]$ ls -l /
总用量 28
lrwxrwxrwx.   1 root root     7 5月  18 20:57 bin -> usr/bin
dr-xr-xr-x.   6 root root  4096 5月  18 21:03 boot
drwxr-xr-x   20 root root  3360 10月 14 21:34 dev
drwxr-xr-x. 179 root root 12288 10月 14 21:34 etc
drwxr-xr-x.   7 root root    73 9月  29 16:55 home
lrwxrwxrwx.   1 root root     7 5月  18 20:57 lib -> usr/lib
lrwxrwxrwx.   1 root root     9 5月  18 20:57 lib64 -> usr/lib64
drwxr-xr-x.   2 root root     6 4月  11 2018 media
drwxr-xr-x.   2 root root     6 4月  11 2018 mnt
drwxr-xr-x.   3 root root    16 5月  18 21:00 opt
dr-xr-xr-x  241 root root     0 10月 14 21:33 proc
dr-xr-x---.   7 root root   247 10月 14 20:58 root
drwxr-xr-x   58 root root  1600 10月 14 22:08 run
lrwxrwxrwx.   1 root root     8 5月  18 20:57 sbin -> usr/sbin
drwxr-xr-x.   2 root root     6 4月  11 2018 srv
dr-xr-xr-x   13 root root     0 10月 14 21:33 sys
drwxrwxrwt.  19 root root  4096 10月 14 22:08 tmp
drwxr-xr-x.  13 root root   155 5月  18 20:57 usr
drwxr-xr-x.  24 root root  4096 5月  18 21:15 var
[fle@CentOS7 ~]$ ls -ld /
dr-xr-xr-x. 17 root root 244 6月  21 16:56 /

1.6 cp

用于复制。

下面使用常用的-a -i -p -r进行实验。

(1)使用-i来提示是否覆盖

[root@CentOS7 ~]# ls -a
.                .bash_logout   .config               .local    .xautheLKGRv
..               .bash_profile  .cshrc                .pki      .xauthWSzuls
anaconda-ks.cfg  .bashrc        .dbus                 .tcshrc
.bash_history    .cache         initial-setup-ks.cfg  .viminfo
[root@CentOS7 ~]# cd .bashrc
-bash: cd: .bashrc: 不是目录
[root@CentOS7 ~]# cp -i ~/.bashrc /tmp/.bashrc
[root@CentOS7 ~]# cp -i ~/.bashrc /tmp/.bashrc
cp:是否覆盖"/tmp/.bashrc"? n
[root@CentOS7 ~]# cd /tmp
[root@CentOS7 tmp]# ls -a
.
..
.bashrc
.esd-1000
.font-unix
.ICE-unix
ssh-lzD8MBGwfOho
systemd-private-02ca80909c574bad90e53ac0130e9364-bolt.service-uuHLVh
systemd-private-02ca80909c574bad90e53ac0130e9364-chronyd.service-PgzlPF
systemd-private-02ca80909c574bad90e53ac0130e9364-colord.service-zZD2Mw
systemd-private-02ca80909c574bad90e53ac0130e9364-cups.service-tH2JOm
systemd-private-02ca80909c574bad90e53ac0130e9364-fwupd.service-uEKbie
systemd-private-02ca80909c574bad90e53ac0130e9364-named.service-EIEAvA
systemd-private-02ca80909c574bad90e53ac0130e9364-rtkit-daemon.service-74xmIZ
.Test-unix
tracker-extract-files.1000
VMwareDnD
vmware-root_767-4256479648
vmware-root_785-4282170929
.X0-lock
.X11-unix
.XIM-unix
yum_save_tx.2024-10-14.06-31.ojtghv.yumtx
yum_save_tx.2024-10-15.06-09.9E4H_u.yumtx
yum_save_tx.2024-10-22.11-29.PJ1x7e.yumtx
yum_save_tx.2024-10-23.06-29.YZom6B.yumtx

(2)不加任何选项的复制

cp不加任何选项的情况下,是不会复制文件的User、Group的,文件的创建时间也会不一样。

[root@CentOS7 tmp]# cp /var/log/wtmp .
[root@CentOS7 tmp]# ls -l /var/log/wtmp ./wtmp
-rw-rw-r--. 1 root utmp 63360 10月 23 10:11 /var/log/wtmp
-rw-r--r--  1 root root 63360 10月 23 16:45 ./wtmp

从上面可以看到,使用cp命令时,如果没有加任何的选项,则复制后的文件权限和所属User、Group是会变的。另外,复制的文件的创建时间也会是cp命令的执行时间。

[fle@CentOS7 ~]$ su 
密码:
[root@CentOS7 fle]# touch fle
[root@CentOS7 fle]# ls -l fle
-rw-r--r-- 1 root root 0 10月 23 18:24 fle
[root@CentOS7 fle]# su fle
[fle@CentOS7 ~]$ cp fle fle_copy
[fle@CentOS7 ~]$ ls -l fle fle_copy
-rw-r--r-- 1 root root 0 10月 23 18:24 fle
-rw-r--r-- 1 fle  fle  0 10月 23 18:24 fle_copy

从上面的结果可以看出,使用fle账号进行复制时,文件的User和Group都是fle,这是因为cp命令希望的是用什么账号进行复制操作后,这个复制的文件应该是属于这个账号的。

(3)使用-a选项来保持完全的复制

[root@CentOS7 tmp]# cp -a /var/log/wtmp .
cp:是否覆盖"./wtmp"? y
[root@CentOS7 tmp]# ls -l /var/log/wtmp ./wtmp
-rw-rw-r--. 1 root utmp 63360 10月 23 10:11 /var/log/wtmp
-rw-rw-r--. 1 root utmp 63360 10月 23 10:11 ./wtmp

可以看到,使用-a选项可以复制文件的权限和User、Group。

对于一些没有读取权限的文件,使用-a来复制其实也是无效的:

[fle@CentOS7 tmp]$ cp -a /etc/shadow /tmp
cp: 无法打开"/etc/shadow" 读取数据: 权限不够

Tips:由于fle的身份并不能随意修改文件的拥有者与群组,与拥有者、 群组相关的, 原本fle身份无法进行的动作, 即使加上 -a 选项, 也是无法达成完整复制权限的

(4)使用-r来递归复制,用于复制目录

[fle@CentOS7 桌面]$ ls
dir  familyOfWang  familyOfZhu  file  file.txt  fle.txt  test1
[fle@CentOS7 桌面]$ tree test1
test1
├── fle
└── test3
    └── file

1 directory, 2 files
[fle@CentOS7 桌面]$ cp -r test1 test1_copy
[fle@CentOS7 桌面]$ tree test1_copy
test1_copy
├── fle
└── test3
    └── file

1 directory, 2 files

(5)使用-s -l来创建链接复制文件

使用-l:复制的是文件本身

使用-s:复制的是文件的链接

[fle@CentOS7 桌面]$ touch file
[fle@CentOS7 桌面]$ vim file
[fle@CentOS7 桌面]$ cp -l file file_l
[fle@CentOS7 桌面]$ cp -s file file_s
[fle@CentOS7 桌面]$ ls -l file*
-rw-rw-r-- 2 fle fle 191511 10月 23 22:38 file
-rw-rw-r-- 2 fle fle 191511 10月 23 22:38 file_l
lrwxrwxrwx 1 fle fle      4 10月 23 22:39 file_s -> file

此外,如果对链接文件在进行复制:

[fle@CentOS7 桌面]$ cp file_s file_s1
[fle@CentOS7 桌面]$ cp -l file_s file_s2
[fle@CentOS7 桌面]$ cp -d file_s file_s3
[fle@CentOS7 桌面]$ ls -l file_s*
lrwxrwxrwx 1 fle fle      4 10月 23 22:39 file_s -> file
-rw-rw-r-- 1 fle fle 191511 10月 23 22:42 file_s1
-rw-rw-r-- 3 fle fle 191511 10月 23 22:38 file_s2
lrwxrwxrwx 1 fle fle      4 10月 23 22:43 file_s3 -> file

如果要复制的是链接文件,那么如果希望复制的是链接文件本身,那就要使用-d选项了。

1.7 rm

删除文件/目录

[fle@CentOS7 桌面]$ ls
dir           familyOfZhu  file_l  file_s1  file_s3  test1
familyOfWang  file         file_s  file_s2  fle.txt  test1_copy
[fle@CentOS7 桌面]$ rm file*
[fle@CentOS7 桌面]$ ls
dir  familyOfWang  familyOfZhu  fle.txt  test1  test1_copy
[fle@CentOS7 桌面]$ rm test1 test1_copy
rm: 无法删除"test1": 是一个目录
rm: 无法删除"test1_copy": 是一个目录
[fle@CentOS7 桌面]$ rm -r test1 test1_copy
[fle@CentOS7 桌面]$ ls
dir  familyOfWang  familyOfZhu  fle.txt
[fle@CentOS7 桌面]$ rm test1 test1_copy
rm: 无法删除"test1": 没有那个文件或目录
rm: 无法删除"test1_copy": 没有那个文件或目录
[fle@CentOS7 桌面]$ rm -f test1 test1_copy
[fle@CentOS7 桌面]$ ls
dir  familyOfWang  familyOfZhu  fle.txt
[fle@CentOS7 桌面]$ rm -i fle.txt
rm:是否删除普通空文件 "fle.txt"?y
[fle@CentOS7 桌面]$ ls
dir  familyOfWang  familyOfZhu

1.8 mv

移动文件/目录

[fle@CentOS7 桌面]$ ls
dir  familyOfWang  familyOfZhu  fle  new
[fle@CentOS7 桌面]$ mv dir familyOfWang familyOfZhu fle new
[fle@CentOS7 桌面]$ tree
.
└── new
    ├── dir
    │   └── file
    ├── familyOfWang
    │   ├── WangDamao
    │   ├── WangErmao
    │   └── WangSanmao
    ├── familyOfZhu
    │   └── ZhangXiaozhu
    └── fle

8 directories, 2 files
[fle@CentOS7 桌面]$ mv new new2
[fle@CentOS7 桌面]$ ls
new2

要注意的是,mv是没有-r选项的。

2.可执行文件路径的变量:$PATH

指令ls完整文件名为: /bin/ls( 这是绝对路径) , 那你会不会觉得很奇怪: "为什么我可以在任何地方执行/bin/ls这个指令呢? " 为什么我在任何目录下输入 ls 就一定可以显示出一些讯息而不会说找不到该 /bin/ls 指令呢? 这是因为环境变量 PATH 的帮助所致呀!

当我们在执行一个指令的时候, 举例来说"ls"好了, 系统会依照PATH的设置去每个PATH定义的目录下搜寻文件名为ls的可可执行文件, 如果在PATH定义的目录中含有多个文件名为ls的可可执行文件, 那么先搜寻到的同名指令先被执行!

①不同账号的PATH是不同的

[fle@CentOS7 桌面]$ echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/fle/.local/bin:/home/fle/bin
[fle@CentOS7 桌面]$ su
密码:
[root@CentOS7 桌面]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/fle/.local/bin:/home/fle/bin
[root@CentOS7 桌面]# su -
上一次登录:日 10月 13 23:00:31 CST 2024pts/0 上
[root@CentOS7 ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

PATH是以:作为间隔的。切换时要使用su -才不会继承fle账号的一些环境变量。

②PATH是可以修改的

从上面可以知道/bin对于root账户来说是属于PATH的。以ls为例,将ls命令由/bin/ls搬移到/root/ls。由于此时PATH中没有/root,所以找不到ls命令,当把/root添加到PATH中就可以使用ls了。

[root@CentOS7 ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@CentOS7 ~]# mv /bin/ls /root
[root@CentOS7 ~]# ls
bash: ls: 未找到命令...
相似命令是: 'lz'
[root@CentOS7 ~]# PATH="${PATH}:/root"
[root@CentOS7 ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root
[root@CentOS7 ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg  ls
[root@CentOS7 ~]# mv /root/ls /bin
[root@CentOS7 ~]# ls
-bash: /root/ls: 没有那个文件或目录
[root@CentOS7 ~]# exit
登出
[root@CentOS7 桌面]# su -
上一次登录:日 10月 13 23:03:30 CST 2024pts/0 上
[root@CentOS7 ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg

3.从字符串中获取目录名称和文件名称

[fle@CentOS7 桌面]$ cd new2
[fle@CentOS7 new2]$ tree
.
├── dir
│   └── file
├── familyOfWang
│   ├── WangDamao
│   ├── WangErmao
│   └── WangSanmao
├── familyOfZhu
│   └── ZhangXiaozhu
└── fle

7 directories, 2 files
[fle@CentOS7 new2]$ basename ./dir/file
file
[fle@CentOS7 new2]$ dirname ./dir/file
./dir

4.文件内容读取

4.1 cat与tac

tac就是将cat的顺序反过来。cat和tac并不常用,因为文件内容太多时不好用。

[fle@CentOS7 new2]$ touch file
[fle@CentOS7 new2]$ vim file
[fle@CentOS7 new2]$ cat file
11111111111
22222222222
33333333333
[fle@CentOS7 new2]$ tac file
33333333333
22222222222
11111111111

4.2 nl

4.3 more和less

more和less都是用于显示的命令,只不过可以进行分页显示。页的大小取决于终端显示窗口的大小。

more:

less:

more或者less最有用的功能就是用于搜索:

[fle@CentOS7 桌面]$ more file

搜索111:此时如果使用/111是找不到东西的,因为more的/是往下找,而除了目前显示的这一页,后面已经没有111了,改用less进行前向搜索:

[fle@CentOS7 桌面]$ less file

按下回车后:

4.4 head与tail


假如我想要显示 ./file 的第 4 到第 5 行呢? 答: 这个应该不算难, 想一想, 在第 4 到第 5行, 那么我取前 5 行, 再取后2行, 所以结果就是: " head -n 5 file | tail -n 2 ", 这样就可以得到第 4 到第 5行之间的内容了!这两个指令中间有个管线 (|) 的符号存在, 这个管线的意思是: "前面的指令所输出的讯息, 请通过管线交由后续的指令继续使用"的意思。

创建file文件并写入如下内容:

[fle@CentOS7 桌面]$ touch file
[fle@CentOS7 桌面]$ vim file
[fle@CentOS7 桌面]$ head -n 5 file | tail -n 2
4
5
[fle@CentOS7 桌面]$ 

4.5 od

对于可执行文件来说,使用上面的命令直接读取内容会导致乱码,这时候可以使用od命令来显示

5 使用touch来改变文件的时间

文件的时间有三种:

其中,最常关注的就是mtime。

[fle@CentOS7 桌面]$ ll /etc/man_db.conf 
-rw-r--r--. 1 root root 5171 10月 31 2018 /etc/man_db.conf
[fle@CentOS7 桌面]$ ll --time=atime /etc/man_db.conf 
-rw-r--r--. 1 root root 5171 10月 25 03:50 /etc/man_db.conf
[fle@CentOS7 桌面]$ ll --time=ctime /etc/man_db.conf 
-rw-r--r--. 1 root root 5171 5月  18 20:58 /etc/man_db.conf
[fle@CentOS7 桌面]$ date
2024年 10月 25日 星期五 21:32:39 CST

ll相当于ls -l,从上面可以看到,ll默认输出的时间是mtime。


6 文件的隐藏属性

chattr指令只能在Ext2/Ext3/Ext4的 Linux 传统文件系统上面完整生效, 其他的文件系统可能就无法完整的支持这个指令了, 例如 xfs 仅支持部份参数而已。

7.文件的搜索

7.1 指令文件的搜索

搜索指令文件lshistory的位置

[fle@CentOS7 桌面]$ which ls
alias ls='ls --color=auto'
	/bin/ls
[fle@CentOS7 桌面]$ which which
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
	/bin/alias
	/usr/bin/which
[fle@CentOS7 桌面]$ which history
/usr/bin/which: no history in (/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/fle/.local/bin:/home/fle/bin)

上面举了三个例子:ls可以搜索到,which搜索到两个结果,history搜索不到。

之所以which有两个结果的原因:alias表示的是命令的别名,也就是说/bin/alias等价于/bin/alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde

[fle@CentOS7 桌面]$ /bin/alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde ls
/bin/ls

而history之所以搜索得不到是因为which命令搜索的是PATH,而history是bash内置的命令,所以找不到。另外,which是显示找到的第一个位置,加上-a选项后可以显示所有找到的位置。

[fle@CentOS7 桌面]$ which -a ls
alias ls='ls --color=auto'
	/bin/ls
	/usr/bin/ls
[fle@CentOS7 桌面]$ which ls
alias ls='ls --color=auto'
	/bin/ls

7.2 普通文件的搜索

搜索一般的命令有find、whereis、locate。效率:locate > whereis > find。

(1)whereis

(2)locate

(3)find

相关推荐
软件技术员4 分钟前
Let‘s Encrypt SSL证书:acmessl.cn申请免费3个月证书
服务器·网络协议·ssl
哎呦喂-ll15 分钟前
Linux进阶:环境变量
linux
耗同学一米八16 分钟前
2024 年河北省职业院校技能大赛网络建设与运维赛项样题四
运维·网络
Rverdoser16 分钟前
Linux环境开启MongoDB的安全认证
linux·安全·mongodb
PigeonGuan27 分钟前
【jupyter】linux服务器怎么使用jupyter
linux·ide·jupyter
一条晒干的咸魚43 分钟前
【Web前端】创建我的第一个 Web 表单
服务器·前端·javascript·json·对象·表单
东华果汁哥1 小时前
【linux 免密登录】快速设置kafka01、kafka02、kafka03 三台机器免密登录
linux·运维·服务器
咖喱鱼蛋1 小时前
Ubuntu安装Electron环境
linux·ubuntu·electron
ac.char1 小时前
在 Ubuntu 系统上安装 npm 环境以及 nvm(Node Version Manager)
linux·ubuntu·npm