工作目录指的是用户当前在系统中所处的位置。
1.pwd命令
pwd 命令用于显示用户当前所处的工作目录,英文全称为“print working directory”,输 入该命令后按回车键执行即可。
使用 pwd 命令查看当前所处的工作目录:
[root@rhel-8 ~]# pwd/root
2.cd命令
cd 命令用于切换当前的工作路径,英文全称为“change directory”,语法格式为“cd [参 数] [目录]”。
使用“cd -”命令返回到上一次所处的目录, 使用“cd ..”命令进入上级目录,以及使用“cd ~”命令切换到当前用户的家目录,抑或使用 “cd ~username”命令切换到其他用户的家目录
使用下述的 cd 命令切换进/etc 目录中:
[root@rhel-8 ~]# cd /etc
同样的道理,可使用下述命令切换到/bin 目录中:
[root@rhel-8 etc]# cd /bin
此时,要返回到上一次的目录(即/etc 目录),可执行如下命令:
[root@rhel-8 bin]# cd -/etc
还可以通过下面的命令快速切换到用户的家目录:
[root@rhel-8 etc]# cd ~[root@rhel-8 ~]#
3.ls命令
ls 命令用于显示目录中的文件信息,英文全称为“list”,语法格式为“ls [参数] [文件名称]”。
使用 ls 命令的-a 参数 可以看到全部文件(包括隐藏文件),使用-l 参数可以查看文件的属性、大小等详细信息。将 这两个参数整合之后,再执行 ls 命令即可查看当前目录中的所有文件并输出这些文件的属性信息:
4.tree命令
tree 命令用于以树状图的形式列出目录内容及结构,输入该命令后按回车键执行即可。
虽然 ls 命令可以很便捷地查看目录内有哪些文件,但无法直观地获取到目录内文件的层 次结构。
tree 命令则能够以树状图的形式列出目录内所有文件的结构。
使用 ls 命令查看目录内的文件:
[root@rhel-8 ~]# lsa anaconda-ks.cfg hello.c initial-setup-ks.cfg
使用 tree 命令查看目录内文件名称以及结构:
[root@rhel-8 ~]# tree. ├── a │ └── b │ └── c ├── anaconda-ks.cfg ├── hello.c └── initial-setup-ks.cfg 3 directories, 3 files
5.find命令
find 命令用于按照指定条件来查找文件所对应的位置,语法格式为“find [查找范围] 寻 找条件”。
在 Linux 系统中,搜索工作一般都是通过 find 命令来完成的,它可以使用不同的文件特性作 为寻找条件(如文件名、大小、修改时间、权限等信息),一旦匹配成功则默认将信息显示到 屏幕上。find 命令的参数以及作用如表
-exec用于把 find 命令搜索到的结果交由紧 随其后的命令作进一步处理。
如果要想获取该目录中所有以 host 开头的文件列表,可 以执行如下命令:
[root@rhel-8 ~]# find /etc -name "host*"/etc/host.conf /etc/hosts /etc/hosts.allow /etc/hosts.deny /etc/avahi/hosts /etc/hostname
如果要在整个系统中搜索权限中包括 SUID 权限的所有文件,只需使用 -4000 即可:
[root@rhel-8 ~]# find / -perm -4000 -print/usr/bin/fusermount /usr/bin/chage /usr/bin/gpasswd /usr/bin/newgrp /usr/bin/umount /usr/bin/mount /usr/bin/su
进阶实验: 在整个文件系统中找出所有归属于 charlie 用户的文件并复制到/root/findresults 目录中。
该实验的重点是“-exec {} \;”参数,其中的{}表示 find 命令搜索出的每一个文件,并且 命令的结尾必须是“\;”。完成该实验的具体命令如下:
[root@rhel-8 ~]# find / -user charlie -exec cp -a {} /root/findresults/ \;
6.locate命令
locate 命令用于按照名称快速搜索文件所对应的位置,语法格式为“locate 文件名称”。
使用 find 命令进行全盘搜索虽然更准确,但是效率有点低。如果仅仅是想找一些常见的 且又知道大概名称的文件,不如试试 locate 命令。在使用 locate 命令时,先使用updatedb 命令生成一个索引库文件,这个库文件的名字是/var/lib/mlocate/mlocate.db,后续在使用 locate 命令搜索文件时就是在该库中进行查找操作,速度会快很多。
第一次使用locate 命令之前,记得先执行updatedb 命令来生成索引数据库,然后再进行查找:
[root@rhel-8 ~]# updatedb[root@rhel-8 ~]# ls -l /var/lib/mlocate/mlocate.db-rw-r-----. 1 root slocate 4201248 Nov 1114:05 /var/lib/mlocate/mlocate.db
使用 locate 命令搜索出所有包含“whereis”名称的文件所在的位置:
[root@rhel-8 ~]# locate whereis/usr/bin/whereis /usr/share/bash-completion/completions/whereis /usr/share/man/man1/whereis.1.gz
7.whereis命令
whereis 命令用于按照名称快速搜索二进制程序(命令)、源代码以及帮助文件所对应的 位置,语法格式为“whereis 命令名称”。
简单来说,whereis 命令也是基于 updatedb 命令所生成的索引库文件进行搜索,它与 locate 命令的区别是不关心那些相同名称的文件,仅仅是快速找到对应的命令文件及其帮助文件所 在的位置。
下面使用 whereis 命令分别查找出 ls 和 pwd 命令所在的位置:
[root@rhel-8 ~]# whereis lsls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz [root@rhel-8 ~]# whereis pwdpwd: /usr/bin/pwd /usr/share/man/man1/pwd.1.gz /usr/share/man/man1p/pwd.1p.gz
8.which命令
which 命令用于按照指定名称快速搜索二进制程序(命令)所对应的位置,语法格式为 “which 命令名称”。
which 命令是在 PATH 变量所指定的路径中,按照指定条件搜索命令所在的路径。也就是 说,如果我们既不关心同名文件(find 与 locate),也不关心命令所对应的源代码和帮助文件 (whereis),仅仅是想找到命令本身所在的路径,那么这个 which 命令就太合适了。下面查找 一下 locate 和 whereis 命令所对应的路径:
[root@rhel-8 ~]# which locate/usr/bin/locate [root@rhel-8 ~]# which whereis/usr/bin/whereis