title | date | draft |
---|---|---|
Shell Notes |
2019-10-16 16:41:23 +0800 |
true |
. ~/.zshrc
\cmd
"cmd"
path/cmd
type cmd
cmd1;cmd2;cmd3
sleep 10
结束后声音提醒
echo -e "\a"
短命令可可连写 ,顺序一定情况下可任意
ls -al
ls -a -l
彩蛋,1752 年 9 月
cal 9 1752
命令后面跟的引号不同的不同结果
echo echo $PATH # 当作普通字符串
echo 'echo $PATH' #什么都不识别
echo "echo $PATH" #识别变量
echo `echo $PATH` #识别命令,变量
#同样的
ls -l /bin
ls -l `echo $PATH`
看文档十六进制
hexdump -C filename
进制转换
echo "ibase=16;obase=2;6C49" | bc # 字母大写
字符集转换工具
iconv -l #查看字符集列表
帮助
man ascill
man ls
man mkdir
echo {} 排列组合
echo -e file{a,b,c}.{txt,log}"\n"
echo {1..100}
echo {1..10}
echo {a..z}
Tab 键补全
locate[Tab]
history 查看历史记录
history
!编号 执行指定命令
cat f1 f2
vi !$ # vi f2 最后一个参数
vi !* # vi f1 f2 所有参数
^str1 #删除上一条命令中的str1
^str1^str2 #将1换成2
!:gs/str/str1 #str 全替换成str1
[esc]松开 . # 上个命令最后一个参数
history -c #清除内存中的历史
google技巧
xxx filetype:pdf
xxx site:redhat.com/docs
执行文件
bash xx.sh # 不需要执行权限
cat xx.sh | bash #也能运行
shebang机制
#!/bin/bin sharp bang
三剑客
cat 默认全显示,不分页
cat -n 加行号
-sn 相邻空行压缩为一个
-n 加所有空行
-E 显示换行符,看空格
-A 看tab等等
cat f1 f2 纵向合并
tac 反向显示/行
rev 反向 /列
More 分页查看
用管道分页显示
ll /etc | less
less 分页 到底不退出来/man 的分页器
head 前十行
head -number filename #默认
head -cNumber 前几个字节
tail 后十行 常用看日志
tail -n 3
tail -f # 跟踪 #删掉之后不再跟踪
tail -F # 删除 新建 都能跟踪
tailf 文件增长时才访问文件,省资源
Cut 取列
cut -d: -f1,2,3-5
paste 纵向 合并
paste -s 旋转90度
wc 文本统计
seq 顺序输出
seq 1 10 > filename
sort
sort -t: -k1 fname
-u #删除重复
uniq
uniq -c 统计重复几次
-d 重复的行
-u 都不一样的地方
diff
diff -u f1 f2
patch
patch -b f1
grep/sed/awk/
grep 过滤数据 ,cut取列,grep取行
grep -v 不包含
grep -i 忽略大小写
-n 显示行号
-c 统计
-q 静默
-Ax 后续的几行
-Bx 前面的三行
-Cx 前面三行后面三行
-E 或者
-w 必须是个单词
-f 用文件匹配 过滤
-o 逐行输出
通配符 glob 文件名中的字符
*
?
[chen] c h e n 某一个字符
[^chen] 除了 c h e n
[0-9]数字
[[:digit:]] # 单个数字 lower upper ***
正则表达式
. 单个字符
[] 一定范围内单个字符 [wang] [0-9] [a-z] [a-zA-Z]
[^] 出了什么什么
[:alnum:] 数字字母
[:alpha:] 大小写字母
[:lower:]
[:upper:]
[:blank:] 空格和制表符 空白字符
[:space:] 水平和垂直的空白字符 比blank范围更大
[:cntrl:] 不可打印的控制符 退格 删除 警铃
[:digit:] 十进制数字
[:xdigit:] 十六进制数字
[:graph:] 可打印的非空白字符
[:punct:] 标点符号
a* a字符出现次数不确定
.* 任意长度任意字符
\? 前面字符0或1次
\+ 出现一次以上
\{n,m\} \{n\} \{,m\} \{n,\} 匹配次数
#位置锚定
^ 中号外面 表示行首 不用转译???
$ 表示行尾
\<root\> 数字,下划线 可以包含在单词里
\broot\b
分组
\(abc\)\{n\}
\(abc\).*\1 前面第一个分组 表示的是结果,不是模式本身
或
^\(a\|b\) 或表达式
vim
vim +10 f1 到行
vim +/^ft f1
vim -b 二进制
vim -d f1 f2 检查不同
vim -m 只读打开
vim -e 模式打开
:r /etc/f1 插入进来
:w f3 保存,另存为
:r!cmd 的输出
H 页首
M 页中
L 页尾
zt 上面 移动当前行
zz 中间
zb 下面
^行首非空 $行尾 0 force第一个
x 剪切
p 粘贴
~ 转换大小写
J 删除这一行换行符
r 替换
R替换模式
dG 删除到最后
c 修改完进入插入模式
di" 在双引号中,删除内容
.,$d . 当前行
/^b/,/^f/d模式删除
/标黄去掉???
%s/ok/no/ %全文
--g全局
--gc 每次替换提醒
分隔符可以用# @ 等
&代表搜索的内容
U 这一行的初始状态
-b 二进制
%!xxd