linux笔记2随笔
阅读原文时间:2023年07月08日阅读:1

124、diff命令:文件内容对比

diff命令用于比较多个文本文件之间的差异,这在系统安全防范中非常重要。比如当黑客入侵系统之后,往往会修改一些系统配置文件,从而留下一些后门。 所以作为运维人员。最好事先将一些重要文件备份,然后定期执行dif命令进行对比,从而发现文件是否被改动过。

进行文件内容的对比,对比.bashrc和.bashrc.bak文件,命令是diff .bashrc .bashrc.bak,如图所示::

如图所示,发现对比后,无任何内容,所以.bashrc文件和.bashrc.bak文件无任何区别

124.1 对bashrc文件进行备份,将其复制并改名为bashrc.bak,命令是cp .bashrc .bashrc.bak,如图所示:

124.2、在.bashrc.bak文件中添加一行hello,命令是echo 'hello' >>.bashrc.bak,如图所示:

124.3、对文件.bashrc和.bashrc.bak进行文件内容的对比,命令是diff .bashrc .bashrc.bak,如图所示:

如图所示,它表示的是.bashrc文件是12行,.bashrc.bak文件是13行,a表示添加,所以就是在12行后面添加了一行,共13行,>表示在.bashrc.bak文件中,在.bashrc.bak比.bash多了一行hello

125、对.bashrc.bak文件进行vim编辑,对其进行修改,命令是vim .bashrc.bak,如图所示:

126、再次对文件.bashrc和.bashrc.bak进行文件内容的对比,命令是diff .bashrc .bashrc.bak,如图所示:

文件的第5行和第12行不同,.bashrc带#号的,.bashrc.bak是无#号的

127、对.bashrc.bak文件再次进行更改,命令是diff .bashrc .bashrc.bak,如图所示:

这里面这个d的意思是减少,也就是.bashrc.bak内容是13行,.bashrc内容是12行,前比后多一行

128、显示结果中,字母”a”、 "d"、“c” 分别表示添加、删除及修改操作。

其中,以“<”开始的行属于文件1,以“>”开始的行属于文件2。

129、.bashrc文件是在用户登录的时候自动执行,相当于windows的开机自动运行

130、可以通过diff .bashrc .bashrc.bak命令检测linux系统开机启动项是否被做了手脚

131、date命令--显示或修改日期和时间

直接执行date命令将按照系统默认的格式显和期和时间。

如图所示,date命令显示的内容是日期,星期几,时间,时区

132、date命令提供了很多格式符,可以用不同的方式来显示日期或时间,这些格式符都是以%开头,并用“+*调用。

如果我只要显示年月日,那么它的命令是date +%F,如图所示:

如果我只要显示日期,那么它的命令是date +%d,如图所示:

如果我只要显示日期(日/月/年),那么它的命令是date +%D,如图所示:

如果我只要显示时间,那么它的命令是date +%T,如图所示:

如果我想显示日期和时间的话,那么它的命令是date +"%F %T",如图所示:

它的输出格式和命令的输出格式是一致的

以“年-月-日 时:分:秒”的格式显示日期和时间,命令是date +"%Y-%m-%d %H:%M:%S",如图所示:

133、date命令提供了很多格式符,可以用不同的方式来显示期或时间,这些格式符都是以%开头,并用“+”调用。

134、对passwd文件进行备份,并显示时间,区分不同的备份,便于区别

命令是cp /etc/passwd /tmp/passwd.bak.$(date +%F),并进行验证,命令是ls /tmp,如图所示:

135、$()命令是将()里面的命令执行带入到原命令中,实例如上所示

136、date命令也可用来修改日期和时间,设置日期和时间时的标准格式如下,即按照“月日小时分钟年份”的格式设置,其中年份可以为4位也可以为2位。

137、stat命令-查看文件元数据

Linux系统中的每个文件都包括两类数据,一类是数据本身,例如用cat、more、less 等俞令所查看到的就是这类数据;另一类称为元数据(metadata) ,元数据用于描述文件的属性,主要包括文件大小、存储位置、访问权限以及时间戳等信息。

138、元数据:包括文件的类型,存放位置,大小,时间戳(创建时间,修改时间,访问时间),权限

139、对于一个文件来说,数据包含2个部分,文件内容和文件属性(元数据)

140、用stat命令查看文件的云数据,查看anaconda-ks.cfg的文件属性,命令是stat anaconda-ks.cfg,如图所示:

141、stat命令所查看结果的最后三行称为文件的时间戳,时间戳包括三种: 最近访问时间(ccess time):查看、读取文件内容的时间。 最近更改时间(modify time) :文件内容改变的时间。 最近改动时间(change time) :文件元数据改变的时间。

142、例如,我们执行“cat /tc/passd"命令查看文件内容,那么就会更改访问时间:如果在系统中新建了某个用户账

号,改变了Iete/passwd文件的内容,那么就会更改最近更改时间;如果将文件重命名或是修改了文件的权限,则会

