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

    技术2022-05-20  39

    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)