目录

Linux常见指令

Linux常见指令

1、ls指令

**语法: ls [选项][目录或文件]

功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。**


1.1、ls:列出该目录下的所有文件名,不包含隐藏文件。

https://i-blog.csdnimg.cn/direct/3fb5be3da6d14d4687473a599c14cb09.png


1.2、ls -a:列出该目录下的所有文件名,包含隐藏文件。

https://i-blog.csdnimg.cn/direct/c63731f471324eb1b560ccc79db7ba9e.png

linux中以.开头的文件为隐藏文件。


1.3、ls -l:列出该目录文件详细信息

https://i-blog.csdnimg.cn/direct/953508289d1b4a5198d84aa4b0957f7d.png 列出文件所有信息:包括文件的类型,权限,文件大小,时间,文件名等。

用红色圈起来这一列代表文件的类型,d就是目录文件,-就是普通文件。

多个选项可以搭配一起使用,例如ls -a -l或者ls -al:

https://i-blog.csdnimg.cn/direct/394c768e117f4f5ba65b85e455336cae.png

这样就可以列出文件的详细信息,同时包含隐藏文件。

linux任何目录下都有两个隐藏文件:.和..

.文件表示当前路径:帮用户定位当前目录下的一个文件。

..文件表示当前路径的上级路径。

例如我们写了一个C程序,编译运行后我们要运行:

https://i-blog.csdnimg.cn/direct/c7666c6581704884a3929177982a1119.png

我们需要通过./a.out来运行它,不能直接用文件名来运行。

那么我们输入的指令呢?指令本质上也是一个可执行程序,我们输入就可以执行然后返回结果给我们。但是为什么指令不需要加./呢?这是因为指令配置了环境变量,这个我们后面再讲。

另外ll的功能相当于ls -l:

https://i-blog.csdnimg.cn/direct/83064bf57c2c42a194035e8223570071.png


1.4、ls -d 指定目录:将目录像文件一样显示,而不是显示目录下的文件。

https://i-blog.csdnimg.cn/direct/07914da0ea8d4860b562260130bf6c45.png


1.5、ls -F:在每个文件名后面附上一个字符说明该文件的类型。*表示可执行的普通文件,/表示目录,@表示符号链接。

https://i-blog.csdnimg.cn/direct/a866d1edd92940f79b9f747249ba2dd7.png


2、pwd命令

**语法: pwd

功能:显示用户当前所在的目录**

https://i-blog.csdnimg.cn/direct/d8dff9e2db804315b1211c49314319fa.png

当前用户路径为/home/zzy,也就是用户家目录。任何用户都有家目录,就是在/home/xxx。


3、cd指令

**语法:cd 目录名

功能:改变工作目录。将当前工作目录改变到指定的目录下。**


3.1、cd …:修改用户路径为当前路径的上级路径

https://i-blog.csdnimg.cn/direct/d97ea7a2153c4475a3fd3d5980ce4650.png

3.2、cd配合绝对路径和相对路径进行路径切换

linux的目录结构整体是一颗多叉树,它的叶子节点一定是空目录或非空目录文件,路上的节点是一个非空目录。那么我们对linux的目录增删查改本质上就是对这颗多叉树进行增删查改。

linux路径是从/根路径开始的,我们把从根路径/开始定位到指定位置,具有唯一性的路径称为绝对路径。把以当前自己所处的路径为起始参照位置,来进行特定文件的定位称为相对路径。

https://i-blog.csdnimg.cn/direct/ff0a4e37adaf4d938f301fbe7efd0c33.png


3.3、cd - :回到用户上一次访问的路径

https://i-blog.csdnimg.cn/direct/0e69147fb1ae4defbac01d5b6abfd00c.png


3.4、cd ~:返回用户家目录

每个用户都有家目录,就是在/home/xxx。

https://i-blog.csdnimg.cn/direct/0c16b91b8c24471da066a5e494f64ed3.png


4、touch指令

**语法:touch [选项]… 文件…

功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。**

touch 文件名:用来创建普通文件。

https://i-blog.csdnimg.cn/direct/926077170c01407691ca9907d477b972.png

如果需要修改文件内容,我们可以使用nano:

https://i-blog.csdnimg.cn/direct/850c2cac73364bd189ef2d5f3589154a.png

https://i-blog.csdnimg.cn/direct/a89bddcf109a4a31874414fdf191c60c.png

下面有对应选项的功能。


5、mkdir指令

**语法:mkdir [选项] dirname…

