Linux常用命令汇总(带代码示例)

Posted 做1个快乐的程序员

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux常用命令汇总(带代码示例)相关的知识,希望对你有一定的参考价值。

💦Linux常用命令汇总💦:
  众所周知,Windows的交互方式是图形化界面,Linux的交互方式是命令行;在Linux操作系统当中可以进行各种语言的开发工作,我们可以通过命令进行各种指令操作,从而完成文件相关的管理工作。
  💦接下来,小编带大家学习一下Linux常用的一些命令,帮助大家快速入门Linux的基本操作。不管大家学的怎么样,下图种的代码千万不敢运行,使用云服务器的系统还好,可以后台恢复,如果是装有虚拟机系统的同学,如果运行图中的代码会让系统直接不可逆转性的崩溃。


下面进入正题:

  下面代码中,我们在csdn的目录下,执行ls指令,可以显示在该目录的文件

[xd@VM-4-5-centos csdn]$ ls
aaa.c  a.c  a.out  a.txt  bbb.c  ccc.c  test.c  tmp.txt  yyy

  值得注意的是,ls不仅可以单独使用,还可以跟其他指令相配合完成我们需要的各种目的。比如:
1.1 ls -l = 显示更多文件属性信息
  如下代码,我们执行ls -l 不仅显示了该目录下的文件,还详细的显示其属性信息,比如文件的权限、大小、拥有者、所属组、创建时间等信息。

[xd@VM-4-5-centos csdn]$ ls -l
total 28
-rw-rw-r-- 1 xd xd    0 Jul 23 21:27 aaa.c
-rw-rw-r-- 1 xd xd    0 Jul 23 21:28 a.c
-rwxrwxr-x 1 xd xd 8400 Jul 23 21:11 a.out
-rw-rw-r-- 1 xd xd   39 Jul 23 21:39 a.txt
-rw-rw-r-- 1 xd xd    0 Jul 23 21:27 bbb.c
-rw-rw-r-- 1 xd xd    0 Jul 23 21:27 ccc.c
-rw-rw-r-- 1 xd xd   76 Jul 23 21:11 test.c
-rw-rw-r-- 1 xd xd   20 Jul 23 21:41 tmp.txt
drwxrwxr-x 3 xd xd 4096 Jul 23 21:45 yyy

1.2 ls -a = 显示隐藏文件(Linux中以.开始的文件称为隐藏文件)
  其中.代表该目录;…代表上级目录

[xd@VM-4-5-centos csdn]$ ls -a
.  ..  aaa.c  a.c  a.out  a.txt  bbb.c  ccc.c  .erq  test.c  tmp.txt  .txt  yyy

1.3 ls -al = 组合命令,显示文件和隐藏文件的属性信息,相当于:ls -a -l

[xd@VM-4-5-centos csdn]$ ls -al
total 36
drwxrwxr-x 3 xd xd 4096 Aug  2 14:59 .
drwxrwxr-x 7 xd xd 4096 Aug  2 14:11 ..
-rw-rw-r-- 1 xd xd    0 Jul 23 21:27 aaa.c
-rw-rw-r-- 1 xd xd    0 Jul 23 21:28 a.c
-rwxrwxr-x 1 xd xd 8400 Jul 23 21:11 a.out
-rw-rw-r-- 1 xd xd   39 Jul 23 21:39 a.txt
-rw-rw-r-- 1 xd xd    0 Jul 23 21:27 bbb.c
-rw-rw-r-- 1 xd xd    0 Jul 23 21:27 ccc.c
-rw-rw-r-- 1 xd xd    0 Aug  2 14:59 .erq
-rw-rw-r-- 1 xd xd   76 Jul 23 21:11 test.c
-rw-rw-r-- 1 xd xd   20 Jul 23 21:41 tmp.txt
-rw-rw-r-- 1 xd xd    0 Aug  2 14:59 .txt
drwxrwxr-x 3 xd xd 4096 Jul 23 21:45 yyy

1.4 ls -i = 显示更多的属性信息,输出文件的i节点的索引信息(数字标识符)

[xd@VM-4-5-centos csdn]$ ls -i
657241 aaa.c  657245 a.c  657237 a.out  657246 a.txt  657242 bbb.c  657243 ccc.c  657236 test.c  657247 tmp.txt  657238 yyy

