正则表达
基本表达,扩展正则表达(-E)
元字符,
. grep 'r..t' /etc/passwd
[] [abc]root至少一个 [^abc]
* 次数匹配 a*root,abroot不,aaroot,aroot,root
.* 任意长度任意字符
\(n\) a\(2\)root
\(m,n\) 范围\(0,2\)root
\(n,\) 至少N次
globbing,文件名通配
锚定:
^ ^root 行首
$ root$ 行尾
\< \<root 词首
\> root\> 词尾
\b root\b \broot \broot\b
\(...\) love your lover \(love\).*\1r
grep --color=auto 'r..t' /etc/passwd > /dev/null
cut
-d 分隔符
-f 选取的段
* 0<=
? 0,1 a?root broot
+ 1<= a+root
| like your lover,love your lover l(ik)|(ov)e your lover
wc 统计行,字,字节
sort,排序
-o /tmp/passwd.sort 保存到文件中
-r 逆序
-n 数值排序
-f 忽略大小写
-u 去掉重复行
-t :-k 3
uniq 去除重复的行
-c 显示重复次数
-u 不显示重复行
-d 显示重复行
条件判断:0真 1假
test expression # test 1 -gt 2
[ expression ] # [ 1 -gt 2 ]
[[ expression ]] # [[ 1 -gt 2 ]]
-a 与
-o 或
! 非
[ $B -gt $A -a $B -gt $C ]
短路操作符:
&&
[ $B -gt $A ] && [ $B -gt $C ]
||
[ $B -gt $A ] || [ $B -gt $C ]
条件测试:
整数测试:
-gt >
-lt <
-ge >=
-le <=
-eq =
-ne 不等于[ $A -ne $B ]
字符串测试:
=
!=
>
<
-z 字符串长度是否为零
-n 字符串长度是否为空
文件测试:
-e FILE 存在
-f FILE 文件
-d FILE 目录
-r FILE 可读
-w FILE 可写
-x FILE 可执行
-L/-h FILE 测试一个文件是否符号链接文件
-O FILE 测试此文件属主是否是所属
-G FILE 测试此文件属组是否是所属
diff/patch 打补丁
-u
diff vimrc vimrc2 > vimrc.patch
patch vimrc < vimrc.patch
patch -R vimrc < vimrc.patch 降级
sed非交互式编辑器,行编辑器
10,$s/root/ROOT/g
/root/,/student/s/root/ROOT/
s/ftp:\/\/instructor.example.com\/pub/file:\/\/\/media\/cdrom/g
s&ftp:\/\/instructor.example.com\/pub&file:\/\/\/media\/cdrom&g
s/rcct/RccT/
s/root/rootable/
s/r..t/&able/
sed -i可以对文件内容直接编辑
-e 多项
-f 从文件sed.txt中读取条件
sed -f sed.txt server.repo
1,$ 第一行到最后一行
p 显示
d 删除
s/pattern/substitude/g, i 忽略大小写
模式化的编辑器:
命令模式,输入模式,末行模式
vim +n
vim +10 file
vim +/redhat file
打开方式:
vim a.txt
退出:
:wq
:q
:w!
:q!
:w /path/to/your/file 另存为
shift +ZZ
行内移动:
^,非空白行首
0,绝对行首
$,绝对行尾
单词为单位:
w:下个词首
b:当前/上个词首
e:词尾
行间:
G:最后一行
nG:n行
末行模式:
:n
句:)(
段落:}{
命令-->输入:
i:insert
I: 行首
a:append
A: 行尾
o:光标下新行
O:光标上新行
c:删除进入输入模式
C:删除行进入输入
u:撤销上步
替换:
r:替换单字符
R:替换模式
删除:
x:光标后
X:光标前
d:删除 dd nd
:%d删除全文
:.,$-1d
复制内容:
y :10,100y
p:下方 P:上方
移动:
d
可视模式:
v:
V: 对角线矩形块
查询:
/pattern 搜索匹配字符串
?pattern 尾部
n N 上一个 下一个
查找并替换:
:%s/addr1/addr2/gi 同sed
撤销操作:
u 最近一次
U 最近一次所有操作
Ctrl+r 撤销撤销
vim a b c d
:next 切换下个
:prev 切换前个
:first 切换第一个
:last 切换最后个
vim分割窗口
-o水平
-O垂直
如何定制vim显示特征:
vim .vimrc
set nu
autoindent:自动缩进 set ai
ignorecase:忽略大小写 set ic
showmatch:括号
shell算术运算:
$((expression))
$[expression]
let
+,-,\*,/,%,++,--,+=
A=2
B=3
let A=$A+$B
条件分枝,三类:
if [];then
..
..
..
fi
if [];then
..
..
else
..
..
fi
if [];then
..
..
elif [];then
..
elif [];then
..
else
..
fi
嵌套
循环分枝
while
for
until
for VAR in list;do
..
..
done
let SUM=0
for I in 1 2 3 4 5;do
let SUM+=$I
done
echo $SUM
while [];do
..
done
let I=1
let SUM=0
while [ $I -le 100 ];do
let SUM+=$I
let I++
done
while read LINE;do
...
done < /etc/issue
cat /etc/issue | while read LINE;do
...
done
until [];do
...
done
面向对象:
顺序
选择
循环
给网卡eth0配置地址:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=dhcp,bootp,static
IPADDR=
NETMASK=
here document: <<
cat >> FILE << EOF
This is the first line.
the second line.
EOF
function:函数
代码块
bash:
格式一:
function name{
}
格式二:
name () {
}