Linux
大道至简
linux系统中一切皆文件:{文件-、链接l、目录d}读写执行(rmx【创建、删除、编辑、移动、查看】)、 权限(用户主、用户组、其他用户)、系统(磁盘、进程)、可视化 )
1. 命令基础
# 命令格式 [-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. 目录操作
# 文件夹【目录】操作
# 创建文件夹,新建一个目录,[-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键盘图
# 文件操作
# 新建一个文件[-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. 权限操作
# 更改权限 [-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. 压缩和解压文件
# 打包和解压以.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. 磁盘
# 使用了多少,磁盘使用量
df -h
# 占用所用空间
du -a
# 查看系统所占用空间
du -sm /*
# 挂载
mount [挂载位置]
# 强制卸载
umount -f 挂载位置
7. 进程
# [-a]【显示当前终端运行的所有进程信息】、[-x]【显示后台运行进程的参数】、[-u]【以用户的信息显示进程】
ps -ef|grep xx
# 进程树 [-p]【显示父id】、[-u]【显示用户组】
pstree -pu
# 结束进程
kill -9 [进程的id]
# java进程打包的命令
nohup
8. 防火墙
# 开启、重启、关闭、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.环境安装
安装的三种方式:
- rpm(jdk :在线发布一个SPringBoot项目)
- 栗子:linux 中 jdk安装
# 检测当前是否存在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
- 解压缩(tomcat 启动通过外网访问,发布网站)
- 栗子:Tomacat安装(SSM war)
# 解压压缩包
tar -zxvf apache-tomcat-9.0.22.tar.gz
# 执行
./startup.sh
# 停止
./shotdown.sh
yum在线安装(docker : 直接安装运行跑起来docker就可以)
10. Linux三剑客(awk,sed,grep)
10.1 awk适合格式化文本
# 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 命令是利用脚本来处理文本文件,适合编辑匹配到的文本
# sed语法
sed [-hnV][-e<script>][-f<script文件>][文本文件]
参数:
-e
10.3 grep适合单纯的查找文本
# 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进行的总结和记录,如果有好的建议或者错误,欢迎大家评论区指出。