shebang
e.g.
1 |
以 #!
开头,告知OS执行的程序
Conditional
1 | if xxxx; |
Tip: 注意 [ ] 内的空格
字符串相等
1
2
3
4if [[ "neko" = "$1" ]];
then
echo "$2"
fi文件存在
1
2
3
4if [[ ! -f "FILEPATH" ]];
then
echo "Meow!"
fi数字相等
1
2
3
4if [[ $# -eq 2 ]];
then
echo "Meow!"
fi表达式
1
2
3
4if ! grep "neko" "$FILEPATH";
then
echo "Big neko!"
fi
loop
loop one line with spaces:
1
2
3
4for i in "$@";
do
echo "$i"
doneloop text with lines:
1
2
3
4while IFS= read -r i;
do
echo "$i"
done <<< "$@"
Arguments
取所有的 arguments
1
$@
遍历所有的 arguments
1
2
3
4for i in "$@";
do
echo "$i"
done取知道位置的 argument (第一个即为
$1
)1
$1 $2
取 arguments 数量
1
$#
Variable
从一个表达式 declare
1
NAME=$(grep "neko" "$FILEPATH")
取 variable 使用
1
grep "${NEKO}meow" "$FILEPATH"
Calculate
decimal
1
echo "2" | awk '{print $1/5}'
Tip: 如果需要管道前的结果,awk 后一定要是单引号,才能用 $1 取到
Align
使用
printf
(just like C++)1
echo | awk "{print 2/10*100}" | xargs printf "%8.2f"
Tip:
xargs take standard input
“%8.2f” 意味着 保留两位小数,右对齐,前面保留8字符,上面的结果就是 6空格+20.00
String Process
sed
-E 开启正则扩展
-i 修改原文件
替换
1
sed -E -i "s/neko/catus/" $FILEPATH
before:
I am a neko.
after:
I am a catus.
删除
1
sed -E -i "/dog/d" $FILEPATH
before:
Sweet dog
after: [此行已消失]
cut
取固定列
1
2
3cut -d" " -f1 $DATA
# cut $DATA with space as a deliminator
# take the first feildgrep (猫在 Windows 查找具体的文本常用 ripgrep,比起 grep 快不少喵,强烈安利)
查找
-E 开启正则扩展
1
grep "neko" "$FILEPATH"
Others
wc
-l 取行数
-w 词语数
tail 和 head 这种常用的不行的就不用讲了8(
重定向:
>>
是补充在文件最后,>
是重写sort 看名字就知道8
uniq 也是看名字就知道8
link
一般用软链接就够了喵
1 | ln -s target source |
猫学了3天写到想自鲨才弄成就是说,幸好咱正则也不生疏就是说(
Author: Alendia
Permalink: https://alendia.dev/2022/03/24/bash-quick-reference/
文章默认使用 CC BY-NC-SA 4.0 协议进行许可,使用时请注意遵守协议。
Comments