功能:在当前目录下创建一个名为 “dirname”的目录**

5.1、mkdir xxx:创建文件名为xxx的目录

https://i-blog.csdnimg.cn/direct/5f0b1816d22241a983cbd781f5d4bfbb.png

5.2、 mkdir -p x1/x2/x3 :创建一条路径

https://i-blog.csdnimg.cn/direct/7e2c2e60f4414748afe19709ccc17b32.png

tree指令可以用来查看linux下的目录结构。


6、rmdir指令和rm指令

rmdir是一个与mkdir相对应的命令。mkdir是建立目录,而rmdir是删除命令。

rmdir只能用来删除空目录。

https://i-blog.csdnimg.cn/direct/711ceccff575426abb69fdf8c16f5ff6.png

**rm命令可以同时删除文件或目录

语法:rm [-f-i-r-v][dirName/dir]**

6.1、rm 文件名:删除文件,可以删除普通文件和空目录

https://i-blog.csdnimg.cn/direct/06007180c8764715b015b4b5e25275b5.png

6.2、rm -i:删除文件前进行询问

https://i-blog.csdnimg.cn/direct/28fa1bf0a8284da89fe62bce22a6194d.png

6.3、rm -f:强制删除文件

https://i-blog.csdnimg.cn/direct/adf169e5af7c41b2bf333c1ad0103c29.png

6.4、rm -r:递归删除,用于删除含有文件的目录

https://i-blog.csdnimg.cn/direct/4ed24ac93b6d47a2aced21564b9832f9.png

6.5、rm -rf xxx:递归强制删除普通文件或目录(慎用!!!!!!!!!!!)

https://i-blog.csdnimg.cn/direct/e74c12c2ee434ac99b8c219f078ae215.png


7、man指令

Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。访问Linux手册页的命令是man。语法: man [选项] 命令

7.1、man 1 :查看linux指令

https://i-blog.csdnimg.cn/direct/1ff184fef26c401a88261b9cd89e66e7.png

https://i-blog.csdnimg.cn/direct/f8e1426f643c48ee85bc98ed0107301f.png

7.2、man 2:查看系统调用接口

https://i-blog.csdnimg.cn/direct/f784848d1e29410e8a376a64c5801d14.png

https://i-blog.csdnimg.cn/direct/52e4fc70b99843d7a84d4248176f9ca6.png

7.3、man 3 :查看C语言接口

https://i-blog.csdnimg.cn/direct/a27fa138137e43b99f5a2508d38e1599.png

https://i-blog.csdnimg.cn/direct/0fa431fefd6f441688dcace5b0d45750.png

7.4、 man man:查看man指令如何使用

https://i-blog.csdnimg.cn/direct/57bdd4413bd34928975afcabd83e4c4e.png

https://i-blog.csdnimg.cn/direct/df83bcaca8ab46128fd70db0cb5426ea.png

在man指令中退出按q即可。

8、cp指令

**语法:cp [选项] 源文件或目录 目标文件或目录

功能: 复制文件或目录**

8.1、cp指令拷贝普通文件

https://i-blog.csdnimg.cn/direct/34d2bdfb473747d68e1c4fc45aeb81d0.png

8.2、cp -i:覆盖文件之前询问用户

https://i-blog.csdnimg.cn/direct/fe697c5e5f52445fadefb83976de3acc.png

8.3、cp -f:强制覆盖不询问用户

https://i-blog.csdnimg.cn/direct/772a066ef0934132a6d25b3cfe4736a3.png

8.4、cp -r 拷贝目录

https://i-blog.csdnimg.cn/direct/ad376f7c656f415eb0da36669f0f1b0c.png

9、mv指令

**语法: mv [选项] 源文件或目录 目标文件或目录

功能:**

**1. 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。

  1. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。

  2. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。**

9.1、mv对文件进行重命名

https://i-blog.csdnimg.cn/direct/6afd1bbfa2ee465ab3155be37018c0f6.png

9.2、mv对文件进行剪切

https://i-blog.csdnimg.cn/direct/a8b183dc035c4ce2904d975457adb5c8.png

9.3、mv对文件进行剪切并重命名

https://i-blog.csdnimg.cn/direct/140f53d9019a4aa78b5263469eaaebdc.png

所以可以这样理解:9.1是对文件移动到当前路径下然后重命名为test.txt。9.2是对文件移动到d1,并没有重命名。


10、cat指令

**语法:cat [选项][文件]

