Unix&Linux大学教程:13 使用shell:命令和定制

13      使用shell:命令和定制
13.1 元字符
        $,<,>,&......
13.2 引用和转义
        /
        echo /(foo/)            输出:(foo)  
        echo '<$TERM>'          输出:<$TERM>
        echo "<$TERM>"          输出:<xterm>                " **** "中保留了"$"(美元),"`"(反引号),"/"(反斜线)的特殊含义
        
13.3 强引用和弱引用
        单引号               强引用(strong quote)
        双引号               若引用(weak quote)
        反斜线               最强引用,可以引用任何符号
        练习下面命令即可明白:
        echo Don/'t let gravity get you down
        echo This is a very, very long/
        line that goes on and on for a /
        very, very long time.
        echo 'This line ends without a second quote
        echo 'This line ends without a matching quote
        and here is the missing quote'
13.4 shell内置命令:type
        内置命令:shell在自己的进程内运行该命令
        外部命令:shell搜索合适的程序,然后以一个单独的进程运行该命令。
        
        type command...         查看某条命令是不是内部命令
        type date time set
13.5 学习内部命令
        apropos builtin         查看系统是否有内置命令的说明文档
        
        例:
                ubuntu:~$ apropos builtin
                bash-builtins (7)    - bash built-in commands, see bash(1)
                builtins (7)         - bash built-in commands, see bash(1)
                ubuntu:~$ man bash-builtins
        
        help    显示所有内置命令的摘要列表
        help    每次一屏
        help set history kill   显示一条或多条具体命令的信息
        help -s pwd kill        只希望查看一条或多条命令的语法(syntax)
        help [-s] case for      查看shell关键字语法
13.6 外部命令及搜索命令
        外部命令:date,ls...
        shell如何知道在什么地方查找外部命令呢?shell检查PATH环境变量.
        echo $PATH      显示PATH变量的值
        
13.7 修改搜索路径
        Bourne Shell                                    C-Shell
        export PATH="/bin:/usr/bin:/usr/local/bin"      set path=(/bin /usr/bin/ usr/local/bin)
        export PATH="$PATH:$HOME/bin"                   set path=($path $HOME/bin)              添加路径
        export PATH="$HOME/bin:$PATH:"                  set path=($HOME/bin $path)              将添加的路径放在前面,检索path时将先对它检索
        export PATH="$HOME/bin:$PATH:."                 set path=($HOME/bin $path .)            包含当前工作路径                
        whereis date ls                 查找程序安装路径
13.8 黑客如何使用搜索路径
        将工作目录(.)放到搜索路径中比较方便,但是超级用户(root)或者其他拥有特殊权限的用户最好不要这样做,这样做可能导致安全灾难.P258
        黑客可利用此漏洞安装后门。
        提示:确保所有的系统管理员账户标示(包括root)使用的搜索路径中没有包含工作目录(.),或者用户可能访问的其他任何目录。
13.9 shell提示
        超级用户    Bourne shell(Bash,Korn)         C-shell         Tcsh
        # date          $ date                          % date          % date 或 > date
        
13.10 修改shell提示
        export PS1="$ "         Bourne Shell
        set prompt = "%"        C-Shell
??1:输入env查看PS1时没找到,而用echo能输出PS1的值。
        
13.11 使用变量的值
        echo "My userid is ${USER}."            好习惯,即使不是必需。
        echo "My userid is $USER."
        
        将用户表示插入到提示中:
                export PS1="${USER}$ "          B-Shell
                set prompt = "${USER}% "        C-Shell
        体验:
                export PS1='Your lucky number is ${RANDOM} $'
                export PS1='Working time: ${SECONDS} seconds $ '
??2:这里的单引号为什么能够识别"$" 
13.12 引用变量时使用哪类引号
        export PS1="${USER}$ "                          $USER是已经确定的值,所以有用双引号      
        export PS1='Your lucky number is ${RANDOM} $'   $RANDOM的值不断改变的,此处$字符保留下来,等使用的时候$字符才被解释,所以用单引号,??2得解。
13.13 使用转义字符的特殊码
        见P264的表
13.14 命令替换
        shell最强大特性:命令替换(Command substitution) !
        例:
                echo “The time and date are `date`.”                注:`date`外是反引号,不是单引号。        
        
        抽取路径名的最后部分:
                basename /bin/bash      输出:base
        export PS1="`basename ${SHELL}`$ "              bash/ksh
        set prompt = "`basename ${SHELL}`% "            csh
        set prompt = "`basename ${SHELL}`> "            tsh
        
        export PS1="`hostname -s`$ "
        set prompt = "`hostname -s`% "
        
        export PS1="`whoami`$ "
        set prompt = "`whoami`% "
13.15 键入命令并进行修改
        
13.16 历史列表:fc,history
        fc -l           B-Shell
        history         C-Shell
        调取并执行特定的命令:
                fc -s 24        B-Shell
                !24             C-Shell
        重新执行输入前的最后一条命令:
                fc -s           B-Shell 
                !!              C-Shell
        
        重新执行前对命令进行小幅修改:
                fc -s tempfile=date 25          B-Shell
                !25:s/timepfile/data/           C-Shell 
        希望使用最近用过的命令并进行修改:
                例:$datq     输入出错
                        fc -s q=e               B-Shell
                        ^q^e                    C-Shell           注:'^'不是Ctrl键
        
        
        fc - "fix command"
13.17 历史列表:设置大小
        export HISTSIZE=50
        set history=50
13.18 历史列表示例:避免删错文件
        rm temp* extra?       *匹配0个或多个,?匹配一个
        
        先输入:ls -temp* extra?
        确认没有不该删除的文件后
        再输入:fc -s ls=rm (或 ^ls^rm             C-shell)
        
13.19 在shell提示中显示事件编号&工作目录
        export PS1="bash[/!]$ "
        export PS1="ksh[!]$ "
        set prompt = "csh[/!]% "
        set prompt = "csh[%/!]>%"
                
        Shell           特殊码
        Bash            /!
        Korn Shell      !
        C-Shell         !
        Tcsh            %!
        /w显示工作目录,/!显示当前事件编号
        export PS1="(/w) bash[/!]$ "            Bash
        export PS1='($PWD) ksh[!]$ '            Korn Shell,强引用
        export PS1="(/$PWD) ksh[!]$ "           Korn Shell,弱引用
13.20 自动补全
        shell           补全单词            显示所有可能
        Bash            <Tab>                   <Tab><Tab>
        Korn Shell      <Esc><Esc>              <Esc>=
        C-Shell         <Esc>                   ^D
        Tcsh            <Tab>                   ^D
        C-Shell需要打开自动补全功能:set filec,最好将此命令放置在初始化文件中。
13.23 命令行编辑:bindkey
        set -o vi
        set -o emacs
        Tcsh:   bindkey -e
                bindkey -v
13.24 别名:alias,unalias
        alias [name=commands]           B-Shell
        alias [name commands]           C-Shell
        alias info='date; who'          注:此处命令之间用“;”
        alias info 'date; who'
        unalias info                    移除别名
        unalias -a(* C-Shell)               移除所有别名
13.25 临时挂起别名
        /ls
13.26 
13.27
13.28
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值