Linux基础(命令)

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
计算机是由硬件和软件构成的。

硬件的五大部件:
- 运算器 -|
| - 中央处理器
- 控制器 -|
- 存储器 - 内存(RAM)
- 输入设备
- 输出设备

软件的两大类别:
- 系统软件 - 操作系统(内核+工具程序)
- 应用软件

Linux系统的内核是Free的
Linux系统最早的内核是由Linus在1991年开发的

Unix - MINIX - Linux - Android
- BSD - FreeBSD - Macintosh - macOS - iOS
- AIX(IBM)
- HP-UX(HP)
- Solaris(SUN)

我们能够接触到的操作系统除了Windows其他系统几乎都是Unix的衍生品
类Unix操作系统

Shell - 壳程序 - 人机交互界面(人和计算机对话的窗口)
Shell中的工具和命令

who - 查看登录系统用户的信息
last - 查看最近使用过系统的用户信息

clear - 清除屏幕输出
history - 查看历史命令
!历史命令编号 - 重新执行历史命令

useradd/userdel - 添加/删除用户
passwd - 修改用户口令
su - switch user - 切换用户

logout / exit - 退出登录
reboot / shutdown - 重启 / 关机
write 用户名 - 给指定用户发送消息
mesg y/n - 是否接收别人发送的消息
wall - 给所有人发出广播消息

获得帮助
man - manual - 查看帮助手册
命令 --help - 获得命令的帮助

pwd - print working directory - 打印当前工作目录
cd - change directory - 改变目录
ls - list directory contents - 列出目录内容

mkdir 目录名 - make directory - 创建文件夹
rmdir 目录名 - remove empty directory - 删除空文件夹
touch 文件名 - 创建一个空文件
echo 内容 > 文件名 - 将内容重定向到指定的文件
wget http://www.sohu.com/ - 联网通过URL获取指定文件
rm - 删除文件
rm -rf - 删除文件夹
cp - 拷贝文件或文件夹
mv - 移动文件或文件夹(重命名)

cat - concatenate - 连接文件内容(查看文件)
less / more - 分屏查看
head / tail - 查看文件前面/后面的部分
sort - 给文件排序
uniq - 去除相邻的重复内容
| - 管道 - 连接两个进程(命令)- 把前一个进程的输出作为后面一个进程的输入

gzip / gunzip - 压缩/解压缩
xz -z / xz -d - 压缩/解压缩

tar是Linux系统下的归档文件(类似于Windows下的rar文件)
解归档 - tar -xvf 归档文件的名字
归档 - tar -cvf 归档文件的名字 需要归档的文件

grep - 搜索字符串
find - 查找文件

MySQL - 关系型数据库
Redis - NoSQL数据库

CPython - 用C语言实现的Python解释器
Jython - 用Java语言实现的Python解释器
IronPython - 用C#语言实现的Python解释器
PyPy - 用Python语言实现的Python解释器

8bit -------> 1Byte
1024B -------> 1KB
1024KB -------> 1MB
1024MB -------> 1GB
1024GB -------> 1TB
1024TB -------> 1PB

《鸟哥的Linux私房菜》

Linux发行版本:
- Redhat
- CentOS
- Ubuntu
- Fedora
- SUSE
- Debian

Linux系统安装软件:
1. 使用包管理工具 - yum / rpm / apt / deb
2. 源代码构建安装 - 下载源代码用C语言构建工具进行构建
3. 直接下载二进制程序 - 配置环境变量之后使用

Apache/Nginx ---> HTTP服务器 ---> 提供Web应用

yum search nginx - 搜索名为nginx的软件包
yum -y install nginx - 安装名为nginx的软件包
yum -y remove nginx - 删除名为nginx的软件包
yum update nginx - 更新名为nginx的软件包
yum info nginx - 查看名为nginx的软件包相关信息
yum list installed - 查看已经安装的软件包

service nginx start

systemctl start nginx - 启动Nginx
systemctl restart nginx - 重启Nginx
systemctl stop nginx - 停止Nginx
systemctl status nginx - 查看Nginx状态
systemctl enable nginx - 设置Nginx开机自启
systemctl disable nginx - 禁用Nginx开机自启

更新Linux系统Python环境到3.7.1
1. 安装依赖项
yum -y install wget gcc zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel

2. 下载源代码
wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz

3. 解压缩和解归档
gunzip Python-3.7.1.tgz
tar -xvf Python-3.7.1.tar

4. 进入文件夹生成构建文件(Makefile)
cd Python-3.7.1
./configure --prefix=/usr/local/python37 --enable-optimizations

5. 构建和安装
make && make install

6. 修改环境变量
cd ~
vim .bash_profile

PATH=$PATH:$HOME/bin:/usr/local/python37/bin

7. 断开服务器连接,重新连接服务器
python3 --version

8. 注册一个快捷方式(符号链接)
ln -s /usr/local/python37/bin/python3 /usr/bin/python3

硬链接 - 相当于给文件增加了一个引用计数(不复制数据的备份)
软链接(符号链接) - 相当于是Windows下的快捷方式 可以为常用的文件和文件夹在用户主目录下创建软链接来方便操作

ln 源文件 目标文件

ps - processes - 查看进程状态
ps -ef / ps -aux

top - 类似于任务管理器

kill - 结束进程

登录系统成功之后进入Shell(壳程序)交互式环境
大多数Linux系统默认的Shell都是bash
bourne again shell

