概要
- 重定向符号举例
[root@junnan1 ~]#
[root@junnan1 ~]# ls
a.txt
[root@junnan1 ~]# cat a.txt
老男孩教育
[root@junnan1 ~]# echo "$PWD" >a.txt
[root@junnan1 ~]# cat a.txt
/root
注释:标准输出重定向(>)
[root@junnan1 ~]# cat a.txt
/root
[root@junnan1 ~]# echo "老男孩教育" >>a.txt
[root@junnan1 ~]# cat a.txt
/root
老男孩教育
[root@junnan1 ~]#
注释:标准追加输出重定向(>>)
[root@junnan1 ~]# cat a.txt
/root
老男孩教育
[root@junnan1 ~]# tr '/root' 'lanha' <a.txt
lahha
老男孩教育
[root@junnan1 ~]#
注释:替换命令tr,必须使用这种方式,就是输入重定向(<).
[root@junnan1 ~]# cat a.txt
/root
老男孩教育
[root@junnan1 ~]# cat >>a.txt<<EOF
> 1
> 2
> 3
> 4
> 5
> EOF
[root@junnan1 ~]# cat a.txt
/root
老男孩教育
1
2
3
4
5
[root@junnan1 ~]#
注释:与cat配合使用,向文件中可追加多行内容。EOF=End Of File文件结束的意思,可以随机换成任何其他字母。
[root@junnan1 ~]# rt
-bash: rt: command not found
[root@junnan1 ~]# cat a.txt
/root
老男孩教育
1
[root@junnan1 ~]# rt 2>a.txt
[root@junnan1 ~]# cat a.txt
-bash: rt: command not found
[root@junnan1 ~]#
2.“?”,表示任意一个字符
[root@junnan1 /tmp]# ls
1.txt 2.txt 3.txt 4.txt 5.txt {a-e}.txt {a...e}.txt
[root@junnan1 /tmp]# ll ?.txt
-rw-r--r-- 1 root root 0 Apr 15 19:11 1.txt
-rw-r--r-- 1 root root 0 Apr 15 19:11 2.txt
-rw-r--r-- 1 root root 0 Apr 15 19:11 3.txt
-rw-r--r-- 1 root root 0 Apr 15 19:11 4.txt
-rw-r--r-- 1 root root 0 Apr 15 19:11 5.txt
[root@junnan1 /tmp]#
3.";",分号表示:两个命令的分隔符,两个命令之间没有任何关系
[root@junnan1 /tmp]# echo 'hello';echo 'word'
hello
word
[root@junnan1 /tmp]#
3.{} 命令组合 和 序列
- 创建oldboy1 到 oldboy10 文件
[root@junnan1 ~]# touch oldboy{1..10}
[root@junnan1 ~]# ls
anaconda-ks.cfg oldboy10 oldboy3 oldboy5 oldboy7 oldboy9
oldboy1 oldboy2 oldboy4 oldboy6 oldboy8
[root@junnan1 ~]#
- 创建 oldboya 到 oldboyf 文件
[root@junnan1 ~]# touch oldboy{a..g}
[root@junnan1 ~]# ls
anaconda-ks.cfg oldboya oldboyb oldboyc oldboyd oldboye oldboyf oldboyg
[root@junnan1 ~]#
- 给不同目录下创建相同目录
[root@junnan1 ~]# mkdir -p /tmp/{1,2}/old
[root@junnan1 ~]# ls /tmp/{1,2}/old
/tmp/1/old:
/tmp/2/old:
4. ``反引号,解析命令
[root@junnan1 ~]# ll `which mkdir`
-rwxr-xr-x. 1 root root 79864 Oct 31 03:16 /usr/bin/mkdir
[root@junnan1 ~]#
5.''单引号,所见所得
[root@junnan1 ~]# echo 'date'
date
[root@junnan1 ~]#
6. $ 变量前需要加的符号
[root@junnan1 ~]# echo $PS1
[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\] \[\e[31;1m\]\w\[\e[0m\]]\$
[root@junnan1 ~]# echo $UID
0
[root@junnan1 ~]#
7.|管道符 效率不高,前者输出是后者输入
[root@junnan1 ~]# cat -n /etc/profile|grep -i 'histsize'
46 HISTSIZE=1000
53 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
[root@junnan1 ~]#
#8.小括号,命令替换。命令替换$(cmd)等同于`cmd`(这不是单引号,`是ESC下面的那个键) ,shell执行过程中发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其输出,再将此输出放到原来命令
[root@junnan1 ~]# tar zcf /tmp/date$(date +%F).tar.gz /etc/
tar: Removing leading `/' from member names
[root@junnan1 ~]# ls /tmp
1 2 date2019-04-15.tar.gz
[root@junnan1 ~]#
#9.中括号“[]” 范围内的一个字符
可以匹配括号内的其中一个字符(不能匹配字符串)
“-”代表一个范围,
“^”逻辑非,代表不匹配该字符或该范围。
[0-9]
[a-z]
[A-Z]