Linux讲座 第二十三课 别名

Linux讲座 第二十三课 别名

----------------------------------------------------------------------------------------------

 

 

  还有一个使工作变得轻松的方法是使用命令别名。命令别名通常是其他命令的缩写,用来减少键盘输入。

  命令格式为:

  alias [alias-name=‘original-command’]

  其中,alias-name是用户给命令取的别名,original-command是原来的命令和参数。需要注意的是,由于Bash是以空格或者回车来识别原来的命令的,所以如果不使用引号就可能导致Bash只截取第一个字,从而出现错误。如果alias命令后面不使用任何参数,则显示当前正在使用的被别名化的命令及其别名。为命令取的别名在该次登录期间始终有效。如果用户需要别名在每次登录时都有效,那么就将alias命令写到初始化脚本文件中。

 

  [例]如果经常要键入如下的命令,最好为它建立一个别名来减少工作量。

  $ cd /usr/X11/lib/X11

  假如为这个长命令建立一个名为goconfig的别名,在Bash提示符下键入如下命令:

  $ alias goconfig=‘cd /usr/X11/lib/X11’

  现在,除非您退出Bash,键入goconfig将和原来的长命令有同样的作用。如果想取消别名,可以使用下面的命令:

  $ unalias goconfig

  这是一些很多人认为有用的别名,可以把它们写入初始化脚本文件中来提高工作效率:

  alias ll=‘ls –l’

  alias log=‘logout’

  alias ls=‘ls –F’

  如果您是一名DOS用户并且习惯了DOS命令,可以用下面的别名定义使Linux表现得象DOS一样:

  alias dir=‘ls’

  alias copy=‘cp’

  alias rename=‘mv’

  alias md=‘mkdir’

  alias rd=‘rmdir’

  注意:在定义别名时,等号两边不能有空格,否则shell不能决定您需要做什么。仅在命令中包含空格或特殊字符时才需要引号。

  如果键入不带任何参数的alias命令,将显示所有已定义的别名。

 

 

提示符

  Bash有两级提示符。第一级提示符是经常见到的Bash在等待命令输入时的情况。第一级提示符的默认值是$符号。如果用户不喜欢这个符号,或者愿意自己定义提示符,只需修改PS1变量的值。例如将其改为:

 

  PS1=”Enter a command:”

  第二级提示符是当Bash为执行某条命令需要用户输入更多信息时显示的。第二级提示符默认为>。如果需要自己定义该提示符,只需改变PS2变量的值。例如将其改为:

  PS2=”More information:”

  上面的两个例子都是设定提示符为静态字符串的情况。其实用户也可以使用一些事先已经定义好的特殊字符。这些特殊字符将使提示符中包含当前时间之类的信息。表10-4列出了最常用的一些特殊字符及其含义。

 

  表10-4 bash提示符常用特殊字符


      特殊字符 说 明

      \!               显示该命令的历史编号

      \#              显示shell 激活后,当前命令的历史编号

      \$              显示一个$ 符号,如果当前用户是root 则显示# 符号

      \\               显示一个反斜杠\

      \d              显示当前日期

      \h              显示运行该shell 的计算机主机名

      \n              打印一个换行符,这将导致提示符跨行

      \s               显示正在运行的Shell 的名称

      \t               显示当前时间

      \u              显示当前用户的用户名

      \W             显示当前工作目录基准名

      \w             显示当前工作目录

 

  这些特殊字符可以组合起来,为用户提供一些提示符,提供很有用的信息。下面来看几个实际例子:

  PS1=”\t”

  将使提示符变成如下所示:

  02:16:15

  而 PS1=\t

  将使提示符变成如下所示:

  t

  若PS1=”\t\\”

  将使提示符变成如下所示:

  02:16:30\

  该例就是使用两个特殊字符的组合得到的。

       Exit退出

 

