河南省住房和城乡建设厅门户网站,免费logo设计一键生成无水印图片,外贸推广,进口博览会2022上海shell
shell的种类(了解)
shell是用于和Linux内核进行交互的一个程序#xff0c;他的功能和window系统下的cmd是一样的。而且shell的种类也有很多常见的有c shell、bash shell、Korn shell等等。而本文就是使用Linux最常见的bash shell对Linux常见指令展开探讨。
内置shell…shell
shell的种类(了解)
shell是用于和Linux内核进行交互的一个程序他的功能和window系统下的cmd是一样的。而且shell的种类也有很多常见的有c shell、bash shell、Korn shell等等。而本文就是使用Linux最常见的bash shell对Linux常见指令展开探讨。
内置shell指令和外置shell指令
内置指令和外置指令是Linux为了能够在解决内存的情况下确保操作系统运行性能的有效手段为了能够提高系统响应速度想cat、pwd、exit、echo等这些指令都会在用户登录的时候将其直接载入内存中。而外置的shell指令就类似于ls等这些只有用户使用的时候才会将指令载入内存的命令就是外置指令。
不同用户所能够看到的shell
当用户登录成功后shell就会根据根据不同身份的用户做出不同的命令行提示假如我们是普通用户那么下图所示的位置就是一个$若为超级用户则提示一个#。 无论是普通用户还是超级用户他们指令命令的过程都是一样的假如他们输入了内置的指令那么shell会直接通过内部的解释器解释为系统调用然后交给系统内核执行。若不是内置指令则要先去硬盘查找到对应指令在执行上述那些解释提交内核等步骤。
shell语法以及使用技巧
shell使用的语法格式也很简单即
command [-option arg]翻译成中文就是命令 [选项] [参数]
就以查看文件列表为例子我们的命令可以是只有命令如
ls即查看文件 或者带一个选项
ls -l亦或者带一个参数
ls -l /etc了解完了shell基本语法之后我们再来聊聊shell一些特殊的技巧其实有时候我们可以在一次输入完成多条指令只需用; 隔开即可。举个例子假如我们在tmp文件夹下有一个文件mylinux1.txt
我们希望为其复制出一个mylinux2.txt之后再查看当前文件列表是否有这个数据时我们就可以将两条命令用封号隔开一起输入给操作系统 cp mylinux1.txt mylinux2.txt ; ls -l
可以看到在完成复制之后第二条查看文件列表的命令也执行成功了 而有些时候我们使用的命令太长了我们希望输入的时候可以换行输入对此我们可以使用\来隔开命令如下
ls -l \
/etcshell的通配符
有时候我们使用的命令需要的参数可能会出现模糊匹配的情况对此shell提供了强大的通配符为我们解决问题。 在介绍统配符使用实例之前我们先介绍一个指令
ls -l 这个指令意味列出当前目录下所有非隐藏文件的详细信息
假若我们希望找到当前目录下所有的txt文件信息呢以我们上文距离的tmp为例子命令如下所示可以看到*就代表未知数。我们希望查找到的文件就是任何一个.txt结尾的文件
ls -l *.txt假如我们要查询的一个文件只有一个未知数呢例如我们想找一个myliu(这个单词未知)1.txt的文件我们要怎么找呢很简单上面的*表示全未知数而?就是表示单未知数的。所以我们的命令为
ls -l mylinu?1.txt亦或者有时候就对文件的某个单词不确定但又有给定范围比如说你知道你要查找的文件是mylinux(这个位置的字母未知但是你确定可能是1或者2)的时候你就可以使用范围匹配
ls -l mylinux[12].txtshell重定向
聊到shell重定向我们就无法先理解一些重定向的概念在标准的操作系统运行中我们将键盘的内容输入给操作系统这就是标准输入。而操作系统的处理结果显示到屏幕上这就是标准的输出。同理错误信息从操作系统输出到屏幕或者打印机上也是标准的错误输出。 所以重定向的概念也很好理解如下图输入重定向则是将这些由用户输入内容改为用文件内容作为输入。而输出和错误重定向则是将结果输出到屏幕改为结果输出到文件中 了解了这些概念之后我们就可以介绍操系统的重定向使用示例了,首先我们来了解一下输入重定向最直接的命令就是wcwc就是用于统计当前文本内容的行数、单词数、字符数
wc /etc/shadow
很明显这条命令就是使用文本作为输入典型的输入重定向。输出内容也说明当前文件44行、44个单词、1266个字符。 关于输入重定向还有一种特别的使用方式即将以你希望的字符作为开头当你在输入这个字符的时候就代表输入结束。 例如我希望wc能够统计我们自己指定的字符串所以我会议str作为开头当我再次输入str后就代表输入结束让wc给我统计出最终结果示例如下注意我们重定向符号是哦 了解了输入重定向之后输出重定向也很好解释了例如我们希望将ls -l的结果输出到ls.txt文件中我们就可以这样写
ls -l ls.txt需要注意使用指定输出位置时会将该文件的内容覆盖了所以若想将内容追加的输出文本我们就必须使用
ls -l ls.txt 而错误重定向则是将你指令输出错误的结果输出到文本中他的重定向符号和输出重定向差不多若不需要将错误结果追加到文本中则是2,若是需要追加则是2
不追加的错误重定向示例
ls abc 2err.txt追加的错误重定向示例
ls abc 2err.txtshell的管道符
说到shell管道符这个符号也是很强大的它会将上一条指令的输入作为下一条指令的输出。例如我们直到ls -l是查看当前文件列表详细信息more是分页查看你所指定的内容。 那么有意思的来了如果我们希望将ls -l的内容作为more查看的内容要怎么做呢命令如下即可
ls -l | moreshell引用
shell引用就是对于某些对Linux而言是关键字的字符通过转移的形式将其表达出来例如你有一个文件为abc?若你想将他重命名为abc,使用下面这条命令是不会成功的
mv abc? abc正确的做法是通过转移字符\将表达出来
mv abc\? abc需要注意的是转移字符在在单引号或者双引号内部都是需要转移的例如 S H E L L 代表的是 s h e l l 的环境变量 , 若你在单引号中直接声明很可能输出的就是 s h e l l 的环境变量若你想输出为 ‘ SHELL代表的是shell的环境变量,若你在单引号中直接声明很可能输出的就是shell的环境变量 若你想输出为 SHELL代表的是shell的环境变量,若你在单引号中直接声明很可能输出的就是shell的环境变量若你想输出为‘SHELL这几个字符的话你就得学会转移如第二个示例
[rootlocalhost tmp]# str1$SHELL
[rootlocalhost tmp]# echo $str1
/bin/bash如下所示通过\完成了特殊变量的转移
[rootlocalhost tmp]# str2\$SHELL
[rootlocalhost tmp]# echo $str2
$SHELL
系统管理和维护指令
ls
了解了shell基础之后我们就可以展开探讨一些基础命令首先就是ls这个命令了这个命令是我们在Linux之中最常用的命令通过这条命令我们可以看到文件或者文件夹的各种信息
这条指令的常见选项如下所示
选项与参数
-a 全部的文件连同隐藏档( 开头为 . 的文件) 一起列出来(常用)
-A 全部的文件连同隐藏档但不包括 . 与 .. 这两个目录
-d 仅列出目录本身而不是列出目录内的文件数据(常用)
-f 直接列出结果而不进行排序 (ls 预设会以档名排序)
-F 根据文件、目录等信息给予附加数据结构例如
*:代表可执行文件 /:代表目录 :代表 socket 文件 |:代表 FIFO 文件
-h 将文件容量以人类较易读的方式(例如 GB, KB 等等)列出来
-i 列出 inode 号码inode 的意义下一章将会介绍
-l 长数据串行出包含文件的属性与权限等等数据(常用)
-n 列出 UID 与 GID 而非使用者与群组的名称 (UID 与 GID 会在账号管理提到)
-r 将排序结果反向输出例如原本档名由小到大反向则为由大到小
-R 连同子目录内容一起列出来等于该目录下的所有文件都会显示出来
-S 以文件容量大小排序而不是用档名排序
-t 依时间排序而不是用档名。
--colornever 不要依据文件特性给予颜色显示
--coloralways 显示颜色
--colorauto 让系统自行依据设定来判断是否给予颜色
--full-time 以完整时间模式 (包含年、月、日、时、分) 输出
--time{atime,ctime} 输出 access 时间或改变权限属性时间 (ctime)
而非内容变更时间 (modification time)例如我们想查看家目录下的文件详细信息包括隐藏文件夹信息我们就可以使用下面这条命令 ls -al ~ 又比如我们想查看家目录下的文件详情并且不显示颜色对于特殊文件我们还希望能显示他的文件类型例如文件夹那么输出的文件夹后面就会加一个/,而可执行文件就会加一个*等。
ls -alF --colornever ~最后我们再给一个例子我们希望能够完整的展示出当前文件夹列表下文件修改时间的完整信息
ls -al --full-time ~ 命令就差不多这些了更多选项读者们可以根据上文提供的命令选项查看效果这里就不过多做演示了
pwd
pwd说白了就是查看当前你所处的工作位置非常简单 需要补充的是这条指令还有一个比较特殊或者说是非常偏门的用法那就是-P这个命令查可以追踪那些软链接文件实际的工作路径。
# 进入下面这个目录cd /var/mail/# 查看当前所处位置
pwd
#可以看到输出的当前目录位置
/var/mail
# 查看当前所处位置的文件夹实际的工作目录而非链接目录pwd -P# 可以看到输出的是实际工作目录位置
/var/spool/mail
cd
cd命令完整的英文为change directory说白了就是改变文件目录而谈到改变目录我们必须了解关于操作系统的中这几个关键字所代表的目录含义
1. . 代表当前目录
2. .. 代表上级目录
3. ~ 代表家目录
4. - 代表上次目录了解了这些概念后我们就一一展开描述当前目录就不多描述了比较少用。使用cd跳到上级目录就比如我当前在tmp目录使用cd ..就可以回到上级目录了。 同理回到家目录也一样使用cd ~ 需要补充说明的是我们当前所使用的用户是rootroot在Linux中是至高无上的所以我们可以到别人的家目录示例如下 最后我们再来说说cd -,意为跳到上次所处的目录说起来很拗口实际很简单举个例子 首先我们回到根目录
cd /在进入/tmp目录
cd /tmp此时我们使用cd到var目录
cd /var由于我们是从tmp跳到var的所以在var执行cd -就会从var目录跳回用户之前呆着的目录位置原理如下图 命令的结果如下图所示 date
date指令对于超级用户来说可以修改日期以及查看日期而普通用户则只能查看日期了这个指令的参数比较多如下所示 具体例子由于我现在是超级用户假如我想将时间改为20220607
date -s 20220607而我想将时间改为17:30
date -s 17:30若我们想日期和时间一起改则可以
date -s 20220629 00:32su
su常用于切换用户身份还有一些参数如下 我们怕是切换为root都是使用su root实际上我们也可以使用su -然后输入密码切换为root账户如下图所示 有时候我们想以普通用户身份修改root账户密码,我们就可以使用如下命令来完成
su -c passwdclear
这个就是一个控制台清屏操作无数赘述
man
查看命令帮助信息和–help差不多
例如
man ls我们就会看到这些 who
who命令用于显示目前登录到系统中的用户情况基本使用参数如下 查看系统运行级别 查看每个用户的登录详情以及终端使用情况 w
同样是显示系统上登录用户的信息参数如下 使用示例
uname指令
该命令常用于查询操作系统的查询选项的命令选项如下所示: 例如
uname -a即可查看操作系统的内核信息 uptime指令
uptime主要用于查看系统运行时长以及使用情况的指令 free命令
查看内存使用情况参数如下 使用示例 ps指令
查看进程的使用情况 使用示例 top命令
查看系统处理器使用情况 键入
top我们逐行分析这些数据是什么第1行分别是当前系统时间、运行时长当前登录系统的用户数量为25、10、15分钟统计的系统负载。 第3行则是当前任务总数运行中的二年无数休眠的任务书停止的还有僵尸进程任务数。 第3行us代表系统用户进程所占百分比sy代表系统进程所占百分比id空闲cpu所占的百分比。wa代表等待输入输出的进程所占百分比。 第4行就是free指令就能看到的不多赘述了。 文件的管理和编辑
mkdir指令
创建文件夹的命令常见选项如下
特殊用法假如我们要创建user1再基于user1文件夹下创建user2我们就可以使用-p一次性创建两级不存在的目录
mkdir -p user1/user2文件内容查阅相关指令
cat、tac直接查阅
cat指令将文件内容作为标准输出以下便是命令的基本选项
-A 相当于 -vET 的整合选项可列出一些特殊字符而不是空白而已
-b 列出行号仅针对非空白行做行号显示空白行不标行号
-E 将结尾的断行字符 $ 显示出来
-n 打印出行号连同空白行也会有行号与 -b 的选项不同
-T 将 [tab] 按键以 ^I 显示出来
-v 列出一些看不出来的特殊字符指令示例
直接查看文件内容
cat /etc/issue 查看时候带上行号
cat -n /etc/issue 将文件内容的特殊字符都显示出来
cat -A /etc/man_db.conf tac和cat差不多从英文字符排序就知道tac是反向输出的示例如下 nl添加行号打印输出
选项与参数
-b 指定行号指定的方式主要有两种
-b a 表示不论是否为空行也同样列出行号(类似 cat -n)
-b t 如果有空行空的那一行不要列出行号(默认值)
-n 列出行号表示的方法主要有三种
-n ln 行号在屏幕的最左方显示
-n rn 行号在自己字段的最右方显示且不加 0
-n rz 行号在自己字段的最右方显示且加 0
-w 行号字段的占用的字符数。基础示例 nl /etc/issue若有空白行也打印输出行号以及内容 nl -b a /etc/issue 输出所有行同时行号右对齐缺就补0
nl -b a -n rz /etc/issue上述命令默认都是补为6位数我们可以通过-w设置为补充为3位数
nl -b a -n rz -w 3 /etc/issue more、less可翻页查询
more可以对查看文件进行翻页、搜索等强大功能键入more以及对应文件后使用如下命令可完成相应功能
空格键 (space)代表向下翻一页
Enter 代表向下翻『一行』
/字符串 代表在这个显示的内容当中向下搜寻『字符串』这个关键词
:f 立刻显示出文件名以及目前显示的行数
q 代表立刻离开 more 不再显示该文件内容。
b 或 [ctrl]-b 代表往回翻页不过这动作只对文件有用对管线无用。相比之下less相当于more的加强版指令更强大一些
空格键 向下翻动一页
[pagedown]向下翻动一页
[pageup] 向上翻动一页
/字符串 向下搜寻『字符串』的功能
?字符串 向上搜寻『字符串』的功能
n 重复前一个搜寻 (与 / 或 ? 有关)
N 反向的重复前一个搜寻 (与 / 或 ? 有关)
g 前进到这个资料的第一行去
G 前进到这个数据的最后一行去 (注意大小写)
q 离开 less 这个程序less /etc/man_db.confhead、tail查看头尾
head即从头开始查看文件一般格式为
head -n number不指定行默认输出文件前10行
head /etc/man_db.conf 输出前20行
head -20 /etc/man_db.conf 输出100行之前的数据
head -n -100 /etc/man_db.conf tail文件从后往前看
显示倒数10行
tail /etc/man_db.conf 显示最后的20行
tail -n 20 /etc/man_db.conf查看100行以后的数据
tail -n 100 /etc/man_db.conf 实时输出尾巴那几行数据直到按ctrlc
tail -f /etc/man_db.conf 例题1
显示 /etc/man_db.conf 的第 11 到第 20 行
首先使用nl命令查看11到20行的内容 答案
head -20 /etc/man_db.conf |tail -n 11
例题2希望上面看到的结果能够显示行号
nl /etc/man_db.conf|head -20 |tail -n 11或者
cat -n /etc/man_db.conf | head -n 20 | tail -n 10od查看非文本文档
od指令常用于查看那些非纯文本的文件。例如/etc/passwd等
选项或参数
-t 后面可以接各种『类型 (TYPE)』的输出例如
a 利用默认的字符来输出
c 使用 ASCII 字符来输出
d[size] 利用十进制(decimal)来输出数据每个整数占用 size bytes
f[size] 利用浮点数(floating)来输出数据每个数占用 size bytes
o[size] 利用八进制(octal)来输出数据每个整数占用 size bytes
x[size] 利用十六进制(hexadecimal)来输出数据每个整数占用 size bytes 是ASCII查看对应文件
od -t c /usr/bin/passwd查看对应文件的字符八进制值与ASCII值对照
od -t oCc /usr/bin/passwd例题:我不想找 google想要立刻找到 password 这几个字的 ASCII 对照该如何透过 od 来判断
echo password|od -t oCc diff指令
用于比较两个文件字符之间的差异命令的选项如下 例如我们有两个文件分别是a、b这俩文件内容如下 diff a b
可以看到结果输出了1c1说明b文件的第一行和第一个文件a相比有改变若是d则说明后者和前者比被删了某些数据a则说明后者比前者多了某些数据
加个-c显示两者的不同之处的位置 grep
从文件中找到需要的字符串选项参数如下 从a中找到this这个字符串
grep this a若只想找到匹配的行数
grep -c this a rm
删除指令常见命令选项如下
-f 就是 force 的意思忽略不存在的文件不会出现警告讯息
-i 互动模式在删除前会询问使用者是否动作
-r 递归删除啊最常用在目录的删除了这是非常危险的选项我们常用的就是rm -rf
touch指令
touch命令常用于常见文件或者修改文件时间信息关于文件涉及的时间信息有以下3种 1. atime文件最后一次被访问的时间2. ctime文件权限或者属性被修改的时间3. mtime文件内容被修改的时间常见文件指令大家都熟练不多赘述这里我们聊以下如何基于touch修改atime和ctime
我们以bashrc文件为例查看他的mtime,atimectime
#从家目录复制文件
[zhangshiyulocalhost tmp]$ cp ~/.bashrc bashrc
# 查看mtime atime ctime
[zhangshiyulocalhost tmp]$ ll bashrc ;ll --timeatime bashrc ;ll --timectime bashrc ;
-rw-r--r--. 1 zhangshiyu zhangshiyu 231 Jun 29 15:48 bashrc
-rw-r--r--. 1 zhangshiyu zhangshiyu 231 Jun 29 15:48 bashrc
-rw-r--r--. 1 zhangshiyu zhangshiyu 231 Jun 29 15:48 bashrc
# 将其mtimeatime改为两天前
touch -d 2 days ago bashrc 使用touch精确修改mtime、atime
touch -t 202206261553 bashrc 更多指令选项如下
-a 仅修订 access time
-c 仅修改文件的时间若该文件不存在则不建立新文件
-d 后面可以接欲修订的日期而不用目前的日期也可以使用 --date日期或时间
-m 仅修改 mtime
-t 后面可以接欲修订的时间而不用目前的时间格式为[YYYYMMDDhhmm]ln
常见链接的指令链接分为两种
1. 软链接类似于windows的快捷方式文件被删除这个链接就作为
2. 硬链接增加一个文件的指针除非所有文件的指针都被删了否则这个文件就不会被销毁ln命令常见选项 演示建立硬链接只有文件指针和硬链接都被删除文件才会被删除首先我们需要建立一个示例文件如下图 创建硬链接
ln linkfile.txt linkfile2.txt确保两者链接为同一个文件我们修改linkfile2在this is my file后面加一个字符串1结果查看源文件也修改了说明两者链接的是同一个file 删除文件指针结果通过硬链接还能查看由此能出硬链接独立于文件指针其中一者删除不会影响另一方
演示软链接实验如下创建测试文件lf建立软链接lf2
[rootlocalhost tmp]# echo this is my file lf
[rootlocalhost tmp]# ln -s lf lf2 删除文件指针软链接无法查看文件 file命令
用于查看文件类型
file ~/.bashrc file /usr/bin/passwd
可以看到该文件为动态函数库文件 file /var/lib/mlocate/mlocate.db
数据库data文件
split命令
用于将大文件切割的指令参数如下 讲nginx日志切割成3k一份名字都以back打头
split -b 3k /var/log/nginx/access.log /var/log/nginx/back 文件复制与移动
复制
cp指令就是用于文件的复制以下为cp指令的选项
-a 相当于 -dr --preserveall 的意思至于 dr 请参考下列说明(常用)
-d 若来源文件为链接文件的属性(link file)则复制链接文件属性而非文件本身
-f 为强制(force)的意思若目标文件已经存在且无法开启则移除后再尝试一次
-i 若目标文件(destination)已经存在时在覆盖时会先询问动作的进行(常用)
-l 进行硬式连结(hard link)的连结档建立而非复制文件本身
-p 连同文件的属性(权限、用户、时间)一起复制过去而非使用默认属性(备份常用)
-r 递归持续复制用于目录的复制行为(常用)
-s 复制成为符号链接文件 (symbolic link)亦即『快捷方式』文件
-u destination 比 source 旧才更新 destination或 destination 不存在的情况下才复制。
--preserveall 除了 -p 的权限相关参数外还加入 SELinux 的属性, links, xattr 等也复制了。
最后需要注意的如果来源档有两个以上则最后一个目的文件一定要是『目录』才行将/var/log/wtmp复制到当前目录
cp /var/log/wtmp . 但是我们发现复制的属性不完全相同对此我们可以使用-a将文件原原本本复制过来 cp -a /var/log/wtmp wtmp2 如果要复制目录我们可以使用-r确保里面的东西可以递归的被复制过去
cp -r /etc/ /tmp/
移动
若是需要文件移动我们可以使用mv命令对应选项如下
-f force 强制的意思如果目标文件已经存在不会询问而直接覆盖
-i 若目标文件 (destination) 已经存在时就会询问是否覆盖
-u 若目标文件已经存在且 source 比较新才会更新 (update)当然mv命令也常用于文件重命名例如将文件a重命名为b
mv a b指令与文件的搜寻
which
根据环境变量path查看指令是否存在 whereis
whereis会搜寻特定目录下的文件执行效率会快一些
选项与参数
-l :可以列出 whereis 会去查询的几个主要目录而已
-b :只找 binary 格式的文件
-m :只找在说明文件 manual 路径下的文件
-s :只找 source 来源文件
-u :搜寻不在上述三个项目当中的其他特殊文件whereis ifconfig locate
相比于后面的指令findlocate是去数据库中查找文件执行效率和对性能影响相对较低一些
选项与参数
-i 忽略大小写的差异
-c 不输出档名仅计算找到的文件数量
-l 仅输出几行的意思例如输出五行则是 -l 5
-S 输出 locate 所使用的数据库文件的相关信息包括该数据库纪录的文件/目录数量等
-r 后面可接正规表示法的显示方式locate passwd
find
虽然是基于磁盘查找性能差但是这个文件查询命令我们比较经常用到
选项与参数
1. 与时间有关的选项共有 -atime, -ctime 与 -mtime 以 -mtime 说明
-mtime n n 为数字意义为在 n 天之前的『一天之内』被更动过内容的文件
-mtime n 列出在 n 天之前(不含 n 天本身)被更动过内容的文件档名
-mtime -n 列出在 n 天之内(含 n 天本身)被更动过内容的文件档名。
-newer file file 为一个存在的文件列出比 file 还要新的文件档名上面的参数可能看着很懵我们使用下面这张图理解一下如果find -mtime -4就说明查找前4天时间段的文件。find -mtime 4即查找前第4天的文件。find -mtime 4即查找第4天前的所有文件 查找第4天前的数据
find /var/log/ -mtime 4 今天是26号可以看到查找到的文件是21号确实在4天前 find更多参数
选项与参数
3. 与文件权限及名称有关的参数
-name filename搜寻文件名为 filename 的文件
-size [-]SIZE搜寻比 SIZE 还要大()或小(-)的文件。这个 SIZE 的规格有
c: 代表 byte k: 代表 1024bytes。所以要找比 50KB
还要大的文件就是『 -size 50k 』
-type TYPE 搜寻文件的类型为 TYPE 的类型主要有一般正规文件 (f), 装置文件 (b, c),
目录 (d), 连结档 (l), socket (s), 及 FIFO (p) 等属性。
-perm mode 搜寻文件权限『刚好等于』 mode 的文件这个 mode 为类似 chmod
的属性值举例来说 -rwsr-xr-x 的属性为 4755
-perm -mode 搜寻文件权限『必须要全部囊括 mode 的权限』的文件举例来说
我们要搜寻 -rwxr--r-- 亦即 0744 的文件使用 -perm -0744
当一个文件的权限为 -rwsr-xr-x 亦即 4755 时也会被列出来
因为 -rwsr-xr-x 的属性已经囊括了 -rwxr--r-- 的属性了。
-perm /mode 搜寻文件权限『包含任一 mode 的权限』的文件举例来说我们搜寻
-rwxr-xr-x 亦即 -perm /755 时但一个文件属性为 -rw-------
也会被列出来因为他有 -rw.... 的属性存在根目录开始查询passwd文件
find / -name passwd
模糊含有passwd的文件
find / -name *passwd*
查看run目录下为socket的文件 find /run/ -type s
查询有suiid、sgid、sbit的文件
find / -perm /7000
当然为了便于查看详情信息我们可以将上面的查询结果以文件列表的形式展现出来以下指令原理如下图exec前面的指令作为后面{}的参数交给ls -l作为参数
find / -perm /7000 -exec ls -l {} \; 参考文献
鸟哥的Linux私房菜
循序渐进Linux第2版