Linux

1. 目录说明

image

  • 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

posted @ 2022-04-21 22:46  jf666new  阅读(35)  评论(0)    收藏  举报