更改最近改动时间。另外,由于元数据包括文件大小等信息,因而通常情况下只要文件内容发生了改变,那么文件

的元数据也多半会相应发生改变。也就是说,只要文件的更改时间改变了,改动时间也会随之变化,而反之则未必。

需要注意的是,为了避免对硬盘频繁进行写入,Linuy 系统对时间戳的修改进行了优化,如果时间戳某两次变化的时间间隔非常短,那么系统将不会对时间戳进行修改。

如,如果我们要再次查看一下这个文件,那么我们的最近访问时间会发生变化,为什么不变,原因就是上面加粗的

如果我们要修改文件内容,并且查看文件内容,那么最近更改时间和最近访问时间都会发生变化,主要发生变化的是最近更改时间,命令是echo 'hello' >>anaconda-ks.cfg,cat anaconda-ks.cfg,stat anaconda-ks.cfg,如图:

为什么最近更改时间发生变化了,最近改动时间也变化了,因为文件的大小发生了变化,那么最近改动时间随之发生变化了,文件大小属于元数据,文件属性也就变化了,modify time发生了变化,change time一般也会发生变化

143、如果对文件改名后,发现文件的最近改动时间也发生变化了,那么最近更改时间没发生变化

命令如图所示,mv anaconda-ks.cfg hi.txt ,stat hi.txt,如图所示:

144、find --- 文件查找命令

在系统运维的过程中,可能经常需要在系统中查找各种文件,若能快速准确地找到所需的文件,将可有效提高工作效率。

grep是对文件内容查找,find是查找文件(文件本身)

find命令的基本使用格式:

查找;起始路径可以根据需要指定,默认为当前路径,如果指定为“/”,就表示在整个硬盘中进行查找。

查找条件:指定的查找标准,可以根据文件名、文件大小、文件类型、从属关系、权限,时间戳等进行设置,默认为找出指定路径下的所有文件。

处理动作:对符合查找条件的文件做出的操作,例如删除等操作,默认为输出至标准输出。

在使用find命令时,最重要的是如何设置查找条件,下面介绍一些常用的查找条件设置选项。 144.1、“-name”选项,按名称查找,允许使用通配符。

as:查找etc目录下的名称为passwd的文件,精确查找,命令是find /etc -name 'passwd',如图所示:

as:查找etc目录下的包含pass的文件,命令是find /etc -name 'pass',如图所示:(* *)

find命令,在查找名字的时候,通常与通配符配合使用

as:查找dev目录下的sd开头的文件,命令是find /dev -name 'sd *',也可以使用命令,ls /dev/sd *,如图所示:

ls命令和find命令的区别,ls只能查找当前目录下的,不包含子目录,而find是整体的递归查找

144.2、“-iname”选项,按名称查找,不区分大小写

as:查找etc目录下的包含pass的文件(不确定是大写还是小写),命令是find /etc -iname 'net',如图所示:(* *)

144.3、“-empty"选项,查找空文件或目录

as:查找root目录下的空文件或目录,命令是find /root -empty,如图所示:

144.4、“-type" 选项,按文件类型查找。 文件类型指的是普通文件(f)、目录(d)、符号链接文件(l) 、块设备文件(b) 、字符设备文件(c)等。

ls目录下:-普通文件、d:目录、l:软链接、b:块设备、c:字符设备

as:在/boot目录中查找所有的子目录(多层查找),命令是find /boot -type d,如图所示:

as:在/boot目录中查找所有的文件,命令是find /boot -type f,如图所示:

as:在/usr目录下的bin目录中查找所有的符号链接文件,命令是find /usr/bin -type l,如图所示:

as、在/usr目录下的bin目录中查找所有的符号链接文件的详细信息,命令是find /usr/bin -type l,如图所示:

as、查找root目录下的空的目录,命令是find /root -empty -type d,如图所示(使用的是组合命令)

find /root -empty 查找空文件或目录 find /root -type d 按文件类型查找(查找目录),这2个命令组合使用

144.5、“-size” 选项,按文件大小查找。一般使用“+”、"_" 号设置超过或小于指定的大小作为查找条件。常用的容量单位包括k(注意是小写)、M、G。

as:查找etc目录下大于1m的文件的详细信息,命令是find /etc -size +1M -ls,如图所示:

as:查找root目录下小于10k的文件的详细信息,命令是find /etc -size -10k -ls,如图所示:

144.6、“-not”选项,取反。(grep命令中取反的命令是-v)

as:在/boot目录中查找所有文件类型不是普通文件的文件,并显示其详细信息。

144.7、按时间戳查找 find命令还支持按照文件时间戳进行查找,根据用户需求不同,可以分别指定以“天”或是“分钟”作为查找单位。如果以“天”为单位,则相应的选项分别为: -aime (访问时间)、mtime (更改时间)、-ctime (改动时间) ;如果以“分钟”为单位,则相应的选项分别为: -amin(访问时间)、-mmin (更改时间)、-cmin (改动时间)。同-size 选项:一样,也可以使用“+”、“_”号对时间进行设置。