1.5 ls -d = 只显示目录相关信息,不显示其下的文件
  ls 文件名,进入文件中显示文件中的文件;ls -d 文件名,不进入文件中,显示该文件;ls -l 文件名,显示文件中的各个文件的属性信息;ls -ld 文件名,显示该文件的属性信息

[xd@VM-4-5-centos csdn]$ ls -d
.
[xd@VM-4-5-centos csdn]$ ls -ld
drwxrwxr-x 3 xd xd 4096 Aug  2 14:59 .
[xd@VM-4-5-centos csdn]$ ls -l
total 28
-rw-rw-r-- 1 xd xd    0 Jul 23 21:27 aaa.c
-rw-rw-r-- 1 xd xd    0 Jul 23 21:28 a.c
-rwxrwxr-x 1 xd xd 8400 Jul 23 21:11 a.out
-rw-rw-r-- 1 xd xd   39 Jul 23 21:39 a.txt
-rw-rw-r-- 1 xd xd    0 Jul 23 21:27 bbb.c
-rw-rw-r-- 1 xd xd    0 Jul 23 21:27 ccc.c
-rw-rw-r-- 1 xd xd   76 Jul 23 21:11 test.c
-rw-rw-r-- 1 xd xd   20 Jul 23 21:41 tmp.txt
drwxrwxr-x 3 xd xd 4096 Jul 23 21:45 yyy
[xd@VM-4-5-centos csdn]$ ls .
aaa.c  a.c  a.out  a.txt  bbb.c  ccc.c  test.c  tmp.txt  yyy

1.6 ls -n = 用数字显示用户信息,我们ls -l显示的用户信息是汉字或者英文

1.7 ls -R = 列出所有子目录下的文件

[xd@VM-4-5-centos csdn]$ ls -R
.:
aaa.c  a.c  a.out  a.txt  bbb.c  ccc.c  test.c  tmp.txt  yyy

./yyy:
a.c  xxx  xyz.txt  yzx.txt

./yyy/xxx:
zzz

./yyy/xxx/zzz:

  值得注意的是,命令之间是可以简写的,比如ll等价于ls -l
2、clear:清屏
  对于clear相信大家可以理解,就是清空屏幕信息,我们日常所用的qq和微信都有此功能,在这里我提供一下clear命令前后的终端界面。

图1 clear前
图2 clear后

3、pwd:显示当前所处路径
  /home/xxx,就叫做xxx用户的主工作目录,一般是在登陆之后默认的路径 ------普通用户
  /root,------root账号
  /xxx/yyy/zzz -> "/"称为路径分隔符,Linux的路径分隔符是/,windows的路径分隔符是\\

[xd@VM-4-5-centos csdn]$ pwd
/home/xd/code/csdn

4、cd:更改路径(change direct)
  我们通过cd命令切换当前所处的路径

4.1 cd 文件名 = 进入该文件下的目录
  我们用pwd来进行验证

[xd@VM-4-5-centos code]$ cd csdn/
[xd@VM-4-5-centos csdn]$ pwd
/home/xd/code/csdn
[xd@VM-4-5-centos csdn]$ cd csdnson/
[xd@VM-4-5-centos csdnson]$ pwd
/home/xd/code/csdn/csdnson

4.2 cd … = 返回上一级目录cd

[xd@VM-4-5-centos csdnson]$ pwd
/home/xd/code/csdn/csdnson
[xd@VM-4-5-centos csdnson]$ pwd
/home/xd/code/csdn/csdnson
[xd@VM-4-5-centos csdnson]$ cd ..
[xd@VM-4-5-centos csdn]$ pwd
/home/xd/code/csdn

4.3 cd / = 直接跳转到根目录

[xd@VM-4-5-centos csdn]$ cd /
[xd@VM-4-5-centos /]$ pwd
/

4.4 cd - = 跳转到上一次我们所在的路径目录
  其中,cd - 可以多次使用,跳转到上一次所在的目录
4.5 cd ~ = 跳转到当前用户的主工作目录中
  这里需要注意的是,一般云服务cd ~是没有东西的,因为没有装东西,但是虚拟机cd ~会显示下载、文件等内容

5、whoami:查看当前自己是谁

[xd@VM-4-5-centos /]$ whoami
xd
[root@VM-4-5-centos ~]# whoami
root

6、tree 文件名:以树的形式显示该文件夹下的文件

