四、Linux常用命令及使用技巧
本章重点讲述Linux命令的使用,命令是学习Linux必须熟练掌握的一部分,Linux下的命令大概有1000个,而常用的命令只有100个左右,这些常用命令需要灵活掌握。虽然Linux的各个发行版大同小异,但是常用命令基本相同,因此只要掌握了常用的Linux命令,就能融汇贯通各个Linux版本了。
Linux下的shell简介
什么是shell
Unix shell,一种壳层与命令行界面,是UNIX操作系统下传统的用户和计算机的交互界面。第一个用户直接输入命令来执行各种各样的任务。
普通意义上的shell就是可以接受用户输入命令的程序。它之所以被称作shell是因为它隐藏了操作系统低层的细节。同样的Unix下的图形用户界面GNOME和KDE,有时也被叫做“虚拟shell”或“图形shell”。
Unix操作系统下的shell既是用户交互的界面,也是控制系统的脚本语言。当然在这点也有别于Windows下的命令行,虽然也提供了很简单的控制语句。在Windows操作系统下,可能有些用户从来都不会直接的使用shell,然而在Unix系列操作系统下,shell仍然是控制系统启动、X Window启动和很多其他实用工具的脚本解释程序。
shell 语法
Linux下的各种shell的主要区别在于命令行的语法对于一些普通的命令,各个shell版本的语法基本相同,只有在编写一个shell脚本或者使用一些shell高级特性的时候,各个版本shell的差异才会显示出来。
shell语法分析是指shell对命令的扫描处理过程,也就是,把命令或者用户输入的内容分解成要处理的各个部分的操作,在Linux系统下,shell语法分析包含很多内容,如重定向、文件名扩展和管道等
shell语法格式
用户登陆系统后,shell命令行启动。shell遵循一定的语法格式将用户输入的命令进行分析解释并传递给系统内核。shell命令的一般格式为:
command [option] [arguments]
解释:
command:表示命令的名称。
options: 表示命令的选项。
arguments: 表示命令的参数。
根据习惯,我们一般把具有以上格式的字符串称为命令行。命令行是用户与shell之间对话的基本单位;
在命令行中,选项是包含一个或多个字母的代码,主要用户改变命令的执行方式。一般在选项前面有一个“-”符号;
[root@localhost ~]# ls -a
shell通配符
通配符注定要为了方便用户对文件或者目录的描述,例如,当用户需要以“.sh”结尾的文件时,使用通配符就能很方便地实现。各个版本的shell都有通配符,这些通配符是一些特殊字符,用户可以在命令行的参数中使用这些字符,进行文件名或者路径名的匹配。shell将把与命令行中指定的匹配规则符合的所有文件名或者路径名作为命令的参数,然后执行这个命令。
bash中常见的通配符有“*”、“?”、“[]”。
“*“ 匹配任意一个或多个字符
[root@localhost ~]# ls *.txt
解释:
列出当前目录所有以”.txt”结尾的文件
”?“ 匹配任意单一字符
[root@localhost ~]# ls ab?.txt
解释:
列出当前目录下ab开头,随后的一个字母是任意字符,最后以”.txt”结尾的文件。
”[]“ 匹配任何包含在方括号内的单字符
[root@localhost ~]# ls [abc]*.txt
解释:
列出当前目录下以a、b或c开头,租后以“.txt”结尾的文件。
shell重定向
Linux下系统打开多个文件,即标准输出、标准输出和标准错误输出。用户的shell将键盘设为默认的标准输入,默认的标准输出和标准错误输出为屏幕。也就是,用户从键盘输入命令,然后偶将结果和错误消息输出到屏幕。
所谓的重定向,就是不适用系统默认的标准输入/输出,而是重新指定,因此重定向分为输入重定向、输出重定向和错误输出重定向,要实现重定向就需要了解重定向操作符,shell就是根据重定向操作符来决定重定向操作的。
输入重定向
输入重定向用于改变命令的输入源,利用输入重定向,就可以将一个文件的内容作为命令的输入,而不从键盘输入。
用于输入重定向的操作符有“<”和”<<”
例如:
[root@localhost ~]# wc -l < /etc/hosts 2
输出重定向
输出重定向不是将命令的输出结果在屏幕,而是输入到一个指定的文件内。
用于输出重定向的操作符有“>”和“>>”
例如:
[root@localhost ~]# ls > a.txt
结果:
[root@localhost ~]# cat a.txt anaconda-ks.cfg a.txt
错误重定向
错误重定向和标准输出重定向一样,可以使用操作符”2>”和”2>>”实现对错误输出的重定向。
例如:
[root@localhost ~]# ls a.txt b.txt 2> error.txt a.txt
输出结果:
[root@localhost ~]# cat error.txt ls: 无法访问b.txt: 没有那个文件或目录
shell的管道
管道可以把很多的命令连接起来,可以把第一个命令的输入当作第二个命令的输出,第二个命令的输出可以当作第2个命令的输入,以此类推,因此,管道的作用就是把一个命令的输出当作下一个命令的输入,而不经过中间文件。
通过管道符“|”可以建立管道连接。
例如:
[root@localhost ~]# cat error.txt | wc -l 1
shell中的引用
在bash中的很多特殊字符,这些字符本身就具有特殊含义,Linux中使用“引用”技术来忽略这些字符的特殊含义,引用技术就是通知shell将这些特殊字符当作普通字符处理。
shell中用于应用的字符有转义字符“\”、单引号” ‘ “、双引号“ “” ”。
shell的自动补全命令
自动补全命令行是bash一个简单而且使用的功能,自动补全命令行也就是在输入命令时不必把命令全部输入,shell就能智能判断用户所要输入的命令。
基础命令
2.1 system
uname 命令
功能描述:
uname命令显示操作系统的相关信息
语法格式:
uname [OPTION]
选项:
-a 显示操作系统全部信息
-m 显示系统CPU架构
-s 显示操作系统类型
-r 显示操作系统内核版本
-n 显示操作系统的主机名
示例:
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
uptime 命令
功能描述:
uptime命令用来输出系统任务队列信息
语法格式:
uptime [options]
选项:
-p, --pretty 显示运行时间
-h, --help display this help and exit
-s, --since 显示系统时间
-V, --version output version information and exit
hostname命令
功能描述:
hostname 显示系统主机名
语法格式
hostname [options] {hostname|-F file}
选项:
-a,别名
-A,--all-fqdns所有长主机名(FQDN)
-b,--boot设置默认主机名(如果没有)
-d,--domain DNS域名
-f,-fqdn,-long长主机名(FQDN)
-F,--file从给定文件中读取主机名或NIS域名
-i,--ip-address主机名的地址
-I,--all-ip-address主机的所有地址
-s,--short短主机名
-y,-yp,-nis NIS / YP域名
示例:
i
查看系统主机名
[root@localhost ~]# hostname
localhost.localdomain
临时修改主机名
[root@localhost ~]# hostname test.example.com
[root@localhost ~]# bash
[root@test ~]#
last命令
功能描述:
显示最近登陆用户的列表
语法:
last,lastd [options]
示例:
查看系统重启历史
[root@test ~]# last reboot
ls命令
功能说明:
ls 命令是显示指定工作目录下的内容,列出目录所含的文件及目录。
语法:
ls [选项]... [文件]...
ls的选项及其说明如下:
-a 不隐藏任何以. 开始的项目
-l 使用较长格式列出信息
-d 只显示目录列表,不显示文件
-l 除文件名称外,同时将文件或者子目录的权限、使用者和大小等详细信息列出
-s 在每个文件名后输出的该文件的大小
-k 以k字节的形式表示文件的大小
-u 以文件上次被访问的时间排序
-i 以时间排序
-O 显示除组信息的详细信息
-r 对目录反向排序
-q 用"?"代替不可输出的内容
-m 横向输出文件名,并以“,”作为分隔符
-S 以文件大小排序
-R 列出所有子目录下的文件
-pF 在每个文件名附上一个字符以说明该文件的类型,“*”表示可执行的普通文件,“/”表示目录,“@”表示符号链接,“|”表示FIFO,“=”表示套接字(socket)
-C 按列输出,纵向排序
-R 列出所有子目录下的文件
-Q 把输出的文件名用双引号括起来
示例:
以下命令列出/home目录下文件及其子目录
[root@localhost ~]# ls -l
总用量 12
-rw-------. 1 root root 1259 1月 21 00:20 anaconda-ks.cfg
-rw-r--r--. 1 root root 7411 1月 22 01:28 ls-help.txt
pwd命令
功能说明
显示当前的工作目录,执行pwd指令可立刻得知目前所在的工作目录的绝对路径名称;
语法格式:
pwd
cd 命令
功能说明:
切换当前工作目录
语法格式:
cd [dir]
选项:
cd [dir] 切换到指定文件夹下,注意:Linux下文件和文件夹是区分大小写的
cd 或 cd ~ 返回当前用户家目录
cd ~[用户名] 返回指定用户的家目录
cd .. 或者 cd ./ 返回上级目录
cd / 放回到根目录下
示例:
切换到/opt 目录下,命令如下:
[root@localhost ~]# cd /opt/
[root@localhost opt]# pwd
/opt
返回root目录,命令如下:
[root@localhost opt]# cd
[root@localhost ~]#
[root@localhost ~]# pwd
/root
date命令
功能说明
显示或者修改系统时间和日期。只有超级用户才能用date命令设置时间,一般用户只能用date命令显示时间。
语法如下:
date [选项]... [+格式] 或者
date [选项] 显示时间格式(以+开头,后面接时间格式)
选项:
-s --set 设置系统时间
-d --date 显示描述的日期
时间显示格式:
%% 一个文字的 %
%a 当前locale 的星期名缩写(例如: 日,代表星期日)
%A 当前locale 的星期名全称 (如:星期日)
%b 当前locale 的月名缩写 (如:一,代表一月)
%B 当前locale 的月名全称 (如:一月)
%c 当前locale 的日期和时间 (如:2005年3月3日 星期四 23:05:25)
%C 世纪;比如 %Y,通常为省略当前年份的后两位数字(例如:20)
%d 按月计的日期(例如:01)
%D 按月计的日期;等于%m/%d/%y
%e 按月计的日期,添加空格,等于%_d
%F 完整日期格式,等价于 %Y-%m-%d
%g ISO-8601 格式年份的最后两位 (参见%G)
%G ISO-8601 格式年份 (参见%V),一般只和 %V 结合使用
%h 等于%b
%H 小时(00-23)
%I 小时(00-12)
%j 按年计的日期(001-366)
%k hour, space padded ( 0..23); same as %_H
%l hour, space padded ( 1..12); same as %_I
%m month (01..12)
%M minute (00..59)
%n 换行
%N 纳秒(000000000-999999999)
%p 当前locale 下的"上午"或者"下午",未知时输出为空
%P 与%p 类似,但是输出小写字母
%r 当前locale 下的 12 小时时钟时间 (如:11:11:04 下午)
%R 24 小时时间的时和分,等价于 %H:%M
%s 自UTC 时间 1970-01-01 00:00:00 以来所经过的秒数
%S 秒(00-60)
%t 输出制表符 Tab
%T 时间,等于%H:%M:%S
%u 星期,1 代表星期一
%U 一年中的第几周,以周日为每星期第一天(00-53)
%V ISO-8601 格式规范下的一年中第几周,以周一为每星期第一天(01-53)
%w 一星期中的第几日(0-6),0 代表周一
%W 一年中的第几周,以周一为每星期第一天(00-53)
%x 当前locale 下的日期描述 (如:12/31/99)
%X 当前locale 下的时间描述 (如:23:13:48)
%y 年份最后两位数位 (00-99)
%Y 年份
%z +hhmm 数字时区(例如,-0400)
%:z +hh:mm 数字时区(例如,-04:00)
%::z +hh:mm:ss 数字时区(例如,-04:00:00)
%:::z 数字时区带有必要的精度 (例如,-04,+05:30)
%Z 按字母表排序的时区缩写 (例如,EDT)
示例:
用指定的格式显示时间和日期
[root@localhost ~]# date '+this date now is %x time is now:%X' this date now is 2021年01月22日 time is now:02时27分16秒
修改系统时间
[root@localhost ~]# date 2021年 01月 22日 星期五 02:27:38 CST [root@localhost ~]# date -s 00:10 2021年 01月 22日 星期五 00:10:00 CST
passwd 命令
功能说明:设置用户密码
语法如下:
passwd [选项...] <帐号名称>
选项:
-k, --keep-tokens 保持身份验证令牌不过期
-d, --delete 删除已命名帐号的密码(只有根用户才能进行此操作)
-l, --lock 锁定指名帐户的密码(仅限 root 用户)
-u, --unlock 解锁指名账户的密码(仅限 root 用户)
-e, --expire 终止指名帐户的密码(仅限 root 用户)
-f, --force 强制执行操作
-x, --maximum=DAYS 密码的最长有效时限(只有根用户才能进行此操作)
-n, --minimum=DAYS 密码的最短有效时限(只有根用户才能进行此操作)
-w, --warning=DAYS 在密码过期前多少天开始提醒用户(只有根用户才能进行此操作)
-i, --inactive=DAYS 当密码过期后经过多少天该帐号会被禁用(只有根用户才能进行此操作)
-S, --status 报告已命名帐号的密码状态(只有根用户才能进行此操作)
--stdin 从标准输入读取令牌(只有根用户才能进行此操作)
示例:
普通用户设置用户密码:
passwd
超级用户root修改某个用户的密码
passwd [用户名]
su命令
功能说明:
su命令主要用于切换用户身份
语法如下:
su [选项] [-] [USER [参数]...]
选项:
-m, -p, --preserve-environment 不重置环境变量
-g, --group <组> 指定主组
-G, --supp-group <组> 指定一个辅助组
-, -l, --login 使 shell 成为登录 shell
-c, --command <命令> 使用 -c 向 shell 传递一条命令
--session-command <命令> 使用 -c 向 shell 传递一条命令
而不创建新会话
-f, --fast 向shell 传递 -f 选项(csh 或 tcsh)
-s, --shell <shell> 若 /etc/shells 允许,则运行 shell
示例:
普通用户切换root用户
[test@localhost root]$ su -
密码:
上一次登录:五 1月 22 01:22:53 CST 2021从 gatewaypts/0 上
[root@localhost ~]#
clear命令
功能描述:
clear命令用来清除屏幕信息
语法如下:
clear
man命令
功能描述:
man命令用来显示指定命令的帮助信息。
语法如下:
man [OPTION...] [SECTION] PAGE...
示例:
查看man命令的帮助信息,命令如下:
man man
who命令
功能描述:
who命令显示目前登陆系统的用户
语法如下:
who [OPTION]... [file]
选项:
-a 列出所有信息
-b 列出系统最近启动的日期
-l 列出所有可登录的终端信息
-m 仅列出关于当前终端的信息
-q 列出在本地系统上的用户和用户数的名称
-r 显示当前系统的运行级别
-s 仅显示名称、终端和时间字段信息
-u 显示当前每个用户的用户名,登录终端、登录时间、终端活动和进程标识
-T或-w 显示tty终端的状态,“+”表示对任何人可写,“-”表示仅对root用户或所有者可写,“?”表示遇到终端故障
示例:
查看当前系统处于运行级别
[root@localhost ~]# who -r
run-level 3 2021-01-21 17:49
输出的内容:
[root@localhost ~]# who
root tty1 2021-01-21 17:50
root pts/0 2021-01-22 01:22 (gateway)
解释:
名称 [状态] 终端 时间 [活动] [进程标识] [主机名]
w命令
功能描述:
显示登陆到系统的用户信息
语法:
w [options]
选项:
-h 不显示输出信息的标题
-l 用长格式输出
-s 用短格式输出,显示登陆时间、JCPU和PCPU时间
—V 显示版本信息
示例:
[root@localhost ~]# w
01:29:11 up 9:58, 2 users, load average: 0.00, 0.01, 0.04
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 17:50 6:39 1.32s 1.32s -bash
root pts/0 gateway 01:22 ? 0.22s 0.06s w
解释:
第一行输出信息表示:
当前的系统时间、系统已运行的时间、登陆系统的用户数、系统平均负载:1分钟、5分钟、15分钟系统负载情况
第二行输出信息表示:
user: 表示登陆系统的用户
TTY: 用户使用TTY名称
FROM: 用户从哪里登录进来,一般显示远程登陆主机的IP地址或者主机名
LOGIN@: 用户登陆的日期和时间
IDLE: 表示某个程序上次从终端开始执行到现在所持续的时间
JCPU: 表示该终端上的所有进程及子进程使用系统的时间
PCPU: 当前活动进程使用的系统时间
WHAT: 当前用户执行的进程名称和选项
free命令
功能说明:
free命令用来显示系统内存状态,具体包括系统物理内存、虚拟内存、共享内存和系统缓存。
语法格式:
free [option]
选项:
-b 以字节为单位显示内存使用情况
-m 以MB为单位显示内存使用情况
-K 以KB为单位显示内存使用情况
-t 显示内存总和列
-s 根据指定的间隔秒数持续显示内存使用情况
-o 不显示系统缓冲区别
示例:
[root@localhost ~]# free
total used free shared buff/cache available
Mem: 995684 169212 688236 7848 138236 682044
Swap: 2097148 0 2097148
解释:
total: 总内存
used: 已使用的内存
free: 剩余内存
shared:
buff/cache:
available:
ps命令
功能描述:
ps命令显示系统进程在瞬间的运行状态。
语法格式:
ps [options]
选项:
-a 显示所有用户的进程,包含每个程序的完整路径
-x 显示所有系统内存,包括哪些没有终端的程序
-u 显示使用者的名称和起始时间
-f 详细显示程序执行的路径群
-c 只显示进程的名称,不显示进程的完整路径
-e 解除内核进程以为所有进程的信息写到标准输出
示例:
[root@localhost ~]# ps
PID TTY TIME CMD
10356 pts/0 00:00:00 bash
10790 pts/0 00:00:00 su
10804 pts/0 00:00:00 su
10808 pts/0 00:00:00 bash
11385 pts/0 00:00:00 ps
输出内存详解:
PID 表示是进程的标识号;
TTY 表示进程所属的终端控制台;
TIME 表示进程所使用的的CPU时间;
CMD 表示列出正在执行的命令行
top命令
top命令提供了对系统处理器状态的实时监控,它能够实时显示系统中各个进程的资源占用情况,该命令可以按照对CPU的使用、内存使用和执行时间对系统任务进程进行排序显示,同时top命令还可以通过交互式命令进行设定显示。
功能描述:
查看即时活跃的进程,类似于Windows的任务管理器。
语法格式:
top [options]
选项:
-d 指定每两次屏幕信息刷新之间的时间间隔
-i 不显示闲置或者僵死的进程信息
-c 显示进程的整个命令路径,而不是只显示命令名称
-s 使top命令在安全模式下运行,此时top的交互式命令被取消,避免潜在危险
-b 分屏显示输出信息,结合“-n”选项可以将屏幕信息输出到文件;
-n top输出信息更新的次数,完成后将退出top命令
交互式命令选项:
h或? 显示帮助信息,给出交互式命令的一些说明
k 终止一个进程,系统将显示用户输入一个需要终止进程的PID
i 忽略闲置进程和僵死进程,这是一个开关式命令
s 改变top输出信息两次刷新之间的时间,系统将提示输入新的时间,单位是秒,如果输 入小数,就换算成毫秒,如果输入0,系统输出将不断刷新,默认刷新时间是5秒,需要 注意的是,如果设置太短的时间,可能会引起系统不断刷新,无法看清输出显示情况,而且系统负载也会加大
o或者O 该表top输出信息中显示项的顺序,按小写的a~z键可以将相应的列向右移动,而按大写的A~Z键可以将相应列向左移动,最后按enter键确定
f或者F 从当前显示列表中添加或者删除项,按f键之后会显示列的列表,按a~z键即可显示或隐藏对应的列。最后按Enter键确定
m 切换显示内存信息
t 切换显示进程和CPU状态信息
r 重新设置一个进程的优先级,系统提示用户输入需要改变的集成PID以及需要设置的进程优先级值,输入一个正值将使优先级减低,反之则可以使该进程拥有更高的优先权。默认值为0;
l 切换显示进程和CPU状态信息
q 退出top显示
c 切换显示完整命令行和命令名称信息
M 根据驻留内存大小进行排序输出
T 根据时间/累计时间进行排序输出
S 切换到累计模式
W 将当前top设置写入~/.toprc文件中
示例:
top - 03:41:01 up 12:10, 2 users, load average: 0.00, 0.01, 0.05
Tasks: **104** total, **1** running, **103** sleeping, **0** stopped, **0** zombie
%Cpu(s): **0.0** us, **0.0** sy, **0.0** ni,**100.0** id, **0.0** wa, **0.0** hi, **0.0** si, **0.0** st
KiB Mem : **995684** total, **686920** free, **169924** used, **138840** buff/cache
KiB Swap: **2097148** total, **2097148** free, **0** used. **681016** avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
top - 09:44:56[当前系统时间],
days[系统已经运行了16天],
user[个用户当前登录],
load average: [系统负载,即任务队列的平均长度]
Tasks: total[总进程数],
running[正在运行的进程数],
sleeping[睡眠的进程数],
stopped[停止的进程数],
zombie[冻结进程数],
Cpu(s): 99.8%us[用户空间占用CPU百分比],
0.1%sy[内核空间占用CPU百分比],
0.0%ni[用户进程空间内改变过优先级的进程占用CPU百分比],
0.2%id[空闲CPU百分比], 0.0%wa[等待输入输出的CPU时间百分比],
0.0%hi[服务硬件中断所花费的时间],
0.0%st[指的是当前VM中的cpu cycle被虚拟化偷走的比例],
Mem: 4147888k total[物理内存总量],
2493092k used[使用的物理内存总量],
1654796k free[空闲内存总量],
158188k buffers[用作内核缓存的内存量]
Swap: 5144568k total[交换区总量],
56k used[使用的交换区总量],
5144512k free[空闲交换区总量],
2013180k cached[缓冲的交换区
whoami命令
功能描述:
查看以什么身份登陆系统
语法格式:
whoami [选项]...
finger user命令
功能描述:
显示有关用户的信息
硬件命令
dmesg命令
功能描述:
显示开机信息,内核会将开机信息存储在系统缓冲区(ring buffer)中,如果开机不及时查看相关信息,可以在开机后利用dmesg命令查看,也可以在/var/log/目录中查看dmesg文件。
语法格式:
dmesg [options]
选项:
-c 显示开机信息后,清楚ring buffer信息
-s 设置缓冲区大小,默认设置为8192
-n 设置记录信息的层级
查看CPU
lscpu 命令
功能描述:
查看CPU型号以及详细信息
语法格式:
lscpu [选项]
选项:
-a, --all 同时打印在线和离线 CPU (-e 选项默认值) -b, --online 只打印在线 CPU (-p 选项默认值) -c, --offline 只打印离线 CPU -e, --extended[=<列表>] 打印扩展的可读格式 -p, --parse[=<列表>] 打印可解析格式 -s, --sysroot <目录> 以指定目录作为系统根目录 -x, --hex 打印十六进制掩码而非 CPU 列表 -y, --physical print physical instead of logical IDs -h, --help 显示此帮助并退出 -V, --version 输出版本信息并退出
示例:
[root@test ~]# lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian
lshw命令
功能描述:
lshw 是一个能把我们出去硬件信息的小工具,它能为我们提供内存配置、固件版本、主板配置信息、CPU版本和速度、cache信息、总线速度等。它能运行在 DMI兼容的 x86、IA-64和一些 PowerPC的平台上。
语法格式:
lshw [-format] [-options ...]
选项:
format can be
-html 将硬件以HTML格式输出
-xml 将硬件以xml格式输出
-json 将硬件以json对象输出
-short 输出硬件路径
-businfo output bus information 输出总线信息
options can be
-dump filename displays output and dump collected information into a file (SQLite database)
-class CLASS only show a certain class of hardware
-C CLASS same as '-class CLASS'
-c CLASS same as '-class CLASS'
-disable TEST disable a test (like pci, isapnp, cpuid, etc. )
-enable TEST enable a test (like pci, isapnp, cpuid, etc. )
-quiet don't display status
-sanitize sanitize output (remove sensitive information like serial numbers, etc.)
-numeric output numeric IDs (for PCI, USB, etc.)
-notime exclude volatile attributes (timestamps) from output
lsblk命令
语法格式:
lsblk [选项] [<设备> ...]
选项:
-a, --all 打印所有设备
-b, --bytes 以字节为单位而非易读的格式来打印 SIZE
-d, --nodeps 不打印从属设备(slave)或占位设备(holder)
-D, --discard 打印时丢弃能力
-e, --exclude <列表> 根据主设备号排除设备(默认:内存盘)
-I, --include <列表> 只显示有指定主设备号的设备
-f, --fs 输出文件系统信息
-h, --help 使用信息(此信息)
-i, --ascii 只使用 ascii 字符
-m, --perms 输出权限信息
-l, --list 使用列表格式的输出
-n, --noheadings 不打印标题
-o, --output <列表> 输出列
-p, --paths 打印完整设备路径
-P, --pairs 使用 key=“value” 输出格式
-r, --raw 使用原生输出格式
-s, --inverse 反向依赖
-t, --topology 输出拓扑信息
-S, --scsi 输出有关 SCSI 设备的信息
-h, --help 显示此帮助并退出
-V, --version 输出版本信息并退出
2.2 文件管理与编辑
mkdir 命令
功能描述:
mkdir命令用于创建文件夹;
语法格式:
mkdir [OPTION]... DIRECTORY...
选项:
-m, --mode=MODE 对文件夹设置权限
-p, --parents 递归创建文件夹
-v, --verbose 输出创建文件夹详情
示例:
创建一个文件夹test
[root@localhost ~]# mkdir test
[root@localhost ~]# ls
anaconda-ks.cfg test top.txt
批量创建文件
[root@localhost ~]# mkdir -p /opt/test/test1 -v
mkdir: created directory ‘/opt/test’
mkdir: created directory ‘/opt/test/test1’
[root@localhost ~]# ls /opt/
test
touch 命令
功能描述:
touch命令用于创建文件
语法格式:
touch [OPTION]... FILE...
选项:
-a change only the access time
-c, --no-create do not create any files
-d, --date=STRING parse STRING and use it instead of current time
-f (ignored)
-h, --no-dereference affect each symbolic link instead of any referenced
file (useful only on systems that can change the
timestamps of a symlink)
-m change only the modification time
-r, --reference=FILE use this file's times instead of current time
-t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current ti
示例:
创建test文件
[root@localhost ~]# touch test
[root@localhost ~]# ls
anaconda-ks.cfg test top.txt
more命令
如果一个文本比较长,一屏无法显示完毕,就需要使用more命令。more命令读取文本文件时,每次显示一屏,并且在每屏底部显示单词“More”。如果此时按Enter键,more命令就会接着再显示文本的一行,一次类推;如果按空格键,more命令就继续显示文本文件的另一屏信息。
语法格式:
用法:more [选项] 文件...
选项:
-d 显示帮助,而不是响铃
-f 统计逻辑行数而不是屏幕行数
-l 抑制换页(form feed)后的暂停
-p 不滚屏,清屏并显示文本
-c 不滚屏,显示文本并清理行尾
-u 抑制下划线
-s 将多个空行压缩为一行
-NUM 指定每屏显示的行数为 NUM
+NUM 从文件第 NUM 行开始显示
+/STRING 从匹配搜索字符串 STRING 的文件位置开始显示
-V 输出版本信息并退出
示例:
以分页方式显示文件的内容
[root@localhost ~]# more top.txt
显示以10行文件内容,同时清除屏幕
[root@localhost ~]# more -c -10 top.txt
cat命令
功能描述:
cat命令用来将文件内容输出到标准输出,类似于DOS下的type命令,同时cat还可以用于连接合并文件。
语法格式:
cat [options] files
选项:
-A, --show-all 等于-vET
-b, --number-nonblank 对非空输出行编号
-e 等于-vE
-E, --show-ends 在每行结束处显示"$"
-n, --number 对输出的所有行编号
-s, --squeeze-blank 不输出多行空行
-t 与-vT 等价
-T, --show-tabs 将跳格字符显示为^I
-u (被忽略)
-v, --show-nonprinting 使用^ 和M- 引用,除了LFD和 TAB 之外
--help 显示此帮助信息并退出
--version 显示版本信息并退出
示例:
查看网卡的配置文件;
[root@test network-scripts]# cat ifcfg-ens33
以下命令将文件file1.txt和file2.txt的内容合并后输出到file3.txt中。
[root@test opt]# ls file1.txt file2.txt waizhi [root@test opt]# cat file1.txt this is file one [root@test opt]# cat file2.txt this is file two [root@test opt]# cat file1.txt file2.txt > file3.txt [root@test opt]# cat file3.txt this is file one this is file two [root@test opt]#
diff命令
功能描述:
diff命令用来比较文件的差异。diff以逐行的方式比较文本文件的异同,如果指定比较的是目录,则diff会比价目前中相同文件名的文件,但不会比较其中的子目录。
语法格式:
diff [选项]... FILES
选项:
-c 显示全部内容,并标出不同之处
-b 忽略行尾的空格,同时字符串的一个或多个空格都将视为相同
-r 当文件1和文件2为目录时,会比较子目录中的文件
-s 当两个文件相同时,显示文件的相同信息
示例:
比较文件file1.txt和file2.txt的异同
[root@test opt]# diff file1.txt file2.txt
1c1
< this is file one
---
> this is file two
[root@test opt]# diff -c file1.txt file2.txt
*** file1.txt 2021-01-22 07:50:49.586053712 +0800
--- file2.txt 2021-01-22 07:50:54.322053893 +0800
***************
*** 1 ****
! this is file one
--- 1 ----
! this is file two
grep命令
功能描述:
grep命令是Linux下的文本过滤工具,grep根据指定的字符串,对文件的每一行进行搜索,如果找到了这个字符串,就输出该行的内容。
语法格式:
grep [选项]... PATTERN [FILE]...
选项:
grep 命令的选项有很多,这里列出常用的选项说明。
-A NUM 除了列出符合条件的行列,同时列出每个符合条件行的后NUM行
-c 只显示符合条件的行数,二部显示每行的具体信息
-f file 事先将要搜索的样式写入一个文件中,每行一个样式,然后以这个文件作为条件进行搜索
-i 搜索时忽略大小写
-n 在搜索结果中显示行号
-B 与选项“-A”相反,除了列出符合条件的行外,同时列出每个符合条件的前NUM行
rm命令
功能描述:
rm命令用来删除文件或者文件夹及其所有子目录。
语法格式:
rm [选项]... 文件...
选项:
-r 递归删除文件及文件夹
-f 强制删除,不做提示
-i 交互式,确认是否删除
ln命令
功能描述:
ln命令是创建文件或者文件夹之间创建链接。
Linux系统下的链接有两种方式,一种是硬链接,一种是符号链接。Linux系统下创建链接默认是硬链接。
硬链接
是指通过文件的inode来进行链接。在Linux的文件系统中,保存在磁盘所有类型文件都会分配一个编号,这个编号成为inode号(Inode Index)。多个文件指向同一个inode在Linux系统中是允许的,这就是所谓的硬链接。
符号链接
符号链接也叫软连接,软链接类似于Windows中的快捷方式,因此软链接是一个指向真正的文件或者目录位置的符号连接。
语法格式:
ln [选项]... [-T] 目标 链接名 (第一种格式)
ln [选项]... 目标 (第二种格式)
ln [选项]... 目标... 目录 (第三种格式)
ln [选项]... -t 目录 目标... (第四种格式)
选项:
-f 如果在目标位置存在与链接名相同的文件,这个文件将被删除
-s 进行软链接
-d 允许系统管理员硬链接自己的目录
-b 对将在链接时会被覆盖或者删除的文件进行备份
file命令
功能描述:
file命令用来显示文件类型。
语法格式:
file [OPTION...] [FILE...]
选项:
-b 显示文件类型结果,不显示对应文件名称
-L 直接显示符号链接所指向文件的类型
-z 显示压缩文件的信息
-i 如果文件不是常规文件,则不进一步对文件类型进行分类
cp 命令
功能描述:
cp 命令用来将给出的文件或者目录复制到另一个文件或者目录中。
语法格式:
cp [选项]... [-T] 源文件 目标文件
cp [选项]... 源文件... 目录
cp [选项]... -t 目录 源文件...
选项:
-a 在复制目录时使用,它保留所有的信息,包含文件链接、文件属性,并递归地复制目录
-r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名
-d 复制时保留链接,这样不会失去链接文件
-p 保留文件的修改时间和存取权限
-i 如果已经有相同文件名的目标文件,则提示用户是否覆盖
find 命令
find命令用来在指定的路径下查找指定的文件。
语法格式:
find path-name [-options] [-print -exec -ok 命令 {} \;]
选项:
- path-name: find命令查找文件夹目录路径
- -options: find命令的这个选项主要用来控制搜索的方式。
- -print: 将搜索结果输出到标准输出
- -exec:对搜索出符合条件的文件执行所给出的Linux命令,而不询问用户是否需要执行该命令。{}表示shell命令的选项即为所查找的文件。命令的末尾必须以“;”结束
- -ok: 对搜索出符合条件的文件执行所给出的Linux命令。与-exec不同的是,它会询问用户是否需要执行命令;
mv 命令
功能描述:
mv 命令用来将文件或目录改名或将文件由一个目录移入另一个文件夹中。如果源类型和目标类型都是文件或者目录,mv将进行目录重命名。如果源类型为文件,而且标类型为目录,mv将进行文件的移动。如果源类型为目录,则目标类型只能是目录,不能是文件,此时完成目录重命名。
语法格式:
mv [选项]... [-T] 源文件 目标文件
mv [选项]... 源文件... 目录
mv [选项]... -t 目录 源文件...
示例:
修改源文件名、移动
[root@test opt]# ls
file1.txt file2.txt file3.txt waizhi
[root@test opt]# mv file4.txt waizhi/
[root@test opt]# ls
file1.txt file2.txt waizhi
[root@test opt]# ls waizhi/
file4.txt
zip/unzip命令
将一般文件或者目录进行压缩或者解压,Windows默认生成以”.zip”为后缀的压缩包。
注意:在Linux字符版系统默认是没有安装unzip命令,如果需要解压.zip文件,必须安装此命令;
安装unzip命令:
[root@test ~]# yum -y install unzip
语法格式:
unzip [files] 指定文件名需要解压缩的文件
gzip/gunzip 命令
功能描述:
将一般的文件进行压缩或者解压。压缩文件的扩展名“.gz”。
语法格式:
gzip [OPTION]... [FILE]...
tar 命令
功能描述:
tar是Linux下常用的归档工具,对文件或者文件夹进行打包归档,归档成一个文件,但不进行压缩;
语法如下:
tar [选项...] [FILE]...
选项:
示例:
tar -cf archive.tar foo bar # 从文件 foo 和 bar 创建归档文件archive.tar。
tar -tvf archive.tar # 详细列举归档文件 archive.tar中的所有文件。
tar -xf archive.tar # 展开归档文件 archive.tar中的所有文件。