自以为前端工程师可能用不到Shell命令。但在学习Git时,发现除了Git命令,还有好多是需要Shell命令来配合的。所以,Shell命令需要系统的学习并进行总结,本文将详细介绍shell常用命令
特殊字符
特殊字符对shell具有特殊含义,不要把它们当作普通字符使用。某些特殊字符用于正则表达式匹配
& ; | * ? ' " ` [ ] ( ) $ < > { } # / \ ! ~
空白符
尽管RETURN、SPACE、TAB都不是特殊字符,但它们对shell具有特殊含义
RETURN键通常用于结束命令行并开始命令的执行
SPACE键和TAB键则用作命令行上的分隔符
转义字符
要将特殊字符当作普通字符使用,可对它们转义引用
[注意]斜杠(/)无法被转义,它总是表示路径名中的分隔符
在特殊字符前加反斜杠(\)即可将将、特殊字符转义。要将连续的两个或多个特殊字符转义,必须在每个字符前面加一个反斜杠(\)
另一种将特殊字符转义的方法是使用单引号将它们引起来('**'),也可以将特殊字符和普通字符一起用一对单引号引起来
![](https://i-blog.csdnimg.cn/blog_migrate/89fc0df29b5c48b489fa6297f053495f.png)
目录相关
显示目录路径
【pwd】 显示当前目录
[注意]如果使用Windows系统,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文
![](https://i-blog.csdnimg.cn/blog_migrate/0c0c806c1a7365daa5da919cc037cef1.png)
切换目录
【cd】 切换到另一个工作目录,参数direction为要指定为新工作目录的目录路径名
cd [options] [direction]
![](https://i-blog.csdnimg.cn/blog_migrate/e835dbd3cf594f6bbb10bef1d21cc63f.png)
如果不带任何参数,或使用波浪号(~),切换到主目录
![](https://i-blog.csdnimg.cn/blog_migrate/059f4dea2b70e91ff8833268e60e2464.png)
使用连字符(-)来切换到前一次的工作目录
使用双句点(..)来返回到当前目录下的上一级目录
![](https://i-blog.csdnimg.cn/blog_migrate/16d8c1f4ec621dd15518bcf3d8d7561d.png)
创建目录
【mkdir】创建目录,如果已经存在同名目录,则无法创建成功
mkdir [option] directory-list
删除目录
【rmdir】删除目录,如果不是空目录,则无法删除成功
rmdir directory-list
![](https://i-blog.csdnimg.cn/blog_migrate/a48f441b6b88090e630ccf7735c5bbac.png)
文件相关
显示所有文件
【ls】 类似于dos下的dir命令,用于显示一个或多个文件的相关信息
默认情况下,ls按照文件名的字母顺序列出文件的信息
ls [options] [file-list]
options有很多选项,常用选项如下
ls –a 显示所有文件,包括隐藏文件 ls –F 在文件的后面添加表示文件类型的符号。*表示可执行,/表示目录,@表示连结文件 ls –l 列出每个文件更详细的信息 ls -R 递归地列出子目录的内容 ls -t 按最后一次修改时间的顺序显示文件
![](https://i-blog.csdnimg.cn/blog_migrate/327f743ba97fe56df0895251b85cea36.png)
file-list包含目录时,ls将显示该目录的内容
ls mygit 显示mygit目录下的文件
ls g* 显示所有以g字母开头的文件
![](https://i-blog.csdnimg.cn/blog_migrate/fddda43e1df51acf8a26b03d34d50328.png)
显示文件内容
【cat】 显示文本文件的内容,类似于dos下的type命令
cat [options] [direction]
cat file1 显示file1文件内容
cat file1 file2 依次显示file1,file2的内容
cat file1 file2 > file3 把file1,file2的内容结合起来,再重定向(>)到file3文件中
">"是右重定向符,表示将左边命令结果当成右边命令的输入。如果右侧文件是一个已存在文件,其原有内容将会被清空,而变成左侧命令输出内容。如果希望以追加方式写入,请改用">>"重定向符
![](https://i-blog.csdnimg.cn/blog_migrate/29fe57130319c36cd2c816a1784669aa.png)
重写文件
如果">"左边没有指定文件,如: cat >file1,将会等用户输入,输入完毕后再按[Ctrl]+[d],就会将用户的输入内容写入file1
![](https://i-blog.csdnimg.cn/blog_migrate/d9eb0aa978ac9bdf84200734a51f729f.png)
删除文件
【rm】 删除文件,与dos下的del/erase命令相似
rm [options] file-list
options有很多选项,常用选项如下
rm –i 系统在删除文件之前会先询问确认,用户回复y或Y之后,文件才会真的被删除 rm –r 递归删除指定目录的内容,包含所有子目录和目录自身 rm –f 和-i参数相反,-f表示强制删除 rm -v 显示被删除的每个文件的文件名
![](https://i-blog.csdnimg.cn/blog_migrate/c42e7abc87b10a26136a26ab7a156465.png)
复制文件
【cp】 复制文件
cp [options] source-file destination-file
cp [options] source-file-list destination-directory
使用cp命令可以生成一个文件的一个副本
![](https://i-blog.csdnimg.cn/blog_migrate/134951198548e0df81cf6e66862009f1.png)
使用cp命令也可以把一个或者多个文件复制到某个目录
![](https://i-blog.csdnimg.cn/blog_migrate/70913b11cd350887f0173e68ccd33eca.png)
![](https://i-blog.csdnimg.cn/blog_migrate/466792c268a1ecc01c3cd93a1d18cbcc.png)
cp -R 递归地复制包含普通文件的目录层次结构
![](https://i-blog.csdnimg.cn/blog_migrate/7f02eede49cebf922dcdd985ebce601f.png)
移动文件或重命名
【mv】重命名或移动文件
mv [options] existing-file new-filename mv [options] existing-file-list direction mv [options] existing-direction new-direction
使用mv命令可以重命名文件
![](https://i-blog.csdnimg.cn/blog_migrate/ee8950aa21aa6788eb23672e6eae83d0.png)
使用mv命令可以将一个文件移动到另一个目录
![](https://i-blog.csdnimg.cn/blog_migrate/3ca356d00c2d10fcd55635303079b6a8.png)
使用mv命令可以将一个文件移动到另一个目录,并改名
![](https://i-blog.csdnimg.cn/blog_migrate/ab2339e026b5dc9e211381f84ed7474f.png)
使用mv命令也可以移动目录
![](https://i-blog.csdnimg.cn/blog_migrate/b9569167f2d2a045444d9d44644939c7.png)
新建文件
【touch】 新建文件,或改变文件的访问和修改时间
touch [options] file-list
同名文件不存在时,touch用于新建文件
![](https://i-blog.csdnimg.cn/blog_migrate/c414a56494408cb26fd23c4a888aff8f.png)
同名文件存在时,touch用于修改文件的访问和修改时间
![](https://i-blog.csdnimg.cn/blog_migrate/fa0a5c9663b7fd9e24bad9a95c503af7.png)
文件高级
比较文件
【cmp】 逐字节地比较两个文件,如果两个文件相同,则cmp不显示任何内容;否则,cmp将显示第1个不同处对应的字节数和行号
cmp [options] file1 [file2 [skip1 [skip2]]]
![](https://i-blog.csdnimg.cn/blog_migrate/f0f69479ae5e456d2b76c96256b93744.png)
显示不同
【diff】 按行显示两个文本文件的不同。默认情况下,可以按照diff显示的不同来编辑其中的一个文件,使之与另一个文件相同
diff [options] file1 file2
diff [options] file1 directory
diff [options] directory file2
diff [options] directory1 directory2
file1和file2为diff要比较的普通文本文件的路径名。当file2被directory参数替换时,diff将在directory目录下查找与file1同名的文件;类似地,当file1被directory替换,diff将在directory目录下查找与file2同名的文件;当指定两个目录参数时,diff将比较directory1目录下与directory2目录下具有相同的简单文件名的两个文件
![](https://i-blog.csdnimg.cn/blog_migrate/e2341e464bc1fb1528017cb1b485cedb.png)
1c1表示更改a.txt的第1行,使之与b.txt的第一行相同
统计
【wc】 显示行数、单词数和字节数
wc [options] [file-list]
![](https://i-blog.csdnimg.cn/blog_migrate/62db5a8515f2ca62763c86248a7233bf.png)