shell bash常用的相关命令快捷建----字符串分割, 光标移到行首、行尾等
1_ctrl键组合
ctrl+a:光标移到行首。ctrl+e:光标移到行尾。
ctrl+b:光标左移一个字母, 向行首移动一个字符
ctrl+f: 光标右移,向行尾移动一个字符
ctrl+d:退出当前 Shell,从Shell提示中注销并关闭,使用该快捷键就不必键入exit
ctrl+h:删除光标前一个字符,同 backspace 键相同。
ctrl+l:清屏,相当于clear。
ctrl+r:搜索之前打过的命令。会有一个提示,根据你输入的关键字进行搜索bash的history
ctrl+u: 清除光标前至行首间的所有内容。
ctrl+w: 移除光标前的一个单词
ctrl+t: 交换光标位置前的两个字符(包括光标所在的当前位置)
ctrl+y: 粘贴或者恢复上次的删除
ctrl+d: 删除光标所在字母;注意和backspace以及ctrl+h的区别,这2个是删除光标前的字符
ctrl+z : 把当前进程转到后台运行,使用’ fg ‘命令恢复。比如top -d1 然后ctrl+z ,到后台,然后fg,重新恢复
2_esc组合
esc+f: 往右跳一个词
esc+b: 往左跳一个词
esc+t: 交换光标位置前的两个单词。
3_查看系统性能
iostat, vmstat 用来查看系统性能。
4_ Shell 脚本
$0为程序名称,$1为第一个参数,$2为第二个参数,依次类推,直到$9为第九个参数。
特殊变量$#测试执行脚本时包含的命令行参数个数。
变量$*将命令行中提供的所有参数作为一个单词处理,它将多个参数看成 一个参数。
变量$@将命令行中提供的所有参数作为同一个字符串中的多个单词处理。
$0为程序名称,$1为第一个参数,$2为第二个参数,依次类推,直到$9为第九个参数。
特殊变量$#测试执行脚本时包含的命令行参数个数。
变量$*将命令行中提供的所有参数作为一个单词处理,它将多个参数看成 一个参数。
变量$@将命令行中提供的所有参数作为同一个字符串中的多个单词处理。
shift命令能够改变命令行参数的相对位置。默 认将每个参数变量左移一个位置
使用-t指定一个计时器,计时数满还未输入,read返回一个非0的退出状态。
使用-n指定输入的字符个数,输入达到预定数目时,就自动结束输入
使用-s使输入不显示在终端(例如输入密码)
使用-t指定一个计时器,计时数满还未输入,read返回一个非0的退出状态。
使用-n指定输入的字符个数,输入达到预定数目时,就自动结束输入
使用-s使输入不显示在终端(例如输入密码)
5_Shell脚本实现简单分割字符串
在shell 中以,split 字符串如下,str="aaa,bbb,ccc,ddd",可以采用如下两种形式
[xxx@haiyz ~]$ str="aaa,bbb,ccc,ddd"
[xxx@haiyz ~]$ echo $str
aaa,bbb,ccc,ddd
[xxx@haiyz ~]$ echo $str | awk -F , '{print $1}'
aaa
[xxx@haiyz ~]$ echo $str | awk -F , '{print $3}'
ccc
[xxx@haiyz ~]$ echo $str | awk -F , '{print $0}'
aaa,bbb,ccc,ddd
[xxx@haiyz ~]$ echo $str | cut -d "," -f 1
aaa
[xxx@haiyz ~]$ echo $str | cut -d "," -f 2
bbb
[xxx@haiyz ~]$ echo $str | cut -d "," -f 3
ccc
都能达到目的,但是由于文件很大,有很多行,上述方式需要开辟管道,会启动新进程,效率很低下。
再举一个例子
[xxx@haiyz ~]$ info='abcd;efgh'
[xxx@haiyz ~]$ fstr=`echo $info | cut -d \; -f 1`
[xxx@haiyz ~]$ sstr=`echo $info | cut -d \; -f 2`
[xxx@haiyz ~]$ echo $info
abcd;efgh
[xxx@haiyz ~]$ echo $fstr
abcd
[xxx@haiyz ~]$ echo $sstr
efgh
这里主要是用了cut工具的-d和-f参数:
-d:指定字段的分隔符,默认的字段分隔符为“TAB”
-f:显示指定字段的内容;
关于cut工具其他参数可参考这里:cut命令