spark

linux基础学习笔记二:vim, shell和shell脚本

2022-07-27  本文已影响0人  Caucher

3.1 vim

只记录一些不太熟悉且强大的命令:

3.2 shell基础

本节的shell都以bash为例说明。

3.2.1 一些普通命令

3.2.2 变量和环境变量

3.2.3 高级命令

3.2.3.1 通配符与正则表达式

shell的命令中有四种通配符可以用:

通配符由shell负责解析,正则表达式则由命令本身负责解析。能支持正则表达式的命令则不再使用通配符规则,比如grepsedawk等。

一些常用的正则表达式搭配:

还有一些宏可以用在正则表达式里:

3.2.3.2 数据流重定向

命令执行(可能)有三条数据流,输入数据流stdin,标准输出流stdout,标准错误输出流stderr,分别对应代码0,1,2。数据流重定向是将数据的末端从屏幕变成文件。

3.2.3.3 管道命令

管道命令|是将前一个命令的标准输出作为后一个命令的标准输入,这要求后一个命令必须能接受标准输入,即是管道命令。

awk命令还藏了两个变量,NR表示现在处理的是第几行,NF表示该行共有几列。

设置分隔符是另一个变量FS

在awk的操作中,即{}中,可以有多条命令,用;或者回车可以分隔;甚至还可以定义变量,且无需加上$读取变量;再甚至可以有条件逻辑和循环逻辑,非常强大

3.2.4 ulimit

3.3 shell脚本

shell脚本就是一系列shell命令写到文件里,从上到下依次执行而已。
规则是碰到回车就执行当前行命令,除非是用\+回车换行。
基本规则:

执行方式:

脚本的参数:脚本也可以拥有参数,在脚本中以特殊方式读取

条件逻辑:

if [some condition] && [other condition]; then
  sth
elif [conditon1] || [condition2]; then
  sth
else [condition 3]
  sth
fi

选择逻辑:

case $var in 
  "one")
    sth
    ;;
  "two")
    sth
    ;;
  *)
    echo "Usage: ./$0 one or two"
    ;;
esac

循环逻辑:

while [condition]
do
    sth
done

until [condition]
do
    sth
done

for var in one two three
do
    sth
done
for var in $(ls .), for var in {1..100}, for var in $(seq 1 100)

for (( i=1; i<=${th}; i=i+1 ))
do
    sth
done

shell内的函数:没有返回值,但是可以像命令那样传递些参数进来,里面仍然会有$1,$2,$0是函数名,但与整个脚本的不同,只看调用的时候提供的参数。

function fname(){
    echo "$1"
}
fname hello
上一篇下一篇

猜你喜欢

热点阅读