美文网首页
Linux基础之Shell

Linux基础之Shell

作者: Near | 来源:发表于2016-12-20 12:26 被阅读0次

    1,什么是Shell?

    Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。
    实际上是一个命令解释器,可以在Shell中输入和执行一些命令,与系统进行交互。

    2, 关于Shell的分类?

    Shell的分类有多种、查看当前系统中安装了多少的Shell,
    可以在etc目录下查看
    <code>
    cat /etc/shells
    </code>

    cat /etc/shells

    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   
    
    set -C 与set +C

    在输入输出时,还可以使用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 即可。

    相关文章

      网友评论

          本文标题:Linux基础之Shell

          本文链接:https://www.haomeiwen.com/subject/nzbxvttx.html