功能: 查看目标文件的内容**

10.1、cat查看文件内容

https://i-blog.csdnimg.cn/direct/9118678347424a4ca7846860091c52bb.png

10.2、cat -n:带行号输出文件信息

https://i-blog.csdnimg.cn/direct/3b4482ee9af14dc8ab6a7e196f21cc69.png

10.3、cat -s:不输出多行空行

https://i-blog.csdnimg.cn/direct/1d1469c1a4024d48aea9a5de0ad43966.png

10.4、cat -b对非空输出行编号

https://i-blog.csdnimg.cn/direct/3db4c2453eb141c59a1b14bb97f5b0ee.png


11、重定向

你是如何理解指令的?指令本质上是一个可执行程序,它是在linux中特定路径下存在的:/usr/bin。因为指令配置了环境变量,所以可以直接输入指令然后运行。而我们自己写的程序没有配置环境变量,所以需要./来运行,如果将我们写好的编译好的C程序拷贝到/usr/bin目录下,就可以像指令一样直接运行:

https://i-blog.csdnimg.cn/direct/d3e1c64573c84443b5bd71af2dd5fb3c.png

直接使用cat指令,可以从键盘获取数据然后输出:

https://i-blog.csdnimg.cn/direct/6197a1d09fec46df987cb93e045f52de.png

echo 指令可以将字符串输出到显示器上:

https://i-blog.csdnimg.cn/direct/ffbb3f3773594a7ca54720751eea2d06.png

**那么你如何理解键盘和显示器呢?数据怎么显示到显示器上的,又是怎么从键盘获取的呢?

本质上键盘、显示器也是文件,向显示器上打印数据就是将数据写入到显示器文件,从键盘获取数据就是从键盘文件中获取数据。linux下一切皆文件。**

11.1、输出重定向:

https://i-blog.csdnimg.cn/direct/cf12fc1036c548e6809f740f73c7719a.png

输出重定向:本来应该显示到显示器上的内容,现在写入到文件中。并且每次都是清空文件然后再写入。

11.2、追加重定向:

https://i-blog.csdnimg.cn/direct/969696a94648463a9e486c7c2e6bf17f.png

追加重定向:不清空文件,在文件末尾追加内容。

11.3、输入重定向:

https://i-blog.csdnimg.cn/direct/d01e19f55a2e40328241b87b3e82dd3c.png

输入重定向:本来应该从键盘文件中读取,现在从指定的文件中读取。


12、more指令

cat指令是不适合看大文本的,适合看小文本。

如果我们要看一个大文本,如项目、日志等。就需要下面的命令。

more:功能类似cat,查看文本信息。

下面我们通过一行命令构建一个大文本:

cnt=1; while [ $cnt -le 10000 ]; do echo "hello linux $cnt"; let cnt++; done > f.txt

more查看文本:

https://i-blog.csdnimg.cn/direct/e7ced7fdabd844578ed3bd477653810f.png

可以通过enter键向后翻,通过q退出more。


13、less指令

less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前

不会加载整个文件。

https://i-blog.csdnimg.cn/direct/90bf40e9210e4b5ba658e3e7f6ad946a.png

可以通过上下键翻阅,也可以通过jk键进行上下翻阅。q退出。

/:可以向下寻找字符串

https://i-blog.csdnimg.cn/direct/7a2d26ed0ed341319dd1ddaae0a0a948.png

?:可以向上查找字符串

https://i-blog.csdnimg.cn/direct/3a9802c44fb043808cce9fd18a3904df.png


14、head指令

**head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾。

语法: head [参数]… [文件]…

功能:

head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。**

14.1、head查看文本

https://i-blog.csdnimg.cn/direct/996abf66b02d4c6b84d401bf10390e98.png

默认显示前10行

14.2、head -n:显示前n行

https://i-blog.csdnimg.cn/direct/1360ae55eded46cc9960a91ef619f5ea.png


15、tail指令

**tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -

f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容.

语法: tail[必要参数][选择参数][文件]

功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。**

15.1、tail指令查看文本:默认查看最后10行

https://i-blog.csdnimg.cn/direct/5ba2298321fe4b54a90985d4a0aacfe8.png

15.2、tail -n:查看最后n行

https://i-blog.csdnimg.cn/direct/38df46f3e223461bbad7b4c0d0462577.png


16、管道

现在假设我想查看f.txt文件中的6-10行,该如何实现呢?

方式一:先用head将前10行输出重定向到文件中,然后用tail显示最后5行。

