常用shell

vim

设置:
:set nu显示行号
:set nonu取消显示行号
:set ic不区分大小写
:set noic恢复大小写区分

光标:
gg:移至文件首行
ngg:移至文件第n行
G:移至文件最后行
0:光标移至当前行首
$:光标移至当前行尾
H:光标移至屏幕顶行
M:光标移至屏幕中间行
L:光标移至屏幕最后行

屏幕翻滚类:
ctrl+d:向下翻半屏
ctrl+u:向上翻半屏
ctrl+f:向下翻一屏
ctrl+b:向上翻一屏

搜索命令:
/pattern:从光标开始处向文件尾搜索pattern
?pattern:从光标开始处向文件首搜索pattern
n:在同一方向重复上一次搜索命令
N:在反方向上重复上一次搜索命令

替换命令:
:s/txt1/txt2/ 替换当前行第一个txt1为txt2
:s/txt1/txt2/g 替换当前行所有txt1为txt2
:n,$s/txt1/txt2/ 第n行开始到最后一行第一行的第一个txt1为txt2
:n,$s/txt1/txt2/ 第n行开始到最后一行所有的txt1为txt2
(n为数字,若n为.,表示从当前行开始到最后一行)
:%s/txt1/txt2/ 替换每一行的第一个txt1为txt2
:g/txt1/s//txt2/ 同上
:%s/txt1/txt2/g 替换第一行中所有为txt1为txt2
:g/txt1/s//txt2/g 同上
(如果替换文件中包含/,可用#/+来替换)

正则表达式:
^匹配一行的开始
$匹配一行的结束
如删除空白行:%s/^\n\{1}
(想到UE里的^p表示回车换行,^t表示tab)



split
当处理一个大文件时,如果想要拆分为多个文件并行处理,那么split就很好用。
split [-bl] file PRIFIX
-b:后接要拆分的文件大小,可加单位,如b/k/m等
-l:按行数进行拆分
范例:
ls -al / | split -l 10 - lsroot
split -b 300k /etc/termcap termcap



awk
如果想要从一个文件中抽取我们关心的数据,那么awk还是很方便的,下面直接用实例说明:
分隔符为:,第三栏大于10的显示:
more /etc/passwd | awk 'BEGIN {FS=":"} $3<10 {print $1 "\t" $3}'
分隔符为:,从第二行开始,第三栏大于10的显示:
more /etc/passwd | awk 'BEGIN {FS=":"} NR>1 && $3<10 {print $1 "\t" $3}'
分隔符为:,第1栏为root或bin的显示:
more /etc/passwd | awk 'BEGIN {FS=":"} $1=="root" || $1=="bin"{print $1 "\t" $3}'
功能同上:
more /etc/passwd | awk 'BEGIN {FS=":"} $1=="root"{print $1 "\t" $3} $1=="bin"{print $1 "\t" $3}'
展现第二栏为18或22的行:
more filename | awk 'BEGIN {FS=","} $2=="18"||$2=="22" {print $0}'



grep
搜索工具,可以使用正则表达式进行搜索
grep [options]
[options]主要参数:
-c:只输出匹配行的计数
-i:不区分大小写
-h:查询多文件时不显示文件名
-l:查询多文件时只输出包含匹配字符的文件名
-n:显示匹配行及行号
-s:不显示不存在或无配置文件的错误信息
-v:显示不包含匹配文本的所有行





type
which
用于方便查找命令来源





注意点:
1、命令参数,如遇到&|等,加到引号引用字符串,否则出问题了也不知道
  如 wget “http://xxx?a=b&c=d”

你可能感兴趣的:(shell)