Internet是基于TCP/IP模型的四层架构

应用层 - HTTP / FTP / SSH / QQ / SMTP / POP3
传输层 - TCP / UDP - 端到端传输服务
网络层 - IP - 寻址和路由
物理链路层(网络接口层) - 分帧和校验

端口是对IP地址的扩展用来区分不同的服务
HTTP - TCP协议80端口
HTTPS - TCP协议443端口
SSH - TCP协议22端口
SMTP - TCP协议25端口
POP3 - TCP协议110端口

sftp root@1.2.3.4
sftp>
quit / exit / bye - 退出sftp
cd / lcd - 切换远端工作目录 / 切换本地工作目录
pwd / lpwd - 查看远端工作目录 / 查看本地工作目录
ls / lls - 查看远端目录下的内容 / 查看本地目录下的内容
mkdir / lmkdir - 在远端创建目录 / 在本地创建目录
put - 上传文件(-r递归可以用来上传文件夹)
get - 下载文件(-r递归可以用来下载文件夹)

Vim的工作模式:
1. 命令模式 按i或a进入编辑模式;按:/?进入末行模式
2. 编辑模式 按Esc进入命令模式
3. 末行模式 按回车回到命令模式

常用命令:
h j k l - 移动光标
gg / G / <n>G - 首行 最后一行 第n行
dd d0 d$ dw - 删行 删到行首 删到行尾 删单词
yy - 复制
p - 黏贴
u - 撤销
ZZ - 保存退出
q - 录制宏/结束录制
qa - 录制宏并保存在寄存器a中
@a - 播放宏
100@a - 将指定的宏播放100遍

快捷键:
ctrl+e / ctrl+y 下移/上移一行
ctrl+f / ctrl+b 下移/上移一页
ctrl+r 重做
ctrl+w 按两下 - 切换窗口

末行模式:
set nu / set nonu - 设置显示/取消行号
set ts=4 - 设置制表的空格数
syntax on / off - 打开/关闭高亮语法
map/imap/inoremap 快捷键 执行的操作 - 映射快捷键
ls - 显示打开的文件
b <n> - 切换文件
sp - 水平拆分窗口
vs - 垂直拆分窗口
w - write - 保存
q - quit - 退出
可以加!强制执行
/正则表达式 - 正向搜索与正则表达式匹配的字符串
?正则表达式 - 反向搜索与正则表达式匹配的字符串
1,$s/正则表达式/替换的内容/指示器 - 查找替换
c - 确认 - confirm
i - 忽略大小写 - ignore case
e - 错误静默 - error

~/.vimrc - vim的配置文件

代码提示 - 安装一个名为YouCompleteMe插件

文件权限
-rw-r--r-- 1 root root hello.py

第一个字符
d - 文件夹
l - 软链接
- - 文件
第2-4个字符:文件的所有者对文件有何种操作权限
r - read - 读
w - write - 写
x - execute - 执行
第5-7个字符:和文件所有者同组的用户对文件有何种操作权限
第8-10个字符:其他用户(不是所有者也不同组)的用户对文件有何种操作权限

chmod u+x,g+x,o+x 文件名 - 给文件加上执行权限
chmod 755 文件名
chown 用户名 文件名 - 改变文件所有者
chgrp 用户组 文件名 - 改变文件用户组

以太网 - Ethernet

网络相关命令:
ping - 检测网络可达性 - ICMP
tracepath - 检查数据路由
ifconfig - 检查网络接口(网络适配器)
ip - 查看配置网络接口相关信息
netstat - 查看网络状态(端口占用、进程、已建立的连接)
sftp - 安全网络文件传输
scp - 安全文件拷贝

scp 文件 用户名@1.2.3.4:/目录/文件名

命令 & - 让命令在后台运行
jobs - 查看后台运行的进程
fg %编号 - 让命令回到前台运行
bg %编号 - 让命令在后台运行
Ctrl+z - 将前台进程暂停放到后台

版本控制
1990s - 锁定模式
- CVS - Concurrent Version System
- VSS - Visual Source Safe

2000s - 合并模式
- SVN - Subversion - 集中控制式

分布式版本控制系统 - BitKeeper
2005年 - Git / Mercury

Linux系统安装Git
方法一:yum -y install git
方法二:
1. 下载git源代码压缩文件
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.19.1.tar.xz
2. 解压缩和解归档
xz -d git-2.19.1.tar.xz
tar -xvf git-2.19.1.tar
3. 配置安装路径
cd git-2.19.1
./configure --prefix=/usr/local
4. 安装git的网络依赖库
yum -y install libcurl-devel
5. 构建和安装
make && make install
6. 检查安装结果
git --version

Git的使用
1. 创建git仓库
git init

2. 将代码纳入暂存区
git add 文件名
git add .

3. 查看暂存区状态
git status
git rm --cached 文件名(从暂存区移除)
git checkout -- 文件名(将暂存区文件恢复到工作区)

4. 配置身份标识
git config --global user.name "..."
git config --global user.email "..."

5. 提交到本地仓库
git commit -m '...'

6. 查看提交日志
git log
git reflog - 看到未来的版本(曾经提交过又被撤回的版本)

7. 回到历史版本
git reset --hard HEAD^
git reset --hard HEAD^^
git reset --hard 版本的哈希摘要

--hard参数是为了保持工作区和历史版本的一致性