linux的shell怎么用,Linux Shell的简单使用

一、Vim命令的简单使用请参考

二、Shell编程规范

1)shell文件行业规范默认后缀为.sh

2)shell首行为

#!/bin/bash

注意/bin/bash为当前脚本解释器,可以不写但不能写错了。

3)#表示注释

4)shell对大小写敏感,变量尽量全大写

三、变量

1、环境变量

全局生效

通过set命令查看

用户环境变量,当前用户生效

系统环境变量,所有用户生效

通过export声明变

2、位置变量

将脚本的参数传给脚本,多个参数使用空格隔开

$0: 获取脚本文件名称

$1、$2....$9 :执行脚本的参数

-----------------------------------------------------------------

用例

[hadoop@hadoop000 script]$ cat test.sh

#!/bin/bash

echo "$0"

echo "$2"

echo "$3"

echo "$1"

-------------------------------------------------------------------------

[hadoop@hadoop000 script]$ sh test.sh oneParm

test.sh

oneParm

3、预定义变量

由系统保留和维护的一组特殊变量

$0 : 获得当前脚本的名称

用例演示

###########

cat test.sh

#!/bin/bash

echo $0

############

[hadoop@hadoop000 script]$ sh test.sh

test.sh

---------------------------------------------------------------

$! : 后台运行的最后一个进程的PID

---------------------------------------------------------------

$? : 上一个命令退出的状态(0:成功,非0:失败)

---------------------------------------------------------------

$* : 当前shell参数集合(整体)

---------------------------------------------------------------

$$ : 表示当前进程ID号码

---------------------------------------------------------------

$# : 代表当前shell的参数个数

---------------------------------------------------------------

$@ : 当前shell参数集合(逐个读取)

4、自定义变量

变量命令格式:

-------------------------------

变量名=变量值

-------------------------------

注意:

1、等号两边不能有空格

2、变量名大小写敏感,官方建议大写

-------------------------------

变量取值:$变量名 或${变量名}

四、算数运算

常用运算符:

+ - * / %

语法格式

$((expression)) 或

$[expression] 或

expr expression

用例:

[hadoop@hadoop000 script]$ echo $((10+10))

20

[hadoop@hadoop000 script]$ echo $[10+10]

20

[hadoop@hadoop000 script]$ echo 10+10

10+10

五、比对符

数值常用比对符:

-eq 等于,equal

-------------------------------

-ne 不等于,not equal

-------------------------------

-gt 大于,greate than

-------------------------------

-ge 大于等于,greate than or equal

-------------------------------

-lt 小于,less than

-------------------------------

-le 小于等于,less than or equal

字符串常用比对符:

= 等于

-------------------------------

!= 不等于

-------------------------------

-z 长度为零,如: [ -z "$myvar" ]

-------------------------------

-n 长度为零,如: [ -z "$myvar" ]

math?formula=%5Ccolor%7Bred%7D%7B%E6%B3%A8%E6%84%8F%7D

math?formula=%5Ccolor%7Bred%7D%7B1%E3%80%81%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%AF%94%E8%BE%83%E6%97%B6%E5%8F%AF%E4%BB%A5%E7%94%A8%3D%E4%B9%9F%E5%8F%AF%E4%BB%A5%E7%94%A8%3D%3D%EF%BC%8C%E5%B7%A6%E5%8F%B3%E7%A6%BB%E6%AF%94%E8%BE%83%E7%AC%A6%E5%BF%85%E9%A1%BB%E6%9C%89%E7%A9%BA%E6%A0%BC%7D

math?formula=%5Ccolor%7Bred%7D%7B2%E3%80%81%E7%AD%89%E4%BA%8E%E2%80%9C%3D%E2%80%9D%E4%B8%8D%E4%BB%85%E5%8F%AF%E4%BB%A5%E7%94%A8%E6%9D%A5%E6%AF%94%E8%BE%83%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B9%9F%E5%8F%AF%E4%BB%A5%E6%AF%94%E8%BE%83%E6%95%B0%E5%AD%97%EF%BC%8C%E6%B3%A8%E6%84%8F%E8%A6%81%E6%9C%89%E7%A9%BA%E6%A0%BC%EF%BC%8C%E5%90%A6%E5%88%99%E5%B0%B1%E6%98%AF%E8%B5%8B%E5%80%BC%E4%BA%86%E3%80%82%7D

六、文件判断

文件判断

-e 文件名,文件存在为真

-r 文件名,文件存在且可读为真

