Shell 和 Bash 很有趣,可以让很多事情变得更好高效,这里留下一个索引,不时回顾。
资源
Bash代码规范
Bash脚本框架
包管理器
这里可以找到有意思命令脚本
有趣的脚本
将snakeCase 转换为UpperCamelCase
1
2
|
$ echo "this_is_the_string" | gsed -r 's/(^|_)([a-z])/\U\2/g'
ThisIsTheString
|
将UpperCamelCase 转换为 UpperCamelCase
1
2
|
$ echo 'ThisIsTheString' | gsed -r 's/([A-Z])/_\l\1/g' | gsed -r 's/^_//'
this_is_the_string
|
批量将文件从UpperCamelCase 转换为 UpperCamelCase
1
2
3
|
for file in `ls *.go`; do \
mv "$file" "$(echo $file | gsed -r 's/([A-Z])/_\l\1/g' | gsed -r 's/^_//')"; \
done
|
批量格式化当前目录下的 go 文件
1
2
3
|
for file in `ls *.go`; do \
gofmt -w $file; \
done
|
读取文件中的每一行,以它作为文件名新建文件
如有一个文件 file
, 每一行有以空格分割的2列,现以第一列作为文件名(文件类型是 log
),第二列为文件内容, file
文件内容如下:
1
2
3
|
one 1
two 2
three 3
|
可以使用:
1
|
gawk '{print $2 > $1".log"}' file
|
以易读的方式显示当前$PATH
Output:
1
2
3
4
5
6
7
8
|
/usr/local/bin
/System/Cryptexes/App/usr/bin
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/go/bin
/Library/Apple/usr/bin |
对输出进行排序:
1
|
$ echo "${PATH//:/\n}" | sort
|
或者使用tr
:
1
|
$ echo "$PATH" | tr ":" "\n" | nl
|
使用awk
1
2
|
$ echo $PATH | awk -F: '{for(i=1;i<=NF;i++)print $i}'
$ awk 'BEGIN{RS=":"} {print $0}' <<<"$PATH"
|
remove duplicates in $PATH zsh
nmap验证MongoDB未授权访问漏洞
1
|
nmap -p 27017 --script mongodb-info <ip>
|
Unix/Linux Command Reference