常用shell帮助
```shell
比较版本号:
printf '%s\n%s\n' "v1.24.0" "v1.24.1" | sort -V -C && echo "b大于等于a" || echo "b小于等于a"
```

```
忽略错误
||:
例如  `cmds ||:`
```

```
${}取值

假设我们定义了一个变量为:
file=/dir1/dir2/dir3/my.file.txt

可以用${ }分别替换得到不同的值:
${file#*/}:删掉第一个/ 及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##*/}:删掉最后一个/  及其左边的字符串:my.file.txt
${file#*.}:删掉第一个.  及其左边的字符串:file.txt
${file##*.}:删掉最后一个.  及其左边的字符串:txt
${file%/*}:删掉最后一个 /  及其右边的字符串:/dir1/dir2/dir3
${file%%/*}:删掉第一个/  及其右边的字符串:(空值)
${file%.*}:删掉最后一个 .  及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*}:删掉第一个 .   及其右边的字符串:/dir1/dir2/dir3/my

记忆的方法为:
# 是 去掉左边(键盘上#在 $ 的左边)
%是去掉右边(键盘上% 在$ 的右边)
单一符号是最小匹配;两个符号是最大匹配
${file:0:5}:提取最左边的5 个字节:/dir1
${file:5:5}:提取第5 个字节右边的连续5个字节:/dir2

也可以对变量值里的字符串作替换:
${file/dir/path}:将第一个dir 替换为path:/path1/dir2/dir3/my.file.txt
${file//dir/path}:将全部dir 替换为path:/path1/path2/path3/my.file.txt

利用${ } 还可针对不同的变数状态赋值(沒设定、空值、非空值): 
${file-my.file.txt} :假如$file 沒有设定,則使用my.file.txt 作传回值。(空值及非空值時不作处理) 
${file:-my.file.txt} :假如$file 沒有設定或為空值,則使用my.file.txt 作傳回值。(非空值時不作处理)
${file+my.file.txt} :假如$file 設為空值或非空值,均使用my.file.txt 作傳回值。(沒設定時不作处理)
${file:+my.file.txt} :若$file 為非空值,則使用my.file.txt 作傳回值。(沒設定及空值時不作处理)
${file=my.file.txt} :若$file 沒設定,則使用my.file.txt 作傳回值,同時將$file 賦值為my.file.txt 。(空值及非空值時不作处理)
${file:=my.file.txt} :若$file 沒設定或為空值,則使用my.file.txt 作傳回值,同時將$file 賦值為my.file.txt 。(非空值時不作处理)
${file?my.file.txt} :若$file 沒設定,則將my.file.txt 輸出至STDERR。(空值及非空值時不作处理)


${file:?my.file.txt} :若$file 没设定或为空值,则将my.file.txt 输出至STDERR。(非空值時不作处理)

${#var} 可计算出变量值的长度:


${#file} 可得到27 ,因为/dir1/dir2/dir3/my.file.txt 是27个字节
```



##### grep:

```shell
grep [选项] "搜索内容" 文件名

选项:

-A 数字:列出符合条件的行,并列出后续的 n 行;

-B 数字:列出符合条件的行,并列出前面的 n 行;

-c:统计找到的符合条件的字符串的次数;

-i:忽略大小写;

-n:输出行号;

-v:反向査找;
grep -niro 'image' Cluster*
```

##### sed:

```shell
https://www.fity.cn/post/338.html
删除:d命令
#sed '2d' example-----删除example文件的第二行。
#sed '2,$d' example-----删除example文件的第二行到末尾所有行。
#sed '$d' example-----删除example文件的最后一行。
#sed '/test/'d example-----删除example文件所有包含test的行。
#sed d filename-----sed删除文件filename中的所有行
#sed 2,5d filename-----sed删除文件filename中的2至5行
#sed /abc/d filename-----sed删除文件filename中包含字符串abc的所有行

替换:s命令
#sed 's/test/mytest/g' example-----在整行范围内把test替换为mytest。如果没有g标记,则只有每行第一个匹配的test被替换成mytest。
#sed -n 's/^test/mytest/p' example-----(-n)选项和p标志一起使用表示只打印那些发生替换的行。也就是说,如果某一行开头的test被替换成mytest,就打印它。
#sed 's/^192.168.0.1/&localhost/' example-----&符号表示替换换字符串中被找到的部份。所有以192.168.0.1开头的行都会被替换成它自已加localhost,变成192.168.0.1localhost。
#sed -n 's/\(love\)able/\1rs/p' example-----love被标记为1,所有loveable会被替换成lovers,而且替换的行会被打印出来。
#sed 's#10#100#g' example-----不论什么字符,紧跟着s命令的都被认为是新的分隔符,所以,“#”在这里是分隔符,代替了默认的“/”分隔符。表示把所有10替换成100。
```

##### seq

```shell
 seq [选项]... 尾数   seq 5  输出: 1 2 3 4 5
 seq [选项]... 首数 尾数 seq 1 5 输出: 1 2 3 4 5
 seq [选项]... 首数 增量 尾数 seq 1 3 11 输出: 1 4 7 10
```

```shell
 -f, --format=格式   使用printf 样式的浮点格式
 $(seq -f "%3g" 9 11)  输出(%3代表三位不足地方空格表示,%03代表三位不足地方0表示):
  9
 10
 11 
 
 -s, --separator=字符串    使用指定字符串分隔数字(默认使用:\n)
 -w, --equal-width   在列前添加0 使得宽度相同
   --help      显示此帮助信息并退出
   --version     显示版本信息并退出
   

```

##### 端口占用

```shell
netstat -tunlp |grep 80
lsof -i:80

while read line
do
  echo $line
done  

awd -F ":" {print $NF}

	// GetNetworkInterface "ip addr |grep %s | awk -F \" *\" '{print $NF}'"
	GetNetworkInterface = "ifconfig |grep %s -1 |head -n1|cut -d\":\" -f1"

pstree 获取进程的子进程
```

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