Linux系统初识

大道至简

linux系统中一切皆文件:{文件-、链接l、目录d}读写执行(rmx【创建、删除、编辑、移动、查看】)、 权限(用户主、用户组、其他用户)、系统(磁盘、进程)、可视化 )

1. 命令基础

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
# 命令格式 [-options]可以控制命令,也可以省略,[parameter]表示命令参数,可以为多个
command [-options] [parameter]

# 注释 用#号表示在Shell行注释,//表示在C语言中注释,/**/多行注释

# 数据同步到硬盘
sync

# 关机指令,[时间]可以是now,也可以是分钟,或者具体时间
shutdown -h [时间]
halt

# 取消定时关机指令
shutdown -c

# 重启指令,[时间]可以是now,也可以是分钟
shutdown -r [时间]
reboot

# 帮助,man 是 manual 的缩写,
help
man

# 重启客户端
reset

# 清屏客户端 快捷键 Ctrl+l按键
clear

# 退出客户端 快捷键:Ctrl+d按键
exit

# 查看历史
history

# 显示当前用户
whoami

# 切换用户
su [用户名]

# 其他快捷键 Tab按键—命令补齐功能、Ctrl+c按键—停掉正在运行的程序

# 文本搜索 [-e]【正则表达式】、[-i]【不区分大小写】、[-c]【匹配的行数】、[-v]【查找不匹配指定字符串】
grep [-eicv] ["字符串"] [文件名]

# 快速的搜寻某个路径 精简版CentOS系统需要安装locate命令 yum -y install mlocate
locate [目录名]

# 定位可执行文件、源代码文件、帮助文件
whereis [文件名]

# 在PATH变量搜索某个系统命令,返回第一个结果
which [PATH变量]

2. 目录操作

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
# 文件夹【目录】操作
# 创建文件夹,新建一个目录,[-m]【权限】、[-p]【递归创建】
mkdir [-mp] [目录名]

# 删除一个文件夹,删除目录 [-r]【递归】 、[-f]【强制】、[-i]【互动】
rm [-rif] [目录名]
# 删除一个空的目录 [-p] 【向上递归】
rmdir [-p] [目录名]

# 重命名一个目录 [-f]【强制】、[-i]【互动】、[-u]【较新升级】
mv [-fiu] [目录1] [目录2]
# 移动文件夹【剪切】
mv [目录1<相对路径>] [目录2<绝对路径>]
# 改变目录
cd [目录]
# 退回上一目录,直接cd是进入默认目录
cd ..
# 复制目录 [-a]【-pdr】、[-d]【若是link,则复制link】、[-f]【强制】、[-i]【互动】、[-l]【复制为硬连接】
# [-p]【连文件一起复制,备份】、[-r]【递归】、[-s]【复制为软连接,快捷方式】、[-u]【较新升级】
cp [-adfilprsu] [来源档(source)] [目标档(destination)]

# 搜索目录,例如 find . -name "*.txt"
find [路径] [表达式] [名字]
# 显示当前目录所在位置,[-p]【真实路径,不是link】
pwd [-p]
# 查看当前目录的文件和目录,ll更详细 [-a]【查看所有包括隐藏】、[-l]【列表查询】
ls [-aAdfFhilnrRSt]
ll

3. 文件操作

vim键盘图

在这里插入图片描述

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
# 文件操作
# 新建一个文件[-a]【改变读取时间记录】、[-c]【目的档案不存在就不建立】、[-f]【不使用,为了兼容】、[-m]【改变修改时间记录】
touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件]

# 删除一个文件,[-r]【递归】 、[-f]【强制】、[-i]【互动】
rm [-fir] [文件名]

# 重命名【去掉目录】,或者移动一个文件
mv [文件名1] [目录<绝对路径>] [文件名2]
# 编辑文件,命令模式-iao键-输入模式-Esc键-底线命令模式-:wq-保存退出-cat 文件名-查看
vim [文件名]

# 查看文件内容 [-A]【相当於-vET,列出特殊字符】、[-b]【列出行号】、[-E]【显示断行$】、[-n]【列出行号,包括空白行】、[-T]【[tab] 按键以 ^I 显示】、[-v]【列出看不出的特殊字符】
cat [-AbEnTv] [文件名]
# 倒序查看文件内容
tac [文件名]
# 显示行号查看文件 [-b]【a:空行也列出行号,t:空行不列出行号】、[-n]【ln:行号在最左方,rn:右方显示,且不加 0,rz:右方显示,且加 0】
# [-w]【行号栏位的占用的位数】
nl [-bnm] [文件名]
# 一页一页翻动
more [文件名]
less [文件名]
# 取出文件前面几行
head [-n number] [文件名]
# 取出后面几行
tail [-n number] [文件名]

