Linux终端常用命令
01.单用户操作系统和多用户操作系统
- 单用户操作系统:指一台计算机在同一时间只能由一个用户使用,一个用户独自享用系统的全部硬件和软件资源
- WindowsXP之前的版本都是单用户操作系统
- 多用户操作系统:指一台计算机在同一时间可以由多个用户使用,多个用户共同享用系统的全部硬件和软件资源
- Unix和Linux的设计初衷就是多用户操作系统
02.Windows和Linux文件系统区别
2.1Windows下的文件系统
- 在
Windows
下,打开计算机
看到的是一个个驱动器盘符: - 每个驱动器都有自己的根目录结构,从而形成了多个树并列的情形,如图所示:
2.2Linux下的文件系统
在
Linux
下,看到的不是驱动器盘符,我们看到的是文件夹(目录):Ubuntu
下没有盘符这个概念,只有一个根目录/
,所有文件都在它下面
2.3用户目录
位于
/home/user
,称为用户工作目录或家目录,表示方式:- ``` /home/user ~ 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
## 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终端命令格式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
- ``` /home/user ~
user
是在远程机器上的用户名,如果不指定的话默认为当前用户remote
是远程机器的地址,可以是IP/域名
,或者是后面提到的别名port
是SSH 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 [用户名] 查看用户 UID
和GID
信息02 who 查看当前所有登录的用户列表 03 whoami 查看当前登录用户的账户名 passwd文件
/etc/passwd
文件存放的是用户的信息,由6个分号组成的7个信息,分别是- 1.用户名
- 2.密码(x,表示加密的密码)
- 3.UID(用户标识)
- 4.GID(组标识)
- 5.用户全名或本地账号
- 6.家目录
- 7.登录使用的
Shell
,就是登录之后,使用的终端命令,Ubuntu
默认是dash