1.强大好用的Shell
Shell是一个命令工具。Shell(也称终端或壳)充当的是人与内核(硬件)之间的翻译官,用户把一些命令“告诉”终端,它会调用相应的程序服务去完成某些工作。
现在红帽系统在内的许多主流Linux系统默认使用的终端是Bash解释器,它主要有以下4项优势:
①通过上下方向键来调取过往执行过的Linux命令;
②命令或参数仅需输入前几位就可以用Tab键补全;
③具有强大的批处理脚本;
④具有实用的环境变量功能。
2、执行查看帮助命令
Linux命令格式:
命令名称 [命令参数] [命令对象]
注意,命令名称 、命令参数、命令对象之间要用空格键隔开。
长格式 man --help
短格式 man -help
首先我们先拿man这个命令实现一下
切换到root管理员身份
打开Linux系统命令行终端(我这里使用的是8版本哈)
输入man man命令查看man命令自身的帮助信息(敲回车键即可)
man命令中常用按键以及用途
按键 | 用途 |
空格键 | 向下翻一页 |
PaGe down | 向下翻一页 |
PaGe up | 向上翻一页 |
home | 直接前往首页 |
end | 直接前往尾页 |
/ | 从上至下搜素某个关键词,如“/linux” |
? | 从上至下搜素某个关键词,如“?linux” |
n | 定位到下一个搜索到的关键词 |
N | 定位到上一个搜索到的关键词 |
q | 退出帮助文档 |
man命令帮助信息的结构意义
结构名称 | 代表意义 |
NAME | 命令的名称 |
SYNOPSIS | 参数的大致使用方法 |
DESCRIPTION | 介绍说明 |
EXAMPLES | 演示(附带简单的说明) |
OVERVIEW | 概述 |
DEFAULTS | 默认的功能 |
OPTIONS | 具体的可用选项(带介绍) |
ENVIRPNMENT | 环境变量 |
FILES | 用到的文件 |
SEE ALSO | 相关的资料 |
HISTORY | 维护历史与联系方式 |
常用系统工作命令
1、echo命令
echo命令用于在终端输出字符串或变量提取后的值,格式为:echo [字符串|$变量]
例如:把指定字符串“happy”输出到终端屏幕的命令为
[root@localhost ~]# echo happy
下面,我们使$变量的方式提取SHELL的值
[root@localhost ~]# echo $SHELL
2、date命令
date命令用于显示及设置系统的时间或日期
格式为:data [选项][+指定的格式]
date命令中参数及其作用
参数 | 作用 |
%t | 跳格[Tab键] |
%H | 小时(00-23) |
%I | 小时(00-12) |
%M | 分钟(00-59) |
%S | 秒(00-59) |
%j | 今年中的第几天 |
按默认格式查看当前系统时间的date命令如下
[root@localhost ~]# date
Sun Mar 14 22:42:03 EDT 2021
按照 年-月-日 小时:分钟:秒 的格式查看当前系统时间的date命令如下
[root@localhost ~]# date "+%Y-%m-%d %H:%M:%S"
2021-03-14 22:44:04
将系统的当前时间设置为2017年8月8日8点28分担date命令如下
[root@localhost ~]# date -s "20170808 8:28:00"
Tue Aug 8 08:28:00 EDT 2017
[root@localhost ~]# date
Tue Aug 8 08:28:36 EDT 2017
date查看今年是当年中的第几天
[root@localhost ~]# date "+%j"
220
3、reboot命令
reboot命令用于重启系统(由于重启计算机会涉及硬件资源的管理权限,只能使用root管理员来重启)
[root@localhost ~]# reboot
4、poweroff
poweroff命令用于关闭系统,该命令与reboot命令相同,都会涉及硬件资源的管理权限,因此只有root管理员才可以关闭电脑
[root@localhost ~]# poweroff
5、wegt命令
wegt命令用于在终端下载网络文件,格式为“wget[参数] 下载地址”
wegt命令参数及其作用
参数 | 作用 |
-b | 后台下载模式 |
-P | 下载到指定目录 |
-t | 最大尝试次数 |
-c | 断点续传 |
-p | 下载页面内所有资源,包括图片视频 |
-r | 递归下载 |
尝试使用wegt命令下载
6、ps命令
ps命令用于查看系统中的进程状态,格式为:“ps[参数]”
ps命令的参数以及作用
参数 | 作用 |
-a | 显示所有进程(包括其他用户进程) |
-u | 用户以及其他详细信息 |
-x | 显示没有控制终端的进程 |
Linux系统中时刻运行着许多进程,如果能够合理管理它们,则可以优化系统的性能。
有五种常见的进程状态,分别为运行,中断,不可中断,僵死和停止
R(运行):进程正在运行或在运行的队列中等待
S(中断):进程处于休眠中,当某个条件达成后或者接收到信号时,则脱离该状态
D(不可中断):进程不响应系统异步信号,即便用kill命令也不能将其中断
Z(僵死):进程已经终止,但是进程描述符依然存在,直到父进程调用wait4()系统函数后将进程释放
T(停止):进程收到停止信号后停止运行。
进程状态
USER | PID | %CPU | %MEM | VSZ | RSS | TTY | STAT | START | TIME | COMMAND |
进程所有者 | 进程ID | 运算器占有率 | 内存占用率 | 虚拟内存使用量(单位是KB) | 占用的固定内存量(单位是KB) | 所在终端 | 进程状态 | 被启动的时间 | 实际使用CPU的时间 | 命令名称与参数 |
7、top命令
top命令用于动态地监视进程活动与系统负载调信息
下图中每行的意义
第一行:系统时间,运行时间,登录终端数,系统负载(三个数值分别为1分钟,5分钟,15分钟内的平均值,数值越小意味着负载越低)
第二行:进程总数,运行中的进程数,睡眠中的进程数,停止的进程数,僵死的进程数
第三行:用户占用资源百分比,系统内核占用资源百分比,改变过优先级的进程资源百分比,空闲的资源百分比等
第四行:物理内存总量,内存使用量,内存空闲量,虚拟内存空闲量,已被提前加载的内存量
8、pidof命令
pidof命令用于查看某个指定服务进程的PID值,格式为:pidof【参数】【服务名称】
[root@localhost ~]# pidof sshd
1022
9、kill命令
kill命令用于终止某个指定PID的服务进程。
10、killall命令
killall命令用于终止某个指定名称的服务所对应的全部进程。
3、系统状态监测命令
1、ifconfig命令
ifconfig命令用于获取网卡配置与网络状态等信息
2、uname命令
uname命令用于查看系统内核与版本等信息
[root@localhost ~]# uname -a
Linux localhost.localdomain 4.18.0-80.el8.x86_64 #1 SMP Wed Mar 13 12:02:46 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
3、uptime命令
uptime命令用于查看系统的负载信息
[root@localhost ~]# uptime
23:33:26 up 34 min, 1 user, load average: 0.00, 0.00, 0.06
4、free命令
free命令用于显示当前系统中内存的使用量信息
[root@localhost ~]# free -h
内存总量 已用量 可用量 进程共享的内存量 磁盘缓存的内存量 可以用的内存量
total used free shared buff/cache available
Mem: 1.8Gi 1.2Gi 126Mi 14Mi 459Mi 415Mi
Swap: 2.0Gi 10Mi 2.0Gi
5、who命令
who命令用于查看当前登入主机的用户终端信息
[root@localhost ~]# who
root tty2 2021-03-14 23:00 (tty2)
登录的用户名 | 终端设备 | 登录到系统的时间 |
root | tty2 | 2021-03-14 23:00 (tty2) |
6、last命令
last命令用于查看所有系统的登录记录
7、history命令
history命令用于显示历史执行过的命令
8、sosreport命令
sosreport命令用于收集系统配置及构架信息并输出诊断文档。
[root@localhost ~]# sosreport
sosreport (version 3.6)
This command will collect diagnostic and configuration information from
this Red Hat Enterprise Linux system and installed applications.
An archive containing the collected information will be generated in
/var/tmp/sos.le34fxce and may be provided to a Red Hat support
representative.
Any information provided to Red Hat will be treated in accordance with
the published support policies at:
https://access.redhat.com/support/
The generated archive may contain data considered sensitive and its
content should be reviewed by the originating organization before being
passed to any third party.
No changes will be made to system configuration.
Press ENTER to continue, or CTRL-C to quit.
Please enter the case id that you are generating this report for []:
Setting up archive ...
Setting up plugins ...
Running plugins. Please wait ...
Finished running plugins
Creating compressed archive...
Your sosreport has been generated and saved in:
/var/tmp/sosreport-localhost-2021-03-14-odhuaxj.tar.xz
The checksum is: 645e5bd252bfd11b58875d49a169a209
Please send this file to your support representative.
4、工作目录切换命令
1、pwd命令
pwd命令用于显示用户当前所处的工作目录
[root@localhost ~]# pwd
/root
2、cd命令
cd命令用于切换工作路径,格式为:cd 【目录名称】
[root@localhost ~]# cd /etc
[root@localhost etc]#
此时,要返回上一层的目录1,可执行如下命令:
[root@localhost etc]# cd -
/root
[root@localhost ~]#
还可以通过下面的命令快速回到家目录
[root@localhost ~]# cd /etc
[root@localhost etc]# cd ~
3、ls命令
ls命令用于查看目录的文件信息,格式为“ls【选项】【文件】”
如果想要查看目录属性信息,则需要额外添加一个-d参数
[root@localhost ~]# ls -ld /etc
drwxr-xr-x. 135 root root 8192 Mar 14 22:59 /etc
5、文本文件编辑命令
1、cat命令
cat命令用于查看纯文本文件(内容比较少的),格式为“cat 【选项】【文件】”。
额外加-n参数,显示行号
2、more命令
more命令用于查看纯文本文件(内容较多的),格式为“more 【选项】文件”
3、head命令
head命令用于查看从未被文档的前N行,格式为“head 【选项】【文件】”
[root@localhost ~]# head -n 20 initial-setup-ks.cfg
4、tail命令
tail命令用于查看纯文本文档的后N行或持续刷新内容,格式为“tail 【选项】【文件】”
tail命令最强悍的功能是可以持续刷新一个文件的内容,当想要实时查看最新的日志文件时,这就特别有用,此时的命令格式为:tail -f 文件名
5、tr命令
tr命令用于替换文本文件中的字符,格式为 tr 【原始字符】【目标字符】
6、wc命令
wc命令用于统计指定文本的行数,字数,字节数,格式为 wc【参数】文本
wc参数以及作用
参数 | 作用 |
-l | 只显示行数 |
-w | 只显示单词数 |
-c | 只显示字节数 |
[root@localhost ~]# wc -l /etc/passwd
45 /etc/passwd
7、stat命令
stat命令用于查看文件的具体存储信息和时等信息,格式为“ stat 文件名称”
8、cut命令
cut命令用于按“列”提取文本字符,格式为“cut 【参数】文本”
9、diff命令
diff命令用于比较多个文本文档的差异
diff --brief 文件1 文件2 判断文件是否相同
diff -c 文件1 文件2 描述文件内容具体的不同
5、文件目录管理命令
1、touch命令
touch命令用于创建空白文件或设置文件的时间,格式为:“touch 【选项】【文件】”
在创建空白的文本文档方面,这个touch相当简捷。
参数 | 作用 |
-a | 仅修改“读取时间” |
-m | 仅修改“修改时间” |
-d | 同时修改atime和mtime |
我们通过Xshell远程连接虚拟机进程操作,方便快捷,不用频繁切换。
附上Xshell6的安装包,可能不是最新版本,自行更新也不费事哈。
链接:https://pan.baidu.com/s/1abe28wTAHsZShB3R9qWIvQ
提取码:z7q0
接下来我们简单实现touch的功能
建立一个空白文件
[root@localhost ~]# touch test
查看test文件的修改日期
我们写入一些内容后,继续查看时间
[root@localhost ~]# echo "happy" >> test
[root@localhost ~]# ls -l test
我们再次通过touch命令把修改后的文件时间设置成修改之前的时间
[root@localhost ~]# touch -d "2021-03-15 02:08" test
2、mkdir命令
mkdir命令用于创建空白的目录,格式为:“mkdir 【选项】 目录”
除了能创建单个空白目录之前,mkdir还能结合-p参数来递归创建出具有嵌套叠层关系的文件目录
[root@localhost ~]# mkdir test1
[root@localhost ~]# cd test1/
[root@localhost test1]# mkdir -p a/b/c/d
[root@localhost test1]# cd a
[root@localhost a]# cd b
[root@localhost b]#
3、cp命令
cp命令用于复制文件或目录,格式为“cp 【选项】源文件 目标文件”
在Linux系统中哦,复制操作具体分为三种情况:
①如果目标文件是目录,则会把源文件复制到该目录中;
②如果目标文件也是普通文件,则会询问是否要覆盖它;
③如果目标文件不存在,则执行正常的复制操作
cp命令的参数及其作用
参数 | 作用 |
-p | 保留原始文件的属性 |
-d | 若对象为“链接文件”,则保留该“链接文件”的属性 |
-r | 递归持续复制(用于目录) |
-i | 若目标文件存在则询问是否覆盖 |
-a | 相当于-pdr(p、d、r为上述参数) |
[root@localhost ~]# cp test testcp
4、mv命令
mv命令用于剪切文件或文件重命名,格式为:“mv 【选项】 源文件 【 目标路径|目标文件名】”
剪切操作不同于复制操作,因为它会默认把源文件删除掉,只保留剪切后的文件。如果在同一个目录中对一个文件进行剪切操作,其实也是对其进行重命名。
[root@localhost ~]# mv testcp one (看文件时间)
5、rm命令
rm命令用于删除文件或目录,格式为:“rm 【选项】文件”
删除文件时,系统会默认向您询问是否要执行删除操作,如果不想总是看到这种反复确认的信息,可在rm命令后跟上-f的参数来强制删除。另外想要删除一个目录,要在rm命令后面跟上一个-r参数才可以,否则删除不掉。
6、dd命令
dd命令用于按照指定大小和个数的数据块来复制文件或转移文件,格式为:“dd【参数】”
dd命令是一个比较有特色的一个命令,它能够让用户按照指定大小和个数的数据块来复制文件的内容。
dd命令的参数及其作用
参数 | 作用 |
if | 输入的文件名称 |
of | 输出的文件名称 |
bs | 设置每个“块”的大小 |
count | 设置要复制“块”的个数 |
7、file命令
file命令用于查看文件的类型。格式为:“file 文件名”
6,打包压缩与搜索命令
1、tar命令
tar命令用于对文件进行打包压缩或解压,格式为:“tar 【选项】【文件】”
tar命令的参数及其作用
参数 | 作用 |
-c | 创建压缩文件 |
-x | 解开压缩文件 |
-t | 查看压缩包内有那些文件 |
-z | 用Gzip压缩或解压 |
-j | 用bzip2压缩或解压 |
-v | 显示压缩或解压的过程 |
-f | 目标文件名 |
-p | 保留原始的权限和属性 |
-P | 使用绝对路径来压缩 |
-C | 指定解压到的目录 |
2、grep命令
grep命令用于1文本执行关键词搜索,并显示匹配的结果,格式为:“grep 【选项】【文件】”
grep命令的参数及其作用
参数 | 作用 |
-b | 将可执行的文件当做文本文件来搜索 |
-c | 仅显示找到的行数 |
-i | 忽略大小写 |
-n | 显示行号 |
-v | 反向选择——仅列出没有“关键词”的行 |
3、find命令
find命令用于按照指定条件来查找文件,格式为“find 【查找路径】寻找条件 操作”
在Linux系统中,搜索工作一般都是通过find命令来完成的,它可以使用不同的文件特性作为寻找条件(如文件名,大小,修改时间,权限等信息),一旦匹配成功则默认将信息显示到屏幕上。
find命令中的参数和作用
参数 | 作用 |
-name | 匹配名称 |
-perm | 匹配权限 |
-user | 匹配所有者 |
-group | 匹配所有组 |
-mtime -n +n | 匹配修改内容的时间 |
-atime -n +n | 匹配访问文件的时间 |
-ctime -n +n | 匹配修改文件权限的时间 |
-nouser | 匹配无所有者的文件 |
-newer f1 !f2 | 匹配比文件f1新但比f2旧的文件 |
-type b/d/c/p/l/f | 匹配文件类型 |
-size | 匹配文件大小 |
-prune | 忽略某个目录 |
-exec ··· {}\; | 后面可跟用于进一步处理搜索的命令 |
-nogroup | 匹配无所有组文件 |