1,什么是Shell?
Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。
实际上是一个命令解释器,可以在Shell中输入和执行一些命令,与系统进行交互。
2, 关于Shell的分类?
Shell的分类有多种、查看当前系统中安装了多少的Shell,
可以在etc目录下查看
<code>
cat /etc/shells
</code>
3,如何查看当前系统使用的Shell?
查看当前系统使用的shell的方法有很多种。
一般可以使用:
<code>
echo $SHELL
echo $0
env | grep SHELL
</code>
4, 如何切换当前系统使用的Shell?
使用chsh 命令 +选项和参数。
5, 标准输出&错误输出
想将一个命令执行的结果输出到文件之中,可以使用重定向字符 >
例如:
ls -l hello >a.txt
如果a.txt不存在会创建a.txt文件,如果a.txt存在,使用重定向字符> 会将原有的数据覆盖。
如果不想覆盖原有数据,可以使用>> 将命令的输出结果放在文件后面。
ls -l hello >> a.txt
利用cat a.txt
在终端屏幕中显示
在输入命令时,有时候会遇到各种错误,如果想要将错误输出到文件中怎么办呢?
可以使用错误输出命令。
如输入命令
ls -l fff >a.txt
fff的文件不存在。
如果有必要可以使用2> 重定向错误输出。例如以下:
yico@10:~/code$ ls -l fff 2>a.txt
yico@10:~/code$ cat a.txt
ls: fff: No such file or directory
还可以标准输出和错误输出相互结合
yico@10:~/code$ ls -l fff >f 2>a.txt
查看f以及a.txt文件 f为空,a.txt显示为:ls: fff: No such file or directory
使用2>& 将标准的输出和错误输出到一个地方。如下:
yico@10:~/code$ ls fff >f 2>&1
yico@10:~/code$ cat 1
cat: 1: No such file or directory
使用set -C 或者set +C 控制输出是否覆盖
开启set -C后不能够覆盖已存在的文件,而set +C则可以覆盖
shiyanlou:~/ $ set -C
shiyanlou:~/ $ ls >a.out
zsh: \u6587\u4ef6\u5df2\u5b58\u5728: a.out
shiyanlou:~/ $ ls > 1.out
shiyanlou:~/ $ cat 1.out
1.out
1.txt
a.out
a.txt
Code
Desktop
linuxpocketguide
LPG-stuff.tar.gz
\u4e0b\u8f7d
shiyanlou:~/ $ ls > 1.out
zsh: \u6587\u4ef6\u5df2\u5b58\u5728: 1.out
shiyanlou:~/ $ man set
\u6ca1\u6709 set \u7684\u624b\u518c\u9875\u6761\u76ee
shiyanlou:~/ $ set +C
shiyanlou:~/ $ ls >1.out
在输入输出时,还可以使用tee 命令
tee命令:将数据重定向到文件和屏幕上。即满足了输出到屏幕又满足了输出到文件。
例如:
shiyanlou:~/ $ ls | tee a.txt
shiyanlou:~/ $ who |tail -n 3 | tr a-z A-Z
SHIYANLOU PTS/0 2017-03-04 14:07 (:1.0)
shiyanlou:~/ $ who |tail -n 3 | tr a-z A-Z |tee a.out
6 ,alias与unalias
alias作为命令别名,在使用的时候能够极大的方便命令的输入。
使用方法:
alias 别名= '命令 -选项|参数'
alias rm='rm-i '
显示当前的alias -p 或者alias。
一般alias rm='rm-i' 不写入bashrc文件中,仅本次生效。
1)将alias的内容写入到当前用户目录下的.bashrc下,当前用户生效。写入到/etc/bashrc文件下,全部生效。
2) 如果需要立即生效则使用 source ~/.bashrc 这也是对.bashrc文件更改后立即生效的办法。
3)撤销某命令别名则使用unalias , 如上述alias rm='rm -- i' ,unalias rm 即可。