Linux就该这么学-学习笔记(二)

0x01 强大好用的shell

计算机硬件是由运算器、控制器、存储器、输入/输出设备等共同组成的,而让各种硬件设备各司其职且又能协同运行的东西就是系统内核。Linux系统的内核负责完成对硬件资源的分配、调度等管理任务。

Bash解释器的四大优势:

1.通过上下方向键来调取过往执行过的Linux命令;

2.命令或参数仅需输入前几位就可以用Tab键来补全;

3.具有强大的批处理脚本;

4.具有实用的环境变量功能。

0x02 执行查看帮助命令

在Linux中,不清楚某个命令的具体用法,man一下即可。当然也可以用man man来查看man命令的使用方法。

0x03 常用系统工作命令

1.echo命令

简单的输出命令,例如echo hello world或者echo $SHELL

2.date命令

date命令用于显示及设置系统的时间或日期,格式为“date [选项] [+指定的格式]”。

date “+%Y-%m-%d %H:%M:%S”

输出为

2020-01-23 14:50:48

又或者可以使用

date -s "20200123 8:30:00"

来设置自己想要的时间。而date “+%j”则可以知道今天是这一年的第几天。

3.reboot命令

用于重启系统,其格式为reboot。

该命令的执行默认需要管理员权限才能执行,因为重启计算机会涉及硬件资源的管理权限。

4.poweroff命令

用于关闭系统,其格式为poweroff。

该命令同样需要管理员权限,原因和reboot一样。

5.wget命令

用于在终端中下载网络文件,格式为“wget [参数] 下载地址”。

参数如下:

-b:后台下载模式

-P:下载到指定目录

-t:最大尝试次数

-c:断点续传

-p:下载页面内所有资源,包括图片、视频等。

-r:递归下载。

6.ps命令

用于查看系统中的进程状态,格式为“ps [参数]”

参数如下:

-a:显示所有进程

-u:用户以及其他详细信息

-x:显示没有控制终端

在Linux系统中,进程有5种状态,分别为运行、中断、不可中断、僵死与停止。

运行(R):进程正在运行或在运行队列中等待。

中断(S):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该状态。

不可中断(D):进程不响应系统异步信号,即便用kill命令也不能将其中断。

僵死(Z):进程已经终止,但进程描述符依然存在,直到父进程调用wait4()系统函数后将进程释放。

停止(T):进程收到停止信号后停止运行。

7.top命令

用于动态地监视进程活动与系统负载等信息,其格式为top。

8.pidof命令

用于查询某个指定服务进程的PID值,格式为“pidof [参数] [服务名称]”。

每个进程的PID值是唯一的,所以可以通过PID值来区分不同的进程。

9.kill命令

用于终止某个指定PID的服务进程,格式为“kill [参数] [进程PID]”。

10.killall命令

用于终止某个指定名称的服务所对应的全部进程,格式为“killall [参数] [进程名称]”。

注:在实际环境中,某些命令会不断地往终端屏幕上输出信息,从而影响后续命令的输入。可以在执行命令时,在末尾 加上一个&符号,命令就会进入系统后台运行。

0x04 系统状态检测命令

1.ifconfig命令

用于获取网卡配置与网络状态等信息,格式为“ifconfig [网络设备] [参数]”

2.uname命令

用于查看系统内核与系统版本等信息,格式为“uname [-a]”

注:使用uname命令一般会搭配上-a参数来完整地查看当前系统的内核名称、主机名、内核发行版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统名称等信息。另外就是,如果需要查看当前系统版本的详细信息,则可以通过查看redhat-release文件。

cat /etc/redhat-release

3.uptime命令

用于查看系统的负载信息,格式为uptime。

4.free命令

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

5.who命令

用于查看当前登入主机的用户终端信息,格式为“who [参数]”

6.last命令

用于查看所有系统的登录记录,格式为“last [参数]”

这些登录记录是以日志文件的形式保存在系统中的,因此黑客可以很轻易就对内容进行修改。

7.history命令

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

