# 常见目录
在 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 之后除了 cd 之后最先接触的命令了,他就是
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
- 搜索命令所在的路径以及帮助文档所在的位置
whereis
-b
只查找可执行文件-m
只查找帮助文档
# which
- 可以查看别名
which is
- 能看到的都是外部安装的命令
- 无法查看
shell
自带的命令,如which、cd
等
# 环境变量
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
- 定义的是系统搜索命令的路径
echo $PATH
这个命令可以看到这个路径,多个路径用:
隔开
# find
文件搜索命令
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 -100k
2
3
4
5
6
7
8
9
# grep
- 在当前文件中匹配符合条件的字符串,语法
grep \[option\] '搜寻字符串' 文件名
- 可以组合使用一些参数
-i
忽略大小写(ignore)-v
排除指定字符串,或者说取反操作
- 与 find 的区别:
- find:在系统中搜索符合条件的文件名,如果需要匹配,使用通配符匹配
- grep:在文件中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配
grep mlocate install.log
# 还可以使用管道符
cat install.log | grep mlocate
2
3
# 压缩解压缩
# zip 格式
压缩文件或者目录,是一种压缩格式
- 压缩文件
zip 压缩文件名.zip 源文件
- 压缩目录
zip -r 压缩目录名.zip 源文件
- 解压
unzip 压缩目录名.zip
# 压缩文件
zip a.txt.zip a.txt
# 压缩文件夹
zip -r book.zip book
# 解压
unzip a.txt.zip
2
3
4
5
6
# gzip 格式
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 book
2
3
4
5
6
7
8
# bz2 格式
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 book
# 2. 解打包
-c
是打包, -x
是解包,只需要把参数换一下即可
tar -xvf book.tar
# tar.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
shutdown
关机命令,参数后面需要加一个时间-c
取消前一个关机命令-h
关机-r
重启
# 设置一个重启时间
shutdown -r 6:00
# 取消上一个关机命令
shutdown -c
2
3
4
# init
init
是切换工作模式
关机 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 w
2
3
4
5
# who
查看登录用户信息,比 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)
2
3
# last
last
查看当前登录和过去登录的用户信息- 显示字段分别为:用户名、登录终端、登录 IP、登录时间、退出时间(在线时间)
lastlog
查看所有用户的最后一次登录时间- 显示字段分别为:用户名、登录终端、登录 IP、最后一次登录时间
# 磁盘管理
# df
查看磁盘分区使用情况
参数 | 描述 |
---|---|
-i | 仅显示本地磁盘(默认) |
-a | 显示所有文件系统的使用情况 |
-h | 以 1024 进制计算最合适的单位显示磁盘容量 |
-H | 以 1000 进制计算最合适的单位显示磁盘容量 |
-T | 显示磁盘类型 |
-t | 显示指定类型文件系统的磁盘分区 |
-x | 不显示指定类型文件系统的磁盘分区 |
# du
统计磁盘上的文件大小
参数 | 描述 |
---|---|
-b | 以 byte 为单位统计文件 |
-k | 以 KB 为单位统计文件 |
-m | 以 MB 为单位统计文件 |
-h | 以 1024 为单位统计文件 |
-H | 以 1000 为单位统计文件 |
-s | 指定统计目标 |
# 文件查看和管理
# cat
cat
用于连接文件并打印到标准输出设备上- 用法:
cat 文件名
,也可以加参数-n
对输出行进行编号
# more
more
类似于 cat
,不过会进行翻页处理, 空格
往后翻页, b
往前翻页
# head
head
用来显示前几行的文字区块
# 显示 a.txt 中前十行的内容
head -10 a.txt
2
# tail
有头就有尾是吧, head
显示前几行, tail
显示最后几行
tail
有一个常用的参数-f
用于可以查阅正在改变的文件,经常被用作来查看系统日志-f
循环读取-n
行号,显示文件尾部n
行的内容
# 查看安装日志
tail -f install.log
2
# vi 编译器
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 | 把所在行的所有老字符替换成新字符 |
# 参考文献
本文章整理自珠峰培训架构课程