Linux
1. 目录说明

- bin: Binary缩写,存放Linux命令文件,如:pwd,ls,cd,..
- boot:存放启动Linux使用的核心文件,包括一些连接文件及镜像文件
- dev: Device设备的缩写,存放Linux外部设备,在Linux中访问设备的方式和访问文件的方式相同。
- etc: 配置文件目录,自己装的软件的配置文件也是放这里
- home:用户的主目录,每个用户有一个自己的目录,一般目录名为:用户的账号
- lib: 系统的动态连接共享库,类似win系统的DLL文件
- lost+found: 一般此目录为空,系统非法关机后,会存放一些文件
- media:媒体文件,Linux自动识别一些设备如:U盘,光驱等,当识别成功后,系统会吧识别的设备挂载到此目录
- mnt:系统提供该目录目的:让用户临时挂载别的文件系统,可将光驱挂载到此目录,进入目录可以查看光驱里的内容
- opt:自己安装的软件可放在此,如:mysql等可以放此
- proc:虚拟目录,系统内存的映射,可通过访问此目录获取系统信息
- root:系统管理员目录(超级管理员),类似home,home放其他用户
- sbin: Super User的意思,存放root账号使用的系统管理程序
- srv: 目录存放一些服务启动之后需要提取的数据
- sys: linux2.6内核一个很大的变化,放有2.6内核新出现的文件系统:sysfs
- run:
- tmp:临时文件
- usr:部署的应用和编译后2进制文件放此目录,jar包等
- /usr/local: 自己的jar包、redis在/opt目录下源码编译后的2进制文件等
- var:放不断扩充的文件,习惯将经常被修改的目录放此,如:各种日志文件
2. shell
- 查看当前用户默认的shell
echo $SHELL - 查看当前系统支持的shell版本
cat /etc/shells
chsh -l
2.1. debug模式
- sh -x
示例:
sh -x sart_nn.sh
- set -x +x
set -x
echo "-x是开启控制台输出echo执行细节"
echo "+x是结束控制台输出echo执行细节"
set +x
2.2. 快捷键
ctrl + a 类似home建
ctrl + e 类似end建
ctrl + u 删除光标左边的字符
ctrl + K 删除光标右边的字符
ctrl + l 类似clear
2.3. 解压缩
| 压缩包 | 压缩 | 解压 |
|---|---|---|
| tar.gz或tgz | tar -czf jpg.tar.gz *.jpg | tar -xzvf |
| tar | tar -cvf jpg.tar *.jpg | tar -xvf 文件名 -C path |
| gz | tar -czf jpg.tar.gz *.jpg | tar -xzvf 文件名 -C path |
| zip | zip jpg.zip *.jpg | unzip -q 文件名 -C path |
| rar | rar a.jpg.rar *.jpg | rar x 文件名 -C path |
- 参数说明
tar 用于压缩、解压文件
-c 打包文件
-z 通过gzip指令处理备份文件
-x 解压缩、提取打包内容
-v 显示指令执行过程
-f 使用文件名 此参数只能放最后
zip 用于将文件或目录压缩为.zip格式
zip -r 压缩目录
unzip 解压缩以.zip结尾的文件
解压文件最好不要带中文,容易乱码
2.4. awk
// $0:代表整行 (awk '{print}' awk.txt)括号中{print}也是打印整行
// $1: 代表第一列
// 默认以空格(多个空格也按一个空格)分隔
// F: 用冒号 :分割列
// NF: 分割后,当前行一共有多少字段
// NR: 行数
示例:awk '{print $0}' awk.txt
- 用指定的";"作为分割符分割列
// -F ';' 和 -v FS=";"等价
awk -F ';' '{print $1}' awk.txt
awk -v FS=";" '{print $1}' awk.txt
- 实现cat那样展示所有文本,并显示行号
awk '{print NR,$0}' awk.txt
- 打印第一列和最后一列
//NF当前行分割后的总列数
// 如果该行只有一列,则\(1,\)NF的值是同一个
awk '{print \(1,\)NF}' awk.txt
*打印1到2行语法
awk 'NR1,NR2' awk.txt
2.4.1. 功能参数
| 参数 | 说明 |
|---|---|
| -F | 指定分割字符串 |
| -v | 定义或修改一个awk内部的变量 |
| -f | 从脚本文件中读取awk命令 |
2.5. nano
进入后,可直接改东西。
- 1:保存:Ctrl + O
- 2:按回车,Enter
- 3: Ctrl + X 退出
![image]()
2.6. vim
win编辑的sh脚本,传到linux执行报错。
原因
win换行是\r\n,而linux是\n。
解决办法
1:将每行的\r去掉。
2:执行vim模式--再执行:set ff=unix。推荐第2种
查看文件换行符是哪种OS
重新用 Vim 打开文件。
使用 :set ff?
快捷操作
- 在下方新开辟一行空行:在esc模式下,按小o;
- 复制当前行到下面一行:在esc模式下,yy + p 组合键,光标行内容就会复制到下面一行;
- 复制多行:在esc模式下,nyy + p,n=想复制的行数;
- 删除多行,ndd,n=想删除的光标下的行数;
- 剪切粘贴多行:2dd + p, 在光标处按2dd,剪切2行, 光标移到某个位置按p,会粘贴那2行;
- 复制多个单词:2yw + p, 在光标处按2yw,光标移到指定位置,按p;
- 在文件中找某个单词,在esc模式下,/aa,让后按回车,按n,从上往下定位,按大写N,从下往上定位,所有aa就会高亮
- 查找替换:先执行上面的后,输入2s,然后输入想要替换的新的字符串yes,yes就会替换原来的aa;
- 重复上面的替换,在esc模式下,按英文的. 光标对应的字符就会再次被替换成上一次的;
- 全部替换,在esc模式下,:1,\(s/goods/product/g 解释,:固定开头,1,\)指从第一行到最后一行,把goods替换成product,g的意思,一行找到多个,全部替换;
2.7. 上传下载
linux上文件下载到win
sz 文件路径
win上传到Linux
//将文件从桌面拖到终端试一下
rz
2.8. 帮助文档
命令 --help
命令 --h
示例:wc --h
wc --help
2.9. 统计
wc -l 文件路径 统计行数
2.10. locate
适用于在系统中找文件,它会在系统的数据库中查找文件名匹配指定模式的文件,locate命令是基于数据库的,查找速度比find命令快得多。
注意
当天创建的文件和目录,用locate命令无法搜索到,解决办法:手动刷新数据库
// 执行命令
updatedb
2.11. whereis
用于查找指定命令的可执行文件、源代码文件、帮助文档等信息。
命令实战:
whereis -b ls
whereis -f ls
参数说明:
-b 选项只搜索可执行文件所在位置
-B选项指定搜索位置
-f 列出文件信息
-m 搜索man page路径
-s 搜索源代码文件路径
-M 搜索帮助文件的路径
2.12. which
用于查找指定命令的可执行文件路径。搜索位置指定在\(PATH及\)MANPATH环境变量下。默认显示第一个存储位置的,如果找到多个,可以使用-a选项列出。
which cd -a
如果想找多个,可直接在which命令后列出来。
which cd ls find
2.13. find
使用于在指定目录下查找文件,可以根据文件名、文件类型、文件大小、文件权限等条件进行查找。
| 文件类型 | 说明 |
|---|---|
| f | 普通文件 |
| d | 目录 |
| l | 软链接 |
| s | 套接字 |
| b | 块设备 |
| c | 字符设备 |
| p | 管道 |
示例:
// 限制在当前目录下查找,-maxdepth 数字查到第几层
find . -maxdepth 1 -type d
// 在当前目录下找以test开头的文件有哪些
find 目录路径 type f -name "test*"
2.14. 查找端口
1:用于查看某一端口的占用情况,比如查看8000端口使用情况,
lsof -i:8000
2: 用于查看指定的端口号的进程情况,如查看8000端口的情况,
netstat -tunlp |grep 8000
2.15. test语法
1:存在选项参数说明 test -e filename
# 针对文件类型判断
-e 该文件是否存在
-f 是否为文件
-d 是否为目录
-b 是否为block device装置
-c 是否为 character device装置
-S 是否为Socket文件
-p 是否为FIFO(pipe)文件
-L 是否为一个连接档
2:文件权限检查 test -r filename
-r 可读权限
-w 可写权限
-x 可执行权限
-u SUID属性
-g SGID属性
-k Sticky bit 属性
-s 非空白文件
3:
4: 2个数之间的比较
-eq 相等
-ne 不等 (not equal)
-gt 大于 (greater than)
-lt 小于 (less than)
-ge 大于等于 (greater than or equal)
-le 小于等于 (less than or equal)
5: 字符串判断
test -z string string是否为为空,为空则返回true
test -n string (-n 可省略)string是否不为空,为空则返回false
test str = str2 2者是否相等,相等返回true
test str != str2 2者是否不等,相等返回false。
6:多重条件判断
-a and缩写,&&的意思,示例:test -r filename -a -x filename
-o or缩写,示例:test -r filename -o -x filename
! 取反,如:test ! -x file,当file不具有x执行权限,返回true
2.16. if语法
[]括号左右必须要留出空格
[ $? -ne 0 ]
if [ $? -ne 0 ]
then
else
let success+=1
fi
2.17. 运算符
| 算数运算符 | 含义(*表示常用) |
|---|---|
| +,- | 加法(正号)、减法(负号)* |
| *、/、% | 乘法、除法、取余(取模)* |
| ** | 幂运算* |
| ++、-- | 自增、自减,可放前面也可放后面* |
| !、&&、 | |
| <,<=,>,>= | 比较符(小于,小于等于,大于,大于等于) |
| ==,!=,= | 比较符(相等,不等,“=”可表示相当于) |
| <<,>> | 左移,右移 |
| ~,|,&,^ | 按位取反,按位异或,按位与,按位或 |
| =,+=,-=,*=,/=,%= |
| 运算操作符与运算命令 | 含义 |
|---|---|
| (()) | 用于整数运算,效率很高 |
| let | 类似于:(()) |
| expr | 可用于整数运算,但还有很多其他额外功能 |
| bc | Linux下的计算器程序(适合整数及小数运算) |
| $[] | 整数运算 |
| awk | 整数及小数运算 |
| declare | 定义变量值和属性,-i参数用于定义整形变量运算 |
(())用法示例:
| 示例 | 含义 |
|---|---|
| ((i=i+1)) | 运算后赋值,将i+1的运算结果赋值给变量i。注意:不能用"echo ((i=i+1))" 形式输出表达式的值,但可以用echo $((i=i+1))输出其值 |
| i=$((i+1)) | 可以在“(())” 前加$,表示将表达式运算后赋值给i |
| ((8>7 && 5==5)) | 可进行比较操作,还可以加入逻辑与及逻辑或,用于条件判断 |
| echo $((2+1)) | 需要直接输出运算表达式的结果时,可以在(())前加$ |
2.18. 内/外置命令
内置命令是shell自带的,执行效率高,已加载到内存中。
外置命令为从磁盘读取,会开启子进程。
查看linux所有内置命令:compgen -b
2.19. 字串语法
点击查看代码
name= "yuchao" #索引从0开始
name2="abcABC123ABCabc"
${变量} 返回变量值
${#name} 返回变量长度,字符长度 得到6
${name:4} 返回变量name 索引4(包括4)之后的字符,输出:ao
${变量:4:1} 从索引4开始提取1位字符,输出a
${变量#yu} 从变量开头删除最短匹配的word子串(输出:chao)
${name2##a*c} 从变量开头,删除最长匹配的word(输出:空)
${name2%a*c} 和#相反,从右开始找(输出:abcABC123ABC)
${变量%%word} 和##相反,从右开始找
${变量/pattern/string} 用string代替第一个匹配的pattern
${变量//pattern/string} 用string代替所有的pattern
# 下面4个,主要用于处理param值不存在
res= ${param:-word} 如果param变量为空,word的内容赋值给res;
res= ${param:=word} 如果param变量为空,word的内容赋值给res,并且赋值给param;
res= ${param:?word} 如果param变量为空,word当作stderr输出,否则输出变量值(param为空,word用于设置变量为空导致错误时,返回的错误信息);
res= ${param:+word} 如果param变量为空,什么都不做,param变量不为空,则返回word的内容;
2.20. 变量
2.20.1. 内置变量
- exec
不创建子进程,执行后续命令,且执行完毕后,自动exit推出会话。
2.20.2. 变量规则
- 不可用保留关键字
- 只能由数字、字母、下划线组成
- 不能以数字开头
- 变量名严格区分大小写
2.20.3. 变量值引号
- 单引号变量,不识别特殊语法
- 双引号变量,能识别特殊符号
2.20.4. 特殊变量
2.20.4.1. 特殊状态
- $?
在命令行:表示上一行命令的执行结果,输出值:0=成功;1-255=错误码; -
\[\]
- $!
上一次后台进程的PID - $_
上次执行命令的最后一个参数
2.20.4.2. 脚本中特殊变量
-
$0
在脚本,函数中:表示获取脚本文件名(用bash 执行); -
\(n 获取脚本的第n(从1开始)个参数,n大于10,必须要加花括号:\)
-
$#
获取脚本shell后面的参数总个数 -
\(* 获取所有参数,不加引号等同于\)@,加上引号"$*"作用为接收所有参数为单个字符串,"$1 $2.."
-
$@
不加引号,效果同上,加引号,接收所有参数为独立字符串,如"$1" "$2" "$3" ...,空格保留 -
\(@和\)*的异同
不被引号引起时,是一样的,用引号引起时,\(* 多个参数会被当成一个字符串,\)@ 多个参数每个参数是独立的,单独被引号包裹。
2.20.5. 变量类型
bash默认把所有变量认为是字符串。
变量类型为弱类型,无需指定数据类型。
变量和等号之间不能有空格
错误示范:
name = "错误"
- 变量引用
2种格式
1: 带花括号:
name=6
echo $
2: 不带花括号
name=6
echo $name
2.21. 运算
- (()) []等价
示例 echo \$((3+3)) 输出 6,和 echo $[3+3]
3. 乌班图命令
3.1. 切换为root
sudo -i
3.2. 查看本机ip
ifconfig
ip addr
ip a


浙公网安备 33010602011771号