什么是shell
shell的定义
shell是Linux系统中后台运行的一种特殊程序也可以理解成一种特殊的软件,提供了用户与内核进行交互操作的一种接口。(是将二进制语言识别成用户能读懂的语言)
![](https://i-blog.csdnimg.cn/blog_migrate/5aa6e438b15ebe5d7e25dce49c38d611.png)
Linux的基本分类
![](https://i-blog.csdnimg.cn/blog_migrate/f4f460095bdc7623934cb1eef916094c.png)
Linux命令行格式
![](https://i-blog.csdnimg.cn/blog_migrate/bb449410a286fcceae955ac954e02547.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e45c1f66783e7bb4d6f7ad923c1439d7.png)
命令字
1)是整条命令中最关键的一部分
2)唯一确定一条命令
选项
1)短格式选项:使用-符号引导 通常引导一个字母
2)长格式选项:使用- -符号引导 通常引导一个完整的单词
参数
1)命令字的处理对象
2)可以是文件名、目录(路径)名或用户名等内容
3)个数可以是零到多个
编辑Linux命令行
Tab:自动补齐
\:强制换行
ctrl+u:清空至行首
ctrl+k:清空至行尾
ctrl+l:清屏(clear)
ctrl+c:取消本次命令编辑
ctrl+a:切换到行首
ctrl+e:切换到行尾
绝对路径和相对路径
![](https://i-blog.csdnimg.cn/blog_migrate/5e0752bbae349b3d8f6f61dae01eba08.png)
区别:绝对路径以“/”开头,“/结尾”。相对路径不以“/”开头。
Linux中基本命令
# 管理员用户(一般是root)
$ 普通用户
~ 家目录(当前用户的家目录)
/ 根目录
显示当前文件的路径
[root@localhost ~]# pwd
/root //root用户表示,localhost主机名
2.切换到root下的根目录
[root@localhost ~]# cd / //切换到根目录
[root@localhost /]# ls //列出文件
3.切换到opt目录中(上级-下级 相对路径)
[root@localhost /]# cd opt
4.平行切换和往上级目录切换(相对路径)
[root@localhost opt]# ls
1 2 3 qq qzz yht zz
[root@localhost opt]# cd qzz //切换到opt下面的qzz中
[root@localhost qzz]# cd /opt/qq/ //在qzz中平级切换到opt下面的qq中
[root@localhost qq]# cd /opt/ // 切换到qq上面的opt中
[root@localhost opt]# cd .. // 切换到上级目录
[root@localhost /]# cd - // 返回到上次操作的目录中
/opt
[root@localhost opt]# cd ~ // 切换到家目录
5.列出
[root@localhost opt]# ls //列出文件
1 2 3 qq qzz yht zz
[root@localhost opt]# ll //列出文件的详细信息
总用量 8
-rw-r--r--. 1 root root 44 2月 16 00:08 1
-rw-r--r--. 1 root root 0 2月 15 18:47 2
-rw-r--r--. 1 root root 0 2月 15 18:47 3
drwxr-xr-x. 2 root root 6 2月 15 18:46 qq
drwxr-xr-x. 2 root root 4096 2月 15 19:00 qzz
drwxr-xr-x. 2 root root 6 2月 15 18:47 yht
drwxr-xr-x. 2 root root 16 2月 15 18:54 zz
//-普通文件 d文件夹 r 可读 w可写 x可执行
[root@localhost opt]# ls -a //显示隐藏文件(所有文件)
. .. 1 2 3 qq qzz yht zz
[root@localhost opt]# ls -A //只显示隐藏文件
1 2 3 qq qzz yht zz
[root@localhost opt]# ls -d //只显示本目录
[root@localhost opt]# ls -i //查看indoe号
101851281 1 101380474 2 101380475 3 1426915 qq 67147591 qzz 101380472 yht 33555141 zz
[root@localhost opt]# ll -h // 以更人性化的方式展现
总用量 8.0K
-rw-r--r--. 1 root root 44 2月 16 00:08 1
-rw-r--r--. 1 root root 0 2月 15 18:47 2
-rw-r--r--. 1 root root 0 2月 15 18:47 3
drwxr-xr-x. 2 root root 6 2月 15 18:46 qq
drwxr-xr-x. 2 root root 4.0K 2月 15 19:00 qzz
drwxr-xr-x. 2 root root 6 2月 15 18:47 yht
drwxr-xr-x. 2 root root 16 2月 15 18:54 zz
6.删除
[root@localhost opt]# rm -rf 1 //删除一个文件
[root@localhost opt]# ls
2 3 qq qzz yht zz
[root@localhost opt]# rm -rf * //删除所有文件。这个命令慎用慎用!!!!!不能去踩缝纫机!!!!
7.创建目录
[root@localhost opt]# mkdir qzz //创建一个目录
[root@localhost opt]# mkdir yht dxl //平行创建一个目录
[root@localhost opt]# ls
dxl qzz yht
[root@localhost opt]# mkdir -p a/b/c //递归创建(a在opt下,b在a下,c在b下)
[root@localhost opt]# ls
a dxl qzz yht
[root@localhost opt]# cd a
[root@localhost a]# ls
b
[root@localhost a]# cd b
[root@localhost b]# ls
c
8.创建文件
[root@localhost opt]# touch 1
[root@localhost opt]# touch 2 3 //创建一个文件
[root@localhost opt]# ls
1 2 3 a dxl qzz yht
[root@localhost opt]# touch {4..9} //递归创建
[root@localhost opt]# ls
1 2 3 4 5 6 7 8 9 a dxl qzz yht
9.通配符
[root@localhost opt]# ls ky27[qiaozhouzhi] //有一个匹配一个
ky27a:
ky27h:
ky27i:
ky27o:
ky27q:
ky27u:
ky27z:
[root@localhost opt]# ls ky27[q-z] //列出q-z之间出Z之外的所有大小写
ky27q: ky27Q: ky27r: ky27R: ky27s: ky27S: ky27t: ky27T: ky27u: ky27U: ky27v: ky27V:
ky27w: ky27W: ky27x: ky27X: ky27y: ky27Y: ky27z:
[root@localhost opt]# ls ky27{q..z} //列出q-z之间的所有小写
ky27q: ky27r: ky27s: ky27t: ky27u: ky27v: ky27w: ky27x: ky27y: ky27z:
[root@localhost opt]# ls ky27[[:lower:]]* //列出所有小写
[root@localhost opt]# ls ky27[[:upper:]] //列出所有大写
[root@localhost opt]# ls ky27[^qiaozhouzhi] //取反,除了qiaozhouzhi之外的所有大小写都要显示出来
[root@localhost opt]# ls [[:digit:]]* //匹配所有数字
10.显示文件大小
[root@localhost opt]# du -a //显示具体每个文件的大小
[root@localhost opt]# du -h //统计文件大小
[root@localhost opt]# du -sh //统计所有文件大小
11.移动和重命名
[root@localhost opt]# mv 1 qzz //将1重命名为1qzz
[root@localhost qzz]# mv dxl /opt/yht/ //将dxl从qzz目录下移动到opt目录下的yht中
12.复制
[root@localhost qzz]# cp yht /opt/yht/ // 将yht从qzz目录下复制到opt目录下的yht中
[root@localhost opt]# cp -r a /opt/dxl/ //回到opt目录下,将a复制到dxl中
[root@localhost opt]# cp -rp 2 /opt/qzz/ //保留权限将文件2复制到qzz中
13.硬链接
[root@localhost opt]# ln a qzz //给a创建硬链接qzz。当a删除时,qzz还在
[root@localhost opt]# ls
1 2 3 4 a b c d qzz
[root@localhost opt]# rm -rf a
[root@localhost opt]# ls
1 2 3 4 b c d qzz
[root@localhost opt]# ln -s b qq //给b创建软链接qq。当b删除时,qq查不到
[root@localhost opt]# ls
1 2 3 4 b c d qq qzz
[root@localhost opt]# rm -rf b
[root@localhost opt]# ls
1 2 3 4 c d qq qzz
14.环境变量
[root@localhost opt]# echo $PATH //查看所有环境变量
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
15.help的用法
[root@localhost opt]# cat --help // 查看某条命令如何使用
用法:cat [选项]... [文件]...
16.man的用法
localhost opt]# man cat //查看某条命令的详细信息
17.which is的用法
[root@localhost opt]# which is find(命令文件) //查看命令文件在哪里
18.find的用法
精确查找,实时遍历,支持多条件查找
[root@localhost opt]# find -name qzz //根据指定名称查找
./qzz
[root@localhost /]# find /opt/ -name *1 //查找以某个字符为结尾的 文件
[root@localhost /]# find /opt/ -name 1* //查找以某个字符为开头的 文件
[root@localhost opt]# find /opt/ -size -10k //查找指定大小的文件
19.cat [选项] 文件名
@localhost opt]# cat -n 111 //显示行号
![](https://i-blog.csdnimg.cn/blog_migrate/72ccc96b27ccb41011244fbb25db69ff.png)
[root@localhost opt]# cat -b 111 //空格行 不在编行号
![](https://i-blog.csdnimg.cn/blog_migrate/c66dd5013cf4481178eb9d68e58a72fb.png)
[root@localhost opt]# cat -s 111 //把连续的空格行压缩成一个
![](https://i-blog.csdnimg.cn/blog_migrate/ff2e702b948b89571c68943205af7c57.png)
20.rev的用法
[root@localhost opt]# rev 111 //每行以倒叙的方式展示
原样
![](https://i-blog.csdnimg.cn/blog_migrate/011ebe5359cf04234175a077c57a6500.png)
倒叙后
![](https://i-blog.csdnimg.cn/blog_migrate/cfc602e233371df6c603ee722746ba0b.png)
21.less和more
more:从上往下看,自动退出
less:从下网上看(-q自动退出)
22.head
head 默认显示前十行(从头开始)
head-n 指定显示行数
23.tail的用法
[root@localhost opt]# tail -f 111 //动态的,从下往上显示最后一行 实时跟踪
24.wc的用法
eg:
![](https://i-blog.csdnimg.cn/blog_migrate/19e74e07926cf44c7dcbf4903b09ba0e.png)
[root@localhost opt]# wc 111
14 8 52 111 //显示各种信息:例如14:行数 8:有八行有数据 52:有52个字符 111:文件名
[root@localhost opt]# wc -l 111 //显示所有行数
14 111
[root@localhost opt]# wc -c 111 //显示所有字符的数量
52 111
ot@localhost opt]# wc -w 111 //显示有数据的行数的数量
8 111
25.grep的用法(过滤)
eg:grep 内容 文件名
![](https://i-blog.csdnimg.cn/blog_migrate/c52be939abb7392d5f253b9a1c888de7.png)
[root@localhost opt]# grep a 111 //显示包含a的具体信息
![](https://i-blog.csdnimg.cn/blog_migrate/08d7a3734c6d29e544609163dbbd7510.png)
[root@localhost opt]# grep -v aaaa 111 //取反,除了aaaa之外,别的都显示出来
![](https://i-blog.csdnimg.cn/blog_migrate/1f12fb73a268a5a8c1b92cb0e6e40326.png)
[root@localhost opt]# grep -o a 111 // 显示包含a的具体数量
![](https://i-blog.csdnimg.cn/blog_migrate/8899bb3899a4953a89bf8549613caf76.png)
[root@localhost opt]# grep -r a 111 //递归查询,跟grep的查询方式不一样,数据差不多
![](https://i-blog.csdnimg.cn/blog_migrate/b34e295d8b78102db595b0ff45815138.png)
[root@localhost opt]# grep -i a 111 //忽略大小写,展示包含A和a的所有
![](https://i-blog.csdnimg.cn/blog_migrate/e721ee3c0fe5744e276eb8c9ba9f1661.png)
[root@localhost opt]# grep -n a 111 //找到含a的内容展现出来,并显示在哪一行
![](https://i-blog.csdnimg.cn/blog_migrate/001480754236c1e01265a3ff097c1100.png)
[root@localhost opt]# grep -w aaaa 111 //精确查找,必须要查找里面有的内容,查找一整个字符串
![](https://i-blog.csdnimg.cn/blog_migrate/8ae3335477a25c7ac5b863723c7d6c4a.png)
ocalhost opt]# grep "^a" 111 //查看以......开头的(grep"^字符")
![](https://i-blog.csdnimg.cn/blog_migrate/87b3e7ccd626b8e3ab6b69f0f619b79d.png)
[root@localhost opt]# grep "a$" 111 //查看以......结尾的(grep"字符$")
![](https://i-blog.csdnimg.cn/blog_migrate/96ae34b457543856719f8f21961a9e07.png)
[root@localhost opt]# grep "^$" //查看空行
26.查看cpu
[root@localhost opt]# lscpu
27.查看内存
[root@localhost opt]# free
[root@localhost opt]# free -h //更直观的查看内存
28.查看整个机器架构
[root@localhost opt]# arch
x86_64
29.查看内核版本
[root@localhost opt]# uname -r
3.10.0-693.el7.x86_64
30.压缩和解压缩
[root@localhost opt]# gzip -q 文件名 //压缩,提高压缩比例,会把源文件覆盖
![](https://i-blog.csdnimg.cn/blog_migrate/c185921cb1861eb2a125631b71878fa2.png)
[root@localhost opt]# gzip -d 文件名 //解压缩
![](https://i-blog.csdnimg.cn/blog_migrate/604174807327ed34a06765cb2ae9d0e9.png)
[root@localhost opt]# bzip2 -q 文件名 //压缩
![](https://i-blog.csdnimg.cn/blog_migrate/aaca73759f501eba8e4ea80ccede5fa0.png)
[root@localhost opt]# bzip2 -d //解压缩
![](https://i-blog.csdnimg.cn/blog_migrate/6ee60add7d3479e72bd4919fc5bd3e8d.png)
31.修改命令的名字
[root@localhost /]# alias aaa=ls //ls是查找的命令,将ls的功能赋予给aaa,现在aaa也是查找的命令
![](https://i-blog.csdnimg.cn/blog_migrate/9d33e85eae2027665ec562a95d302d6c.png)
[root@localhost /]# unalias aaa //将aaa的临时功能删除
![](https://i-blog.csdnimg.cn/blog_migrate/1923295d94579099646ae138b4b6b421.png)
32.tar的用法
-c:创建(Create).tar 格式的包文件。
-C:解压时指定释放的目标文件夹。
-f:表示使用归档文件。
-p:打包时保留文件及目录的权限。
-P:打包时保留文件及目录的绝对路径。
-t:列表查看包内的文件。
-v:输出详细信息(Verbose)。
-x:解开.tar 格式的包文件。
-z:调用 gzip 程序进行压缩或解压。
-j:调用 bzip2 程序进行压缩或解压。
[root@localhost opt]# ls
123.txt aa bb cc dxl ky26 ky27 qzz yht
[root@localhost opt]# tar -zcvf cfs.tar.gz qzz yht 123.txt //创建一个以.gz结尾的压缩文件
qzz/
yht/
123.txt
[root@localhost opt]# ls
123.txt aa bb cc cfs.tar.gz dxl ky26 ky27 qzz yht
[root@localhost opt]# tar -zxvf cfs.tar.gz //解压缩一个以.gz结尾的压缩文件
qzz/
yht/
123.txt
[root@localhost opt]# ls
123.txt aa bb cc cfs.tar.gz dxl ky26 ky27 qzz yht
[root@localhost opt]# tar -tf cfs.tar.gz //查看压缩文件的内容
qzz/
yht/
123.txt
[root@localhost opt]# tar -jcvf cjm.tar.bz2 aa bb cc //创建一个以.bz2结尾的压缩文件
aa/
bb/
cc/
[root@localhost opt]# ls
123.txt aa bb cc cfs.tar.gz cjm.tar.bz2 dxl ky26 ky27 qzz yht
[root@localhost opt]# tar -tf cjm.tar.bz2 //查看压缩文件的内容
aa/
bb/
cc/
[root@localhost opt]# tar -jxvf cjm.tar.bz2 // //解压缩一个以.bz2结尾的压缩文件
33.vim
编辑模式:
a:在当前光标位置之后插入内容
i:在当前光标位置之前插入内容
o:在光标所在行之下插入一个新行内容
O:在光标所在行之上插入一个新行内容
A:在所在行的行尾插入内容
I:在所在行的行首插入内容
命令模式:
翻页移动 Page Down键或 Ctrl+F 向下翻动一整页内容
Page Up键或 Ctrl+B 向上翻动一整页内容
行内快速跳转 Home键或^键、数字 0键 跳转到本行的行首
End 键或$键 跳转到本行的行尾
行间快速跳转 1G 或 gg 转到文件内容的第 1 行
G 跳转到文件的最后一行
#G 跳转到文件中的第#行(其中“#”号用具体数字替换)
M 跳转至当前页的中间位置
底行模式:
显示行号 :set nu 在编辑器中显示行号
:set nonu 取消行号显示
删除 x或Delete键 删除光标处的单个字符
dd 删除当前光标所在行(有剪切功能)
#dd 删除从光标处开始的#行内容 -----#表示几行
d^ 删除当前光标之前到行首的所有字符
d$ 删除当前光标处到行尾的所有字符
dw 删除光标处的整个单词
替换字符 R 或 Shift+r 替换当前光标处字符
复制 yy 复制当前行整行的内容到剪贴板
#yy 复制从光标处开始的#行内容 ----#表示几行
粘贴 p 粘贴到光标所在行之下
P 粘贴到光标所在行之上
查找 /word 从当前光标处开始向后进行查找字符串“word”
?word 从当前光标处开始向前进行查找
n 定位下一个匹配的被查找字符串
N 定位上一个匹配的被查找字符串
撤销 u 按一次取消最近的一次操作;重复u键,恢复多步操作
U 用于取消对当前行所做的所有编辑
保存退出
:w 保存修改的内容
:w 新文件名 另存为其它文件
:q 直接退出,不保存,且新创的文件并不好保存
:q! 放弃对文件内容的修改并退出
ZZ或:wq、:x 保存当前的文件内容并退出vi编辑器
打开新文件 :e 其它文件名 打开新的文件进行编辑
读入文件内容 :r 其它文件名 在当前文件中读入其他文件内容
文件内容替换
:s /old/new 将当前行中查找到的第一个字符串“old” 串替换为“new”
:s /old/new/g 将当前行中查找到的所有字符串“old” 替换为“new”
:#,# s/old/new/g 在行号“#,#”范围内替换所有的字符串“old”为“new”
:% s/old/new/g 在整个文件范围内替换所有的字符串“old”为“new”
:s /old/new/c 在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认
eg:
:1,5 m 10 将1-5行的内容剪切粘贴到第10行下面
:1,5 co 10 将1-5行的内容复制粘贴到第10行下面