[xd@VM-4-5-centos code]$ tree csdn/
csdn/
|-- aaa.c
|-- a.c
|-- a.out
|-- a.txt
|-- bbb.c
|-- ccc.c
|-- csdnson
|   |-- a.c
|   |-- b.c
|   `-- c.c
|-- test.c
|-- tmp.txt
`-- yyy
    `-- qqq
        `-- aaa

4 directories, 11 files

7、touch 文件名:在当前目录下创建一个普通的文件
  touch xxx.txt = 在当前目录下创建一个xxx.txt的文件
  touch xxx.c yyy.c = 可以同时创建多个文件

[xd@VM-4-5-centos qqq]$ ll
total 4
drwxrwxr-x 2 xd xd 4096 Aug  2 15:37 aaa
[xd@VM-4-5-centos qqq]$ cd aaa
[xd@VM-4-5-centos aaa]$ ll
total 0
[xd@VM-4-5-centos aaa]$ touch xxx.txt
[xd@VM-4-5-centos aaa]$ touch aaa.txt bbb.txt
[xd@VM-4-5-centos aaa]$ ll
total 0
-rw-rw-r-- 1 xd xd 0 Aug  2 15:41 aaa.txt
-rw-rw-r-- 1 xd xd 0 Aug  2 15:41 bbb.txt
-rw-rw-r-- 1 xd xd 0 Aug  2 15:41 xxx.txt

8、mkdir:在当前目录下创建文件夹
  mkdir+绝对路径/相对路径也可以在指定路径下创建目录,但是该命令只能一次创建单个文件夹,即不能一次性再文件夹下创建子文件夹。
8.1 mkdir -p xxx/yyy/zzz = 创建一整条路径文件夹
  在xxx下有yyy,在yyy下有zzz

9、rmdir:在当前目录下删除文件夹
  rmdir+绝对路径/相对路径也可以在指定路径下删除文件夹,但是该命令只能一次删除单个文件夹,即不能一次性将含有子文件夹的文件删除。
9.1 rmdir -p xxx = 递归删除一整条路径文件夹
  在xxx下有yyy,在yyy下有zzz,我们rmdir -p xxx,即可彻底删除。
9.2 rm xxx = 删除文件
  rm除了可以删除文件夹外,还可以删除文件。
9.3 rm -f xxx = 删除文件,不再询问
  我们进行任何文件删除时,系统都要进行询问操作,我们需要输入y/n的命令来确认操作是否继续进行,当加入-f的指令后,即不再询问,直接执行。
9.4 rm * = 删除当前目录下的所有文件
  * 称为通配符:匹配当前目录下的任何内容;

10、man 命令/函数:查看使用手册
  man命令是Linux自带的参考手册,都是英文的;可以查命令以及C的库函数
10.1 man man = 查看man的用法
  man 1~8 命令,可以查看不同接口,不同权限,不同状态下的命令,q退出
  man 3 printf = 查看printf的库函数;man 3 fgets = 查看fgets的库函数
  不带数字的时候,默认查看1号

    1 Executable programs or shell commands
    2 System calls (functions provided by the kernel)
    3 Library calls (functions within program libraries)
    4 Special files (usually found in /dev)
    5 File formats and conventions eg /etc/passwd
    6 Games
    7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)
    8 System administration commands (usually only for root)

注意:运行man 3 printf等带数字的命令时,若出现No manual entry for …,是因为man命令的一个man-pages安装包没有安装,只需执行指令:yum install man-pages即可

11、cp:拷贝
  我们执行 cp test.c … 则是将test.c拷贝到上一目录。… 也可以换成绝对路径/相对路径进行拷贝,将文件拷贝到指定路径。如果上级目录存在xxx.c,然后又将xxx.c拷贝到上级目录,则是覆盖式的,而且没有询问

[xd@VM-4-5-centos yyy]$ ll
total 4
drwxrwxr-x 3 xd xd 4096 Aug  2 15:37 qqq
[xd@VM-4-5-centos yyy]$ cd qqq/
[xd@VM-4-5-centos qqq]$ ll
total 4
drwxrwxr-x 2 xd xd 4096 Aug  2 15:41 aaa
[xd@VM-4-5-centos qqq]$ cp -r aaa ..
[xd@VM-4-5-centos qqq]$ cd ..
[xd@VM-4-5-centos yyy]$ ll
total 8
drwxrwxr-x 2 xd xd 4096 Aug  2 16:01 aaa
drwxrwxr-x 3 xd xd 4096 Aug  2 15:37 qqq

  cp 文件夹 = 不可拷贝,没有拷贝成功,删除目录需要递归,拷贝目录同样需要递归
  cp -r 文件夹 路径 = 拷贝文件夹到指定路径
  cp一些已经存在的文件可能会询问,这时候+f也会强制拷贝
  拷贝多个文件怎么拷贝,比如有a.txt b.txt c.txt,我们可以cp rf *.txt …,将该目录下以txt结尾的全部文件拷贝到上一目录。即:借用通配符