4. 权限操作

1
2
3
4
5
6
7
# 更改权限 [-c]【权限已更改,显示其更改动作】、[-f]【无法更改,不显示错误】、[-v]【显示变更的详细资料】、[-R]【相同权限递归】
# [--help]【显示辅助说明】、[--version]【显示版本】
# [-u]【属主】、[-g]【属组】、[-g]【属其他】、[-a]【属所有】
# [+]【增加权限】、[-]取消权限、[=]【唯一设定权限】
# [r]【可读取 4】、[w]【可写入 2】、[x]【可执行 1】、[X]【该文件被设定过可执行】
# 举个栗子 chmod 755 .bashrc
chmod [-cfvR] [--help] [--version] [ugoa...][[+-=][rwxX]...][,...] file...

5. 压缩和解压文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 打包和解压以.tar 结尾 [-c]【新产生的包】、[-r]【增加文件】、[-t]【列出文件】、[-u]【更新文件】、[-f]【指定包的文件名】、[-x]【解开】,选其中一个命令和f
tar [-crutxf] all.tar [文件名]

# 打包和解压以.gz.bz.Z结尾 [-z]【调用gzip】、[-j]【调用gzip】、[-Z]【调用compress】,cx任选一个,zjZ任选一个,f必选
tar [-cxzjZf] all.tar.gz

# 压缩和解压举个栗子
#压缩
tar –cvf jpg.tar *.png // 将目录里所有png文件打包成 tar.png
tar –czf jpg.tar.gz *.png // 将目录里所有png文件打包成 png.tar 后,并且将其用 gzip 压缩,生成一个 gzip 压缩过的包,命名为 png.tar.gz
tar –cjf jpg.tar.bz2 *.jpg // 将目录里所有jpg文件打包成 jpg.tar 后,并且将其用 bzip2 压缩,生成一个 bzip2 压缩过的包,命名为jpg.tar.bz2
tar –cZf jpg.tar.Z *.txt // 将目录里所有 txt 文件打包成 txt.tar 后,并且将其用 compress 压缩,生成一个 umcompress 压缩过的包,命名为txt.tar.Z
rar a jpg.rar *.png // rar格式的压缩,需要先下载 rar for linux
zip jpg.zip *.txt // zip格式的压缩,需要先下载 zip for linux

# 解压
tar –xvf file.tar // 解压 tar 包
tar -xzvf file.tar.gz // 解压 tar.gz
tar -xjvf file.tar.bz2 // 解压 tar.bz2
tar –xZvf file.tar.Z // 解压 tar.Z
unrar e file.rar // 解压 rar
unzip file.zip // 解压 zip

6. 磁盘

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 使用了多少,磁盘使用量
df -h

# 占用所用空间
du -a

