1 、bash的基本特性
bash的特性是不是都在.bash里面呢?
通过alias 显示当前shell中所有的命令别名
设置别名 直接alias 名称=名称就行
此设置的别名只在此shell中管用,如果想全局生效的话 需要修改配置文件 本用户的配置文件在 ~bashrc
全局用户的在/etc/bashrc里面
修改后不会立即生效的 需要重新进去shell或者是 ./etc/shellrc/
2 、unalias撤销别名
unalias 别名
unalias -a 会撤销所有的别名
3 如果定义了一个命令的别名后 使用COMMAND(定义的别名)
二 glob
bash中用于实现文件名“通配”
通配符有 ? [ ] 三个
代表任意任何个字符
?代表任意一个字符
3 [ ]
匹配指定范围内的任意字符 中括号表示一个范围内的字符
这些以前都学过 但是都忘了 一定要做一次LFS
[[email protected] glob]# touch aVb
[[email protected] glob]# ls a[a-z]b
aab abb aVb
[[email protected] glob]# ls a[A-Z]b
abb aVb
[[email protected] glob]#
[0-9]
[a-z]:不区分大小写 所有的字母都匹配 所以难道就没法只匹配小写字母吗?
[A-Z]:只会匹配大写字母,
如果:只要特殊字符的?怎样配匹配呢?
有一个取反的选项^
有一个专用字符表示法:
man glob 我这个centos7 没有
3、bash的快捷键
Ctrl +l 清屏 相当于clear
Ctrl+a 光标移动到最前面
Ctrl+e 光标移动到坐后面
Ctrl+u 剪切光标前的所有命令
Ctrl+k 捡钱光标后面的所有命令
Ctrl+p 粘贴所剪切的命令
四。。。
输入输入I/O重定向及管道符
I:读入数据:input
O:输出数据:output
I/O重定向就是输入输出重定向改变输入输出位置
标准输入:keyborad, 系统默认使用 数字 0 表示
标准输出:monitor, 系统默认使用数字 1 表示
标准错误输入:monitro 系统默认使用数字2表示
把本来的标准输入(键盘或者是系统信息)
输出重定向:
>: 覆盖重定向,会把目标位置文件内容清除掉,如果没有目标文件会自动创建
>>:追加重定向:在目标文件已经存在的内容后面追加内容
覆盖重定向很危险 所有有set -c :禁止将已有文件的内容覆盖掉
这样只对当前bash生效 想要永久生效需要修改配置文件
但是:如果非要覆盖的话 有两个方法 1、 强制覆盖 >| 2、关闭 set +c
以上都是正确的标准 输出 其实可以使用 1>来重定向的 但是数字1 在此忽略了
那么错误的标准输出就是 2>了 这里的2 不能省略。。
以上真确的 错误的 只能转职专用 不能用混了 所以很麻烦
有没有一种 不管她是正确还是错误输出 都可以使用的? &>
cat /etc/passwd > /tmp/zhencque 2> /tmp/err
这样还是麻烦 还是两个文件
&> 这个是最终的 合并两个数据流为一个
cat /etc/passwd &> /tmp/zhengqueorcuowu
COMMANO > /tmp/file 2> &1 这样也行其中的&1是引用了前面第一个文件,也能&2 &3 &4
** 输入重定向** < 小于号
以前总听说输出重定向 第一次听说输入重定向,看来还是系统的学习下比较好啊!!
首先说一个命令 以前没见过的 tr 具体用法看下图
[[email protected] ~]# tr abc 123
abwer
12wer
cccccccc
33333333
ni hao
ni h1o
自动替换 以空格区分前后(只要输入中有abc三个字母任意个,则会相对应的替换为123)
输入重定向,如下图,可以把/etc/passwd中的小写abc替换成大写ABC
此处生成文档 << 两个小于号
它好像是只能和cat链接使用
也可以重定向到别的文件 例如:
cat >> /tmp/rc.log << EFO
hao a you
EFO
[[email protected] ~]# cat /tmp/rc.log
hao a you
以上值得注意的是 << EFO是关键的 结尾的时候也要输入EFO
当然也可以输出重定向到其他文件 但是重定向要写到后面 例如:我想把/etc/passwd文件里面的abc都替换成123 另存为到其它的文件
但是怎样能让tr把所有的输出看成一个整体的单词呢????然后替换文件内的单词行不行啊?
后期查下???,现在反过头来看下,要把它看成一个整个的单词,可以使用前后锚定,利用正则表达式应该可以的...
tee命令,分两路输出 显示屏上输出一份 还可以在文档中保存一份
例如:
[[email protected] ~]# echo $PATH | tr ‘a-z‘ ‘A-Z‘ | tee /tmp/tee.txt
/USR/LOCAL/SBIN:/USR/LOCAL/BIN:/USR/SBIN:/USR/BIN:/ROOT/BIN
[[email protected] ~]# cat /tmp/tee.txt
/USR/LOCAL/SBIN:/USR/LOCAL/BIN:/USR/SBIN:/USR/BIN:/ROOT/BIN
这个用的也挺好的,把tr放在了管道符后面 接受前面的输出....
当然 tr还有一个-d选项
原文地址:http://blog.51cto.com/12529218/2285383