12、mv:剪贴/重命名
12.1 mv的剪贴操作参考cp命令
12.2 mv a.txt aa.txt = 将a.txt重命名为aa.txt

[xd@VM-4-5-centos yyy]$ ll
total 8
drwxrwxr-x 2 xd xd 4096 Aug  2 16:01 aaa
-rw-rw-r-- 1 xd xd    0 Aug  2 16:04 a.txt
drwxrwxr-x 3 xd xd 4096 Aug  2 15:37 qqq
[xd@VM-4-5-centos yyy]$ mv a.txt aa.txt
[xd@VM-4-5-centos yyy]$ ll
total 8
drwxrwxr-x 2 xd xd 4096 Aug  2 16:01 aaa
-rw-rw-r-- 1 xd xd    0 Aug  2 16:04 aa.txt
drwxrwxr-x 3 xd xd 4096 Aug  2 15:37 qqq

13、cat:显示文本内容
  在不打开一些文件的情况下,将文本内容打印出来,通常用来进行阅读少量代码和日志的作用。
13.1 cat test.c = 显示test.c文本中的内容

[xd@VM-4-5-centos yyy]$ cat aa.txt 
abcdefghijklmnopqrstuvwxyz
qweasdzxc

13.2 tac = 倒叙的显示文本内容

[xd@VM-4-5-centos yyy]$ tac aa.txt 
qweasdzxc
abcdefghijklmnopqrstuvwxyzx

13.3 cat -n test.c = 带行号的显示test.c文本中的内容

[xd@VM-4-5-centos yyy]$ cat -n aa.txt 
     1	abcdefghijklmnopqrstuvwxyz
     2	qweasdzxc

14、more/less:查看文本内容
  more file.txt = 文本查看,批量查看,依次从前往后查看,按回车键enter继续打印,只能下翻,也只能按回车才有作用
  less file.txt = 与more命令几乎等价,可以上翻也可以下翻,按上下键
  cat file.txt = 一次把文件打印完,如果文件很大,就会一直刷屏,想查看前面的内容,已经被刷上去了

  more vs less:
    a:都查看海量文本内容
    b:more不支持上翻,less支持

15、head/tail:查看文本内容
  head file.txt = 默认显示前10行
  head -n3 file.txt = 显示前3行
  head -3 file.txt = 显示前3行

  tail -10 file.txt = 默认打印后10行
  tail -5 file.txt = 默认打印后5行

16、date:时间相关的指令

[xd@VM-4-5-centos yyy]$ date
Mon Aug  2 16:14:45 CST 2021

16.1 格式化输出时间
  date +%Y-%m-%d = 21-08-02
  date +%Y-%m-%d = 2021-08-02
  date +%Y-%m-%d-%H-%M-%S = 2021-08-02

[xd@VM-4-5-centos yyy]$ date +%Y-%m-%d
2021-08-02
[xd@VM-4-5-centos yyy]$ date +%Y-%m-%d
2021-08-02
[xd@VM-4-5-centos yyy]$ date +%Y-%m-%d-%H-%M-%S
2021-08-02-16-15-54

16.2 时间戳
  时间戳:代表1970年1月1日00点00分00秒到现在的秒数
16.2.1 查看时间戳
  date +%s = 查看时间戳

[xd@VM-4-5-centos yyy]$ date +%s
1627892232

16.2.2 时间戳转换
  date +%s 获得一个时间戳a
  date -d @a,就可以把时间戳a转换成格式化时间
  date +%Y-%M-%D-%H-%M -d @a

[xd@VM-4-5-centos yyy]$ date +%s
1627892394
[xd@VM-4-5-centos yyy]$ date -d@1627892394
Mon Aug  2 16:19:54 CST 2021
[xd@VM-4-5-centos yyy]$ date +%Y-%M-%D-%H-%M -d @1627892394
2021-19-08/02/21-16-19