as:在/tmp目录中查找7天内没有被访问过的文件。(7天前访问的文件)

as:在/etc 目录中查找最近1天之内被改动过的文件。(改动的文件内容,文件属性【大小】也发生变化)

查找新的用户zhangsan,命令是useradd zhangsan,如图所示:

查看60min内,也就是1h内改变的文件,命令是find /etc -ctime -60,如图所示:

as:在/etc目录中查找最近5min之内被修改过状态信息的文件(文件属性发生变化)。

ctime以时间为单位,cmin以分钟为单位,ctime比mtime好,ctime都可以找到(属性和内容变化),mtime(属性发生变化)

144.8、“-exec” 选项,对查找到的结果进行进一步的处理。

“-exec"选项后面要跟上进一步处理所要执行的命令,在命令中可以使用“{}”表示find命令查找到的结果,而且最后必须添加“\;" 表示命令结束(注意前面有个空格)。

as:查找boot目录下的以“init"开头的文件,并将其复制到/tmp目录下,命令是find /boot -name "init*" -exec cp {} /tmp \; ,如图所示。

144.9、同时指定多个查找条件

在find命令中可以同时指定多个查找条件,各个条件乏间默认是逻辑与的关系。

as:在boot目录中查找大小超过1024KB而且文件名以“init”开头的文件,命令是find /boot -size +1024k -name "init*",如图所示。

145、find命令的处理动作:

处理动作可以对find命令找到的结果做进一步的处理。

find /usr/bin -typel-Is

这里的ls是find命令的处理动作,而非ls命令。

exec处理动作可以将find命令找到的结果当作文件去处理。

find /etc -size +1M -exec ls -Ih {} \;

“{}” 表示find命令查找到的结果

在命令的最后必须添加" \:”表示命令结束。

as:查看etc目录下大于1m的文件有多少,并统计行数,命令是find /etc -size +1M |wc -l,如图所示:

find信息找到的都是文件信息,文件名字,不是文件本身

as: exec把find找到的大于1m的文件信息变为文件本身,并复制到tmp目录下,命令是find /etc -size +1M -exec cp {} /tmp/test \;,如图所示:

先创建一个目录,mkdir tmp目录下的test目录

然后在进行复制etc目录下大于1m的文件,复制到tmp目录的test目录下

进行验证,命令是ls /tmp/test,查看详细信息,命令是ls -l/tmp/test

as:查看etc目录下大于1m的文件,以人性化的方式显示详细信息,命令是find /etc -size +1M -exec ls -lh {} \;,如图所示:

as:查看etc目录下包含pass的文件(普通文件),显示行数,命令是find /etc 'pass' -type f -exec wc -l {} \;

find /etc -name 'pass' -type f |wc -l,命令是查看etc目录下包含pass的文件(普通文件),显示文件行数(* *)

as:查看etc目录下包含pass的文件(不普通文件),对所有文件进行备份,命令是find /etc -name 'pass' -type f -exec cp {} {}.bak \;,如图所示:

as:删除所有的在etc目录下的以.bak为结尾的文件(普通文件),命令是find /etc -name '*.bak' -type f -exec rm -f {} \; ,如图所示:

as:删除所有的在tmp目录下的以.txt为结尾的文件(普通文件),命令是 find /tmp -name "*.txt" -type f -delete,如图所示:

也就是说删除文件一共有2种方式,find /etc -name '*.bak' -type f -exec rm -f {} \;

find /tmp -name "*.txt" -type f -delete

146、Linux系统中的命令总体上分为内部命令和外部命令两大类。 内部命令,指的是集成在Shell里的命令,属于Shell的一部分。只要Shell被执行,内部命令就自动载入内存,用户可以直接使用,如cd命令,pwd命令等。 外部命令,考虑到运行效率等原因,不可能把所有的命令都集成在Shell里,更多的Linux命令是独立于Shell之外的,这些就称为外部命令。如cp、ls 等都属于外部命令。(除了cd,pwd命令以外基本都是外部命令) Linux系统中的绝大多数命令都属于外部命令,而每个外部命令都对应了系统中的一个可执行的二进制程序文件(biniany file),这些二进制程序文件主要存放在下列目录里: 普通命令: /bin, /usr/bin, /usr/local/bin

147、查外部命令(ls)的程序文件,命令是which ls,如图所示:

148、bin,所有用户都可以执行的文件,常规命令,sbin只有管理员才能执行,权限比较高(青色的表示是一个链接文件,bin和sbin,lib,lib64)[bin和sbin的真实存放位置是/usr/bin和/usr/sbin]

149、mkfs ,对硬盘分区进行格式化

150、查外部命令(find)的程序文件,命令是which find,如图所示:

151、查外部命令(ifconfig)的程序文件,命令是which ifconfig,(只有管理员才能执行的命令),如图所示:

