Linux 基础学习(第二节)

时间:2024-07-20 16:35:50

free命令用于显示当前系统中内存的使用量信息,格式为:“free [-h]”。

为了保证Linux系统不会突然卡住宕机,因此内存使用量应该是运维人员时刻要关注的数据啦,咱们可以使用-h参数来以更人性化的样式为咱们展示出内存的实时使用量信息(真实的输出值中不包括中文注释部分):

Linux 基础学习(第二节)

who命令用于查看当前登入主机的用户终端信息,格式为:"who [参数]"。

简单三个字母就可以快捷的显示出所有正在登录着本机的用户名称以及他们正在开启的终端信息:

Linux 基础学习(第二节)

last命令用于查看所有系统的登入记录,格式为:"last [参数]"。

下面使用last命令看到的本机登录信息,其实仅仅是调取了过往保存到系统中的日志文件罢了,篡改里面的文字其实也很简单,因此对于做“黑客”入侵行为审计时其实并不牢靠,只能仅供咱们参考而已:

Linux 基础学习(第二节)

history命令用于显示历史执行过的命令,格式为:“history [-c]”。

这条命令应该是我最喜欢的了,history命令默认会保存1000条执行过的命令,若要修改可直接编辑/etc/profile文件的HISTSIZE值。它能显示出当前用户在本地计算机中执行过的所有命令记录,您可以使用-c参数来清空里面的历史数据,还可以使用“!编码数字”的方式来重复执行某一次的命令:

Linux 基础学习(第二节)

Linux 基础学习(第二节)

历史命令会被保存到用户家目录中的".bash_history"文件中。Linux系统中以点(.)开头的文件均代表隐藏文件,一般会是系统文件。

Linux 基础学习(第二节)

清空该用户在本机中执行过命令的历史记录:

Linux 基础学习(第二节)

sosreport命令用于收集系统配置并诊断信息后输出结论文档,格式为:“sosreport”。
当咱们的Linux系统出现故障需要联系红帽厂商或其他技术支持时,大多数时候都要先使用这个SOS功能来简单收集计算机的状态和配置信息,以便让技术支持公司能够通过远程就解决了一些小问题,又或者让他们能对复杂问题能提前有些了解:

cat命令用于查看纯文本文件(较短的),格式为:“cat [选项] [文件]”。

Linux系统中有需要用于查看文本内容的命令,但其中每个命令又都有自己的特色特点,比如这个cat命令就是用于查看比较精简的文本内容的,这个其实是最好记的命令之一,因为cat在英语中是猫的意思,小猫咪是不是总给你一种娇小、可爱的感觉呢?如果您想看文本内容时还顺便显示行号的话,不妨再追加一个“-n”参数吧:

Linux 基础学习(第二节)

head命令用于查看纯文本文档的前N行,格式为:“head [选项] [文件]”。
处理文本内容时,谁都不能保证永远“循规蹈矩”的顺序往下看完,如果咱们只想看文本中前20行的内容呢:

Linux 基础学习(第二节)

tail命令用于查看纯文本文档的后N行或持续刷新内容,格式为:“tail [选项] [文件]”。
当然咱们还会遇到一种更奇葩的情况,比如需要去查看文本内容的最后20行,那么操作方法其实跟head命令是非常相似的,只需要执行“tail -n 20 文件名”命令就可以达到这样的目的。而tail命令最强悍的功能是用于持续刷新一个文件的内容,尤其是对于想要实时看到最新日志文件的时候特别有用:

Linux 基础学习(第二节)

tr命令用于替换文本文件中的字符,格式为:“tr [原始字符] [目标字符]”。

很多时候咱们想要快速的替换文本内容中的一些词汇,又或者将整个文本内容都进行替换,手工逐个替换真的太累了,而且对于处理大批量的内容非常不现实。此时咱们便可以先使用cat命令读取待处理的文本内容,然后通过管道符(第三章将为您细致讲解)将这些数据传递给tr命令做替换操作即可,例如咱们试试将文本内容完整替换成大写英文吧:

Linux 基础学习(第二节)

wc命令用于统计指定文本的行数、字数、字节数,格式为“wc [参数] 文本”。

每当我讲课提到这个命令的时候,总有同学联想到一些建筑,其实两者是毫无关系的。Linux系统中的wc用于统计文本的行数、字数、字节数等文本内容的命令,如果为了方便您去记忆,其实也可以联想到上厕所时真的好无聊,无聊到竟然数完了整张报纸上有多少行字。

