通配符与特殊符号

概要

特殊符号
  • 重定向符号举例
[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]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容