152、普通用户无法改ip,只有管理员才能改ip

153、在linux每一个执行的文件,它都必须要有一个路径,每执行一个命令,都要指定他的路径

154、查看pash变量的值,命令是echo $PASH

为什么我们输入命令的时候,不需要输出指定它的路径,因为linux给我们设定了一个环境变量(PATH)

当我们不输入命令的指定路径的时候,它会在PATH在环境变量中递归查找,然后执行命令

155、如何更改变量的值,如PATH="XXXXXX"

156、Linux系统默认将外部命令程序文件的存放路径保存在一个名为PATH的环境变量里,执行“echo $PATH”命令可以显示出PATH变量里保存的目录路径(路径之间用“;”间隔)。

157、当用户键入并执行命令时,Shell 首先检查命令是否是内部命令,若不是的话,Shell 就会从PATH变量所保存的这些路径里去寻找外部命令所对应的的程序文件,只有找到了程序文件才能正确地去执行命令。这也就意味着,如果把一个外部命令所对应的程序文件删除了,或者是存放外部命令程序文件的目录没有添加到PATH变量里,这些都会导致外部命令无法正常执行。 当然,如果用户每执行一条俞令都要去PATH变量里查找程序文件路径,这势必会影响命令执行效率,因而Linux系统会将用户在当前Shell里所执行的外部命令程序文件路径缓存下来,这样当再次执行同样的命令时就会直接从缓存里调用,而无需去PATH变量里我。

158、执行hash命令可以查看当前Shell所缓存的命令程序文件路径。

159、type命令- 判断内部和外部命令

Linux系统中的绝大多数命令都属于是外部命令。可以通过type命令来判断一个命令到底是内部命令还是外部命令,命令是type cd,如图所示:

160、其他辅助命令

160.1、In命令--为文件或目录建立链接(创建快捷方式)

In命令用于为文件或目录建立快捷方式(在Linux系统中称为链接文件)。

In命令的一般格式:

In [选项] 源文件 目标文件

链接文件分为硬链接、软链接两种类型,主要区别是:不能对目录创建硬链接,也不能跨越不同分区创建硬链接文件,而软链接则没有这些限制,所以平时使用的大都是软链接。 在创建软链接时需要使用“-s”选项。

as:为SSH服务配置文件“sslsshs_ config” 在“root”"目录中创建一个名为“ssh" 的软链接。

命令是ln -s /etc/ssh/sshd_config ssh,并用ls进行验证,如图所示:

因为没有指定路径,所以它的路径是在/root下,也就是当前路径下,也可以用./表示

160.2:alias命令--设置命令别名

命令别名通常是命令的缩写,对于经常使用的命令,通过设置别名可以简化操作,提高工作效率。

alias命令的一般格式:

alias [别名='标准Shell命令行"]

在定义别名的时候,我们它的两侧不能有空格,在他的右边必须要有一个“

在执行这个命令时需要注意,“=” 的两边不能有空格,在标准命令的两端要使用单引号。

单独执行alias可以列出当前系统中已经存在的别名命令,命令是alias,如图所示:

定义一个别名,别名的含义是读取etc目录下的passwd的文件内容,命令是alias cpw="cat /etc/passwd",如图

160.2.1、ls命令本身无颜色,但ls是ls --color=auto的别名,也就是如果我们直接用ls,它就是有颜色的,/usr/bin/ls

160.2.2、ls -l的别名就是ll,如图所示:

160.3、需要注意的是,利用alias命令设定的别名命令,仅对当前Shell进程有效,其有效期限持续到用户退出登录为止,当用户下一次登录到系统时,该别名命令已经无效。如果希望别名命令在用户每次登录时都有效,就应该将alias命令写入到相应的配置文件中。这里具体又分为两种情况:如果希望别名命令对系统中所有的用户都有效,则应该修改全局配置文件“/etc/bashrc” ;如果希望别名命令仅对指定的用户有效,则应该修改相应用户家目录中的“.bashrc” 文件。另外,修改完配置文件后,所做的配置并不会立即生效,还需要用source命令重新加载相应的配置文件,如“source ~/.bashrc"等

160.4 如果要取消所设置的别名命令,可以使用unalias命令,命令是unalias cpw,如图所示:

161、history:查看历史命令: Shell进程会在其会话中保存此前用户曾经执行过的命令。在Bash中查看命令历史记录最简单的方法是用上下方向

键,而要查看所有或部分的命令历史记录则要使用history命令。

直接执行history可以列出用户登录后所有曾执行过的命令,history 命令还有以下常用用法。

161、查看历史记录,命令是history,如图所示:

161.1、指定所要查看的历史命令范围

history 命令后面跟上数字就可以指定列出哪些范围内的历史命令

as:列出最近执行过的3条历史命令,命令是history 3 ,如图所示:

161.2、重新执行某条历史命令

在每一个执行过的Shell命令行前均有-一个编号,代表其在历史列表中的序号。如果想重新执行其中某一条命令,可以采用“!序号”的格式。

161.3、删除指定的历史命令

-d选项可以删除指定的历史命令

161.4、删除缓存中的历史命令

-c选项可以删除当前缓存中的所有历史命令,命令是history -c,如图所示:

161.5、查看系统可以保存的历史命令条数

系统中默认可以保存多少条历史命令呢?

这个参数值保存在环境变量HISTSIZE中,通过echo命令查看变量的值,可以看到默认是1000条

如何查看存放历史记录的文件,命令是echo $HISTSIZE,如图所示:

161.6、执行"history -w”命令可以将缓存中的历史命令保存到“.bash_history"文件中

161.7、执行“hisory-r" 命令可以将“.bash_history"文件中的历史命令读取到缓存中

因而如果要清除系统中所有的历史命令,那么既得执行“history c”清除缓存中的命令,也得清除“-/.bash_history" 文件中存放的命令。

162、如何查看存放历史记录的文件,命令是echo $HISTFILE,如图所示:

163、查看.bash_history文件内容,命令是cat .bash_history,如图所示:

history的内容存放在两个位置,文件和缓存中,缓存中的命令比文件中的少,原因是缓存中的命令不一定实时写入到文件中,所以缓存比文件的history历史记录少

164、help-查看命令帮助信息

Linux系统中有如此多的命令,如果在日常工作中遇到了一个不熟悉的Linux 命令,我们该如何了解它的作用,又

怎样才能知道它的可用选项呢?这就要用到帮助命令。

help命令可以查看内部命令的帮助信息。(外部命令不行)

as:查看cd和pwd的帮助信息,查看ls,find,grep的帮助信息

外部命令的帮助要通过,xx --help命令进行查看,如图所示:

165、man,命令-查看命令帮助手册

help命令查看的帮助信息较为简略,如果要查看更为详尽的帮助信息,可以使用man(manual)命令查看指定命令的帮助手册。

查看ls命令的帮助手册,命令是man xxx(man ls),如图所示:

166、clear命令--清屏

clear命令可以清除当前终端屏幕的内容,另外“Ctrl + l” 快捷键也可以起到相同的功能。

167、重定向和管道

重定向和管道是Linux系统进程间的一种通信方式,在系统管理中有着举足轻重的作用。

168、标准输入和输出

Linux系统中的绝大多数程序在运行时都要进行输入和输出的操作,输入操作告诉程序所要处理的数据,输出操作则将程序的处理结果显示出来。由于Linux中一切皆文件,因而Linux 系统也使用文件来描述系统的硬件设备等资源,在用户通过操作系统处理信息的过程中,包括以下几类交互设备文件: ​ 标准输入 (Sidin):默认的设备是键盘,文件描述符为0,命令从标准输入文件中读取在执行过程中需要的输入数据。 ​ 标准输出(Stdout) :默认的设备是显示器,文件描述符为1,命令将执行后的输出结果发送到标准输出文件。 ​ 标准错误(Stderr) ;默认的设备是显示器,文件描述符为2,命令将执行时的错误信息发送到标准错误文件。

标准输入、标准输出和标准错误默认使用了键盘和显示器作为关联的设备,因此当执行命令时会从键盘接收用户的输入字符,并将命令结果显示在屏幕上,如果命令执行错误,也会将错误信息显示在屏幕上反馈给用户。这样通过最普通的终端设备(由键盘和显示器等设备组成),用户就可以执行Linux命令,并完成最基本的输入输出操作。

一个Linux程序通常都是从标准输入中得到输入数据,并将正常输出数据输出到标准输出,锵错误信息输出到标准错误。

169、重定向实例: 将原本应该输出在屏幕上的命令输出到home.txt文件中,如果没有home.txt文件,那么就创建一个新文件,如果有该文件,那么就会将home.txt的文件覆盖为ls /home(查看home目录下的内容)的内容

170、>>追加重定向 ,>覆盖重定向

171、图片实例解析:

在某些情况下,我们希望能从键盘以外的其他输入设备读取数据,或者将数据送到显示器外的其他输出设备,这种情况就称为重定向。Shell 中输入输出重定向主要依靠重定向符号来实现,重定向的目标通常是一个文件。简单用一句话来概括即“使用输入重定向能够把文件导入到命令中,而输出重定向则是能够把原本要输出到屏幕的信息写入到指定文件中。 ​ 管道则为输入和输出重定向的结合,一个程序向管道的一端发送数据,而另一个程序从该管道的另一端读取数据,即“前一个命令要输出到屏幕的数据当作是后一个命令的标准输入。” 通过管道为不同命令之间的协同工作提供了一种机制, 管道的符号是“|”。

172、标准输出重定向

相比输入重定向,输出重定向使用的要更为频繁,我们一般所说的重定向大都是指输出重定向。 ​ 输出重定向是将命令的输出结果重定向一个文件中,而不是显示在屏幕上,在很多情况下可以使用这种功能,例如某个命令的输出很多,在屏幕上不能完全显示,那么可以将其重定向到一个文件中,命令执行完毕后再用文本编辑器打开这个文件。当想保存一个命令的输出时也可以使用这种方法。 ​ 输出重定向使用“>”或“>>”操作符。分别用于覆盖、追加文件内容。 ​ “>”重定向符后面指定的文件如果不存在,在命令执行中将建立该文件,并保存命令结果到文件中。“>” 重定向符后面指定的文件如果存在,命令执行时将清空文件的内容并保存命令结果到文件中。

如果“>”重定向的目标是一个已经存在的文件,那么就会将文件中的原有内容清空,所以在使用“>"重定向时应慎重,确保不会丢失重要数据。

”>>“重定向操作符可以将命令执行的结果重定向并追加到指定文件的末尾保存,而不覆盖文件中原有的内容。

灵活使用重定向,可以实现很多其它功能。

as:将1.xt 和2.txt这两个文本文件的内容合并到一个文件3.txt中,命令是cat 1.txt 2.txt > 3.txt,如图所示:

173、标准错误重定向

标准错误重定向就是将执行命令过程中出现的错误信息(如选项或参数错误等)重新定向保存到指定的文件中,而不是直接显示在屏幕上。由于标准错误输出的文件描述符是2,因而标准错误重定向的表示符号就是“2>”,其实之前在使用标准输入、标准输出重定向时省略了0、1 描述符。

as : 查看homeaaaa目录的内容,命令是ls /homeaaaa 2>home.txt,如图所示:

as:使用标准错误重定向,如果我们讲正确的命令进行标准错误重定向那么他会显示在屏幕上,而非文件中。

以ls /home 2> home.txt为例,如图所示:

174、输出一个文件,既包含错误信息也包含正确信息,命令是find / -user w1hg,如图所示:

175、将find / -user w1hg重定向到student.txt文件中,错误信息显示在屏幕上,正确信息在student.txt文件中

命令是find / -user w1hg > student.txt,验证:cat student.txt,如图所示:

176、将find / -user w1hg的错误信息重定向到student1.txt文件中,正确信息显示在屏幕上,错误信息在student1.txt文件中,命令是find / -user w1hg 2> student1.txt,验证:cat student.txt,如图所示:

177、dev是查看各种硬件文件,null是黑洞,如下:/dev/null使用实例

将find / -user w1hg的错误信息过滤掉,用dev目录下的null黑洞过滤所有的错误信息

命令是find / -user w1hg 2> /dev/null,如图所示:

178、脚本是批量处理各种命令,我们一般都需要最后的结果,不需要中间的过程,所以我们一般需要用/dev/null

179、&>,是将正确的和错误的信息全部重定向,实例:

180、管道符"|”

通过管道符“|”,可以把多个简单的命令连接起来实现更加复杂的功能。

管道符“|“用于连接左右两个命令,将”|“左边命令的执行结果作为“|”右边命令的输入,这样“|”就像一根管道一样

连接着左右两条命令,并在管道中实现数据从左至右的传输。

如ls命令与more命令通过管道符组合使用便可以实现目录列表分页显示的功能。

命令是ll -h /etc | more,如图所示:

as:统计etc目录下的passwd文件的行数,两种方式 wc -l /etc/passwd 和cat /etc/passwd | wc -l,如图所示:

两种命令的对比,第一种方式会显示行数和文件名,第二中方式只会显示行数,当我们对行数进行对比的时候,一般使用第二种方式,而不是第一种方式

181、查找etc目录下名字是net开头的,以conf结尾的文件(普通文件)有哪些

命令是find /etc -name "net*.conf" -type f,如图所示:

182、找etc目录下名字是net开头的,以conf结尾的文件(普通文件)有几个,输出个数

命令是find /etc -name "net*.conf" -type f | wc -l,如图所示:

183、如果我们要查找etc目录下ssh目录下的sshd_config文件中有用的行(正在生效的配置文件【配置项】),空白行和注释都不要,命令是grep -v "^#" /etc/ssh/sshd_config | grep -v "^$",与下图所示的命令结果一致:

184、 查看etc目录下包含net的文件的详细信息,人性化显示,命令是 ll -h /etc |grep 'net' ,如图所示:

185、取出etc目录下的passwd的文件的第10行,命令是 head /etc/passwd | tail -1,如图所示:

186、vi编辑器的使用

在Linux系统中一般都是使用配置文件来控制服务的运行,因而很多服务功能都需要通过修改配置文件来实现,在字符界面下要修改文件的内容大都要用到一个名叫vi (Visual Interface)编辑器的工具。vi是Linux系统中使用最广泛的文本编辑器,它可以在任何Shell、.字符终端或基于字符的网络连接中使用,能够高效地在文件中进行编辑、删除、替换、 移动等操作。 ​ vi是一个基于Shell的全屏幕文本编辑器,没有菜单,全部操作都基于命令。vim (VIImproved)是vi编辑器的增强版本,在vi编辑器的基础,上扩展了很多实用的功能,但是习惯,上也将vim称作vi。实际上我们平常使用的大都是这个vim.

vi编辑器本身的命令格式很简单:

vim [文件名]

如果指定的文件不存在,那么vim命令会创建文件并进入编辑状态,如果文件存在,则进入编辑状态对其进行编辑。

as: 将etc目录下的ssh目录下的sshd_config复制到当前目录下(波浪线表示的是root家目录)

查看当前目录下的所有目录和文件,对sshd_config文件进行编辑

命令分别是cp /etc/ssh/sshd_config ./ , ls ,vim sshd_config,如图所示:

sshd_config文件内容

使用:set nu可以对上述的文件加上行号,如下图所示:

187、vi编辑器的工作模式

由于vi是一个工作在字符界面下的编辑器,因此它的大部分功能都是通过命令或快捷键来实现的,操作相对于那些

图形界面下的编辑工具要复杂一些。但当用户熟悉了vi的常用命令之后,将会发现vi的使用也是十分灵活便捷的。

在vi编辑界面中有三种不同的工作模式;命令模式、 插入模式、末行模式,不同的工作模式所起到的功能不同。

命令模式:启动vi编辑器后默认进入命令模式,该模式下主要完成光标移动、字符串查找、删除、复制、粘贴等操

作。不论用户处于何种模式,只要按下Esc键,即可进入命令模式。

插入模式(输入模式):修改文件内容

末行模式:在命令模式下,按“:”键即可进入末行模式,该模式中可以保存文件、退出编辑器,以及对文件内容进行查找、替换等操作。处于末行模式时; vi 编辑器的最后一行会出现“:”提示符。

188、命令模式的基本操作

在命令模式下可以完成光标移动、字符串查找、删除、复制、[粘贴等操作。

188.1、光标移动: 在命令模式下,可以直接使用键盘方向键完成光标移动,也可以使用Page Up或Page Down向上或向下翻页。

光标移动快捷键:

188.2、复制,粘贴,删除快捷键:

188.3、文件内容查找

文件内容查找快捷键:

在命令模式下,按“/”键后输入指定的字符串,将从当前光标处开始向后进行查找。例如输入“sshd" ,回车后将查找文件中的“sshd" 字符串并高亮显示结果,光标自动移动到第一个查找结果处,按“n”键移动到下一个查找结果,按“N”键移动到上一个查找结果。 ​ “?”可以自当前光标处开始向上查找,用法与“/”类似。

188.4、撤销编辑

按u键可以撤销最近一次的操作,并恢复操作结果,默认情况下最多可以撤销50次操作。按U键可以撤销对当前行所做的所有编辑。

189、插入模式的基本操作

当我们需要对文件内容进行修改的时候,一般都需要转换到插入模式。从命令模式转换到插入模式的方法主要有以下三种:

i,在光标所在处输入; a,在光标所在处后方插入; o,在光标所在处下方打开一个新行,光标处在行首。 如果要直接在光标所在行插入内容,那么可以使用“i”或“a”,如果要在新起一行插入内容,那么推荐使用“o”。

190、末行模式的基本操作: 在命令模式下按“:”可以切换到末行模式,vi编辑器的最后一行将显示":”提示符,用户可以在该提示符后输入特定的末行命令。

190.1、保存退出vi编辑器

保存文件及退出vi编辑器:

“:w” 可以保存文件内容,如需要另存为其它文件,则需要指定新的文件名, “:w/roo/newfile”。 “q”可以退出vi编辑器,“:q!” 可以不保存强制退出。 ":wq"保存并退出,另外“x” 也可以同样实现保存并退出的功能。

191、文件打包与压缩

如果我们从网,上下载-些在Limux系统中使用的软件,往往下载到的是一些文件名后缀为“gz"、 ".bz2”、 ".xz"或是".tar.gz"、 ".tgz" 之类的压缩文件,这些文件都要先解压缩后才能安装使用。 ​ 在Linux中常用的打包压缩命令是tar,另外通过du命令可以查看目录或文件所占用的磁盘空间大小。以对压缩前后的文件大小进行对比。下面将介绍du和tar命令的使用方法。

192、du命令一查看目录或文件占用磁盘空间的大小

du (disk ysage)命令用于统计指定目录或文件所占磁盘空间的大小。

常用选项:

-h, 人性化显示容量信息,以K、M、G为单位显示统计结果(默认单位为KB)。

-s,查看目录本身的大小。s表示求和的意思,如果不加该选项,则会显示指定目录下所有子目录和文件的大小。

as:查看/etc/ssh/ssd_ config 文件的大小,命令是du /etc/ssh/sshd_config -h,如图所示。

注:linux的基本存放单位是block(块),不是扇区,block: 8个 扇区的组合,4KB。每 个扇区容量512B,0.5KB

挺高效率,使用块而不是扇区的原因,这也就是du命令查出的结果与ll -h不同

as:查看etc目录占用的磁盘空间,命令是du -hs /etc,如图所示:

as:查看/目录下的所有子目录和子文件的大小,命令是 du -hs /*,如图所示:

as:查看各种目录(空间)的使用率,命令是du -hT,如图所示:

193、tar命令--文件打包与压缩

Linux系统中的打包和压缩是两个分开的操作。文件打包就是将多个文件和目录合并保存为一个整体的包文件,以方便传输。压缩则可以减少打包好的包文件所占用的磁盘空间。 ​ Linux中常用的打包命令为tar (tape archive),常用的压缩命令有三个: gzip. bzip2、 xz, 用gzip压缩的文件通常使用后缀“.gz”,用bzip2压缩的文件通常使用后缀“.bz2",用xz压缩的文件则通常使用后缀“.xz”。 ​ 这三种压缩工具都是只能针对单个文件进行压缩与解压,所以通常都是先通过tar命令将多个文件或目录打包成一个包文件,然后再调用某种压缩工具进行压缩,如后缀为".tar.gz"、“.tgz" 和“.tar.bz2”的文件就属于这种先打包再压缩的文件。 ​ 在实际使用中,一般都是通过tar命令来调用gzip、bzip2压缩或解压,而很少去单独使用这些压缩命令。

193.1、打包压缩

tar命令本身只能对目录和文件进行打包,而并不进行压缩。

用tar命令进行打包或压缩时的格式为:

tar [选项] 打包或压缩后的文件名 需要打包的源文件或目录(目录)

命令中用到的选项的含义: -c,创建“.tar”格式的包文件,该选项不会对包文件进行压缩。 -v,显示命令的执行过程。该选项非必需,可根据情况选用。 -f,指定要打包或解包的文件名称,该选项必须放到选项组合的最后一位。

as:将/etc目录打包,并改名,改名为etc.tar2,命令是tar -cf etc.tar2 /etc,如图所示:

查看etc.tar2文件所占的磁盘空间大小,命令是du -h etc.tar2,如图所示:

“-z”选项表示调用gzip来压缩包文件

“-j”选项表示调用bzip2来压缩包文件

“-J”选项表示调用xz来压缩包文件

“-x”选项素示解开“tar”" 格式的包文件。

另外,通过“-t”选项可以在不解压的情况下查看压缩文件内都包括哪些内容。

as:将/etc目录打包压缩,并改名,改名为etc.tar.gzip,命令是tar -cf etc.tar.gzip /etc,如图所示:

as:用bzip2和xz压缩包文件的2中方式,实例:

xz最慢,压缩比例谁最高(用那种方式压缩文件,文件最小):xz

as:将etc.tar2文件进行解压缩,将压缩的那一个文件解压缩成多个文件(压缩文件的数目)

命令是 tar -xf etc.tar2,并用ls命令进行验证,如图所示:

as:将etc.tar.gzip文件解压文件,并指定它的存放路径(-C),命令是tar -zxf etc.tar.gzip -C /tmp/ ,如图:

as:解压其他文件,实例:

注:我们可以指定文件的类型,也可以不指定文件的类型(直接使用-xf命令)

as:查看etc.tar.xz文件的压缩文件的内容,命令是tar -tf etc.tar.xz | more

194、zip文件的压缩与解压

zip是一种被广泛使用的文件压缩格式,在CentOS系统中也可以对zip格式的文件进行压缩或者解压。压缩需要用到zip工具,解压需要使用unzip工具。

使用zip命令对home目录进行压缩,命令是 zip -r home.txt /home/*,如图所示:

unzip home.zip 可以对home.txt文件进行解压缩文件,-d可以指定文件存放位置,默认的位置是./

195、压缩与解压的注意事项

下面谈几个在压缩或解压时需要注意的问题。 ​ 首先是关于解压后斯生成的目录的命名。 ​ 在Linux中进行打包压缩时,无论所指定的压缩文件的名称是什么,把压缩文件解压之后生成的目录,都是自动沿用当初被压缩时的目录名称。 ​ 比如下面的命令,先将/home 目录打包压缩为test.tar.gz,然后再对test.tar.gz解压,解压后并不会生成名为test的目录,而是仍然使用home作为目录名称。

实例:

196、问什么在压缩文件的时候会出现那一条提示,因为路径的问题,为了不使路径覆盖原路径,生成一个新的

197、提取二进制文件中的文本信息

在隐写类题目中所给出的附件,很可能会是一一个二进制文件, 在这个二进制文件中会隐藏有一些文本信息, 而flag则很可能就隐藏在这些文本信息中。 如何提取二进制文件中的文本信息: 用hexdump或xxd命令可以查看二进制文件的内容。(-C)

用grep命令的- a选项可以在二进制文件中搜索文本信息。

strings命令可以直接将二进制文件中的所有文本信息都过滤出来,然后再结合grep命令以flag、key、ctf等作为关键字进行过滤,这种方式最为推荐。