https://i-blog.csdnimg.cn/direct/ca23825527e5449b8bf929b2317860c3.png

但是这种方式还是比较麻烦,我们可以利用管道:

https://i-blog.csdnimg.cn/direct/efce23c63e4b42529863b6e00ad2a685.png

|就是管道,将head取得的前10行通过管道流向tail。管道是一个内存级的文件。

还可以统计文本行数:

https://i-blog.csdnimg.cn/direct/cf242973eb1646128efb17d8d019fc3c.png


17、时间相关指令

**date显示

date 指定格式显示时间: date +%Y:%m:%d

date 用法:date [OPTION]… [+FORMAT]**

https://i-blog.csdnimg.cn/direct/010373e5ab0e44be92e4eb9465b793e4.png

https://i-blog.csdnimg.cn/direct/5da44ef0a56b479a825696381db661a8.png

date +%s:显示时间戳

https://i-blog.csdnimg.cn/direct/05f53353585e4c45b7388f0e1320dc51.png

时间戳:从1970年1月1日午夜开始到现在所经过的秒数。

date -d@时间戳:通过时间戳显示时间信息

https://i-blog.csdnimg.cn/direct/713260a92b9f4a16bfb75a347cc02b53.png


18、cal指令

**cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。“阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。

命令格式: cal [参数][月份][年份]

功能: 用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份**

18.1、cal默认显示当前月份日历

https://i-blog.csdnimg.cn/direct/696b50633a5841d2ad239837cf2bb552.png

18.2、cal -3:显示当前月份、前一月、后一月日历信息

https://i-blog.csdnimg.cn/direct/f661dc4844324cccb360542d08604c5e.png

18.3、cal 年份:显示当年日历,也可以加-y,也可以不加,可以认为默认就是加-y的。

https://i-blog.csdnimg.cn/direct/751f4665864b49c881ead4c2900bba47.png


19、find指令

**语法: find pathname -options

功能: 用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)**

常用选项:find -name 查找文件名。其他选项可以自行查阅man文档使用。

例如我想查看当前路径下的test.c文件:

https://i-blog.csdnimg.cn/direct/1500608bd85142e6b05c96735ca27f9e.png

例如我想查阅家目录下所有的.c文件:

https://i-blog.csdnimg.cn/direct/28399211bf724ccabaebdb1afc058f37.png

*是通配符,查找出所有以.c结尾的文件。

使用which可以查看系统指令的位置:在/usr/bin下面找

https://i-blog.csdnimg.cn/direct/5ae705ed8dd647569eeb1b3d881f8f1e.png


20、grep指令

grep是行过滤工具

**语法: grep [选项] 搜寻字符串 文件

功能: 在文件中搜索字符串,将找到的行打印出来**

20.1、grep过滤出指定字符串

https://i-blog.csdnimg.cn/direct/df22ddb6d27f454bace4c3b3a71c6e47.png

20.2、grep -n带行号输出

https://i-blog.csdnimg.cn/direct/c57285b526754533b5c671dcd3496be3.png

20.3、grep -v:反向匹配,输出不存在给定字符串的数据

https://i-blog.csdnimg.cn/direct/484b7228d2ba4c2cb9797e4a1b78c195.png

20.4、grep -i:忽略大小写

https://i-blog.csdnimg.cn/direct/9c30a86cdf974ab9a140b86d5542b18d.png


21、zip/unzip指令

zip/unzip是linux用来打包和解包的命令。

使用zip/unzip对普通文件进行打包并解包:

https://i-blog.csdnimg.cn/direct/915fa643a5914e07811c64e5895d9a77.png

zip打包目录需要带-r:

https://i-blog.csdnimg.cn/direct/6db0f18ba3f44f73af0bf8b5695fc6af.png

unzip -d指定解压路径:

https://i-blog.csdnimg.cn/direct/1af9619b48984642987db2c082c8be54.png


22、tar指令

tar指令也是用来打包和解包的。

tar [-cxtzjvf] 文件与目录 …参数:

**-c :建立一个压缩文件的参数指令(create 的意思);

-x :解开一个压缩文件的参数指令!

-t :查看 tarfile 里面的文件!

-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?

-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?

-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!

-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!

-C : 解压到指定目录**

22.1、tar czf:打包

https://i-blog.csdnimg.cn/direct/bddbc263a58a40469126efadc1d83a9c.png

22.2、tar xzf:解包

