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的缩写, 这是用来变换工作目录的指令。看一个例子:

[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
在这里插入图片描述

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部