上篇文章我们已经介绍了怎么在虚拟机上安装linux,带大家玩了一些小指令。接下来我们将介绍几个常用的命令。
一、shell
通常来讲,计算机硬件是由运算器、控制器、存储器、输入/输出设备等共同组成的,而让各种硬件设备各司其职且又能协同运行的东西就是系统内核。Linux系统的内核负责完成对硬件资源的分配、调度等管理任务。由此可见,系统内核对计算机的正常运行来讲是太重要了,因此一般不建议直接去编辑内核中的参数,而是让用户通过基于系统调用接口开发出的程序或服务来管理计算机,以满足日常工作的需要。
Shell(也称为终端或壳)充当的是人与内核(硬件)之间的翻译官,用户把一些命令“告诉”终端,它就会调用相应的程序服务去完成某些工作。现在包括红帽系统在内的许多主流Linux系统默认使用的终端是Bash(Bourne-Again SHell)解释器。
二、命令格式
命令名称 命令参数 命令对象
注意:命令名称 、命令参数、命令对象之间均有空格
命令对象一般是指要处理的文件、目录、用户等资源,而命令参数可以用长格式(例如 --help),也可以用短格式(例如 -h),两者分别用--与-作为前缀 ,参数值需要随不同的命令和需求情况而发生改变。接下来我们开始介绍指令。
① man(manual 手册、指南的缩写)
很多人常常拿到一个指令不知道是干嘛的,这时候就需要用到“man”这个指令了。为了更好演示man指令,我们需要切换到root身份下进行演示。在命令行终端输入man man来查看man指令自身的帮助信息。
man命令中常用按键以及用途:
按键 | 用处 |
空格键 | 向下翻一页 |
PaGe down | 向下翻一页 |
PaGe up | 向上翻一页 |
home | 直接前往首页 |
end | 直接前往尾页 |
/ | 从上至下搜索某个关键词,如“/linux” |
? | 从下至上搜索某个关键词,如“?linux” |
n | 定位到下一个搜索到的关键词 |
N | 定位到上一个搜索到的关键词 |
q | 退出帮助文档 |
执行了man man 指令之后是不是一脸懵逼。没关系,接下来让我们看一下man的结构以及意义
结构名称 | 代表意义 |
NAME | 命令的名称 |
SYNOPSIS | 参数的大致使用方法 |
DESCRIPTION | 介绍说明 |
EXAMPLES | 演示(附带简单说明) |
OVERVIEW | 概述 |
DEFAULTS | 默认的功能 |
OPTIONS | 具体的可用选项(带介绍) |
ENVIRONMENT | 环境变量 |
FILES | 用到的文件 |
SEE ALSO | 相关的资料 |
HISTORY | 维护历史与联系方式 |
②echo命令
echo命令用于在终端输出字符串或变量提取后的值,格式为“echo 字符串”或者“echo $变量”。演示如下:
③ date命令
date命令用于显示及设置系统的时间或日期,格式为“date [选项] [+指定的格式] ”。date常见的参数如下表所示:
参数 | 作用 |
%t | 跳格[Tab键] |
%H | 小时(00~23) |
%I | 小时(00~12) |
%M | 分钟(00~59) |
%S | 秒(00~59) |
%j | 今年中的第几天 |
演示如下:
按照默认格式查看当前系统时间的date命令如下所示:
[root@linuxprobe ~]# date Mon Aug 24 19:11:23 CST 2018
按照“年-月-日 小时:分钟:秒”的格式查看当前系统时间的date命令如下所示:
[root@linuxprobe ~]# date "+%Y-%m-%d %H:%M:%S" 2018-08-24 16:29:12
将系统的当前时间设置为2018年9月1日8点30分的date命令如下所示:
[root@linuxprobe ~]# date -s "20180901 8:30:00" Fri Sep 1 08:30:00 CST 2017
再次使用date命令并按照默认的格式查看当前的系统时间,如下所示:
[root@linuxprobe ~]# date Fri Sep 1 08:30:01 CST 2018
date命令中的参数%j可用来查看今天是当年中的第几天。这个参数能够很好地区分备份时间的新旧,即数字越大,越靠近当前时间。该参数的使用方式以及显示结果如下所示。
[root@linuxprobe ~]# date "+%j"
222
④ reboot命令
reboot命令用于重启系统。由于重启计算机这种操作会涉及硬件资源的管理权限,因此默认只能使用root权限来重启。
⑤ systemctl poweroff命令
systemctl poweroff命令用于关闭系统。该命令与reboot命令相同,都会涉及硬件资源的管理权限,因此默认只有root管理员才可以关闭电脑。
⑥ wget命令
wget命令用于在终端中下载网络文件,格式为“wget [参数] 下载地址”。
参数 | 作用 |
-b | 后台下载模式 |
-P | 下载到指定目录 |
-t | 最大尝试次数 |
-c | 断点续传 |
-p | 下载页面内所有资源,包括图片、视频等 |
-r | 递归下载 |
⑦ ps命令
ps命令用于查看系统中的进程状态,格式为“ps [参数]”。
参数 | 作用 |
-a | 显示所有进程(包括其他用户的进程) |
-u | 用户以及其他详细信息 |
-x | 显示没有控制终端的进程 |
⑧ top命令
top命令相当强大,能够动态地查看系统运维状态,完全将它看作Linux中的“强化版的Windows任务管理器”。演示如下:
⑨ pidof命令
pidof命令用于查询某个指定服务进程的PID值,格式为“pidof [参数] [服务名称]”。每个进程的进程号码值(PID)是唯一的,因此可以通过PID来区分不同的进程,演示如下:
⑩ kill命令
kill命令用于终止某个指定PID的服务进程,格式为“kill [参数] [进程PID]”。接下来,我们使用kill命令把上面用pidof命令查询到的PID所代表的进程终止掉
三、系统状态检测命令
① ifconfig命令
ifconfig命令用于获取网卡配置与网络状态等信息,格式为“ifconfig [网络设备] [参数]”。
使用ifconfig命令来查看本机当前的网卡配置与网络状态等信息时,其实主要查看的就是网卡名称、inet参数后面的IP地址、ether参数后面的网卡物理地址(又称为MAC地址),以及RX、TX的接收数据包与发送数据包的个数及累计流量。
② uname 命令参数
uname命令用于查看系统内核与系统版本等信息,格式为“uname [-a]”。在使用uname命令时,一般会固定搭配上-a参数来完整地查看当前系统的内核名称、主机名、内核发行版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统名称等信息。演示如下:
③ uptime命令
uptime可以显示当前系统时间、系统已运行时间、启用终端数量以及平均负载值等信息。平均负载值指的是系统在最近1分钟、5分钟、15分钟内的压力情况;负载值越低越好,尽量不要长期超过1。
④ free 命令
free用于显示当前系统中内存的使用量信息,格式为“free [-h]”。
⑤ who命令
who用于查看当前登入主机的用户终端信息,格式为“who [参数]”。分别是用户名,终端,登录系统的时间
⑥ history命令
history命令用于显示历史执行过的命令,执行history命令能显示出当前用户在本地计算机中执行过的最近1000条命令记录。
历史命令会被保存到用户家目录中的.bash_history文件中。Linux系统中以点(.)开头的文件均代表隐藏文件,这些文件大多数为系统服务文件,可以用cat ~/.bash_history命令查看其文件内容。使用history -c可以清空用户在linux系统上的历史记录。
四、与目录有关的命令
① pwd命令
pwd命令用于显示用户当前所处的工作目录。演示如下:
② cd命令
cd命令用于切换工作路径。
“cd -”命令返回到上一次所处的目录。
使用“cd..”命令进入上级目录。
使用“cd ~”命令切换到当前用户的家目录。
③ ls命令
ls命令用于显示目录中的文件信息,使用ls命令的“-a”参数看到全部文件(包括隐藏文件),使用“-l”参数可以查看文件的属性、大小等详细信息。
五、文件文本编辑指令
① cat命令
cat命令用于查看纯文本文件(内容较少的) 比如“cat test.txt”
② more命令
more命令用于查看纯文本文件(内容较多的)
③ head命令
head命令用于查看纯文本文档的前N行,指令head -n 20 test.txt 表示查看test.txt的前20行
④ tail命令
tail命令用于查看纯文本文档的后N行或持续刷新内容,指令tail -n 20 test.txt 表示查看test.txt的后20行
⑤ tr命令
tr命令用于替换文本文件中的字符,格式为“tr [原始字符] [目标字符]”。
例如命令“cat test.txt | tr [a-z] [A-Z]” 意思为 查看test.txt文件并里面的小写字母改成大写字母。
⑥ wc命令
wc命令用于统计指定文本的行数、字数、字节数,格式为“wc [参数] 文本”。
参数 | 作用 |
-l | 只显示行数 |
-w | 只显示单词数 |
-c | 只显示字节数 |
在Linux系统中,passwd是用于保存系统账户信息的文件,要统计当前系统中有多少个用户,可以使用下面的命令来进行查询
⑦ cut命令
cut命令用于按“列”提取文本字符,格式为“cut [参数] 文本”。 如果按列搜索,不仅要使用-f参数来设置需要看的列数,还需要使用-d参数来设置间隔符号。
命令 cat -d : -f 1 test.txt 表示以:为分隔符号提取test.txt文件的第一列内容
⑧ diff命令
diff命令用于比较多个文本文件的差异,格式为“diff [参数] 文件”。
在使用diff命令时,不仅可以使用--brief参数来确认两个文件是否不同,还可以使用-c参数来详细比较出多个文件的差异之处,这绝对是判断文件是否被篡改的有力神器 。
命令 diff --brief A.txt B.txt 表示比较A.txt与B.txt是否相同
命令 diff -c A.txt B.txt 用来描述文件具体的不同
六、文件目录管理命令
① touch命令
touch命令用于创建空白文件或设置文件的时间,格式为“touch [选项] [文件]”
参数 | 作用 |
-a | 仅修改“读取时间”(atime) |
-m | 仅修改“修改时间”(mtime) |
-d | 同时修改atime与mtime |
命令touch test.txt 表示创建一个test.txt文件
命令touch -d “2018-08-08” test.txt 表示修改 “修改时间”和“读取时间”为 08-08,
② mkdir命令
mkdir命令用于创建空白的目录,格式为“mkdir [选项] 目录”。
命令“mkdir test”表示创建了一个test目录。命令“mkdir test/test2/test3.txt” 表示创建了一个递推目录。
③ cp命令
cp命令用于复制文件或目录,格式为“cp [选项] 源文件 目标文件”。大家对文件复制操作应该不陌生,在Linux系统中,复制操作具体分为3种情况:
如果目标文件是目录,则会把源文件复制到该目录中;
如果目标文件也是普通文件,则会询问是否要覆盖它;
如果目标文件不存在,则执行正常的复制操作
cp命令的参数:
参数 | 作用 |
-p | 保留原始文件的属性 |
-d | 若对象为“链接文件”,则保留该“链接文件”的属性 |
-r | 递归持续复制(用于目录) |
-i | 若目标文件存在则询问是否覆盖 |
-a | 代表的是“all” ,相当于-pdr(p、d、r为上述参数) |
命令cp test.txt test2.txt 表示将test.txt文件复制到test2.txt文件中。
命令 cp /etc/passwd /bin/my 代表将/etc/passwd复制到/bin/my目录下
注意:如果出现 cp:omitting directory my 说明my目录下还有目录不能直接复制。
④ mv命令
mv命令用于剪切文件或将文件重命名,格式为“mv [选项] 源文件 [目标路径|目标文件名]”。
剪切操作不同于复制操作,因为它会默认把源文件删除掉,只保留剪切后的文件。如果在同一个目录中对一个文件进行剪切操作,其实也就是对其进行重命名
⑤ rm命令
rm命令用于删除文件或目录,格式为“rm [选项] 文件”。
在Linux系统中删除文件时,系统会默认向您询问是否要执行删除操作,如果不想总是看到这种反复的确认信息,可在rm命令后跟上-f参数来强制删除。另外,想要删除一个目录,需要在rm命令后面一个-r参数才可以,否则删除不掉
⑥ file命令
file命令用于查看文件的类型,格式为“file 文件名”。
七、打包压缩与搜索命令
①tar命令
tar命令用于对文件进行打包压缩或解压,格式为“tar [选项] [文件]” 。在Linux系统中,常见的文件格式比较多,其中主要使用的是.tar或.tar.gz或.tar.bz2格式
参数 | 作用 |
-c | 创建压缩文件 |
-x | 解开压缩文件 |
-t | 查看压缩包内有哪些文件 |
-z | 用Gzip压缩或解压 |
-j | 用bzip2压缩或解压 |
-v | 显示压缩或解压的过程 |
-f | 目标文件名 |
-p | 保留原始的权限与属性 |
-P | 使用绝对路径来压缩 |
-C | 指定解压到的目录 |
“tar -czvf 压缩包名称.tar.gz 要打包的目录”命令把指定的文件进行打包压缩;
相应的解压命令为“tar -xzvf 压缩包名称.tar.gz” 。演示如下:
命令tar czvf etc.tar.gz /etc 表示把/etc目录通过gzip格式进行打包压缩,并把文件命名为etc.tar.gz
命令 tar xzvf etc.tar.gz /root/etc 表示将打包后的压缩包文件指定解压到/root/etc目录中
② grep命令
grep命令用于在文本中执行关键词搜索,并显示匹配的结果,格式为“grep [选项] [文件]”。
命令 grep -n student /etc/passwd 表示找出/etc/passwd当中含有student的那行,并列出行号
命令 grep -n ‘^a’ test.txt 表示在test.txt中搜寻以a开头的那一行 ,列出行号
命令 grep -v student /etc/passwd 表示找出没有/etc/passwd当中没有student的那行,-v参数表示反选
③ find命令
find命令用于按照指定条件来查找文件,格式为“find [查找路径] 寻找条件 操作”。
命令 find /etc -name "host*" -print 表示找出/etc目录中所有以host开头的文件并打印出来
学至此,第二节已经结束了。如有需要, 请移驾第三节。