Shell

Linux命令(2)

2016-05-13  本文已影响59人  KevinCool

1. (( 双重尖括号命令

(( ))双尖括号和[[ ]]双方括号都是bash shell的两项新的扩展,提供了可以在if-then语句中使用的高级特性:

用于数学表达式的双尖括号
用于高级字符串处理功能的双方括号

双尖括号允许将高级数学表达式放入比较中,格式:(( expression ))

比如可以这样使用:

val1=10
if (( $val1 ** 2 > 90 ))
then
        (( val2 = $val1 ** 2 ))
        echo "the square of $val1 is $val2"
fi```

另外也不需要将双尖括号内的表达式大于号转义,乘号也不许要转义

####2. [[ 双方括号

该命令提供了针对字符串比较的高级特性,格式:`[[ expression ]] `
可以使用标准字符串进行比较,还可以使用模式匹配,即使用正则表达式来匹配字符串的值。

if [[ $USER == r* ]]
then
echo "Hello $USER"
else
echo "Sorry. I do not know you"
fi```

另外一个例子:

[[ $step != 1 && $step != 2 ]] && {
        echo "Usage: ./example.sh 1 or 2"
        exit 1
}```

####3. tee双重重定向

tee 会将数据流送与文件与屏幕,输出到屏幕的是stdout,可以让下一个命令继续处理。
`tee -a file `以累加的方式写入file
一个例子:

echo "clean log files" | tee -a $out_file```

4. cut 选取命令

cut 可以将一段信息的某一段切出来,处理的信息是以行为单位的。
cut -c表示以字符为分隔进行cut
cut -d "分隔字符" -f fields ,-f后面接需要第几段,可以是一个范围,例子如下:

grep -m 1 dbg $f | cut -d '"' -f 2 | cut -d ',' -f 4- ```
grep -m 1表示的是只匹配一次

####5. tr 命令
用于删除一段信息中的文字,或者进行文字信息的替换。
`tr -[ds] SET1...`
-d 表示删除信息中的这个SET1字符串
-s 表示替换掉重复的字符

例子:

首先是文字的替换

last | tr '[a-z]' '[A-Z]'

删除

cat /etc/passwd | tr -d ':'
cat $f | tr -d '\n'```

6. sed 工具

分析关键字的使用,统计。其本身也是一个管道命令,可以分析standard input,sed 可以进行数据替换,删除,新增,选取特定行的功能。

参数:

-e 直接在命令行模式上进行sed动作编辑
-f 直接将sed动作写在文件中,-f filename可以执行filename内的动作
-i 直接修改读取的文件内容,不是由屏幕输出
-n 只有sed处理的那一行才会在屏幕输出

动作:

n1,n2 function 其中n1 n2代表行
function:
a 新增
c 替换
d 删除
i 插入
s 替换 sed -e s/"^-p"//g
p 打印 p通常会与sed -n一起运行

例子:

#删除第2~5行
nl /ect/passwd | sed '2,5d' 
#替换为空字符串
cat /etc/passwd | sed -e s/"^-p"//g
#仅列出文件的第5-7行
nl /ect/passwd | sed -n '5.7p'```

####7. awk 工具

这个可以参考之前的gawk文章:http://www.jianshu.com/p/bddcfee1e607

这里只强调一下,处理规则默认是按行处理,由内建变量ORS决定,默认是换行符,然后每一行由内建变量FS(表示字段间的间隔符),默认为空格,分成若干个栏位,其中$0表示整行,$1表示第一个栏位,然后以此类推。NF表示栏位(字段个数)

####8. sleep 延迟指定时间

sleep命令常用于在Linux shell脚本中延迟时间。

sleep 5s
sleep 5m
sleep 5d
sleep 5h```

9. basename 命令

basename返回一个字符串参数的基本文件名称。
basename string Suffix
basename 命令读取 String 参数,删除以 /(斜杠) 结尾的前缀以及任何指定的 Suffix 参数,并将剩余的基本文件名称写至标准输出。
例子:

reqid=$(basename $f .$ubx)
#就是将一个文件的前缀还有后缀去掉,只留下基本的文件名```

####10. echo 命令
有几个特殊的用法得提一下,因为记不起来。。
>-n 表示不换行输出,下一个输出在同一行上
>-e 处理特殊字符

例子:

输出换行符

echo -e "old:$f\nnew: $nf\n"
echo -n "pls enter your password: "```

11. ls命令

有一个参数是ls -1
表示将内容以一列进行显示。

上一篇下一篇

猜你喜欢

热点阅读