参数 作用
-l 只显示行数
-w 只显示单词数
-c 只显示字节数

咱们使用“-l”参数来统计行数,而passwd是用于保存系统帐户信息的文件,因此下面的命令就是用于统计当前系统中有多少个用户的作用啦,感觉是不是很神奇:

Linux 基础学习(第二节)

stat命令用于查看文件的具体存储信息和时间等信息,格式“stat 文件名称”。

使用stat命令可以看到文件的存储信息和时间等信息,下面会显示出文件的三种时间状态(已加粗):Access、Modify、Change,咱们将在下面的touch命令中单独为您讲解:

Linux 基础学习(第二节)

cut命令用于按“列”来提取文本字符,格式为:“cut [参数] 文本”。

如何准确的提取出最想要的数据,这也是咱们在研究的技术方向,按基于“行”的方式来提取是比较简单的,只需要设置好匹配项目和行数即可,但是按列搜索的话不仅要使用“-f”参数来设置需要看的列数,还必须使用“-d”参数来设置间隔符号,因为passwd是用于保存用户信息数据的文件,而每一项值都是通过冒号来间隔(见下面head命令的输出演示),因此咱们来尝试下提取出passwd文件中的用户名信息吧:

Linux 基础学习(第二节)

diff命令用于比较多个文本文件的差异,格式为:"diff [参数] 文件"。

咱们不仅可以使用“--brief”参数来仅仅确认两个文件是否不同,还可以使用“-c”参数来详细比较出多个文件的差异之处,这绝对是判断文件是否被篡改的有力神器。例如先查看下两个文件的内容,然后进行比较:

Linux 基础学习(第二节)

使用详细的上下文输出格式来描述文件内容具体的不同:

Linux 基础学习(第二节)

2.7 文件目录管理命令

您现在学习的基础命令就像是搬砖打地基,虽然表面上暂时还看不到明显的战绩,但其实各位的内功已经非常雄厚了。对于日常的工作来说,一定要掌握对文件的创建、修改,复制、剪切、更名与删除等操作。

touch命令用于创建空白文件与设置文件的各种时间,格式为:“touch [选项] [文件]”。

这个touch命令可真的是特别好用,它能够为咱们创建出空白的文本文件,但这实在太简单不需要去讲,例如“touch linuxprobe”这样就可以创建出一个空白的名为linuxprobe的文本文件,而有难度的操作主要是用于设置文件内容的修改时间(mtime)、文件权限或属性的更改时间(ctime)与文件的读取时间(atime)。

咱们可以在修改一个文件前先查看下文件的修改时间,然后再通过touch命令将修改后的文件时间设置伪装成自己没有动过的一样,很多黑客就会这么做呢:

参数 作用
-a 仅修改“访问时间”(atime)
-m 仅修改“更改时间”(mtime)
-d 同时修改atime与mtime

Linux 基础学习(第二节)

mkdir用于创建空白的文件夹,格式为:“mkdir [选项] 目录”。

在Linux系统中文件夹应该是最常见的文件类型之一,除了一般的创建单个目录操作外,咱们还可以使用“-p”参数来递归创建出具有嵌套叠层关系的文件目录。

Linux 基础学习(第二节)

rm命令用于删除文件或目录,格式为:“rm [选项] 文件”。

在Linux系统中删除文件时会默认再向您询问是否要执行删除操作,如果不想总看到这种反复的确认信息,您可以使用“-f”参数来直接强制删除,另外想要删除一个目录文件夹的话就需要再追加一个“-r”参数才可以,否则是删除不掉的,例如咱们来尝试删除下刚刚那两个文件吧:

Linux 基础学习(第二节)

dd命令用于指定大小的拷贝文件或指定转换文件,格式为:“dd [参数]”。

dd命令是个比较重要且具有特色的一个命令,它能够让用户指定数据块的大小和个数来复制一个文件的内容,当然如果您愿意的话还可以在复制过程中转换其中的数据。Linux系统中有一个叫做/dev/zero的设备文件,每次讲课解释起来都感觉有点哲学理论的色彩,因为它不会占用您的系统存储空间,但里面却可以保存有无穷无尽的数据,一般用来搭配dd命令来生成出来一个指定大小的文件是再好不过的了。