注:history默认显示当前用户在本地计算机中执行过的1000条命令,如果觉得1000条不够,可以去修改/etc/profile文件中的HISTSIZE变量值。而history -c则会清空当前用户在本地计算机执行的Linux命令历史记录信息。而Linux命令的历史记录保存在home目录中的.bash_history文件中,带.点的文件都是隐藏文件,所有可以通过cat命令来查看。

8.sosreport命令

用于收集系统配置及架构信息并输出诊断文档,格式为“sosreport”

0x05 工作目录切换命令

工作目录指的是用户当前在系统中所处的位置。

1.pwd命令

用于显示用户当前所处的工作目录,格式为“pwd [选项]”

2.cd命令

用于切换工作路径,格式为“cd [目录名称]”

注:“cd -”返回到上一次所处的目录。“cd..”进入上级目录。“cd ~”切换到当前用户的home目录。“cd ~username”切换到其他用户的home目录。

3.ls命令

用于显示目录中的文件信息,格式为“ls [选项] [文件]”,一般使用ls或者ls -al就可以了。

参数:

-a:查看全部文件(包括隐藏文件)

-l:查看文件的属性、大小等详细信息

-d:查看目录属性信息

例:查看/etc目录的权限和属性信息

ls -ld /etc

0x06 文本文件编辑命令

1.cat命令

用于查看纯文本文件(内容较少的文件),格式为“cat [选项] [文件]”。如果想要在查看文件的时候顺便显示行号,可以使用-n参数。

2.more命令

用于查看纯文本文件(内容较多的文件),格式为“more [选项] 文件”。如果使用了more命令,可以使用空格或回车键进行向下翻页。

3.head命令

用于查看纯文本文档的前N行,格式为“head [选项] [文件]”

例:查看文件内容的前20行

head -n 20 文件名

4.tail命令

用于查看纯文本文档的后N行或持续刷新内容,格式为“tail [选项] [文件]”。使用方法和head基本一样,只是tail命令是查看后N行的。

注:tail命令最强悍的功能是可以持续刷新一个文件的内容,当想要实时查看最新日志文件时,使用“tail -f 文件名”。

5.tr命令

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

例:将某个文本内容中的英文全部替换为大写

cat 文件名 | tr [a-z] [A-Z]

6.wc命令

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

参数:

-l:只显示行数

-w:只显示单词数

-c:只显示字节数

例:统计passwd文件中有多少个用户

wc -l /etc/passwd

7.stat命令

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

8.cut命令

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

例:提取passwd文件按以冒号(:)为间隔符号的第一列内容

cut -d: -f1 /etc/passwd

9.diff命令

用于比较多个文本文件的差异,格式为“diff [参数] 文件”

参数:

--brief:显示比较后的结果,判断文件是否相同

-c:显示文件内容的具体不同

0x07 文件目录管理命令

1.touch命令

用于创建空白文件或设置文件的时间,格式为“touch [选项] [文件]”

简单的touch linux,便可以创建一个名为linux的空白文件。

参数:

-a:仅修改“读取时间”(atime)

-m:仅修改“修改时间”(mtime)

-d:同时修改atime与mtime

2.mkdir命令

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

mkdir linux便可以创建一个名为linux的目录。

使用参数-p还能创建出具有嵌套叠层关系的文件目录

例如mkdir -p a/b/c/d/e

3.cp命令

用于复制文件或目录,格式为“cp [选项] 源文件 目标文件”

复制操作有三种情况:

a.如果目标文件是目录,则会把源文件复制到该目录

b.如果目标文件也是普通文件,则会询问是否要覆盖它

c.如果目标文件不存在,则会执行正常的复制操作

参数:

-p:保留原始文件的属性

-d:若对象为“链接文件”,则保留该“链接文件”的属性

-r:递归持续复制(用于目录)

-i:若目标文件存在则询问是否覆盖

-a:相当于-pdr

4.mv命令

用于剪切文件或将文件重命名,格式为“mv [选项] 源文件 [目标路径|目标文件名]”

mv命令默认会将源文件进行删除。

5.rm命令

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

我一般使用的是rm -rf 文件名。真的美滋滋。

