什么是shell, shell是一个命令解释器,提供用户和机器之间的交互。支持特定语法,比如逻辑判断、循环。每个用户都可以有自己特定的shell。CentOS7默认shell为bash(Bourne Agin Shell)。还有zsh、ksh等。实际上,在shell和计算机硬件之间还有一层东西那就是系统内核了。打个比方,如果把计算机硬件比作一个人的躯体,而系统内核则是人的大脑,至于shell,把它比作人的五官似乎更加贴切些。回到计算机上来,用户直接面对的不是计算机硬件而是shell,用户把指令告诉shell,然后shell再传输给系统内核,接着内核再去支配计算机硬件去执行各种操作。
[root@xie-02 zzz]# ls
123123.txt 1.txt 2.txt 312324.txt 3.txt asd.txt gte.txt g.txt h.txt
[root@xie-02 zzz]# ls *.txt //列出后缀为.txt的所有文件
123123.txt 1.txt 2.txt 312324.txt 3.txt asd.txt gte.txt g.txt h.txt
[root@xie-02 zzz]# ls ?.txt //列出名称是一个字符的所有.txt文件,?表示一个任意字符
1.txt 2.txt 3.txt g.txt h.txt
[root@xie-02 zzz]# ls [0-9].txt //列出名称包含0-9中任意一个的一个字符的所有.txt文件
1.txt 2.txt 3.txt
[root@xie-02 zzz]# ls [0-9a-z].txt //列出名称包含0-9和a-z中任意一个的一个字符的所有.txt文件
1.txt 2.txt 3.txt g.txt h.txt
[root@xie-02 zzz]# ls {1,2}.txt //列出名称包含1或2中任意一个的一个字符的所有.txt文件
1.txt 2.txt
扩展知识: >& :将一个句柄的输出写入到另一个句柄的输入中。
句柄 | 句柄的数字代号 | 描述 |
---|---|---|
STDIN | 0 | 键盘输入 |
STDOUT | 1 | 输出到命令提示符窗口 |
STDERR | 2 | 错误输出到命令提示符窗口 |
UNDEFINED | 3-9 | 句柄由应用程序单独定义,它们是各个工具特有的 |
要指定重定向到现有句柄,请使用与 (&) 字符,后面接要重定向的句柄号(即 &句柄号)。例如,下面的命令可以将句柄 2(即 STDERR)重定向到句柄 1(即 STDOUT):2>&1
试想2>1代表什么,2与>结合代表错误重定向,而1则代表错误重定向到一个文件1,而不代表标准输出; 换成2>&1,&与1结合就代表标准输出了,就变成错误重定向到标准输出. 你可以用 ls 2>1测试一下,不会报没有2文件的错误,但会输出一个空的文件1; ls xxx 2>1测试,没有xxx这个文件的错误输出到了1文件中; ls xxx 2>&1测试,不会生成1这个文件了,不过错误跑到标准输出了; ls xxx >out.txt 2>&1, 实际上可换成 ls xxx 1>out.txt 2>&1;重定向符号>默认是1,错误和输出都传到out.txt了。