Loading... #### 1. pwd > pwd命令用于显示用户当前所处的工作目录,英文全称为:“print working directory”,输入后回车执行即可.查看当前所处的工作目录: > > ```bash > [root@localhost etc]# pwd > /etc > ``` #### 2. cd > cd命令用于切换当前的工作路径,英文全称为:“change directory”,语法格式为:“cd [参数] [目录]”. > 这个命令应该是最常用的一个Linux命令了.可以通过cd命令迅速、灵活地切换到不同的工作目录.除了常见的切换目录方式,还可以 <div class="tip inlineBlock info"> 使用“cd -”命令返回到上一次所处的目录, 使用“cd..”命令进入上级目录, 使用“cd ~”命令切换到当前用户的家目录, 使用“cd ~username”切换到其他用户的家目录. </div> #### 3. ls > ls命令用于显示目录中的文件信息,英文全称为:“list”,语法格式为:“ls [参数] [文件名称]”. > 所处的工作目录不同,当前工作目录下能看到的文件肯定也不同. > *使用ls* *命令的“-a”* *参数看到全部文件(* *包括隐藏文件),* > *使用“-l”* *参数可以查看文件的属性、大小等详细信息.* > > 将这两个参数整合之后,再执行ls命令即可查看当前目录中的所有文件并输出这些文件的属性信息: ```bash # ls -al 如果想要查看目录属性信息,则需要额外添加一个-d参数.例如,可使用如下命令查看/etc目录的权限与属性信息: # ls -ld /etc drwxr-xr-x. 132 root root 8192 Jul 10 10:48 /etc ``` #### 4. tree > tree命令用于以<span style='color:green'>树状图的形式列出目录内容及结构</span>,输入后回车执行即可. > 虽然ls命令可以很便捷的查看到目录内有哪些文件,但无法直观的获取到目录内文件的层次结构,比如目录A中有个B,B中又有个C,那么ls命令就只能看到最外面的A目录,显然有些时候不太够用.而tree命令则能够以树状图的形式列出目录内所有文件的结构,读者们来对比下两者的区别吧: ```bash # ls A Desktop Downloads Music Public Videos anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures Templates # 查看到目录内文件名称以及结构: # tree . ├── A │ └── B │ └── C ├── anaconda-ks.cfg ├── Desktop ├── Documents ├── Downloads ├── initial-setup-ks.cfg ├── Music ├── Pictures ├── Public ├── Templates └── Videos ``` #### 5. find(难点) > find命令用于按照指定条件来查找文件所对应的位置,语法格式为:“<span style='color:green'>find [查找范围] 寻找条件</span>”.在Linux系统中,搜索工作一般都是通过find命令来完成的,它可以使用不同的文件特性作为寻找条件(如文件名、大小、修改时间、权限等信息),一旦匹配成功则默认将信息显示到屏幕上.find命令的参数以及作用如表所示. | 参数 | 作用 | | -------------------- | -------------------------------------------------------------------------------------- | | -name | 匹配名称 | | -perm | 匹配权限(mode为完全匹配,-mode为包含即可) | | -user | 匹配所有者 | | -group | 匹配所有组 | | -mtime -n +n | 匹配修改内容的时间(-n指n天以内,+n指n天以前) | | -atime -n +n | 匹配访问文件的时间(-n指n天以内,+n指n天以前) | | -ctime -n +n | 匹配修改文件权限的时间(-n指n天以内,+n指n天以前) | | -nouser | 匹配无所有者的文件 | | -nogroup | 匹配无所有组的文件 | | -newer f1 !f2 | 匹配比文件f1新但比f2旧的文件 | | --type b/d/c/p/l/f | 匹配文件类型(后面的字幕字母依次表示块设备、目录、字符设备、管道、链接文件、文本文件) | | -size | 匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件) | | -prune | 忽略某个目录 | | -exec …… {}\; | 后面可跟用于进一步处理搜索结果的命令(下文会有演示) | <div class="tip inlineBlock error"> 这里需要重点讲解一下-exec参数重要的作用.这个参数用于把find命令搜索到的结果交由紧随其后的命令作进一步处理,它十分类似管道符技术,并且由于find命令对参数的特殊要求,因此虽然exec是长格式形式,但依然只需要一个减号(-). </div> 根据文件系统层次标准(Filesystem Hierarchy Standard)协议,Linux系统中的配置文件会保存到/etc目录中. ##### 举例1 ```bash 如果要想获取到该目录中所有以host开头的文件列表,可以执行如下命令: # find /etc -name "host*" -print /etc/host.conf /etc/hosts /etc/hosts.allow /etc/hosts.deny /etc/avahi/hosts /etc/hostname 如果要在整个系统中搜索权限中包括SUID权限的所有文件(详见第5章),只需使用-4000即可: # 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 /usr/bin/pkexec /usr/bin/crontab /usr/bin/passwd ………………省略部分输出信息……………… ``` ##### 举例2 ````bash #在整个文件系统中找出所有归属于root用户的文件并复制到/root/findresults目录. #该实验的重点是“-exec {} \;”参数,其中的{}表示find命令搜索出的每一个文件,并且命令的结尾必须是“\;”. # 完成该实验的具体命令如下: find / -user root -exec cp -a {} /root/findresults/ \; ```` #### 6. locate(文件位置) > locate命令用于按照名称快速搜索文件所对应的位置,语法格式为:“locate 文件名称”. > 使用find命令进行全盘搜索虽然更准确,但是效率有点低,如果仅仅是想找一些常见的、又知道大概名称的文件,不如试试locate命令的功能.<span style='color:green'>locate命令是将一些常用的目录做成一个索引库文件,一般是叫做“/var/lib/mlocate/mlocate.db”,后续再搜索文件的时候就是根据这个数据库中所包含的路径进行查找,速度会快很多~</span> ##### updatadb 第一次使用前,记得先执行下updatedb命令来生成出索引数据库,然后再进行查找: ```bash # updatedb # ls -l /var/lib/mlocate/mlocate.db -rw-r-----. 1 root slocate 2945917 Sep 13 17:54 /var/lib/mlocate/mlocate.db # 搜索出所有包含有“whereis”名称的文件所在位置: # locate whereis /usr/bin/whereis /usr/share/bash-completion/completions/whereis /usr/share/man/man1/whereis.1.gz ``` #### 7. whereis(程序命令/源代码/帮助手册) > whereis命令用于按照名称快速搜索二进制程序(命令)、源代码以及帮助手册文件所对应的位置,语法格式为:“whereis 命令名称”. > 简单来说,whereis命令也是基于了上述updatedb命令所生成出的索引库文件进行搜索,区别是不关心那些相同名称的文件,仅仅是快速找到对应的命令文件及其帮助文件所在位置. > 分别查找出ls和pwd命令所在位置吧: ```bash # whereis ls ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz # whereis pwd pwd: /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),仅仅是想找到命令本身所在的路径,那么这个命令太适合了.那查找下whereis和which命令所对应的路径吧. ```bash # which locate /usr/bin/locate # which whereis /usr/bin/whereis ``` 最后修改:2022 年 04 月 11 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