-w 文件名,文件存在且可写为真

-x 文件名,文件存在且可执行为真

-s 文件名,文件存在且有一个字符为真

-d 文件名,文件存在且为目录为真,目录ll显示为d

-f 文件名,文件存在且为普通文件为真,普通文件类型为-

-c 文件名,文件存在且为字符串型特殊文件为真,几乎不用使用到。ll /dev/ 可查看c类型文件

-b 文件名,文件存在且为块特殊文件为真,几乎不会使用到。ll /dev/ 可查看b类型文件

七、Date的使用

1、date 获取以及零时修改当前时间

[hadoop@hadoop000 script]$ date

Sun Apr 14 23:29:29 CST 2019

[hadoop@hadoop000 script]$ date -s "2019-04-10 02:20:57"

date: cannot set date: Operation not permitted

Wed Apr 10 02:20:57 CST 2019

2、修改date的输出格式

[hadoop@hadoop000 script]$ date '+%Y%m%d%H%M%S'

20190414233226

[hadoop@hadoop000 script]$ date +"%Y-%m-%d"

2019-04-14

3、Date加减运算

[hadoop@hadoop000 script]$ date +"%Y年%m月%d日"

2019年04月14日

[hadoop@hadoop000 script]$ date '+%Y%m%d%H%M%S' -d'-1 day'

20190413234358

[hadoop@hadoop000 script]$ date +"%Y年%m月%d日" -d'-1 day'

2019年04月13日

[hadoop@hadoop000 script]$ date +"%Y年%m月%d日" -d'-1 week'

2019年04月07日

[hadoop@hadoop000 script]$ date +"%Y年%m月%d日" -d'-1 year'

2018年04月14日

八、数组

语法结构

变量名=(元素1 元素2 元素3 元素4 元素5 元素6 )

注意 默认元素间是以空格分隔

用例1:

[hadoop@hadoop000 script]$ cat test.sh

#!/bin/bash

arr=(ruoze jepson xingxing wsk shiqi)

for i in ${arr[@]}

do

echo $i

done

--------------------------------------------------------------------------------------

[hadoop@hadoop000 script]$ sh test.sh

ruoze

jepson

xingxing

wsk

shiqi

用例2:字符串间使用逗分隔,OLD_IFS,IFS这些事固定写法,分隔字符串

[hadoop@hadoop000 script]$ cat test.sh

#!/bin/bash

S="ruoze,jepson,xingxing,wsk,shiqi"

OLD_IFS="$IFS"

IFS=","

arr=($S)

IFS="OLD_IFS"

for i in ${arr[@]}

do

echo $i

--------------------------------------------------------------------------------------

[hadoop@hadoop000 script]$ sh test.sh

ruoze

jepson

xingxing

wsk

shiqi

九、控制语句

1、 for循环

语法1:

for 变量 in 集合

do

逻辑

done

语法2:

for((初始变量;结束循环调节;变量))

do

逻辑

done

语法1用例:

[hadoop@hadoop000 script]$ cat test.sh

#!/bin/bash

for i in tony jet bob

do

echo $i

echo "hello $i"

done

--------------------------------------------------------------------------------------

[hadoop@hadoop000 script]$ sh test.sh

tony

hello tony

jet

hello jet

bob

hello bob

语法2用例(注意 {1..10} 可以用seq 10取代):

[hadoop@hadoop000 script]$ cat test.sh

#!/bin/bash

for i in {1..10}

do

mkdir dir$i

done

--------------------------------------------------------------------------------------

[hadoop@hadoop000 script]$ sh test.sh

[hadoop@hadoop000 script]$ ll

total 44

drwxrwxr-x 2 hadoop hadoop 4096 Apr 15 22:32 dir1

drwxrwxr-x 2 hadoop hadoop 4096 Apr 15 22:32 dir10

drwxrwxr-x 2 hadoop hadoop 4096 Apr 15 22:32 dir2

drwxrwxr-x 2 hadoop hadoop 4096 Apr 15 22:32 dir3

drwxrwxr-x 2 hadoop hadoop 4096 Apr 15 22:32 dir4

drwxrwxr-x 2 hadoop hadoop 4096 Apr 15 22:32 dir5

drwxrwxr-x 2 hadoop hadoop 4096 Apr 15 22:32 dir6

drwxrwxr-x 2 hadoop hadoop 4096 Apr 15 22:32 dir7

drwxrwxr-x 2 hadoop hadoop 4096 Apr 15 22:32 dir8

