Linux 常用命令
这篇文章涵盖了Linux系统中常见目录、文件管理、搜索、压缩解压等内容。我对其进行了语言优化和排版调整,以提高可读性和流畅性。
常见目录
在 Linux 中一切皆文件
| 目录 | 作用 |
|---|---|
| / | 根目录 |
| /boot | 启动目录,存放启动相关文件 |
| /dev | 设备文件 |
| /etc | 配置文件 |
| /home | 普通用户的家目录,可供用户操作 |
| /lib | 系统库文件存放目录 |
| /mnt | 移动设备挂载目录 |
| /media | 光盘挂载目录 |
| /misc | 磁带机挂载目录 |
| /root | 超级用户家目录,可供用户操作 |
| /tmp | 临时目录,可供用户操作 |
| /proc | 正在运行的内核信息的映射,主要输出进程信息、内存资源信息和磁盘分区信息等 |
| /sys | 硬件设备的驱动信息 |
| /var | 变量文件存放目录 |
| /bin | 普通的基本命令,如 ls、chmod 等,所有用户都可用 |
| /sbin | 基本的系统命令,如 shutdown、reboot,用于启动系统,修复系统,只有管理员权限才可以运行 |
| /usr | 系统资源 system resource,后期我们安装的软件都安装在这个文件夹下面 |
| /usr/bin | 后期安装的一些软件的运行脚本 |
| /usr/sbin | 放置一些用户安装的系统管理的必备程序 |
查看文件
- 在接触Linux系统时,最常用的命令之一是
ls,用于查看目录内容。 ls语法:ls \[选项\] \[文件或者目录\]ls有很多选项可用:-a显示所有文件,包括隐藏文件(. 开头的文件是隐藏文件)-l显示详细信息-d查看目录本身的属性而不是子文件-h人性化的方式显示文件大小(human)-i显示 inode(i 节点,文件的节点),每个节点
文件搜索
locate
- 在后台数据库中按文件名称搜索,速度比较快
- 数据保存在
/var/bin/mlocate后台数据库中,每天更新一次 - 可以
updatedb命令立即更新数据库 - 只能搜索文件名
/etc/updatedb.conf建立索引的配置文件- PRUNE_BIND_MOUNTS = yes 全部生效,开启搜索限制
- PRUNEFS 不搜索文件系统
- PRUNENANMES 忽略的文件类型
- PRUNEPATHS 忽略的路径
whereis
- 搜索命令所在的路径以及帮助文档所在的位置
- 常用选项:
-b:只查找可执行文件-m:只查找帮助文档
which
- 查看命令的具体路径,尤其是外部安装的命令
- 无法查看
shell自带的命令,如which、cd等
环境变量
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin是系统搜索命令的路径- 使用
echo $PATH命令可以看到这个路径,多个路径用:隔开
find
文件搜索命令,用法:
find[查找范围] [搜索范围]注意:
find是磁盘搜索,资源消耗大,建议避免大范围搜索可以使用通配符
- * 匹配任意内容
- ? 匹配任意一个字符
- [] 匹配任意一个中括号内的字符
参数
-i可以做到区分大小写(Linux 是区分大小写的,Windows 不区分大小写)根据大小搜索,
k小写,M大写参数 含义 -8k 小于 8k 8k 等于 8k +8k 大于 8k +8M 大于 8M 用法还有很多,这些基本够用了,其他的用到在记录吧
# 普通用法
find /root -name 1.txt
# 通配符用法
find /root -name *.txt
find /root -name [cdef12].txt
# 不区分大小写
find /root -iname a.txt
# 按照大小搜索
find /tmp -size -100kgrep
- 在当前文件中匹配符合条件的字符串,语法
grep \[option\] '搜寻字符串' 文件名 - 可以组合使用一些参数
-i忽略大小写(ignore)-v排除指定字符串,或者说取反操作
- 与 find 的区别:
- find:在系统中搜索符合条件的文件名,如果需要匹配,使用通配符匹配
- grep:在文件中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配
grep mlocate install.log
# 还可以使用管道符
cat install.log | grep mlocate压缩解压缩
zip 格式
压缩文件或者目录,是一种压缩格式
- 压缩文件
zip 压缩文件名.zip 源文件 - 压缩目录
zip -r 压缩目录名.zip 源文件 - 解压
unzip 压缩目录名.zip
# 压缩文件
zip a.txt.zip a.txt
# 压缩文件夹
zip -r book.zip book
# 解压
unzip a.txt.zipgzip 格式
gzip 为高压,可以把文件压缩的更小,对目录压缩是压缩目录下的所有文件
| 命令 | 示例 | 含义 |
|---|---|---|
| gzip 源文件 | gzip a.txt | 压缩为 .gz 格式的文件,源文件会消失 |
| gzip -c 源文件 > 压缩文件 | gzip -c a.txt > a.txt.gz | 压缩为 .gz 格式的文件,会保留源文件 |
| gzip -r 目录 | gzip -r xx | 把目录下的每个子文件都变成压缩包,并且删除源文件,当前目录没有变化 |
| gzip -d 压缩目录名 | gzip -d a.txt.gz | 解压文件,不保留压缩包 |
| gunzip 压缩文件 | gunzip a.txt.gz | 解压文件,不保留压缩包 |
# 压缩文件
gzip a.txt
# 压缩文件夹
gzip -r book
# 解压
gzip -dr book
# or,压缩或者解压目录都需要加上 -r 参数
gunzip -r bookbz2 格式
bzip2 是一个压缩能力更强的压缩程序,不过出来的比较晚,所以用的没有 gzip 和 zip 多,但也不少
注意: bzip2 不能压缩目录
| 命令 | 示例 | 含义 |
|---|---|---|
| bzip2 源文件 | bzip2 a.txt | 压缩为 .bz2 结尾的文件,不保留源文件 |
| bzip2 -k 源文件 | bzip2 -k a.txt | 压缩为 .bz2 结尾的文件,保留源文件 |
| bzip2 -d 压缩文件名 | bzip2 -d a.txt.bz2 | 解压文件,不保留压缩包 |
| bunzip2 压缩文件名 | bunzip2 1.txt.bz2 | 解压文件,保留压缩包 |
tar
打包命令,只打包不压缩
1. 打包
- 用法:
tar -cvf 打包文件名 源文件- -c 打包
- -v 显示过程
- -f 指定打包后的文件名
tar -cvf book.tar book2. 解打包
-c 是打包, -x 是解包,只需要把参数换一下即可
tar -xvf book.tartar.gz 压缩格式
zip 可以压缩目录但压缩率不高, gzip 和 bzip2 压缩效率高但不支持目录压缩
所有可以先打包为 .tar 格式,在压缩为 .gz 格式
-z 压缩为 .tar.gz 格式 -x 解压缩 .tar.gz 格式
| 命令 | 示例 | 含义 |
|---|---|---|
| tar -zcvf 压缩包名.tar.gz 源文件 | tar -zcvf book.tar.gz book | 先打包为 .tar 格式,在压缩为 .gz 格式 |
| tar -zxvf 压缩包名.tar.gz | tar -zxvf book.tar.gz | 解压 .tar.gz 压缩包 |
| tar -jcvf 压缩包名.tar.bz2 源文件 | tar -jcvf book.tar.bz2 book | 先打包为 .tar 格式,在压缩为 .bz2 格式 |
| tar -jxvf 压缩包名.tar.bz2 | tar -jxvf book.tar.bz2 | 解压 .tar.bz2 压缩包 |
关机和重启
shutdown
- 关机命令,参数后面需要加一个时间
-c取消前一个关机命令-h关机-r重启
# 设置一个重启时间
shutdown -r 6:00
# 取消上一个关机命令
shutdown -cinit
切换工作模式
- 关机
init 0 - 重启
init 6
logout
logout 退出登录
查看登录用户信息
w
查看登录用户信息
- USER:登录用户名
- TTY:录的终端
tty1本地pts/0远程终端 - FROM:登录的 IP
- LOGIN:登录时间
- IDLE:用户闲置时间
- JCPU:该终端所有进程占用的时间
- PCPU:当前进程所占用的时间
- WHAT:正在执行的命令
[root@localhost ~]# w
09:51:40 up 7 min, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 - 09:45 6:17 0.01s 0.01s -bash
root pts/0 192.168.1.105 09:45 0.00s 0.02s 0.00s wwho
查看登录用户信息,比 w 显示的少,意思差不多
- USER 登录的用户名
- TTY 登录的终端
tty1本地pts/0远程终端 - LOGIN 登录时间(登录 IP)
[root@localhost ~]# who
root tty1 2020-01-29 09:45
root pts/0 2020-01-29 09:45 (192.168.1.105)last
last查看当前登录和过去登录的用户信息- 显示字段分别为:用户名、登录终端、登录 IP、登录时间、退出时间(在线时间)
lastlog查看所有用户的最后一次登录时间- 显示字段分别为:用户名、登录终端、登录 IP、最后一次登录时间
磁盘管理
df
查看磁盘分区使用情况
| 参数 | 描述 |
|---|---|
| -i | 仅显示本地磁盘 inode 信息(默认) |
| -a | 显示所有文件系统的使用情况 |
| -h | 以 1024 进制计算最合适的单位显示 |
| -H | 以 1000 进制计算最合适的单位显示 |
| -T | 显示磁盘类型 |
| -t | 显示指定类型文件系统的磁盘分区 |
| -x | 不显示指定类型文件系统的磁盘分区 |
du
统计磁盘上的文件大小
| 参数 | 描述 |
|---|---|
| -b | 以 byte 为单位统计文件 |
| -k | 以 KB 为单位统计文件 |
| -m | 以 MB 为单位统计文件 |
| -h | 以 1024 为单位统计文件 |
| -H | 以 1000 为单位统计文件 |
| -s | 统计单个文件 |
| -s | 统计单个文件 |
| -c | 统计文件总和 |
| -a | 显示所有文件 |
| -T | 显示磁盘类型 |
| -t | 显示指定类型文件系统 |
| -x | 不显示指定类型文件系统 |
进程管理
ps查看进程信息。- 常用选项:
- -A 显示所有进程
- -a 显示所有终端相关进程
- -u 显示用户相关进程
- -x 显示后台进程
# 查看所有进程
ps -A
# 查看某个用户的进程
ps -u roottop
- 动态显示进程信息
- 常用选项:
- q 退出
- k 终止进程
- r 重新设定优先级
- h 查看帮助
kill
- 终止进程
- 常用选项:
- -9 强制终止
- -15 正常终止
网络管理
ifconfig
用于显示或配置网络接口
# 查看网络接口信息
ifconfig
# 启用网络接口
ifconfig eth0 up
# 禁用网络接口
ifconfig eth0 down
# 配置 IP 地址
ifconfig eth0 192.168.1.100ping
用于测试网络连接
# ping IP 地址
ping 192.168.1.1
# ping 域名
ping chengyuming.cnnetstat
netstat用于显示网络连接、路由、协议、接口信息- 常用选项:
- -a 显示所有连接
- -t 显示 TCP 连接
- -u 显示 UDP 连接
- -n 显示数字地址
nslookup
用于查找域名的 IP 地址
nslookup chengyuming.cn文件查看和管理
cat
cat用于连接文件并打印到标准输出设备上- 用法:
cat 文件名,也可以加参数-n对输出行进行编号
more
more 类似于 cat ,但可以进行翻页处理, 空格 往后翻页, b 往前翻页
head
head 用来显示前几行的文字区块
# 显示 a.txt 中前十行的内容
head -10 a.txttail
head 显示前几行, tail 显示最后几行
tail有一个常用的参数-f用于可以查阅正在改变的文件,经常被用作来查看系统日志-f循环读取-n行号,显示文件尾部n行的内容
# 查看安装日志
tail -f install.logvi 编译器
vi编译器是Linux中的编译器,类似于Windows中的记事本,Vim是vi编译器的升级版,不需要鼠标只用键盘就可以
操作模式
三种操作模式:
- 刚开始打开的时候不能输入东西,写东西写不进去,此时属于命令模式,命令模式是不能直接编辑的;
- 进入编辑模式有四种方式,输入
a、i、o、s即可进入输入模式(append、insert),ESC键退出编辑模式 - 在命令模式下,按下
:键进入底行模式,在底行模式下,按两次ESC键退出底行模式
| 模式名 | 含义 |
|---|---|
| 命令模式 | 等待输入的模式 |
| 输入模式 | 编辑模式,用于输入文本 |
| 底行模式 | 可以输入指令、搜索、保存 |

