Linux终端常用命令

01.单用户操作系统和多用户操作系统

  • 单用户操作系统:指一台计算机在同一时间只能由一个用户使用,一个用户独自享用系统的全部硬件和软件资源
    • WindowsXP之前的版本都是单用户操作系统
  • 多用户操作系统:指一台计算机在同一时间可以由多个用户使用,多个用户共同享用系统的全部硬件和软件资源
    • UnixLinux的设计初衷就是多用户操作系统

02.Windows和Linux文件系统区别

2.1Windows下的文件系统

  • Windows下,打开计算机看到的是一个个驱动器盘符:
    • Windows
  • 每个驱动器都有自己的根目录结构,从而形成了多个树并列的情形,如图所示:

2.2Linux下的文件系统

  • Linux下,看到的不是驱动器盘符,我们看到的是文件夹(目录):

  • Ubuntu下没有盘符这个概念,只有一个根目录/,所有文件都在它下面

2.3用户目录

  • 位于/home/user,称为用户工作目录或家目录,表示方式:

    • ``` /home/user ~
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48

      ## 2.4Linux主要目录速查表

      - /:根目录,**一般根目录下只放目录**,在Linux下有且只有一个根目录,所有的东西都是从这里开始
      - 当在终端里输入`/home`,其实是在告诉电脑,先从`/`(根目录)开始,再进入到`home`目录
      - /bin、/usr/bin:可执行二进制文件的目录,如常用的命令`ls`、`tar`、`mv`、`cat`等
      - /boot:放置Linux系统启动时用到的一些文件,如Linux的内核文件:`/boot/vmlinuz`,系统引导管理器:`/boot/grub`
      - /dev:存放Linux系统下的设备文件,访问该目录下的某个文件,相当于访问某个设备,常用的是挂载光驱`mount /dev/cdrom/mnt`
      - /etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有
      - /etc/inittab
      - /etc/fstab
      - /etc/init.d
      - /etc/X11
      - /etc/sysconfig
      - /etc/xinetd.d
      - /home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下
      - `~`表示当前用户的家目录
      - `~edu`表示用户`edu`的家目录
      - /lib、/usr/lib、/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助
      - /lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下
      - /mnt:/media:光盘默认挂载点,通常光盘挂载于`/mnt/cdrom`下,也不一定,可以选择任意位置进行挂载
      - /opt:给主机额外安装软件所摆放的目录
      - /proc:此目录的数据都在内存中,如系统核心 ,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的文件有:`/proc/cpuinfo`、`/proc/interrupts`、`/proc/dma`、`/proc/ioports`、`/proc/net/*`等
      - /root:系统管理员`root`的家目录

      # 03.常用Linux终端命令的基本使用

      ## 3.1常用Linux命令基本使用

      - | 序号 | 命令 | 对应英文 | 作用 |
      | :--: | :------------- | :------------------- | :----------------------- |
      | 01 | ls | list | 查看当前文件夹下的内容 |
      | 02 | pwd | print work directory | 查看当前所在文件夹 |
      | 03 | cd [目录名] | change directory | 切换文件夹 |
      | 04 | touch [文件名] | touch | 如果文件不存在,新建文件 |
      | 05 | mkdir [目录名] | make directory | 创建目录 |
      | 06 | rm [文件名] | remove | 删除指定的文件名 |
      | 07 | clear | clear | 清屏 |

      > 小技巧
      >
      > - `ctrl + shift + =` `放大`终端窗口的字体显示
      > - `ctrl + -` `缩小`终端窗口的字体显示

      ## 3.2Linux终端命令格式



      command [-options] [parameter]
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      75
      76
      77
      78
      79
      80
      81
      82
      83
      84
      85
      86
      87
      88
      89
      90
      91
      92
      93
      94
      95
      96
      97
      98
      99
      100
      101
      102
      103
      104
      105
      106
      107
      108
      109
      110
      111
      112
      113
      114
      115
      116
      117
      118
      119
      120
      121
      122
      123
      124
      125
      126
      127
      128
      129
      130
      131
      132
      133
      134
      135
      136
      137
      138
      139
      140
      141
      142
      143
      144
      145
      146
      147
      148
      149
      150
      151
      152
      153
      154
      155
      156
      157
      158
      159
      160
      161
      162
      163
      164
      165
      166
      167
      168
      169
      170
      171
      172
      173
      174
      175
      176
      177
      178
      179
      180
      181
      182
      183
      184
      185
      186
      187
      188
      189
      190
      191
      192
      193
      194
      195
      196
      197
      198
      199
      200
      201
      202
      203
      204
      205
      206
      207
      208
      209
      210
      211
      212
      213
      214
      215
      216
      217
      218
      219
      220
      221
      222
      223
      224
      225
      226
      227
      228
      229
      230
      231
      232
      233
      234
      235
      236
      237
      238
      239
      240
      241
      242
      243
      244
      245
      246
      247
      248
      249
      250
      251
      252
      253
      254
      255
      256
      257
      258
      259
      260
      261
      262
      263
      264
      265
      266
      267
      268
      269
      270
      271
      272
      273
      274
      275
      276
      277
      278
      279
      280
      281
      282
      283
      284
      285
      286
      287
      288
      289
      290
      291
      292
      293
      294
      295
      296
      297
      298
      299
      300
      301
      302
      303
      304
      305
      306
      307
      308
      309
      310
      311
      312
      313
      314
      315
      316
      317
      318
      319
      320
      321
      322
      323
      324
      325
      326
      327
      328
      329
      330
      331
      332
      333
      334
      335
      336
      337
      338
      339
      340
      341
      342
      343
      344
      345
      346
      347
      348
      349
      350
      351
      352
      353
      354
      355
      356
      357
      358
      359
      360
      361
      362
      363
      364
      365
      366
      367

      说明:

      - `command`:命令名,相应功能的英文单词或单词的缩写

      - `[-options]`:选项,可用来对命令进行控制,也可以省略

      - `parameter`:传给命令的参数,可以是 `零个`、`一个`或`多个`

      > `[]`代表可选操作

      ## 3.3查阅命令帮助信息

      > `tips`:
      >
      > - 现阶段只需要知道通过以下两种方式可以查询命令的帮助信息
      > - 先学习`常用命令`及常用选项的使用即可,必要时可借助网络搜索

      - `--help`

      - `command --help`
      - 可显示`command`命令的帮助信息

      - `main`

      - `man command`

      - 查阅`command`命令的使用手册,进入之后是一个详细的文档说明

      > `man`是`manual`的缩写,是Linux提供的一个手册,包含了绝大部分的命令,函数的详细使用说明
      >
      > 使用`man`的操作键:
      >
      > | 操作键 | 功能 |
      > | :----------- | -------------------- |
      > | 空格键 | 显示手册页的下一屏 |
      > | Enter键 | 一次滚动手册页的一行 |
      > | b(back) | 回滚一屏 |
      > | f(forward) | 前滚一屏 |
      > | q(quit) | 退出 |
      > | /word | 搜索`word`字符串 |



      ## 3.4文件目录常用命令

      ### 目标

      - 查看目录内容
      - `ls`
      - 切换目录
      - `cd`
      - 创建和删除操作
      - `touch`
      - `rm`
      - `mkdir`
      - 拷贝和移动文件
      - `cp`
      - `mv`
      - 查看文件内容
      - `cat`
      - `more`
      - `grep`
      - 其他
      - `echo`
      - 重定向`>`和`>>`
      - 管道`|`

      ## 3.5终端实用技巧

      ### 自动补全

      - 再敲出`文件/目录/命令`的前几个字母之后,按下`tab`键
      - 如果输入的没有歧义,系统会自动补全 ,如果存在歧义,`再次`按下`tab`键会显示可能存在的命令

      ### 曾经使用过的命令

      - 按`上/下`光标键可以在曾今使用过的命令之间来回切换
      - 如果想要退出选择,不想执行当前命令,可以按`Ctrl+C`

      ## 3.6Linux下文件和目录的特点

      - Linux文件或目录`名称`最长可以有`256`个字符
      - 以`.`开头的文件为隐藏文件,需要用`-a`参数才能显示
      - `.`代表当前目录
      - `..`表示上一级目录

      ## 3.7ls常用选项

      | 参数 | 含义 |
      | ---- | ------------------------------------------------------------ |
      | -a | 显示指定目录下所有子目录与文件,包括隐藏文件 |
      | -l | 以列表方式显示文件的详细信息(列表中第一列如果是`d`开头表示是文件夹) |
      | -h | 配合-l以人性化的方式显示文件大小(`ls -l -h`或者`ls -lh`或`ls -lha`(显示所有`包括隐藏`文件的详细信息)) |

      > `扩展`:
      >
      >
      >
      > | 单位 | 英文 | 含义 |
      > | ---- | ------------- | --------------------------------------------- |
      > | 字节 | B(byte) | 在计算机中作为一个数字单元,一般为8位二进制数 |
      > | 千 | K(kibibyte) | 1 KB = 1024 B,千字节(1024 = 2^10) |
      > | 兆 | M | 1 MB = 1024 KB,百万字节 |
      > | 千兆 | G | 1 GB = 1024 MB,十亿字节,千兆字节 |
      > | 太 | T | 1 TB = 1024 GB,万亿字节,太字节 |
      > | 拍 | P | 1 PB = 1024 TB,千百亿字节,拍字节 |
      > | 艾 | E | 1 EB = 1024 PB,百亿亿字节,艾字节 |
      > | 泽 | Z | 1 ZB = 1024 EB,十万亿亿字节,泽字节 |
      > | 尧 | Y | 1 YB = 1024 ZB,一亿亿亿字节,尧字节 |



      ## 3.8ls通配符的使用

      | 通配符 | 含义 |
      | ------ | ---------------------------------- |
      | * | 代表任意个数个字符 |
      | ? | 代表任意一个字符,至少1个 |
      | [] | 表示可以匹配字符组中的任一一个 |
      | [abc] | 匹配`a,b,c`中的任意一个 |
      | [a-f] | 匹配从`a`到`f`范围内的任意一个字符 |

      ## 3.9切换目录

      - `cd`

      - 作用:更改当前目录(`change directory`)

      - > 注意:Linux所有的`目录`和`文件名`都是大小写敏感的
      >
      > | 命令 | 含义 |
      > | ----- | ---------------------------------------- |
      > | cd | 切换到当前用户的主目录(/home/用户目录) |
      > | cd~ | 切换到当前用户的主目录(/home/用户目录) |
      > | cd . | 保持在当前目录不变 |
      > | cd .. | 切换到上级目录 |
      > | cd - | 可以在最近两次工作目录之间来回切换 |
      >
      >

      - 绝对路径和相对路径

      - `相对路径`在输入路径时,最前面不是`/`或者`~`,表示是相对于`当前目录`所在目录位置。
      - `绝对路径`在输入路径时,最前面是`/`或者`~`,表示从`根目录/家目录`开始的具体目录位置。

      ## 3.91创建和删除操作

      - `touch`

      - 如果文件`不存在`,则会创建一个空白文件。
      - 如果文件`存在`,可以达到修改文件的末次修改日期。

      - `mkdir`

      - 创建一个新的目录

      - | 选项 | 含义 |
      | ---- | ---------------------------------------- |
      | -p | 创建递归目录(格式:`mkdir -p a/b/c/d`) |

      - > `新建目录的名称`不能与当前目录中`已有的目录或文件`同名

      - `rm`

      - 删除文件和目录

      - > 终端中删除的文件不会进入回收站,因此文件删除后无法恢复

      >
      >
      > | 选项 | 含义 |
      > | ---- | ---------------------------------------------------------- |
      > | -f | 强制删除,忽略不存在的文件,无需提示(删除根本没有的文件) |
      > | -r | 递归地删除目录下的内容,删除文件夹时必须加此参数 |


      ## 3.92拷贝和移动文件

      | 序号 | 命令 | 对应英文 | 作用 |
      | ---- | ------------------ | -------- | --------------------------------- |
      | 01 | tree [目录名] | tree | 以树状图列出文件目录结构 |
      | 02 | cp 源文件 目标文件 | copy | 复制文件或目录 |
      | 03 | mv 源文件 目标文件 | move | 移动文件或目录/文件或者目录重命名 |

      - `tree`

      - | 选项 | 含义 |
      | ---- | ---------- |
      | -d | 只显示目录 |



      - `cp`

      - | 选项 | 含义 |
      | ---- | ------------------------------------------------------------ |
      | -f | 已经存在的目标文件直接覆盖,不会提示 |
      | -i | 覆盖文件前提示是否覆盖 |
      | -r | 若给出的源文件是目录文件,则cp将递归复制到另一个文件或目录中 |



      - `mv`

      - `mv`命令可以用来移动`文件`或`目录`,也可以给文件或目录`重命名`

      - | 选项 | 含义 |
      | ---- | ------------------ |
      | -i | 覆盖文件前进行提示 |

      ## 4.2查看文件内容

      | 序号 | 命令 | 对应英文 | 作用 |
      | ---- | --------------- | ----------- | ---------------------------------------------------- |
      | 01 | cat 文件名 | concatenate | 查看文件内容、创建文件、文件合并、追加文件内容等功能 |
      | 02 | more 文件名 | more | 分屏显示文件内容 |
      | 03 | grep 搜索文件名 | grep | 搜索文本文件内容 |

      - `cat`

      - `cat`适合查看内容较少的文本文件

      - | 选项 | 含义 |
      | ---- | ------------------ |
      | -b | 对非空输出行编号 |
      | -n | 对输出的所有行编号 |

      - > Linux中还有一个命令`nl`和`cat -b`的效果等价

      - `more`

      - `more`适合查看内容较多的文本文件

      - 使用`more`的操作键:

      | 操作键 | 功能 |
      | ------- | -------------------- |
      | 空格键 | 显示手册页的下一屏 |
      | Enter键 | 一次滚动手册页的一行 |
      | b | 回滚一屏 |
      | f | 前滚一屏 |
      | q | 退出 |
      | /word | 搜索`word`字符串 |

      - `grep`

      - Linux中`grep`是一种强大的文本内容搜索工具

      - `grep`允许对文件进行模式查找,所谓模式查找,又被称为正则表达式。

      - 格式:`grep 查找内容 被查找文件名`

      - | 选项 | 含义 |
      | ---- | ---------------------------------------- |
      | -n | 显示匹配行及行号 |
      | -v | 显示不包括匹配文本的所有行(相当于取反) |
      | -i | 忽略大小写 |

      - 常用两种模式查找

      | 参数 | 含义 |
      | ---- | ------------------------ |
      | ^a | 行首,搜寻以`a`开头的行 |
      | ke$ | 行尾,搜寻以`ke`结束的行 |

      - `other`

      - `echo` 文字内容

      - `echo`会在终端中显示参数指定的文字,通常会和`重定向`联合使用

      - `重定向 > 和 >>`

      - Linux允许将命令执行结果重定向到一个文件
      - 将本应该显示在终端上的内容`输出`/`追加`到指定文件中

      - 其中

      - `>`表示输出到一个文件中去,会覆盖文件原有的内容
      - `>>`表示追加,会将内容追加到已有文件的末尾

      - `管道`

      - Linux允许将`一个命令的输出`可以`通过管道`作为另一个命令的`输入`

      - 可以理解现实生活中的管子,管子的一头塞东西进去,另一头取东西出来,这里`|`的左右分为两端,左端塞东西(写),右端取东西(读)

      - 常用的管道命令有:

      - > `more`:分屏显示内容
      >
      > `grep`:在命令执行结果的基础上查询指定的文本

      - `关机/重启`

      - | 序号 | 命令 | 对应英文 | 作用 |
      | ---- | ----------------------------------- | -------- | ------------- |
      | 01 | shutdown 选项 时间(now/24:59/+10) | shutdown | 关机/重新启动 |

      - `shutdown`命令可以`安全` `关闭`或者`重新启动系统`

      - | 选项 | 含义 |
      | ---- | ------------ |
      | -r | 重新启动 |
      | -c | 取消定时关机 |

      > `tips`:
      >
      > - `不指定选项和参数`,默认表示`1分钟`之后`关闭电脑`
      > - 远程维护服务器时,最好不要关闭系统,而应该重新启动系统

      ## 3.93查看或配置网卡信息

      | 序号 | 命令 | 对应英文 | 作用 |
      | ---- | ----------- | ----------------------------- | --------------------------------- |
      | 01 | ifconfig | configure a network interface | 查看/配置计算机当前的网卡配置信息 |
      | 02 | ping ip地址 | ping | 检测到目标 ip地址的连接是否正常 |

      - `网卡`和`IP`地址

      - `IP`地址是设置在网卡上的地址信息
      - 我们可以把`电脑`比作`电话`,`网卡`相当于`SIM卡`,`IP地址`相当于`电话号码`
      - `IP`地址:`每台联网的电脑上都有IP地址,是保证电脑之间正常通讯的重要设置`

      - 使用`ifconfig`为了更加方便的查找到`IP`地址

      - 命令格式:`ifconfig | grep inet`

      - > 提示:在Linux中物理网卡的名字通常以`enXX`表示
      >
      > `127.0.0.1`被称为`本地回环/环回地址`,一般用来测试本机网卡是否正常

      - `ping`一般用于检测当前计算机到目标计算机之间的网络`是否通畅`,`数值越大`,`速度越慢`

      - `ping`的工作原理与潜水艇的声呐相似,`ping`这个命令就是取自`声呐的声音`

      - `ping`也是一个动词

      - 原理: 网络上的及其都有`唯一确定的IP地址`,我们给`目标IP地址`发送一个数据包,对方就要返回一个数据包,根据返回的数据包以及时间,我们可以确定目标主机的存在

      - > 提示:在Linux中想要终止一个终端程序的运行,绝大多数都可以使用`Ctrl + c`

      # 04.SSH学习

      ## 4.1远程登录和复制文件

      | 序号 | 命令 | 对应英文 | 作用 |
      | ---- | ------------------------------------------------- | ------------ | ------------- |
      | 01 | ssh 用户名@ip | secure shell | 关机/重新启动 |
      | 02 | scp 用户名@ip:文件名或路径 用户名@ip:文件名或路径 | secure copy | 远程复制文件 |

      - 常见服务器端口号列表:

      - | 序号 | 服务 | 端口号 |
      | ---- | --------- | ------ |
      | 01 | SSH服务器 | 22 |
      | 02 | Web服务器 | 80 |
      | 03 | HTTPS | 443 |
      | 04 | FTP服务器 | 21 |



      - `SSH客户端`的简单使用

      - ```
      ssh [-p port] user@remote
  • user是在远程机器上的用户名,如果不指定的话默认为当前用户

  • remote是远程机器的地址,可以是IP/域名,或者是后面提到的别名

  • portSSH Server监听的端口,如果不指定,就默认值22

    exit退出登录

  • scp

    • scp是一个在Linux下用来进行远程拷贝文件的命令

    • 它的地址格式与ssh基本相同,需要注意的是,在指定端口时用的是大写的-P而不是小写的

    • ``` # 把本地当前目录下的01.py文件,复制到 远程 家目录下的 Desktop/01.py # 注意:":" 后面的路径如果不是绝对路径,则以用户的家目录作为参照路径 scp -P port 01.py user@remote:Desktop/01.py

      把远程 家目录 下的 Desktop/01.py 文件 复制到 本地当前目录下的 01.py

      scp -P port user@remote:Desktop/01.py 01.py

      加上-r选项可以传送文件夹

      把当前目录下的 demo 文件夹 复制到 远程 家目录下的 Desktop

      scp -r demo user@remote:Desktop

      把远程家目录下的desktop复制到当前目录下的demo文件夹

      scp -r user@remote:Desktop demo

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37

      ## 4.2SSH高级使用技巧

      - `免密码登录`

      - `配置别名`

      - > tips:有关`SSH`配置信息都保存在用户目录下的`.ssh`目录下

      - `1)免密码登录`

      - 步骤

      - 配置公钥

      - 执行`ssh-keygen`即可生成SSH钥匙,一路回车即可

      - 上传公钥到服务器

      - 执行`ssh-copy-id -p port user@remote`,可以让服务器记住我们的公钥。
      - ![](https://gitee.com/zr001/my-picture-bed/raw/master/hexoimage/21313132.png)

      > ***非对称加密算法***
      >
      > `本地`使用`私钥`对数据进行加密/解密
      >
      > `服务器`使用`公钥`对数据进行加密/解密

      - `2)配置别名`

      - 在`~/.ssh/config`里面追加以下内容:

      - ```
      Host mac(别名)
      HostName ip地址
      User itheima
      Port 22

05.用户权限相关命令

  • 基本概念:

    • 序号 权限 英文 缩写 数字代号
      01 read r 4
      02 write w 2
      03 执行 excute x 1
    • 在实际应用中,可以预先针对组设置好权限,然后将不同的用户添加到对应的组中,从而不用依次为每一个用户设置权限,组内成员具有相同的权限。
  • ls -l扩展:

    • ls -l可以查看文件夹下文件的详细信息,从左到右依次是:
      • 权限:第一个数字如果是d表示目录
      • 硬连接数:通俗地讲,就是有多少种方法,可以访问到当前目录/文件
      • 拥有者:家目录下文件/目录的拥有者通常都是当前用户
      • :在Linux中,很多时候,会出现组名和用户名相同的情况。
      • 大小
      • 时间
      • 名称
  • chmod简单使用(important

    • chmod可以修改用户/文件/目录的权限

    • 命令格式:

      •   chmod +/- rwx 文件名/目录名
          以上方法会一次性修改拥有者或组的权限
      • 对于目录而言权限:

        • r:可以cd文件夹,去掉之后不能ls文件夹
        • w:可以向文件夹中创建文件,去掉之后不能对文件夹进行更改
        • x:去掉之后不能cd文件夹
  • 组管理

    • 序号 命令 作用
      01 groupadd 组名 添加组
      02 groupdel 组名 删除组
      03 cat /etc/group 确认组信息
      04 chgrp -R 组名 文件/目录名 递归修改文件/目录的所属组
  • 创建用户/设置密码/删除用户

    • 序号 命令 作用 说明
      01 useradd -m -g 组 新建用户名 添加新用户 -m自动建立用户目录
      -g指定用户所在的组,否则默认建立一个同名的组
      02 passwd 用户名 设置用户密码 如果是普通用户,直接用passwd可以修改自己的账户和密码
      03 userdel -r 用户名 删除用户 -r选项会自动删除用户家目录
      04 cat /etc/passwd | grep 用户名 确认用户 新建用户后,用户信息会保存在/etc/passwd文件中
  • 查看用户信息

  • 序号 命令 作用
    01 id [用户名] 查看用户UIDGID信息
    02 who 查看当前所有登录的用户列表
    03 whoami 查看当前登录用户的账户名
  • passwd文件

    • /etc/passwd文件存放的是用户的信息,由6个分号组成的7个信息,分别是
    • 1.用户名
    • 2.密码(x,表示加密的密码)
    • 3.UID(用户标识)
    • 4.GID(组标识)
    • 5.用户全名或本地账号
    • 6.家目录
    • 7.登录使用的Shell,就是登录之后,使用的终端命令,Ubuntu默认是dash