控制shell的运行方式

  Bash有一些特殊变量,能控制shell以不同的方式工作。例如,变量noclobber能防止在重定向输出时意外地覆盖一个文件。通过set命令可以设置noclobber变量的有效或无效。set命令有两个参数:一个是指定变量开(on)或关(off)的选项,一个是特殊变量的变量名。要使某一特殊变量开(有效),用-o选项,要使其关(无效),用+o选项。例如:

 

  $ set –o noclobber // 使noclobber变量开

  $ set +o noclobber // 使noclobber变量关

  三个最常用的shell特殊变量有:ignoreeof、noclobber及noglob。

  ignoreeof

  ignoreeof变量用来禁止使用ctrl+d来退出shell(ctrl+d不仅用来退出shell,而且可以终止用户直接输往标准输出上的输入。该操作经常在一些shell实用命令中使用,例如实用命令cat。在这些实用程序操作中,非常容易误操作而意外地退出shell。ignoreeof特殊变量正是用来防止这种意外的退出。例如:

 

  $ set –o ignoreeof

  之后,用户只能用logout或exit命令退出shell。

  noclobber

  noclobber变量可以在重定向输出时保护已存在的文件,防止被意外地覆盖。在下例中,用户设置noclobber为有效,在重定向时,用户试图去覆盖已经存在的文件myfile,此时系统将返回一个错误信息。

 

  [例]

  $ set –o noclobber

  $ cat preface>myfile

  bash: myfile: cannot overwrite existing file

  $

  noglob

  设置noglob变量后,shell将不扩展文件名中一些特殊的字符或字符串。如字符*、?、[

]等将不再作为通配符。如果用户希望列出结尾为?的文件名answer?,可通过如下步骤:首先,用户使noglob变量为无效,然后再列出文件名。可以看到,目前命令行上的问号?被认为是文件名中的一个字符,而不再被看作通配符。

 

  $ set –o noglob

  $ ls answer?

  answer?

 

 

子shell与export命令

  用户登录到Linux系统后,系统将启动一个用户shell。在这个shell中,可以使用shell命令或声明变量,也可以创建并运行shell脚本程序。运行shell脚本程序时,系统将创建一个子shell。此时,系统中将有两个shell,一个是登录时系统启动的shell,另一个是系统为运行脚本程序创建的shell。当一个脚本程序运行完毕,它的脚本shell将终止,可以返回到执行该脚本之前的shell。从这种意义上来说,用户可以有许多shell,每个shell都是由某个shell(称为父shell)派生的。

 

  在子shell中定义的变量只在该子shell内有效。如果在一个shell脚本程序中定义了一个变量,当该脚本程序运行时,这个定义的变量只是该脚本程序内的一个局部变量,其他的shell不能引用它,要使某个变量的值可以在其他shell中被改变,可以使用export命令对已定义的变量进行输出。export命令将使系统在创建每一个新的shell时定义这个变量的一个拷贝。这个过程称之为变量输出。

 

  [例]在本例中,变量myfile是在dispfile脚本程序中定义的。然后用export命令将变量myfile输出至任何子shell,例如当执行printfile脚本程序时产生的子shell。

 

  dispfile脚本程序清单:

  /**************begin dispfile**************/

  myfile=”List”

  export myfile

  echo “Displaying $myfile”

  pr –t –n $myfile

  printfile

  /**************end dispfile***************/

  printfile脚本程序清单:

  /**************begin printfile**************/

  echo “Printing $myfile”

  lpr $myfile&

  /**************end printfile**************/

  $dispfile

  Displaying List

  1 screen

  2 modem

  3 paper

  Printing List

  $

 

定制Bash

  在本节中已经介绍了很多定制Bash的方法,但是迄今为止,这些方法都只是对当前Bash对话有用。只要用户退出登录,所做的一切改变都会丢失。所以应该在Bash的初始化文件中做永久性的修改。

 

  用户可以将每次启动Bash所需要执行的命令放入初始化文件中,最常见的命令就是alias命令和变量定义两种。系统中的每个用户在其主目录中都有一个.bash_profile文件,Bash每次启动时都将读取该文件,其中包含的所有命令都将被执行。

 

  下面便是默认.bash_profile文件的代码:

  #.bash_profile

  #Get the aliases and functions

  if [-f ~/.bashrc ];then

  .~/.bashrc

  fi

  #User specific environment and startup programs

  PATH=$PATH:$HOME/bin

  ENV=$HOME/.bashrc

  USERNAME=””

  Export USERNAME ENV PATH

  思 考 题

  1. Linux中的shell有哪些类型?Linux操作系统的缺省shell是什么?

  2. shell有哪些通配符?各起什么作用?

  3. shell中有哪三种引号?它们的作用有什么不同?

  4. 要统计/usr/bin目录下的文件个数,用重定向和管道分别完成,怎样做?

  5. 命令替换与重定向有何区别?举例说明。

转载于:https://my.oschina.net/lazyou/blog/131417

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值