Linux文件管理技术实践

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 \
/etc

在这里插入图片描述

shell的通配符

有时候我们使用的命令需要的参数可能会出现模糊匹配的情况,对此shell提供了强大的通配符为我们解决问题。
在介绍统配符,使用实例之前,我们先介绍一个指令

ls -l 

这个指令意味列出当前目录下所有非隐藏文件的详细信息

假若我们希望找到当前目录下所有的txt文件信息呢?以我们上文距离的tmp为例子,命令如下所示,可以看到*就代表未知数。我们希望查找到的文件就是任何一个.txt结尾的文件

ls -l *.txt

在这里插入图片描述

假如我们要查询的一个文件只有一个未知数呢?例如我们想找一个myliu(这个单词未知)1.txt的文件,我们要怎么找呢?很简单,上面的*表示全未知数,而?就是表示单未知数的。所以我们的命令为

ls -l mylinu?1.txt

在这里插入图片描述
亦或者,有时候就对文件的某个单词不确定,但又有给定范围,比如说你知道你要查找的文件是mylinux(这个位置的字母未知,但是你确定可能是1或者2)的时候,你就可以使用范围匹配

ls -l mylinux[12].txt

在这里插入图片描述

shell重定向

聊到shell重定向我们就无法先理解一些重定向的概念,在标准的操作系统运行中,我们将键盘的内容输入给操作系统,这就是标准输入。而操作系统的处理结果显示到屏幕上,这就是标准的输出。同理错误信息从操作系统输出到屏幕或者打印机上也是标准的错误输出。

在这里插入图片描述

所以重定向的概念也很好理解,如下图,输入重定向则是将这些由用户输入内容改为用文件内容作为输入。而输出和错误重定向则是将结果输出到屏幕改为结果输出到文件中

在这里插入图片描述

了解了这些概念之后,我们就可以介绍操系统的重定向使用示例了,首先我们来了解一下输入重定向,最直接的命令就是wc,wc就是用于统计当前文本内容的行数、单词数、字符数

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 2>err.txt

在这里插入图片描述
追加的错误重定向示例

ls abc 2>>err.txt

在这里插入图片描述

shell的管道符

说到shell管道符,这个符号也是很强大的,它会将上一条指令的输入作为下一条指令的输出。例如我们直到ls -l是查看当前文件列表详细信息,more是分页查看你所指定的内容。
那么有意思的来了,如果我们希望将ls -l的内容作为more查看的内容要怎么做呢?命令如下即可

ls -l  | more

在这里插入图片描述