drwxrwxr-x 2 hadoop hadoop 4096 Apr 15 22:32 dir9

2、while循环

语法1:

while [条件]

do

逻辑

done

语法2:

while read -r line

do

逻辑

done

语法1用例:

[hadoop@hadoop000 script]$ cat test.sh

#!/bin/bash

i=0

sum=0

while [ $i -lt 10 ]

do

sum=$(($sum+$i))

i=$[$i+1]

done

echo $sum

--------------------------------------------------------------------------------------

[hadoop@hadoop000 script]$ sh test.sh

45

语法2用例

math?formula=%5Ccolor%7Bred%7D%7B%5B%E8%AF%BB%E5%8F%96%E6%96%87%E4%BB%B6%E7%9A%84%E6%AF%8F%E4%B8%80%E8%A1%8C%5D%7D

[hadoop@hadoop000 script]$ cat test.sh

#!/bin/bash

while read -r line

do

echo $line

done < test.sh

--------------------------------------------------------------------------------------

[hadoop@hadoop000 script]$ sh test.sh

#!/bin/bash

while read -r line

do

echo $line

done < test.sh

语法2用例

math?formula=%5Ccolor%7Bred%7D%7B%5B%E8%AF%BB%E5%8F%96%E6%96%87%E4%BB%B6%E7%9A%84%E6%AF%8F%E4%B8%80%E8%A1%8C%EF%BC%8C%E5%B9%B6%E5%8F%96%E7%AC%AC%E4%B8%80%E5%88%97%E5%92%8Chello%E6%8B%BC%E6%8E%A5%5D%7D

[hadoop@hadoop000 script]$ cat test.sh

#!/bin/bash

while read -r line

do

echo `echo $line | awk -F: '{print $1}'`:hello

done < /etc/passwd

--------------------------------------------------------------------------------------

[hadoop@hadoop000 script]$ sh test.sh

root:hello

bin:hello

daemon:hello

adm:hello

lp:hello

sync:hello

shutdown:hello

halt:hello

mail:hello

uucp:hello

operator:hello

games:hello

gopher:hello

ftp:hello

nobody:hello

dbus:hello

usbmuxd:hello

vcsa:hello

rpc:hello

rtkit:hello

avahi-autoipd:hello

abrt:hello

rpcuser:hello

nfsnobody:hello

haldaemon:hello

gdm:hello

ntp:hello

apache:hello

saslauth:hello

postfix:hello

pulse:hello

sshd:hello

tcpdump:hello

hadoop:hello

mysql:hello

3、if条件判断

语法1

if 条件

then

逻辑

fi

语法2

if 条件

then

逻辑

else

逻辑

fi

语法3

if 条件

then

逻辑

elif

then

逻辑

else

逻辑

fi

语法1用例:

[hadoop@hadoop000 script]$ cat test.sh

#!/bin/bash

if [ 2 -eq 2 ]

then

echo yes

else

echo no

fi

----------------------------------------------------

[hadoop@hadoop000 script]$ sh test.sh

yes

4、case 条件选择

语法

case $变量名称 in

条件1)

命令序列

;;

条件2)

命令序列

;;

条件3)

命令序列

;;

*)

esac

用例:

[hadoop@hadoop000 script]$ cat test.sh

#!/bin/bash

case $1 in

1)

echo "我是"$1

;;

2)

echo "我是"$1

;;

3)

echo "我是"$1

;;

*)

echo "我是"$1

;;

esac

-------------------------------------------------

[hadoop@hadoop000 script]$ sh test.sh jack

我是jack

十、函数

语法

function name{

方法体

}

-----------------------或者-----------------------------

name(){

方法体

}

用例:

[hadoop@hadoop000 script]$ cat test.sh

#!/bin/bash

sum(){

echo $(($1+$2))

}

sum 2 7

-----------------------------------------

[hadoop@hadoop000 script]$ sh test.sh

9

十一、awk 文件扫描

语法:

awk '{pattern + action}' {filenames}

用例1:

math?formula=%5Ccolor%7Bred%7D%7B%E8%BE%93%E5%87%BA%E7%AC%AC%E4%B8%80%E8%A1%8C%2CNR%E8%A1%A8%E7%A4%BA%E8%A1%8C%E5%8F%B7%7D

[hadoop@hadoop000 script]$ cat data.log

1,a,欢

2,b,迎

3,c,您

------------------------

[hadoop@hadoop000 script]$ cat data.log| awk -F "," 'NR==1'

1,a,欢

用例2:

math?formula=%5Ccolor%7Bred%7D%7B%E8%BE%93%E5%87%BA%E7%AC%AC%E4%B8%80%E8%A1%8C%E4%B9%8B%E5%90%8E%E7%9A%84%E6%89%80%E6%9C%89%E8%A1%8C%7D

[hadoop@hadoop000 script]$ cat data.log| awk -F "," 'NR>1'

2,b,迎

3,c,您

用例3:

math?formula=%5Ccolor%7Bred%7D%7B%E8%BE%93%E5%87%BA%E7%AC%AC%E4%B8%80%E5%88%97%E5%92%8C%E7%AC%AC%E4%BA%8C%E5%88%97%7D

[hadoop@hadoop000 script]$ awk -F "," '{print $1,$2}' data.log

1 a

2 b

3 c

用例4:

math?formula=%5Ccolor%7Bred%7D%7B%E8%BE%93%E5%87%BA%E7%AC%AC2%E5%88%97%E7%AC%AC%E4%BA%8C%E8%A1%8C%7D

awk -F "," 'NR==2{print $2}' data.log

十二、sed 流编辑器(替换)

语法:

sed [options] 'command' file(s)

用例1:

math?formula=%5Ccolor%7Bred%7D%7B1%E6%9B%BF%E6%8D%A2%E6%88%90a%7D

[hadoop@hadoop000 script]$ cat data.log

1,a,欢

2,b,迎

3,c,您

------------------------------

[hadoop@hadoop000 script]$ sed -i 's/1/a/' data.log

[hadoop@hadoop000 script]$ cat data.log

a,a,欢

2,b,迎

3,c,您

math?formula=%5Ccolor%7Bblue%7D%7B%E6%B3%A8%20%3Ased%20-r%20's%2F1%2Fa%2F'%20data.log%20%E4%B8%8D%E4%BC%9A%E7%9C%9F%E6%AD%A3%E5%BE%97%E5%88%B0%E4%BF%AE%E6%94%B9%E6%96%87%E4%BB%B6%EF%BC%8C%E4%BD%86%E4%BC%9A%E8%BE%93%E5%87%BA%E6%9B%BF%E6%8D%A2%E5%90%8E%E7%9A%84%E5%86%85%E5%AE%B9%E5%88%B0%E6%8E%A7%E5%88%B6%E5%8F%B0%EF%BC%8C%E6%89%80%E4%BB%A5%E5%8F%AF%E4%BB%A5%20-r%20%E6%B5%8B%E8%AF%95%7D

用例2:

math?formula=%5Ccolor%7Bred%7D%7B%E5%85%A8%E6%96%87%E6%9C%ACa%E6%9B%BF%E6%8D%A2%E6%88%90aa%7D

math?formula=%5Ccolor%7Bblue%7D%7B-g%E4%B8%BA%E5%85%A8%E5%B1%80%E5%8F%82%E6%95%B0%7D

[hadoop@hadoop000 script]$ cat data.log

a,a,欢

2,b,迎

3,c,您

[hadoop@hadoop000 script]$ sed -i 's/a/aa/g' data.log

[hadoop@hadoop000 script]$ cat data.log

aa,aa,欢

2,b,迎

3,c,您

用例3:

math?formula=%5Ccolor%7Bred%7D%7B%E5%9C%A8%E6%AF%8F%E8%A1%8C%E8%A1%8C%E9%A6%96%E6%B7%BB%E5%8A%A0%20--%20%E5%AD%97%E7%AC%A6%E4%B8%B2%7D

[hadoop@hadoop000 script]$ cat data.log

aa,aa,欢

2,b,迎

3,c,您

[hadoop@hadoop000 script]$ sed -i 's/^/--&/g' data.log

[hadoop@hadoop000 script]$ cat data.log

--aa,aa,欢

--2,b,迎

--3,c,您

用例4:

math?formula=%5Ccolor%7Bred%7D%7B%E5%9C%A8%E6%AF%8F%E8%A1%8C%E8%A1%8C%E5%B0%BE%E6%B7%BB%E5%8A%A0%20%24%24%20%E5%AD%97%E7%AC%A6%E4%B8%B2%7D

[hadoop@hadoop000 script]$ cat data.log

--aa,aa,欢

--2,b,迎

--3,c,您

[hadoop@hadoop000 script]$ sed -i 's/$/&$$/g' data.log

[hadoop@hadoop000 script]$ cat data.log

--aa,aa,欢$$

--2,b,迎$$

--3,c,您$$

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值