Linux常见命令及相应知识点
获取系统信息
获取硬件信息
- 获取系统硬件信息:dmidecode 或 lshw
- 显示PCI/USB接口信息:lspci/lsusb
- 显示CPU信息:lscpu或cat/proc/cpuinfo
- 检查硬件虚拟化的支持:egrep -color"vxm|svm" /proc/cpuinfo
- 显示物理内存大小:free -m
- 查看系统发行版本:cat /etc/system-release
- 查看系统内核版本:uname -r
- 显示机器的体系结构:arch
- 显示系统加载的内核模块: lsmod
- 查看系统启动信息:dmesg
- 显示系统中的块设备:lsblk
- 显示磁盘分区:fdisk -l或gdisk -l或parted -l
- 显示 物理卷/卷组/逻辑卷 信息:pvs/vgs/lvs
- 查看已经挂装的文件系统:findmnt
- 显示磁盘剩余空间:df -Ph
- 查看所有交换空间:swapon -s
- 显示网络状态信息:ss 或 netstat
- 显示防火墙规则 firewall-cmd -list-all或iptable -nvL
关机与重启
关机
- systemctl poweroff
- poweroff
- shutdown -h now
重启
- systemctl reboot
- reboot
- shutdown -r now
其中 shutdown命令
- 用于多用户登录的情况
- 可以为登录用户发送自定义警告信息
shell命令的基本格式
- 一般格式
命令 [选项] <操作对象>
- 说明
- 最简单的shell命令只有命令名,复杂的shell命令可以有多个选项,和参数
- 选项和参数都作为shell命令执行时的输入,它们之间用空格分隔开
- 多条命令可在一行中出现,用“;”将两个命令隔开,按从左到右顺序执行。
- 单字符选项前面使用一个减号(-)
- 单词选项前使用两个减号(–)
- 多个单字符选项前可以只使用一个减号
- 操作对象可以是文件,也可以是目录,有些命令必须使用多个操作对象,如cp命令必须指定源操作对象和目标操作对象
- 并非所有命令的格式都遵从以上规则,例如dd,find等。
Linux区分大小写
命令在正常执行结果后返回一个0值,如果命令出错,则返回一个非0值(在shell中可以用变量$?查看)。
shell提示符
- 超级用户:#
- 普通用户:$
- 格式:[用户名@主机名 当前目录]$
命令补全
- 通常用户在bash下输入命令时不必把命令输全,shell就能判断出你所要输入的命令
- 该功能的核心思想是:bash根据用户已输入的信息来查找以这些信息开头的命令,从而试图完成当前命令的输入工作。用来执行这项功能的键是<Tab键>,按下一次<Tab键>后,bash就试图完成整个命令的输入,如果不成功,可以再按一次<Tab键>,这时bash将列出所有能够与当前输入字符相匹配的命令列表。
命令历史记录
-
bash可以记录一定数目的以前的在shell中输入的命令。
- 记录历史命令的文本文件由环境变量 HISTFILE来指定,默认的记录文件是.bash_history,这是一个隐含文件,位于用户自己的目录中。
- 可以记录历史命令的数目由环境变量HISTSIZE的数值指定,默认为1000
-
查看历史命令
- history
- history 30 #查看最近30个历史命令
- fc -l 30 50 #列出命令历史中第30到第50之间的命令
-
键盘快捷键
- 最简单的方法使用上下方向键、和键来查看历史命令
- 如果需要的话,可以使用键盘上的编辑功能键对显示在命令行上的命令进行编辑
-
感叹号的用法
- 用!!执行最近执行过的命令
- 用!<命令事件号>执行已经运行过的命令
- 用!<已经使用过的命令前面的部分>执行已经运行过的以该字符串开头的最近的命令
Linux的元字符
-
在shell中有一些具有特殊的意义字符,称为shell元字符
-
若不以特殊方式(使用转义字符)指明,shell并不会把它们当做普通文字符使用。
Linux的元字符表
-
回车换行 结束一个命令行
-
空格 分割命令行中的元素
-
Tab 分割命令行中的元素
-
#开始一行注释
-
‘’ 引用多个字符但是允许替换
-
$ 表示一行的结束以及显示变量的值
-
& 让一个命令在后台执行
-
‘ 引用多个字符
-
() 在子shell中执行命令
-
*匹配多个或者0个字符
-
[] 插入通配符
-
^ 表示一行的开始,以及作为否定符号
-
` 替换命令
-
{} 在当前shell中执行命令
-
| 创建命令间的管道
-
; 分割顺序执行的命令
-
< 重定向命令的输入
-
重定向命令的输出类似上条
-
? 匹配单个字符
-
/ 用作根目录或者路径名中的分割符
-
\ 转义字符:转移回车换行字符,允许在下一行中继续shell命令
-
! 启动历史记录列表中的命令和当前命令
-
% TC shell的提示符,或者指定一个任务号时作为起始字符
-
~ 代表主目录
目录和文件名的命名规则
-
在Linux下可以使用长文件或目录名
- 可以长达255个字符
-
可以给目录和文件取任何名字,但必须遵循下列的规则:
- 可用除保留字以外的任何字符给文件命名
- 强烈建议不要使用非打印字符、空白字符(空格和制表符)和shell命令保留字符
- 大小写敏感
- 以“.”揩油的文件或目录是隐含的
通配符
- *:匹配任意多个字符
- ?:匹配任何单个字符
- []:匹配[]之内的任意一个字符
- [!]:匹配除了[!]之外的任意一个字符。!表示非的意思
“*”能匹配文件或目录名中的“.”。
“*”不能匹配首字符是“.”的文件或目录名。
标准输入输出设备
- Linux命令在执行时常常期望接收输入数据,命令执行后期望将产生的数据结果输出
- Linux的大部分端口都具有标准的输入/输出设备端口。
例如:
名称 | 文件描述符 | 含义 | 设备 | 说明 |
---|---|---|---|---|
STDIN | 0 | 标准输入 | 键盘 | 命令在执行时所要的输入通过它来取得 |
STDOUT | 1 | 标准输出 | 显示器 | 命令执行后的输出结果从该端口送出 |
STDERR | 2 | 标准错误 | 显示器 | 命令执行时的错误信息通过该端口送出 |
重定向
-
所谓重定向,就是不使用系统的标准输入端口、标准输出端口或标准错误端口,而进行重行的指定,所以重定向分为输出重定向、输入重定向和错误重定向。通常情况下重定向到一个文件。
-
在shell中,要实现重定向主要依靠重定向符实现,即shell是检查命令行中有无重定向符来决定是否需要实施重定向。
重定向符:
-
< 输入重定向
-
<<!..! 输入重定向的特例,即HERE文件,通常用于shell脚本中。其中“!”可以使用任何字符或字符串替换,只要其没在…中出现过即可。
-
> 覆盖式的输出重定向
-
>> 追加式的输出重定向
-
2> 覆盖式的错误输出重定向
-