6.dd命令

用于按照指定大小和个数的数据块来复制文件或转换文件,格式为“dd [参数]”

参数:

if:输入的文件名称

of:输出的文件名称

bs:设置每个“块”的大小

count:设置要复制“块”的个数

7.file命令

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

0x08 打包压缩与搜索命令

1.tar命令

用于对文件进行打包压缩或解压,格式为“tar [选项] [文件]”

参数:

-c:创建压缩文件

-x:解开压缩文件

-t:查看压缩包内有哪些文件

-z:用Gzip压缩或解压

-j:用bzip2压缩或解压

-v:显示压缩或解压的过程

-f:目标文件名

-p:保留原始的权限与属性

-P:使用绝对路径来压缩

-C:指定解压到的目录

2.grep命令

用于在文本中执行关键词搜索,并显示匹配的结果,格式为“grep [选项] [文件]”

参数:

-b:将可执行文件(binary)当作文本文件(text)来搜索

-c:仅显示找到的行数

-i:忽略大小写

-n:显示行号

-v:反向选择--仅列出没有“关键词”的行

注:其他的参数在以后如果使用到,可以使用man grep来进行查询。

3.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 ......{} \;:后面可跟用于进一步处理搜索结果的命令

注:如果需要搜索权限中包括SUID权限的所有文件,只需要在-perm后面跟一个-4000即可。

 

需要了解的问题:

1.在RHEL7系统及众多的Linux系统中,最常使用的Shell终端是什么?

答:Bash(Bourne-Again SHell)解释器。

2.执行Linux系统命令时,添加参数的目的是什么?

答:为了让Linux系统命令能够更贴合用户的实际需求进行工作。

3.Linux系统命令、命令参数及命令对象之间,普遍应该使用什么来间隔?

答:应该使用一个或多个空格进行间隔。

4.请写出用echo命令把SHELL变量值输出到屏幕终端的命令。

答:echo $SHELL。

5.简述Linux系统中5种进程的名称及含义?

答:在Linux系统中,进程有5种状态,分别为运行、中断、不可中断、僵死与停止。

运行(R):进程正在运行或在运行队列中等待。

中断(S):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该状态。

不可中断(D):进程不响应系统异步信号,即便用kill命令也不能将其中断。

僵死(Z):进程已经终止,但进程描述符依然存在,直到父进程调用wait4()系统函数后将进程释放。

停止(T):进程收到停止信号后停止运行。

6.请尝试使用Linux系统命令关闭PID为5529的服务进程。

答:执行kill 5529即可;若知道服务的名称,使用killall命令即可关闭。

7.使用ifconfig命令查看网络状态信息时,需要重点查看的4项信息分别是什么?

答:这4项重要信息分别是网卡名称、IP地址、网卡物理地址以及RX/TX的收发流量数据大小。

8.使用uptime命令查看系统负载时,对应的负载数值如果是0.91、0.56、0.32,那么最近15分钟内负载压力最大的是哪个时间端?

答:通过负载数值可以看出,最近1分钟内的负载压力是最大的。

9.使用history命令查看历史命令的执行记录时,命令前面的数字除了排序外还有什么用处?

答:还可以用“!数字”的命令格式重复执行某一次的命令记录,从而避免了重复输入较长命令的麻烦。

10.若想查看的文件具有较长的内容,那么使用cat、more、head、tail中的哪个命令最合适?

答:文件内容较长,使用more命令;反之使用cat命令。

11.在使用mkdir命令创建有嵌套关系的目录时,应该加上什么参数呢?

答:-p递归迭代参数

12.在使用rm命令删除文件或目录时,可使用哪个参数来避免二次确认呢?

答:-f参数。

13.若有一个名为backup.tar.gz的压缩包文件,那么解压的命令应该是什么?

答:tar -xzvf backup.tar.gz

14.使用grep命令对某个文件进行关键词搜索时,若想要进行文件内容反选,应使用什么参数?

答:-v参数。

posted @ 2020-01-26 18:33  Paddling  阅读(554)  评论(0编辑  收藏  举报