zoukankan      html  css  js  c++  java
  • bash特性

    一些关于bash的特性和用法

    1.光标跳转

      ctrl+a:跳到命令行首    ctrl+e:跳到命令行尾
      ctrl+u:删除光标至行首   ctrl+k:删除光标至行尾
      ctrl+←:向左跳一个单词    ctrl+→:向右跳一个单词 
      ctrl+l:清屏,clear 

    2.命令历史

      用户每输入一次命令,都会被记录到命令历史中,命令历史默认记录的条数为1000条,暂存于内存中,当用户退出bash后,命令历史会被记录到用户家目录下的.bash_history文件下

    [root@localhost ~]# echo $HISTSIZE    命令历史缓冲区默认大小
    1000
    [root@localhost ~]# ls -la .bash_history   命令历史保存文件
    -rw-------. 1 root root 1388 Dec 25 13:49 .bash_history
    

      history:查看命令历史
        -c:清空命令历史
        -d:删除指定序号的命令历史

    [root@bogon ~]# history -d 66
    代表删除第66条命令历史
    [root@bogon ~]# history -d 66 3
    代表删除第66条命令历史后后面的2个
    

         -w:保存命令历史到历史文件

      命令历史的使用技巧:

        !n:执行命令历史中的第n条命令

        !-n:执行命令历史中的倒数第n条命令;感觉这个并不好用,可以用↑键去找

        !!:执行上一条命令;这个也不好用,直接用上↑键就可以

        !STRING:执行命令历史中最近一个以指定字符串开头的命令

        !$:引用前一个命令的最后一个参数。或者也可以使用“按下ESC松开之后按‘.’”ESC .

       

     3.命令别名

      命令别名可以快速的执行一段长命令,或者你不习惯使用某个命令,可以直接定义命令别名来代替他。可以通过alias来查看所有已经定义的命令别名。

      alias 别名='原命令 [选项] [参数]'      定义命令别名

      unalias 别名             取消命令别名

      命令                 直接使用原始命令

    4.命令替换、变量替换

      在一些时候,执行命令的时候,可能需要另一个命令的支持,例如我要新建一个现在时间的文件,命令替换可以用$()或反引号``完成。

    [root@bogon test]# touch $(date +%y-%m-%d-%H-%M-%S).doc
    [root@bogon test]# ls
    17-12-27-00-27-15.doc
    可以使用$()
    [root@bogon test]# touch `date +%y-%m-%d-%H-%M-%S`.doc
    [root@bogon test]# ls
    17-12-27-00-27-15.doc  17-12-27-00-29-54.doc
    也可以使用``反引号
    

      变量替换可以使用${}完成,当不影响调用变量名称时,大括号{}可以省略

    [root@bogon ~]# a=bbb
    [root@bogon ~]# echo $a ;echo $aa ;echo ${a}a
    bbb
    
    bbba
    

     5.引号

    三种引号的用法

    ` `:命令替换,$()同样可以使用命令替换
    " ":弱引用,变量替换
    ' ':强引用,不完成变量替换

    6.文件名通配符

    通常在查找文件时,不能准确描述文件名,但知道文件名格式,可以用通配符来查找

    *:匹配任意长度任意字符
    ?:匹配任意单个字符
    [ ]:匹配中括号内的单个字符
    [^ ]:匹配除了括号内的任意单个字符

      [0-9]        [[:digit:]]    数字
      [a-z]        [[:lower:]]  小写字母
      [A-Z]       [[:upper:]]  大写字母
      [a-zA-Z]     [[:alpha:]]  大小写字母
      [a-zA-Z0-9]     [[:alnum:]]  数字和大小写字母
              [[:space:]]  空白字符
              [[:punct:]]  标点符号

        

     7.bash配置文件

    全局配置文件:/etc/profile,/etc/bashrc和(etc/profile.d/*.sh这里面是各种shell脚本)
    个人配置文件:~/.bash_profile,~/.bashrc

    profile类文件用来在登入系统时设定环境变量,运行命令或脚本的
    bashrc类文件是用来登入系统时设定本地变量,定义命令别名的

    登录式shell读取配置文件过程:
      /etc/profile->/etc/profilce.d/*.sh->~/.bash_profile->~/.bashrc->/etc/bashrc
    非登录式shell读取配置文件过程:
      ~/.bashrc->/etc/basrc->/etc/profile.d/*.sh
    最终都是以个人shell为标准

    8.输入输出重定向

    >:覆盖输出
    >>:追加输出

    2>:错误覆盖输出
    2>>:错误追加输出

    &>:正确错误都输出到一个文件

    [root@bogon ~]# ls -l > a 2> b
    ##这样正确输出给a,错误输出给b
    

    可以用set -C禁止对已经存在文件使用覆盖重定向,强制覆盖输出使用>|  ,用set +C关闭上述功能。

    <:输入重定向

    [root@localhost ~]# tr 'a-z' 'A-Z' < a
    ABCEDFG
    

     <<:此处输入文本,后缀即为结束符

    [root@localhost ~]# cat <<a
    > aaa
    > aa
    > a
    aaa
    aa
    

     |:管道符,将前一个命令执行的结果传递给下一个命令

    初学linux,每学到一点东西就写一点,如有不对的地方,恳请包涵!
  • 相关阅读:
    数据结构学习(一)、线性表
    内容太多用省略号代替、内容不换行,鼠标移上去显示详情
    时间格式化
    51Nod--1018排序
    51Nod--1085背包问题
    51Nod--1049最大子段和
    51Nod--1051最大子矩阵和(DP入门)
    POj1852--Ants
    c# static用法
    group by用法
  • 原文地址:https://www.cnblogs.com/forlive/p/8119314.html
Copyright © 2011-2022 走看看