# 查看系统所占用空间
du -sm /*

# 挂载
mount [挂载位置]

# 强制卸载
umount -f 挂载位置

7. 进程

1
2
3
4
5
6
7
8
9
10
11
# [-a]【显示当前终端运行的所有进程信息】、[-x]【显示后台运行进程的参数】、[-u]【以用户的信息显示进程】
ps -ef|grep xx

# 进程树 [-p]【显示父id】、[-u]【显示用户组】
pstree -pu

# 结束进程
kill -9 [进程的id]

# java进程打包的命令
nohup

8. 防火墙

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 开启、重启、关闭、firewalld.service服务
# 开启
service firewalld start
# 开启防火墙端口
# 命令含义--zone 作用域 --add-port=80/tcp 添加端口,--permanent 永久生效,没有重启会失效
firewall-cmd --zone=public --add-port=9000/tcp --permanent
# 重启
service firewalld restart
# 重启防火墙
systemctl restart firewalld.service
# 关闭
service firewalld stop


# 查看防火墙的端口是否开启,如果时阿里云,需要配置安全组规则
firewall -cmd --list-ports
# 查看防火墙全部规则
firewall -cmd --list-all


# 查看firewall服务状态
system status firewalle

9.环境安装

安装的三种方式:

  1. rpm(jdk :在线发布一个SPringBoot项目)
  • 栗子:linux 中 jdk安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 检测当前是否存在Java环境 java -version
# 有则卸载,无则继续
# rpm -qa|grep jdk 检测jdk版本信息
# rpm -e --nodeps jdk 强制卸载
# 卸载完后安装jdk
# rpm -ivh jdk.rpm
# rpm安装jdk不用配置,配置环境变量 vim /etc/profile
JAVA_HOME=/user/java/jdk1.8
CLASSPATH=%JAVA_HOME%/bin;%JAVA_HOME%/jre/lib
PATH=$JAVA_HOME/bin;$JAVA_HOME/jre/bin
export PATH CLASSPATH JAVA_HOME
export PATH=/bin:/usr/bin/:.
# 让配置文件生效 source /etc/profile

  1. 解压缩(tomcat 启动通过外网访问,发布网站)
  • 栗子:Tomacat安装(SSM war)
1
2
3
4
5
6
# 解压压缩包
tar -zxvf apache-tomcat-9.0.22.tar.gz
# 执行
./startup.sh
# 停止
./shotdown.sh

yum在线安装(docker : 直接安装运行跑起来docker就可以)

10. Linux三剑客(awk,sed,grep)

10.1 awk适合格式化文本

1
2
3
# awk语法
awk [选项参数] 'script' var=value file(s)
awk [选项参数] -f scriptfile var=value file(s)

参数:

-F fs or –field-separator fs
指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。

-v var=value or –asign var=value
赋值一个用户定义变量。

-f scripfile or –file scriptfile
从脚本文件中读取awk命令。

-mf nnn and -mr nnn
对nnn值设置内在限制,-mf选项限制分配给nnn的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。

-W compact or –compat, -W traditional or –traditional
在兼容模式下运行awk。所以gawk的行为和标准的awk完全一样,所有的awk扩展都被忽略。

-W copyleft or –copyleft, -W copyright or –copyright
打印简短的版权信息。

-W help or –help, -W usage or –usage
打印全部awk选项和每个选项的简短说明。

-W lint or –lint
打印不能向传统unix平台移植的结构的警告。

-W lint-old or –lint-old
打印关于不能向传统unix平台移植的结构的警告。

-W posix
打开兼容模式。但有以下限制,不识别:/x、函数关键字、func、换码序列以及当fs是一个空格时,将新行作为一个域分隔符;操作符** 和 **=不能代替^ 和 ^=;fflush无效。

-W re-interval or –re-inerval
允许间隔正则表达式的使用,参考(grep中的Posix字符类),如括号表达式[[:alpha:]]。

-W source program-text or –source program-text
使用program-text作为源代码,可与-f命令混用。

-W version or –version
打印bug报告信息的版本。

10.2 sed 命令是利用脚本来处理文本文件,适合编辑匹配到的文本

1
2
# sed语法
sed [-hnV][-e<script>][-f<script文件>][文本文件]

参数:

-e<script文件>或–expression= <script文件>以选项中指定的script来处理输入的文本文件。

-f<script文件>或–file=<script文件> 以选项中指定的script文件来处理输入的文本文件。

-h或–help 显示帮助。

-n或–quiet或–silent 仅显示script处理后的结果。

-V或–version 显示版本信息。

10.3 grep适合单纯的查找文本

1
2
# grep语法
grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]

参数:

-a 或 –text : 不要忽略二进制的数据。

-A<显示行数> 或 –after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。

-b 或 –byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。

-B<显示行数> 或 –before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。

-c 或 –count : 计算符合样式的列数。

-C<显示行数> 或 –context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。

-d <动作> 或 –directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。

-e<范本样式> 或 –regexp=<范本样式> : 指定字符串做为查找文件内容的样式。

-E 或 –extended-regexp : 将样式为延伸的正则表达式来使用。
-f<规则文件> 或 –file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。

-F 或 –fixed-regexp : 将样式视为固定字符串的列表。

-G 或 –basic-regexp : 将样式视为普通的表示法来使用。

-h 或 –no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。

-H 或 –with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。

-i 或 –ignore-case : 忽略字符大小写的差别。

-l 或 –file-with-matches : 列出文件内容符合指定的样式的文件名称。

-L 或 –files-without-match : 列出文件内容不符合指定的样式的文件名称。

-n 或 –line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。

-o 或 –only-matching : 只显示匹配PATTERN 部分。

-q 或 –quiet或–silent : 不显示任何信息。

-r 或 –recursive : 此参数的效果和指定”-d recurse”参数相同。

-s 或 –no-messages : 不显示错误信息。

-v 或 –revert-match : 显示不包含匹配文本的所有行。

-V 或 –version : 显示版本信息。

-w 或 –word-regexp : 只显示全字符合的列。

-x –line-regexp : 只显示全列符合的列。

-y : 此参数的效果和指定”-i”参数相同。

11. 总结

本文由自己在网上找的一些资料,和自己学的Liunx进行的总结和记录,如果有好的建议或者错误,欢迎大家评论区指出。