Linux符号大全

发布于:2023-01-09 ⋅ 阅读:(532) ⋅ 点赞:(0)

目录

1. 搭配命令

2. shell类型

2.1. 注释

2.2. $符号

2.3. 括号(小、中、大)

小括号(单)__数组+命令

小括号(双)__计算器+循环

中括号(单)__计算器+判断语句

中括号(双)__判断

大括号(单)__接收变量/数组

大括号(单)__指定分隔符截取字符串

大括号(单)__指定索引截取字符串

大括号(单)__判断变量是否为空

2.4. 引号

2.5. 正则表达式符号

2.6. 其他符号

3. Linux 后缀名


1. 搭配命令

  • Linux命令常用符号
符号类型 使用命令 解释说明
` `ls` 倒引号内命令表示输出 Linux 命令
* ls *.sh * 表示模糊匹配,*在前表示查询以 .sh结尾的文件/目录,后面反之
- cd - 表示返回上次所在路径
/ cd / 进入根目录
./ 表示当前目录(复制文件到当前目录 cp xxx ./)
./ xxx.sh 执行 xxx.sh 文件(xxx.sh 需要可执行权限)
& sleep 5 & & 表示某个命令后台执行(jobs 可调出后台ID)
|  cat file |grep 'a' | 表示上一个命令的输出作为下一个命令的输入(过滤条件很好用)
> echo > file > 表示覆盖(echo 输出为空,将这个空值覆盖到 file,相当于清空文件)
echo 'a' >> file >> 表示追加,将字符串 a 追加到 file
! !! 执行上一个命令
!p 执行上一次以p开头的命令
!20 执行历史命令编号为20的命令(使用 history 查看编号)

2. shell类型

2.1. 注释

  • 常用的单行注释和多行注释
符号 解释
# 以 # 开头表示单行注释

<<EOF

注释内容1

注释内容2

EOF

使用 << 表示多行注释

EOF 表示开始和结束

EOF 可以用任意字符串代替,但开始语必须语结束语一致

#! 第一行以 #!开头表示需要使用的解释器,shell 使用 #!/bin/bash

2.2. $符号

  • 包含变量名、脚本名、位置参数
符号 解释
$$ 表示当前脚本 PID
$0 表示当前脚本名
$n

表示位置参数

$1 表示第一个位置参数,$2 表示第2个位置参数,以此类推

注意:$n 放在脚本全局,表示整个脚本的第 n 个位置参数

注意:$n 放在函数中,表示这个函数的第 n 个位置参数

$* 表示所有的位置参数
$@ 表示所有的位置参数
$# 表示参数个数
$? 返回上一个指令的状态(0表示正常,其他数字表示异常)

2.3. 括号(小、中、大)

  • 包含数组、计算器、判断语句、循环语句、截取字符串、判断变量
  • 双中括号和单中括号都可以用作判断,但执行的方式有所不同

小括号(单)__数组+命令

***************************** 表示命令 *****************************
$() 输出命令
df -h $(pwd)    # 命令中套用命令

将三个命令看做一个大整体,那么括号中视为一个小整体
command1 (command2 command3)


***************************** 表示数组 *****************************
顺序索引添加数组
arr=(a1 a2 a3)        # 默认索引从0开始,以空格分隔

指定索引添加数组
arr=([1]="a1" [4]="a4")

替换/添加指定的索引
arr[1]="arr1"         # 将索引为 1 的值替换为 arr1,若原索引1为空,那么直接添加

拼接两个数组
arr1=(a1 b1)  arr2=(a2 b2)
arr3=(${arr1[@]} ${arr2[1]})  # arr1 全部 + arr2 索引 1
echo ${arr3[@]}               # a1 b1 b2

删除数组
unset arr1[0]         # 将 arr1 索引为 0 的值删除
  • 查询数组使用大括号,见链接:大括号(单)__接收变量/数组

小括号(双)__计算器+循环

***************************** 计算器 *****************************
计算两个值
echo $(( 1 + 1 ))    # 2

计算两个变量相加的值
a=2
b=3
echo $(( a + b ))    # 5

注意:这种方式无法计算浮点数,系统会直接省略,可以使用 echo + bc 命令

指定浮点数位数:scale
echo "scale=2; 10 / 3" |bc    # 3.33
echo "scale=2; 1 + 1.234" |bc # 2.234 浮点数相加无法指定


***************************** 循环 ******************************
for (( i=1; i<10; i+=1 ));do
    echo $i
done

中括号(单)__计算器+判断语句

计算两个值
echo $[ 1 + 1 ]    # 2

计算两个变量相加的值
a=2
b=3
echo $[ a + b ]    # 5

注意:这种方式无法计算浮点数,系统会直接省略,可以使用 echo + bc 命令

指定浮点数位数:scale
echo "scale=2; 10 / 3" |bc    # 3.33
echo "scale=2; 1 + 1.234" |bc # 2.234 浮点数相加无法指定
********************** 逻辑符判断 **************************
判断:真
[ -f /data ] && echo "如果有 /data 这个文件,那么输出这段字符串"

判断:假
[ ! -f /data ] && echo "如果没有 /data 这个文件,那么输出这段字符串"

合理利用逻辑操作符:&& 输出真,|| 输出假
[ -f /data ] && echo "这个文件存在" || echo "这个文件不存在"

********************** if 语句判断 ************************
判断上一个指令是否正常
if [ $? -eq 0 ]; then
    echo "上一个指令输出正常"
else
    echo "上一个指令输出异常, 退出程序"
    exit 1
fi

判断多个指令:-a 表示逻辑与(and)
if [ f1 -eq 1 -a f2 -eq 2 ]; then
    echo "f1=1,f2=2 必须满足两个条件即可"
else
    echo "不满足两个条件"
fi

判断多个指令:-o 表示逻辑或(or)
if [ f1 -eq 1 -o f2 -eq 2 ]; then
    echo "f1=1,f2=2 满足其中一个条件即可"
else
    echo "不满足两个条件"
fi

********** 逻辑比较参数 **********

Usage:[ 1 -eq 1 -a 2 -eq 2 ]

-a:逻辑与(and)

-o:逻辑或(or)

********** 数学比较参数 **********
Usage:[ 1 -eq 1 ]
-gt :大于
-eq:等于
-lt  :小于
-ne:不等于
-ge:大于等于
-le :小于等于

********** 字符串比较参数 ********
Usage:[ "string" == "string" ]
==:等于
!=:不等于

********** 文件比较与检查 ********
Usage:[ -f file.txt ]
-f:判断文件存在
-d:判断目录存在
-e:判断文件或目录存在
-z:判断字符串为空
-n:判断字符串不为空
-r:判断文件为可读
-w:判断文件为可写
-x:判断文件为可执行
-s:判断文件存在,且不为空
-O:判断文件存在,且被当前用户拥有
-G:判断文件存在,且默认组为当前用户组
file1 -nt file2:判断文件 file1 比 file2 新
file1 -ot file2:判断文件 file1 比 file2 旧

中括号(双)__判断

判断变量是否为空
[[ ! ${var} ]] && echo "变量 var 为空"

数据运算判断 >、=、<、!=、>=、<=
if [[ ${a} > 1 ]]; then
    echo "变量 a 大于 1"
else
    echo "变量 a 不大于 1"
fi

字符串判断
if [[ "${var}" == "string" ]]; then
    echo "变量 var 等于 string"
else
    echo "变量 var 不等于 string"
fi

逻辑判断:&& 与、|| 或、!非
[[ 1=1 && 2=2 && 3=3 ]] && echo "需要满足全部条件"
[[ 1=1 || 2=1 || 3=1 ]] && echo "满足其中一个条件即可"
[[ ! 1=1 ]] && 1 不等于 1(取反)

大括号(单)__接收变量/数组

符号 解释
${var} 表示接收的变量(标准写法),也可以写 $var
${a[1]} 输出数组 a 索引为 1 的值
${a[-1]} 输出数组 a 最后1个值,-2 表示倒数第2个
${a[@]} 输出全部数组
${#a[@]} 输出数组的个数
${#a[0]} 输出数组索引为0的字符长度
${a[@]:2:6} 输出数组索引为 2 后面的 6 个值
${a[@]::3} 输出数组索引为 3 之前的值(0,1,2)
${a[@]:$((pos + 2))} 输出索引为 2 后面的所有值(包含索引2)

大括号(单)__指定分隔符截取字符串

符号 解释
${a#*/} 指定分隔符为 /,不显示第一列
${a##*/} 指定分隔符为 /,只显示最后1列
${a%/*} 指定分隔符为 /,不显示最后一列
${a%%/*} 指定分隔符为 /,只显示第一列
示例:a=1/2/3/4/5
echo ${a#*/}         # 2/3/4/5
echo ${a##*/}        # 5
echo ${a%/*}         # 1/2/3/4
echo ${a%%/*}        # 1

大括号(单)__指定索引截取字符串

符号 解释
${a:1} 截取字符串索引为1开始,后面全部
${a:1:2} 截取字符串索引为1开始,后面 2 个
${a:0-1} 截取字符串最后1个
${a:0-2} 截取字符串最后2个
${a:0-5:3} 0-5获取最后5个,:3 从5个值中从左到右截取3个

大括号(单)__判断变量是否为空

符号 解释
${a:-'1'} 如果变量 a 为空,那么返回1(1可以为任意字符串)
${a:='1'} 如果变量 a 为空,那么给a赋值为1(1可以为任意字符串)
${a:?'error'} 如果变量 a 为空,那么退出程序,输出字符串 error(error 可以为任意字符串)

2.4. 引号

单引号:单引号内的任意字样都会被原样输出,无法使用变量、转译等操作

双引号:双引号内可以使用变量、转译、通配符

反引号:输出命令 (同 $() 一样)

2.5. 正则表达式符号

  • Linux 目前3个命令支持正则:grep、awk、sed
字符 解释 用法
^ 匹配以什么开始 grep -E '^ab' 匹配以ab开头的行
$ 匹配以什么结尾 grep -E 'ab$' 匹配以ab结尾的行
. 匹配任意一个字符 grep -E 'a.c' 只匹配a与c之间拥有一个字符的行
.+ 匹配1次或多次 grep -E 'a.+c' 匹配a与c之间任意字符的行,不包含ac
* 匹配0次或多次 grep -E 'a*c' 匹配a与c之间任意字符的行,包含ac
| 相当于 or grep -E 'ab|ac' 匹配包含ab或ac的行
[] 匹配括号中任意一个字符 grep -E '[ac]' 匹配包含a或c的行
[^] 匹配非括号中任意一个字符 grep -E '[^ac]' 匹配不包含a或c的行
- [0-9] 匹配数字 grep -E [0-9]   匹配包含数字的行
[^0-9] 匹配非数字 grep -E [^0-9] 匹配不包含数字的行
[a-z] 匹配小写字符串 grep -E [a-z]   匹配包含小写字符串的行
[^a-z] 匹配非小写字符串 grep -E [^a-z] 匹配不包含小写字符串的行
[A-Z] 匹配大写字符串 grep -E [A-Z]   匹配包含大写字符串的行
[^A-Z] 匹配非大写字符串 grep -E [^A-Z] 匹配不包含大写字符串的行
() (a|b) 匹配括号中任意字符 grep -E '0(a|b)1' 只匹配0a1和0b1的行
(a)+ 匹配包含1个或多个a grep -E '0(a)+1' 匹配0和1之前1个或多个a,0a1、0aa1...
{} {n} 指定匹配n个以上 grep -E 'ab{2}' 匹配包含ab,且a或b连续为2次以上:abb
{n,m} 指定匹配 n-m 个 grep -E 'ab{2,3}' 匹配包含ab,且a或b连续为2-3次:abb、aaab

2.6. 其他符号

符号 解释
\

转译字符,以下常用 3 个作用:

1、将特殊符号转译为普通符号:\$、\[、\*、\\

2、某些命令特殊定义:\n 换行、\t 缩进、\r 回车

3、连接多个命令:用于shell格式调整(命令过长使用 \ 符号,下一行命令延续上一行命令)

: 表示什么也不做,相当于占位符
; 表示将命令分开(例如: ls aaa; ls bbb  执行完成第一个命令后继续执行第二命令)
;; 用于 case 命令专属

3. Linux 后缀名

类型 后缀 解释
脚本文件 .sh shell 文件
.py python 文件
.jar java 文件
.c c 语言文件
.cpp c++ 文件
.h c 或 c++ 头部文件
.o 程序目标文件
.php php 文件
.tcl tcl 文件
.exp 交互命令 expect 文件
系统文件 .so 库文件
.rpm rpm 包
压缩包 .tar tar 包
.zip zip 包
.tar.gz gzip 包
应用文件 .conf 配置文件
.sql sql 文件
普通文件 .html html 文件
.txt 文本文件
图像文件 .gif GIF 图像文件
.png PNG 图像文件
.xpm XPM 图像文件


网站公告

今日签到

点亮在社区的每一天
去签到