zoukankan      html  css  js  c++  java
  • shell介绍 & 命令历史 & 命令补全和别名& 通配符& 输入输出重定向

    什么是shell?

     shell是一个命令解释器,提供用户和及其之间的交互

    致辞特定语法,比如逻辑判断、循环

    每个用户都可以有自己特定的shell

    CentOS7默认shell为bash (Bourne Agin Shell)

    还有zsh  、ksh等

    查找zsh、ksh 包

    [root@pantinglinux]# yum  list |grep zsh

    autojump-zsh.noarch                       22.3.0-3.el7                 epel     

    zsh.x86_64                                5.0.2-28.el7                 base     

    zsh-html.x86_64                           5.0.2-28.el7                 base     

    zsh-lovers.noarch                         0.9.0-1.el7                  epel     

    [root@pantinglinux]# yum list |grep ksh

    ksh.x86_64                                20120801-34.el7              base     

    mksh.x86_64                               46-5.el7                     base     

    python-XStatic-Rickshaw.noarch            1.5.0.0-4.el7                epel     

    python-moksha-common.noarch               1.2.3-2.el7                  epel     

    python-moksha-hub.noarch                  1.5.3-2.el7                  epel     

    python-moksha-wsgi.noarch                 1.2.2-2.el7                  epel     

    [root@pantinglinux]# 

    命令历史

    命令存放位置:

    [root@pantinglinux]# ls /root/.bash_history 

    /root/.bash_history

     

    history 查看之前存放的命令,最大默认存放5000条,可以调整

     

    查看存放命令大小:

    [root@pantinglinux]# echo  $HISTSIZE

    1000

     

    清空内存记录

    [root@pantinglinux]# history -c

    [root@pantinglinux]# history 

        1  history 

     

     

     

    只有当退出终端的时候命令才能保存到文件中去,/root/.bash_history

     

     

    环境变量 HISTSIZE 大小在哪个地方存呢?z

     

    vi  /etc/profile

     

    找到 HISTSIZE, 可以修改存放大小:5000等等

     

    执行生效: source  /etc/profile

     

     

     

    设置命令类型:

     

    命令时间类型:年月日时分秒

    HISTTIMEFORMAT="%Y%m%d  %H:%M:%S"

     

     

    这个环境变量只能在当前窗口存在,再打开一个窗口就会变了

     

    [root@pantinglinux]# HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"

    [root@pantinglinux]# echo $HISTTIMEFORMAT

    %Y/%m/%d %H:%M:%S

    [root@pantinglinux]# history 

        1  2018/01/10 00:13:26history 

        2  2018/01/10 00:14:12clear

        3  2018/01/10 00:26:13SETTIMEFARMAT="%Y%m%d %H:%M:%S"

        4  2018/01/10 00:26:49$HISTTIMEFARMAT="%Y%m%d %H:%M:%S"

        5  2018/01/10 00:27:01$HISTTIMEFARMAT="%Y/%m/%d %H:%M:%S"

        6  2018/01/10 00:27:07HISTTIMEFARMAT="%Y/%m/%d %H:%M:%S"

        7  2018/01/10 00:27:28echo $HISTTIMEFARMAT

        8  2018

    /01/10 00:27:34history 

        9  2018/01/10 00:28:07HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"

       10  2018/01/10 00:28:38echo $HISTTIMEFORMAT

       11  2018/01/10 00:28:43history 

     

     

    永久生效:

    vi  /etc/profile

     

     

    /HISTSIZE

     

    HISTSIZE=5000

    HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"

     

     

    source /etc/profile

     

     

     

    永久保存 命令历史

     

    只能增加不能删除

    chattr  +a ~/.bash_history

     

     

    当用户没有正常退出 exit/logout 直接把终端关闭   刚刚敲的命令就不会记录到文件中去。

     

     

    !! 表示 上一条命令

     

    !n 表示执行第n条命令

     

     

    !echo    从命令历史从后往前找第一个以echo开头的命令。

     

     

    !mkdir   从命令历史从后往前找第一个以mkdir开头的命令。

     

     

    命令补全和别名

     

    tab 敲一下,敲两下

    一个命令补全,敲一下

    多个相同开头的命令,按两下选择

     

    参数补全,安装bash-complete

    yum install -y completion

     

    查找是否安装

    [root@pantinglinux]# rpm  -qa bash-completion

    bash-completion-2.1-6.el7.noarch

     

    按tab两下 参数补全

     

    例如: systemctl  restart  network

     

     

     

    alias 别名 给命令重新起个名字

    [root@pantinglinux]# alias restartnet='systemctl  restart network.service'

    [root@pantinglinux]# restartnet

     

     

     

    输入alias回车,可以列出所有的别名

     

     alias别名存在哪里?

     

    vim   .bashrc 下

     

    有三条alias别名

     

    其它别名在 /etc/profile.d/下定义

     

    vim  colors.ls 里面 有alias定义

     

    vim  colors.grep 里面也有alias定义

     

     

    取消自定义的别名:

     

    unalias  别名名称

    unalias restartnet

     

     

     

     

    通配符 

    列出所有txt类型文件,*是通配符

    ls  *.txt 

    ls  1*

     

    ls ?.txt  ?表示一个任意的字符

    ls[0-3].txt  列出0.txt,2.txt,3.txt

     

    ls [0-9a-z].txt  列出0-9.txt , a-z.txt

    ls[0-9A-Z].txt

     

    ls {1,2} .txt  相当于[12].txt  当中的一个或者1.txt,2.txt

     

     

     输入重定向和输出重定向

     

    cat  1.txt  > 2.txt  把1.txt内容写入到2.txt 文件中;

     

    把命令错误信息写入文件

    lsaaaa 2> a.txt

    cat a.txt

     

    追加文件内容:

    lslsls  2>>a.txt

     

     

    &> 表示正确和错误信息 两者的结合

     

    ls [12].txt aaa.txt &> a.txt

     

    把1.txt 2.txt  和 错误的aaa.txt 文件 写入到a.txt

    没有aaa.txt文件产生错误信息

     

     

    ls[12].txt aaa.txt > 1.txt  2>a.txt

    将 1.txt 2.txt 写入1.txt

    把aaa.txt 产生的错误写入到a.txt

     

    ls aaa.txt “没有那个文件” ,产生的错误信息 写入a.txt

     

    后面的2 指定第二个 aaa.txt

    aaa.txt > a.txt

     

     

     

    wc  -l  < 1.txt 输入重定向

    把右边的文件/文件内容输入到左边

     

    wc  -l 查看文档行数

     

    左边必须是命令!

     

    wc -l > 1.txt  输出重定向

    wc -l <1.txt  输入重定向(很少用)

  • 相关阅读:
    您知道SASS吗?
    打破技术壁垒, 用SpreadJS 抢占“表格文档协同编辑系统”的入市先机
    7种你应该知道的JavaScript常见的错误
    前端开发:这10个Chrome扩展你不得不知
    疫情下,买菜难,其实卖菜的也是这么想的
    疫情之下远程办公,开启企业办公的全新时代!
    “泛在电力物联网”究竟是什么?
    2020 春节集五福最详细收集攻略
    怎样使我们的用户不再抵触填写Form表单?
    新事业,新征程:换屏哥,您身边的手机维修专家
  • 原文地址:https://www.cnblogs.com/pta188/p/8898046.html
Copyright © 2011-2022 走看看