参数 作用
if 输入的文件名称。
of 输出的文件名称。
bs 设置每个“块”的大小。
count 设置要拷贝“块”的个数。

Linux 基础学习(第二节)

dd命令也绝对不仅限于复制文件这么简单,如果您想把一个光盘设备只做成iso格式的镜像文件,在Windows系统中一定免不了要用到第三方的很多软件才可以,但咱们可以直接使用这个dd命令来复制并压制光盘设备变成一个可立即使用的iso镜像哦:

Linux 基础学习(第二节)

file命令用于查看文件的类型,格式为:“file 文件名”。

如此看来在Linux系统中文本、目录、设备等等这些一切都会可以被统称为文件,而咱们一般又不能单凭后缀就知道具体的文件类型,这时就可以用file命令来查看下啦~

Linux 基础学习(第二节)

tar命令用于对文件打包压缩或解压,格式为:“tar [选项] [文件]”。

Windows系统中最常见的压缩格式是.rar与.zip吧,而Linux系统中常见的格式比较多,但主要使用的是.tar或.tar.gz或.tar.bz2格式,同学们不用担心格式好多而记不住,其实这些大部分都是由tar命令来完成的,我来把最重要的几个参数讲给你们下,首先“-c”参数是用于创建压缩文件的,“-x”参数是用于解压文件的,因此这两个不能同时放一起使用,其次“-z”参数是指定使用Gzip格式来压缩解压文件,“-j”参数是指定使用bzip2参数来压缩解压文件,解压时候咱们则是根据文件的后缀来决定是何种格式参数,而有些打包操作要数个小时,屏幕没有输出的话你一定会怀疑电脑有没有死机了,也不好判断打包的进度情况,非常推荐使用“-v”参数来不断显示压缩或解压的过程给用户,“-C”参数用于指定要解压到的那个指定的目录,而“-f”参数特别重要,它必须放到参数的最后一位,代表要压缩或解压的软件包名称。因此平时我会一般使用“tar -czvf 压缩包名称.tar.gz 要打包的目录”命令来将指定的文件来打包,解压的话则是“tar -xzvf 压缩包名称.tar.gz”命令,让咱们来逐个演示下打包压缩与解压的操作吧。
使用tar命令将/etc目录内文件通过gzip格式进行打包压缩,并将文件命名为etc.tar.gz:

Linux 基础学习(第二节)

将刚刚打包的压缩包文件指定解压到/root/etc目录中:

Linux 基础学习(第二节)

grep命令用于对文本内容进行关键词的搜索匹配,格式为:“grep [选项] [文件]”。

咱们可以把grep命令当作是用途最广泛的文本搜索匹配工具,参数虽然很多但基本是用不到的,我用将近七年的工作和教学经验提出本书籍核心“去掉不实用”的写作理念绝对不是乱说,一名Linux讲师如果写书的水平只能停留在“技术的搬运工”而不能成为一名对真正优质技术知识的提炼者,那绝对会害了一大波学生,因此刘遄老师在这里只讲两个最常用的参数,只要会使用“-n”参数显示搜索到信息的行号,使用“-v”参数用于反选信息(即没有包含关键词的所有信息行)就几乎能完成你以后80%的工作需要,至于其他上百个参数,以后万一工作遇到了,再来用“man grep”命令查一下也来得及。
Linux系统中的/etc/passwd文件是保存着所有用户信息的文件,而一旦用户的登录终端被设置成“/sbin/nologin”则不再允许登录系统,因此咱们可以通过使用grep命令来匹配出当前系统中所有不允许登录系统的用户信息:

Linux 基础学习(第二节)

find命令用于查找文件,格式为:“find [查找路径] 寻找条件 操作”。

我在书中反反复复的提到“Linux系统中的一切都是文件”,接下来您就要感受到这份力量了。咱们在Linux系统中的搜索工作一般都是通过find命令来完成的,它可以根据不同的文件特性来做为匹配项(如文件名、大小、修改时间、权限等信息),一旦匹配到了则会默认为用户显示到屏幕上来,基础的匹配项目请见下表即可,我主要讲解下“--exec”参数重要的作用,这个参数是用于将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 匹配文件的大小(+50k查找超过50k的文件,而-50k则代表查找小于50k的文件)
-prune 忽略某个目录
-exec {} \; 后面可接对搜索到结果进一步处理的命令(下面会有演示)