shell引用

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`这几个字符的话,你就得学会转移,如第二个示例

[root@localhost tmp]# str1="$SHELL"
[root@localhost tmp]# echo $str1
/bin/bash

如下所示,通过\完成了特殊变量的转移

[root@localhost tmp]# str2="\$SHELL"
[root@localhost 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 :依时间排序,而不是用档名。
--color=never :不要依据文件特性给予颜色显示;
--color=always :显示颜色
--color=auto :让系统自行依据设定来判断是否给予颜色
--full-time :以完整时间模式 (包含年、月、日、时、分) 输出
--time={atime,ctime} :输出 access 时间或改变权限属性时间 (ctime)
而非内容变更时间 (modification time)

例如,我们想查看家目录下的文件详细信息,包括隐藏文件夹信息,我们就可以使用下面这条命令

 ls -al ~

在这里插入图片描述

又比如,我们想查看家目录下的文件详情,并且不显示颜色,对于特殊文件,我们还希望能显示他的文件类型,例如文件夹那么输出的文件夹后面就会加一个/,而可执行文件就会加一个*等。

ls -alF --color=never ~

在这里插入图片描述

最后我们再给一个例子,我们希望能够完整的展示出当前文件夹列表下文件修改时间的完整信息

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 ~

在这里插入图片描述

需要补充说明的是,我们当前所使用的用户是root,root在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:32"

在这里插入图片描述

su

su常用于切换用户身份,还有一些参数如下

在这里插入图片描述

我们怕是切换为root都是使用su root,实际上我们也可以使用su -然后输入密码切换为root账户,如下图所示:

在这里插入图片描述

有时候我们想以普通用户身份修改root账户密码,我们就可以使用如下命令来完成

su -c passwd

在这里插入图片描述

clear

这个就是一个控制台清屏操作无数赘述

man

查看命令帮助信息,和–help差不多

例如

man ls

我们就会看到这些

在这里插入图片描述

who

who命令用于显示目前登录到系统中的用户情况,基本使用参数如下

在这里插入图片描述

查看系统运行级别

在这里插入图片描述

查看每个用户的登录详情以及终端使用情况

在这里插入图片描述

w

同样是显示系统上登录用户的信息,参数如下

在这里插入图片描述
使用示例
在这里插入图片描述

uname指令

该命令常用于查询操作系统的查询选项的,命令选项如下所示:

在这里插入图片描述
例如

uname -a

即可查看操作系统的内核信息

在这里插入图片描述

uptime指令

uptime主要用于查看系统运行时长以及使用情况的指令

在这里插入图片描述

free命令

查看内存使用情况,参数如下

在这里插入图片描述

使用示例

在这里插入图片描述

ps指令

查看进程的使用情况

在这里插入图片描述

使用示例

在这里插入图片描述

top命令

查看系统处理器使用情况
键入

top

我们逐行分析这些数据是什么,第1行分别是当前系统时间、运行时长,当前登录系统的用户数量为2,5、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.conf

在这里插入图片描述

head、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

在这里插入图片描述

实时输出尾巴那几行数据,直到按ctrl+c

tail -f /etc/man_db.conf

在这里插入图片描述

例题1:

  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 10

在这里插入图片描述

od查看非文本文档

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,atime,ctime

#从家目录复制文件
[zhangshiyu@localhost tmp]$ cp ~/.bashrc bashrc
# 查看mtime atime ctime
[zhangshiyu@localhost tmp]$ ll bashrc ;ll --time=atime bashrc ;ll --time=ctime 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
# 将其mtime,atime改为两天前
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

[root@localhost tmp]# echo this is my file >lf
[root@localhost 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 --preserve=all 的意思,至于 dr 请参考下列说明;(常用)
-d :若来源文件为链接文件的属性(link file),则复制链接文件属性而非文件本身;
-f :为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
-i :若目标文件(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
-l :进行硬式连结(hard link)的连结档建立,而非复制文件本身;
-p :连同文件的属性(权限、用户、时间)一起复制过去,而非使用默认属性(备份常用);
-r :递归持续复制,用于目录的复制行为;(常用)
-s :复制成为符号链接文件 (symbolic link),亦即『快捷方式』文件;
-u :destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制。
--preserve=all :除了 -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

相比于后面的指令find,locate是去数据库中查找文件,执行效率和对性能影响相对较低一些

选项与参数:
-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版)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/647219.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ElasticSearch搜索引擎入门到精通

ES 是基于 Lucene 的全文检索引擎,它会对数据进行分词后保存索引,擅长管理大量的数据,相对于 MySQL 来说不擅长经常更新数据及关联查询。这篇文章就是为了进一步了解一下它,到底是如何做到这么高效的查询的。 在学习其他数据库的时候我们知道索引是一个数据库系统极其重要…

【基础配置】Python2/Python3并存安装配置教程

Nx01 产品简介 Python是一种高级的、解释型的、面向对象的通用编程语言&#xff0c;具有简单易学、代码可读性强、功能强大、可移植性好等特点。它可以应用于多种领域&#xff0c;如Web开发、数据科学、人工智能、机器学习、科学计算、自动化测试等。Python由Guido van Rossum于…

如何使用phpStudy软件测试本地PHP及环境搭建

各位同学朋友们大家好&#xff01;我是咕噜铁蛋&#xff01;我们经常需要在本地进行PHP代码的开发和测试。而phpStudy作为一个集成了Apache、MySQL和PHP的软件套装&#xff0c;提供了方便快捷的环境搭建和测试工具。今天铁蛋为大家详细介绍如何使用phpStudy来测试本地PHP及环境…

雨云服务器部署幻兽帕鲁PalWorld联机服务器详细教程

幻兽帕鲁是Pocketpair开发的一款开放世界生存制作游戏&#xff0c;游戏中&#xff0c;玩家可以在广阔的世界中收集神奇的生物“帕鲁”&#xff0c;派他们进行战斗、建造、做农活&#xff0c;工业生产等。 最近&#xff0c;这款游戏挺火&#xff0c;为了获得更好的游戏体验&…

Vue构建项目断点调试过程问题总结

Vue构建项目断点调试过程问题总结 问题背景 前端开发过程中&#xff0c;碰到问题时需要debug&#xff0c;快速分析和解决问题。一般除了console.log的方式打印日志外&#xff0c;更方便直观的方式就是打断点debug。本文对vue项目debug过程可能碰到的问题进行总结&#xff0c;…

“数据同步大揭秘:Canal工具如何让实时处理变得轻而易举?“

介绍&#xff1a;Canal是一个基于MySQL数据库增量日志解析的开源数据同步工具。 Canal的主要功能是提供增量数据订阅和消费&#xff0c;它通过解析MySQL数据库的增量日志来捕获数据变更事件&#xff0c;并将这些事件转换成数据变更流&#xff0c;供用户订阅和消费。这样&#x…

Deepin基本环境查看(四)【硬盘/分区、文件系统、硬连接/软连接】

Linux操作系统(Deepin、Ubuntu&#xff09;操作系统中&#xff0c;硬盘分区的管理与Windows操作系统不同&#xff1b; 在Linux系统中维护着一个统一的文件目录体系&#xff0c;而硬盘和分区是以资源的形式由操作系统挂接和调度&#xff1b;此外Linux系统中连接&#xff08;硬连…

NTFS 磁盘管理 :NTFS Disk by Omi NTFS

NTFS Disk by Omi NTFS是一款专为Mac系统设计的NTFS文件系统读写解决方案的工具。它可以帮助Mac用户方便地访问和管理NTFS格式的硬盘、U盘、移动硬盘以及其他存储设备&#xff0c;提供高效稳定的NTFS卷管理功能。 NTFS 磁盘管理 &#xff1a;NTFS Disk by Omi NTFS 该软件的主…

Mistral AI vs. Meta:顶级开源LLM比较

为了提高性能&#xff0c;大型语言模型(llm)通常会通过增加模型大小的方法来实现这个目标&#xff0c;但是模型大小的增加也增加了计算成本和推理延迟&#xff0c;增加了在实际场景中部署和使用llm的障碍。 Mistral AI是一家总部位于巴黎的欧洲公司&#xff0c;一直在研究如何…

QT入门篇---无门槛学习

1.1 什么是 Qt Qt 是⼀个 跨平台的 C 图形⽤⼾界⾯应⽤程序框架 。它为应⽤程序开发者提供了建⽴艺术级图形界⾯所需的所有功能。它是完全⾯向对象的&#xff0c;很容易扩展。Qt 为开发者提供了⼀种基于组件的开发模式&#xff0c;开发者可以通过简单的拖拽和组合来实现复杂的…

车险到期提醒,快速查询交强险投保日期!

随着社会的进步和人们生活水平的提高&#xff0c;车辆已经成为人们出行的重要工具。而为了保障行车安全&#xff0c;车辆保险成为了必备的选择。交强险作为一种强制性的保险&#xff0c;其投保期限对车主来说尤为重要。本文将通过介绍一个API接口&#xff0c;帮助车主们快速查询…

图中点的层次——树与图的广度优先遍历

问题描述 代码实现 #include <cstring> #include <iostream> #include <algorithm>using namespace std;const int N 1e5 10;int n, m; int h[N], ne[N * 2], e[N * 2], idx; int d[N]; // 从节点1到当前节点的距离 int q[N * 2]; // 数组模拟队列void ad…

01-echarts如何绘制三维折线图

echarts如何绘制三维折线图 一、相关依赖包1、下载依赖2、引入依赖 二、创建图表盒子1、创建盒子2、定义数据3、编写方法1、初始化盒子2、设置配置项3、修改数据格式4、设置颜色数组4、设置name数组5、设置线三维和点三维6、添加配置项7、设置图表自适应 4、调用方法 三、整体代…

Unity 面试篇|(三)设计模式篇 【全面总结 | 持续更新 | 建议收藏】

目录 1. 什么是设计模式&#xff1f;2. 设计模式的七大原则&#xff1f;3. 单例模式4. 三类设计模式5. 什么是单例模式&#xff0c;适用场景以及优缺点&#xff1f;6. 什么是原型模式&#xff0c;适用场景以及优缺点&#xff1f;7. 什么是生成器模式&#xff0c;适用场景以及优…

力扣经典题:链表合并

解决链表合并问题需要有特定的思路&#xff1a; 、链表合并 王赫辰/c语言 - Gitee.com 简述思路&#xff1a;首先先处理特殊情况&#xff0c;将空指针时的情况进行提前处理 然后再创建新的链表&#xff0c;此时使用尾插比较法&#xff1a; 循环条件&#xff1a;当两个链表中…

甲基四嗪-PEG5-炔烃,Methyltetrazine-PEG5-alkyne,可以提高生物分子的稳定性和保存期

您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;甲基四嗪五聚乙二醇炔&#xff0c;甲基四嗪-PEG5-炔烃&#xff0c;Methyltetrazine-PEG5-alkyne 一、基本信息 产品简介&#xff1a;Methyltetrazine PEG5 alkyne contains methyltetrazole and PEG5 chains, as we…

pyecharts模块的下载方法以及介绍,折线图的创立

目录 1.pyecharts是什么 2.pyecharts下载方法 1.在屏幕左下角搜索这里输入cmd&#xff0c;找到命令提示符并且打开 2.输入pip install pyecharts 然后回车进行下载 3.检查是否下载完成 4.另一个方法 3.pyecharts入门 4.pyecharts的配置选项 set_global_opts全局配置选…

有关Quick BI中Case子句中多次使用lod函数返回空值问题分析

一、Quick BI中的lod_ include函数 lod_ include {维度1[,维度2]...:聚合表达式[:过滤条件]} 作用&#xff1a;将表达式中的维度一起作为分组依据进行订算。其中&#xff0c; 1) 维度1[,维度2]... &#xff1a;声明维度&#xff0c;指定聚合表达式要连接到的一个或多个维…

聊聊 程序员裁员潮:技术变革下的职业危机

前几天一则新闻爆料&#xff1a;一对来自中国的工程师夫妻在美身亡&#xff0c;疑因谷歌裁员致悲剧发生。看到后深感可惜&#xff0c;鲜活的生命就因为裁员殒落了&#xff1b;同时我也深有感触&#xff0c;有幸经历过裁员&#xff0c;体会过那一段低迷不振的日子。 但是回首当下…

关于达梦认证DCA DCP,TIDB认证PCTA PCTP考试那点事儿

文章最后有彩蛋&#xff0c;一定要看到最后... 一、正确的道路上遇到正确的你 伴随中国数据库领域的快速技术进步&#xff0c;国内数据库生态蓬勃发展&#xff0c;并不断涌现出极具创新力的产品&#xff0c;推动了数据库应用的遍地开花。截至2024年1月&#xff0c;墨天轮数据社…