常用基本命令
什么是shell?
shell可以看作是一个命令解释器,为我们提供交互式文本控制界面。我们可以通过终端控制台来输入命令,由shell进行解释并最终交给内核执行。在bin文件下会看见一个sh脚本,这就是shell的入口。sh的属性是一个软连接,真正连接到的是bash。
1.1帮助命令
man
由于Linux中各种命令特别多,为了方便使用,Linux提供了帮助命令man,帮助我们获取各种信息。
基本使用语法:man [命令或配置文件]
例如查看ls的使用方法:man ls
![](https://img-blog.csdnimg.cn/img_convert/5600de169ca64d89acaa1885058b7f78.png)
help
linux中并不是所有的命令都可以直接用man查看,通常是一些外部命令能够使用man进行查看,若要查看使用内部命令,需要借助help来实现,比如查看cd的使用方法,就需要用:help cd
如何判断一个命令是内部命令还是外部命令?使用 type [命令],就可以查看类型。
![](https://img-blog.csdnimg.cn/img_convert/fdf69fb392af46bca8bedc1e0309e866.png)
1.2 文件目录类
pwd显示当前工作目录的绝对目录
绝对目录会包含根“/”
![](https://img-blog.csdnimg.cn/img_convert/1dd5d35ee28d406a8daacde99750d430.png)
当前用户的主文件
cd 切换目录
![](https://img-blog.csdnimg.cn/img_convert/34e4122afa954400859e005c5355603d.png)
cd可以使用户从当前相对位置直接跳转到当前文件夹下其他文件,这样就不用输入绝对路径。并且使用相对目录可以不用带“/”。
![](https://img-blog.csdnimg.cn/img_convert/6141c0026a85453b9c6bd5d7dc18e5d8.png)
返回上一级文件夹使用cd -
![](https://img-blog.csdnimg.cn/img_convert/b400ea0742674b02bf773b75bf05c132.png)
ls 列出目录内容
显示当前目录下所有文件:ls -a
![](https://img-blog.csdnimg.cn/img_convert/58e233819450481887f15f2990c05550.png)
其中“..”表示上级目录,“.”就是代表当前目录,以“.”开头的文件表示隐藏文件
显示当前文件目录下的全部信息:ls -l (ll)
![](https://img-blog.csdnimg.cn/img_convert/a3cc336f3b09453b9725a6769ff95479.png)
怎么区分文件和文件夹呢?从上述详细信息中就可以看到,以“-”开头的是一般文件,以“d”开头的就是文件夹(目录)。
mkdir 创建一个新目录
创建一个名为a的文件夹 :mkdir a
![](https://img-blog.csdnimg.cn/img_convert/3db507c33cf44189a324f62dde0cdfb6.png)
或者指明绝对路径,在这个路径下创建一个文件夹:mkdir /a 表示在根目录下创建文件夹
同时在一个文件夹下创建多个目录:mkdir b c
创建嵌套目录:mkdir -p g/h/i
![](https://img-blog.csdnimg.cn/img_convert/ad8ad712c1d54cb3a3c5d4c88365308b.png)
rmdir 删除一个空目录
删除名为a的文件夹:rmdir a
![](https://img-blog.csdnimg.cn/img_convert/181e3e957bcf425b9e2de459ce6d4923.png)
删除嵌套文件夹g:rm -p g/h/i (包含i和h文件夹的g被删除干净)
![](https://img-blog.csdnimg.cn/img_convert/ca88da069b804ee9bfd8aafebc6d7aae.png)
touch创建空文件
touch 文件名称,例如 touch hello
![](https://img-blog.csdnimg.cn/img_convert/ab33415118214c57b8deb58c37398d46.png)
注意文件和目录(文件夹)是不一样的!hello是文件,a是文件夹(目录)
![](https://img-blog.csdnimg.cn/img_convert/166509bb72ef4fafadd975c906cbe260.png)
在指定位置创建文件:touch 绝对路径
cp 复制文件或目录
把某个文件复制到另外一个地方:cp 文件名 目录名
![](https://img-blog.csdnimg.cn/img_convert/7e6993d48ee54695a20e8328c5652b7e.png)
让某个文件覆盖另外一个文件: cp 文件名 目录名+另一个文件名
![](https://img-blog.csdnimg.cn/img_convert/d69c177e11834a5c81d6c6f090a7b0a7.png)
虽然hello文件依然存在,貌似没有被覆盖掉,但是打开文件hello后,会发现里面的内容已经被替换成initial文件内容了。
把某个文件夹全部复制到另外一个地方(复制目录):cp -r 原文件夹路径 需要复制到的地方(复制目录) 。例如:把当前文件夹a以及他的内容完全复制到另外一个地方
![](https://img-blog.csdnimg.cn/img_convert/14af8b5a0d1f40039a9bef0deaa81a15.png)
rm 删除文件或目录
删除文件:rm 文件名
![](https://img-blog.csdnimg.cn/img_convert/d4ed29db02b14fea938272a2875c0a50.png)
删除目录:rm -r 目录名。rm和rmdir区别是什么呢?rm是一个一般化操作,如果直接用rm删除目录是无法实现的,它的默认操作是删除一个文件。而rmdir只能删除空目录。所以要删除不空的目录,要使用rm -r进行递归操作。
![](https://img-blog.csdnimg.cn/img_convert/e185bfb5ade24ad3893c5a5f64324f33.png)
若不想要这么多提示,直接使用 rm -rf 目录名。删库跑路就是rm -rf /*。哈哈哈,不要轻易操作。
![](https://img-blog.csdnimg.cn/img_convert/590d454de0ba4a1392b52e136390687e.png)
只想删除目录下的文件,但是要保留目录:进入到要保留的目录,然后执行rm -f ./*
mv 移动文件与目录或者重命名
将文件移动到别的目录下:mv 文件名 目录名 。移动当前文件initial-setup-ks.cfg到别的地方,当前文件夹下就会没有这个文件了,注意这是移动不是复制。
![](https://img-blog.csdnimg.cn/img_convert/7fce968dc3674cc390800ca7a0e98149.png)
mv做重命名操作:mv 文件名 位置+newName。例如将hello重命名为we
![](https://img-blog.csdnimg.cn/img_convert/13fee72164bb4f1ab89c12b71bb3bbbf.png)
cat 查看文件内容
查看某个文件内容:cat 文件名。cat -n 文件名 显示的是带行号的内容
![](https://img-blog.csdnimg.cn/img_convert/73864edf102644d1a8e297ebb1c24eb5.png)
cat命令的缺点就是当文件过大时,全屏都是文件内容,不方便查看,因此cat适合小文件查看。
more 文件内容分屏查看器
more是一个基于Vi编辑器的文本过滤器,它以全屏按页方式显示文本文件的内容。more 文件名
快捷操作
![](https://img-blog.csdnimg.cn/img_convert/a526ef26adb34b39adbcf62aae1d8bfc.png)
![](https://img-blog.csdnimg.cn/img_convert/1969e98f0f3a48568d85fefca4684edb.png)
less分屏显示文件内容
less 指令用来分屏查看文件内容,它的功能与 more 指令类似,但是比 more 指令更加 强大,支持各种显示终端。less 指令在显示文件内容时,并不是一次将整个文件加载之后 才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。 less 文件名
快捷操作
![](https://img-blog.csdnimg.cn/img_convert/820ddb5571ca4af582edcf10a7bb294b.png)
echo 输出操作
直接输出内容:echo 文本内容
![](https://img-blog.csdnimg.cn/img_convert/545fc85d28974d30b71ffa2344c75d48.png)
若需要进行转义字符操作,需要加上-e: echo -e 文本内容
![](https://img-blog.csdnimg.cn/img_convert/2890a5948d2143b4a977daa3a2113a7c.png)
>输出重定向和>>追加
将输出信息写道文件中(覆盖写):ls -l > 文件 / ls > 文件
![](https://img-blog.csdnimg.cn/img_convert/998645cdf76249faae208b70991980d3.png)
追加写入文件(追加写):ls >> 文件
![](https://img-blog.csdnimg.cn/img_convert/15a25b18b6e74057a03bb0984311b392.png)
若要对配置文件进行追加等操作,可以将echo和>>搭配使用,效率很高。
head 显示文件头部内容
head 文件 默认显示文件前十行内容。
![](https://img-blog.csdnimg.cn/img_convert/c0a1f5cad3ab4604af89408b7a915b71.png)
若要指定显示行数内容:head -n 数字 文件 例如:head -n 5 1.txt 显示前五行内容。
tail输出文件尾部内容
tail 文件:默认显示文件后10行内容。
tail -n 数字 文件:显示指定行数的末尾内容。
实时追踪该文档的所有更新:tail -f 文件
默认显示后10行内容,但是发现现在并没有退出,实际上该进行目前属于监控状态,实时监控1.txt文件的追加情况。
![](https://img-blog.csdnimg.cn/img_convert/6bee31fee46942db8af42b33d265cee2.png)
再打开一个进程进行交互操作:
![](https://img-blog.csdnimg.cn/img_convert/873c83ea48d1464382bbe5628ac950ee.png)
在另一个进程监视到了追加内容:
![](https://img-blog.csdnimg.cn/img_convert/af2c8ea12c804b9abcf01ea63b101904.png)
其他操作
停止当前监视:ctrl+s;继续当前监视:ctrl+q (继续监视后会将刚刚停止监控时输入的内容显示出来);退出监控程序:ctrl+c;
ln 软连接
软链接也称为符号链接,类似于 windows 里的快捷方式,有自己的数据块,主要存放 了链接其他文件的路径(类似于指针)。
给文件创建一个软连接:ln -s 原文件/目录 软连接名
将root下的1.txt文件链接到gxy文件下。发现myInfo跟其他文件形式不一样,查看类型是“lrwxrwxrwx”,以l开头,表示是一个软连接。此时myInfo==1.txt,对myInfor的一切操作都会在1.txt中实现。
![](https://img-blog.csdnimg.cn/img_convert/6336c7d709664803a7df481874c9512c.png)
给一个目录创建一个软连接:
![](https://img-blog.csdnimg.cn/img_convert/82c8c793275f48bca88e38154e28c07e.png)
删除软连接: rm 文件名 软连接实际上也是一个文件,所以采取rm即可
![](https://img-blog.csdnimg.cn/img_convert/6bc265702a1f4677b5225ee96ea1b6b9.png)
如果使用 rm -rf 软链接名/ 进行删除操作,会把软链接对应的真实目录下内容删掉 。
如果原文件/目录被删掉,即使软连接存在,也进不去对应的文件/目录。
history 查看已经执行过历史命令
用法:history
![](https://img-blog.csdnimg.cn/img_convert/89009043dd86416a99083bb1c05093ae.png)
显示最近执行的10条操作:history 10
删除所有历史记录操作:history -c