打开文件
输入 vi 文件名 即可打开文件,默认定位到第一行,也可以输入 vi +n 文件名 打开文件定位到第 n 行
底行模式
| 命令 | 含义 |
|---|---|
| :w | 把文件写入保存到硬盘中 |
| :q | 退出当前 vi 编译器打开的文件 |
| :! | 强制保存 |
| :n | 下一个 |
| : N | 上一个 |
| : 数字 | 快速定位到当前文件第几行 |
| /xxx | 从光标位置开始搜索 xxx 字符串 |
| ?xxx | 从光标位置开始向前搜索 |
命令可以组合使用,比如 :q! 就是强制退出 vi 编译器
命令模式
1. 翻页
| 命令 | 含义 |
|---|---|
| ctrl + f | 向下翻页 |
| ctrl + b | 向上翻页 |
| ctrl + d | 向下翻半页 |
| ctrl + u | 向上翻半页 |
2. 插入
| 命令 | 含义 |
|---|---|
| i | 在当前位置插入(insert) |
| a | 在当前光标右边插入(append) |
| A | 在当前光标所在行的行末尾插入 |
| o | 在光标所在行下面插入新的一行 |
| O | 在光标所在行上面插入新的一行 |
| s | 删除当前光标位置的内容并插入 |
3. 删除
字符删除
命令 含义 x 删除当前字符 dw 删除一个单词(delete word),包括空格 de 删除一个单词,不包括空格 d$ 从当前位置删到行尾 行删除
命令 含义 dd 删除光标所在行 2dd 删除光标两行
4. 撤销
| 命令 | 含义 |
|---|---|
| u | 撤销最后一次执行的命令(undo) |
| U | 恢复该行的原始状态 |
| ctrl + r | 恢复重做命令 |
5. 剪切
| 命令 | 含义 |
|---|---|
| dd | 删除光标所在行 |
| yy | 复制所在行 |
| p | 在光标所在行下方粘贴一行 |
| P | 在光标所在行上方粘贴一行 |
6. 替换
| 命令 | 含义 |
|---|---|
| r | 替换当前位置字符(replace) |
| cw | 修改单词(change word) |
| c$ | 修改当前位置到行尾 |
7. 跳转指定行
| 命令 | 含义 |
|---|---|
| ctrl + g | 显示当前编辑文件中当前光标所在的位置信息 |
| shift + g | 跳到最后一行 |
| 数字 + shift + g | 跳转到数字对应的行数 |
8. 搜索
| 命令 | 含义 |
|---|---|
| / | 输入 / + 字符串 可以在文件中查找包含该字符串的 |
| n | 查找上一个 |
| shift + n | 查找上一个 |
| ? | 逆向查找字符串 |
| shift + % | 可以将光标移动到匹配的括号上 |
| shift + $ | 可以将光标移动到行尾 |
9. 修正错误
| 命令 | 含义 |
|---|---|
| :s/老字符/新字符 | 把光标所在行的老字符替换成新字符 |
| :s/老字符/新字符/g | 把所在行的所有老字符替换成新字符 |
参考文献
本文章整理自珠峰培训架构课程