17、cal:查看日历
  cal 2019 = 查看2019年的日历
  cal = 默认打印本月日历
  cal -3 = 查看本月及前后两个月,即最近3个月的日历,只能够-3。没有-5,-6

18、find:查找某个文件是否存在
  find可以查找文件也可以查找文件夹,可以按照名字、大小、创建日期等不同的方式去寻找。
18.1 按姓名查找
find ~ -name test.c = 在用户的工作目录下,按名字的方式,查找名为test.c的文件,带路径打印出来。
18.2 按大小查找
find ~ +size 10 -size 11 = 按文件大小寻找

19、grep:行过滤工具(根据关键字进行过滤)
  我们现在创建一个file.txt文件,里面有10w不同的数字,但是这里太大,我们无法模拟,我们只模拟10行的数据。里面的数据如下:

[xd@VM-4-5-centos yyy]$ cat file.txt 
aaaaa
bbbbb
ccccc
ddddd
EEEEE
fffff
GGGGG
hhhhh
iiiii
jjjjj

我们对其运行行过滤工具,对其进行查找。
19.1 grep ccccc file.txt = 在file.txt文件中查找ccccc
19.3 grep -n ccccc file.txt = 在file.txt文件中查找ccccc,并带行号显示出来

[xd@VM-4-5-centos yyy]$ grep ccccc file.txt 
ccccc
[xd@VM-4-5-centos yyy]$ grep -n ccccc file.txt 
3:ccccc

19.3 grep -nv ccccc file.txt = 在file.txt文件中查找ccccc,将找到的舍弃,并带行号把其它显示出来

[xd@VM-4-5-centos yyy]$ grep -nv ccccc file.txt 
1:aaaaa
2:bbbbb
4:ddddd
5:EEEEE
6:fffff
7:GGGGG
8:hhhhh
9:iiiii
10:jjjjj

19.4 grep -ni eeeee file.txt = 在file.txt文件中查找eeeee,不区分大小写

[xd@VM-4-5-centos yyy]$ grep -ni eeeee file.txt 
5:EEEEE
[xd@VM-4-5-centos yyy]$ grep -n eeeee file.txt 

20、zip/unzip:压缩/解压
20.1 zip temp.zip ./*. = zip压缩命令,压缩后的文件名为temp.zip,将当前目录下的所有文件进行打包

[xd@VM-4-5-centos csdn]$ zip temp.zip ./*
  adding: aaa.c (stored 0%)
  adding: a.c (stored 0%)
  adding: a.out (deflated 73%)
  adding: a.txt (deflated 36%)
  adding: bbb.c (stored 0%)
  adding: ccc.c (stored 0%)
  adding: csdnson/ (stored 0%)
  adding: test.c (deflated 5%)
  adding: tmp.txt (deflated 10%)
  adding: yyy/ (stored 0%)
[xd@VM-4-5-centos csdn]$ ll
total 36
-rw-rw-r-- 1 xd xd    0 Aug  2 15:14 aaa.c
-rw-rw-r-- 1 xd xd    0 Aug  2 15:14 a.c
-rwxrwxr-x 1 xd xd 8400 Aug  2 15:14 a.out
-rw-rw-r-- 1 xd xd   39 Aug  2 15:14 a.txt
-rw-rw-r-- 1 xd xd    0 Aug  2 15:14 bbb.c
-rw-rw-r-- 1 xd xd    0 Aug  2 15:14 ccc.c
drwxrwxr-x 2 xd xd 4096 Aug  2 15:37 csdnson
-rw-rw-r-- 1 xd xd 3828 Aug  2 16:50 temp.zip
-rw-rw-r-- 1 xd xd   76 Aug  2 15:14 test.c
-rw-rw-r-- 1 xd xd   20 Aug  2 15:14 tmp.txt
drwxrwxr-x 4 xd xd 4096 Aug  2 16:28 yyy

20.2 unzip temp.zip = 解压temp.zip压缩包,默认解压到当前文件夹

[xd@VM-Linux 常用命令汇总及解释。

Linux 系统常用命令汇总 文件打包与压缩

linux—常用gdb调试命令汇总

Linux 系统常用命令汇总 文件和目录操作

Linux常用命令记录

Hadoop MapReduce介绍官方示例及执行流程