https://i-blog.csdnimg.cn/direct/a3337e3e2f2548cfbe3093f0895f969d.png

22.3、-C指定解压路径

https://i-blog.csdnimg.cn/direct/311025da53da4ad495119f3f5093b0c2.png

-v可以查看压缩或解压的过程。


23、bc指令

bc相当于计算器,使用如下:quit可以退出

https://i-blog.csdnimg.cn/direct/8bfb0e2847f14b2895d7b884af894408.png

搭配echo和管道使用:

https://i-blog.csdnimg.cn/direct/ec6c53e8c39741c988755a62fab68164.png


24、uname指令

**语法:uname [选项]

功能: uname用来获取电脑和操作系统的相关信息。

补充说明:uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。**

24.1、uname -a:查看主机所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称

https://i-blog.csdnimg.cn/direct/4d6c6644a36f4b5394668f9768ed5be6.png

24.2、uname -r:查看操作系统内核版本

https://i-blog.csdnimg.cn/direct/0011e694f1a0419690ee1021ca505207.png


25、几个重要的热键

25.1、ctrl c:可以快速终止程序,例如在运行可执行程序的时候卡死了,可以直接ctrl c结束进程。例如我们输入了一串很长的命令,如果全部删掉要很长时间,可以直接ctrl c。

https://i-blog.csdnimg.cn/direct/7291a7fd60664ba0a3d8d9f387785d32.png

25.2、ctrl d:退出当前账户

https://i-blog.csdnimg.cn/direct/28158b3127c8461fa37271d6af9668f0.png

25.3、tab:命令补全

https://i-blog.csdnimg.cn/direct/18e609d2e04a4b2a99c3921e21564304.png

上面输入wh按两下tab可以显示出以wh开头的所有指令。若只有一个指令按tab可以直接补全。

25.4、ctrl r:检索历史命令

下面演示使用ctrl,并输入grep检索之前使用过的命令:

https://i-blog.csdnimg.cn/direct/0b019c23a2d74827921ca1c2b47abb27.png


26、其他指令

当我们处于root账户下,可以进行账户的增删改:

26.1、adduser xxx:添加用户,设置密码,并创建家目录。

https://i-blog.csdnimg.cn/direct/4fa260132d1042d8ad7fab8cf4570796.png

26.2、passwd xxx:修改用户密码

https://i-blog.csdnimg.cn/direct/6d800f0b2ba94745afb7fb9d8745ef0b.png

26.3、deluser:删除用户

https://i-blog.csdnimg.cn/direct/9a970be6789c4cc5b2bcf986b41be5ab.png

26.4、whoami:查看当前用户

https://i-blog.csdnimg.cn/direct/82f74303ba2448c7ad7a13387f2b5ab1.png

26.5、which:查看指令所处位置

https://i-blog.csdnimg.cn/direct/8794c32f5ae7474d968268b8c581c76e.png

26.6、alias:给指令取别名

ll相当于是ls -l的别名,下面我们也可以使用alias取别名:

https://i-blog.csdnimg.cn/direct/7af161db63d8433cb0ddd041401ff446.png

26.7、exit:用户退出相当于ctrl d的功能

https://i-blog.csdnimg.cn/direct/cebeb7eb4e6447c48876fa0e1df70e05.png

26.8、history:查看历史命令,保存最近一千条

https://i-blog.csdnimg.cn/direct/8cdc222c552a439e997b02ca796a1b1b.png


28、命令拓展

**安装和登录命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last;

文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln;

系统管理相关命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab;

网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookup;

系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who;

其它命令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode。**


29、shell命令以及运行原理

我们先来看命令行:

https://i-blog.csdnimg.cn/direct/ba127dda80574eb8a2348e913bf4cc30.png

**分别为:用户名、@、主机名、:、当前目录、命令行提示符。

我们输入命令的本质就是输入字符串。而指令的本质就是已经写好编译好的程序,在系统的特定路径下(/usr/bin)存放。**

**广义上:linux操作系统为shell外壳+linux内核。

狭义上:linux操作系统就指的是linux内核。**

我们所有的指令,都要在linux系统内部运行,但是OS使用难度比较高,这是一方面,另一方面为了保护操作系统,我们用户不能直接和OS打交道。所以就有了shell,shell是对命令行解释器的统称,shell将我们输入的命令解析,然后传给OS执行,然后再将结果返回给用户。

**命令行解释器存在的意义:

1、对命令进行解释。

2、保护OS,对于用户的非法请求,直接拦截。**