Shell、Console、Terminal

Shell、Console、Terminal
========================
   在前面的章节中,我们曾提到,电视机的遥控器,也是一种人机交互的界面,算是一种Shell。
   但是这个概念并不准确,遥控器只是向Shell发送指令的工具,Shell接收到遥控器发出指令后,将指令转换为系统命令,由系统来执行。
   例如我们按的遥控器上的“数字键1”,遥控器将“切换为1频道”的指令发送到Shell,Shell将指令转换为系统可以识别的“频道1”,系统执行它,您就可以观看1频道的电视节目了。
   通常每台电视机只有一种Shell,比如有的电视机系统具有“画中画”的功能,那么Shell中便有相应的功能定义,您可以通过遥控器上的“画中画”功能键来开启它。假设您的电视机没有此功能,Shell中也就没有相应的功能定义。拥有一个带“画中画”功能控制键的遥控器,即便信号兼容,您还是不能够使用这一功能:)
   不用遥控器也可以控制电视机,假设您的遥控器丢了,您还可以走到电视机前,使用机身上的控制面板来控制它(相当于使用Linux的控制台)。但是您一定不喜欢这种方式,除非您想锻炼身体:)
   在Linux系统中,由于图形界面和控制台的分辨率通常不一致,所以切换时要有一个延时。对于我们中文用户来讲,控制台下中文的显示也比较麻烦。而且控制台显示内容通常不如终端显示的全面。
   所以我们推荐您使用终端来执行命令,它使用起来感觉很像遥控器:)
   
rxvt-unicode
============
   通常情况下,您买一台电视机,只能获得一个遥控器。虽然它为您的电视机量身定作,能够发挥电视机的所有能力,但是您却不一定喜欢它。说不定这个遥控器体形太大,持握不方便;或者它体形太小,容易失踪;又或者它的按键要么太硬,要么太软;它的键盘要么太大,要么太小……
   您一般也可以容忍,毕竟遥控器使用频率并不算高:)
   如果您的终端有些地方不讨您喜欢,比如说响应太慢,或者不能正常显示中文……那就难以忍受了,您应该换一个其它的试试。
   在前面的章节,我们介绍您使用的终端为Gnome-Termianl,它是系统默认使用的终端,显示中文不错,不过响应比较慢,您可能已经处于水深火热之中了。。。
   我们推荐您使用urxvt(mlterm也是不错的选择)
      
   您可以使用“sudo apt-get install rxvt-unicode”命令来安装它。
   urxvt 启动它 (urxvt不支持控制台,您得在图形界面下启动它。终端、Alt+F2,建议您在启动栏里新建一个启动图标)
   
   rxvt-unicode还支持“服务器/客户端”的运行模式:
      urxvtd 启动一个守护进程daemon(支持控制台)
      urxvtc 启动客户端client。多个客户端可以同时连接到一个urxvtd,以达到节省系统资源的目的。
      或许您对rxvt的默认设置不满意,您可以修改用户配置文件 “~/.Xresources”来设定它。修改全局配置文件“/etc/X11/Xresources/Xresources”,则对所有用户生效,只有root才可以修改此文件。
      这里有一些简单的选项:(以“!”起始的行是注释,您可以直接拷贝此文件的内容)
      !!=============================================================================
      !! RXVT-unicode setting
      !!=============================================================================
      !设置字体分辨率
      Xft.dpi:96
      !窗口大小
      Rxvt.geometry: 80x40+80+80
      !颜色
      Rxvt.background:#333333
      Rxvt.foreground:antiquewhite
      Rxvt.inheritPixmap:False
      Rxvt.colorBD:yellow
      Rxvt.colorUL:antiquewhite
      !滚动条
      Rxvt.scrollBar:True
      Rxvt.scrollBar_left:True
      Rxvt.scrollBar_floating:False
      Rxvt.scrollstyle:next
      Rxvt.scrollColor:#999999
      !屏幕缓冲
      Rxvt.saveLines:30000
      Rxvt.color12:DodgerBlue
      Rxvt.font:7x14,xft:AR PL New Sung
      !输入法一般设置为xim
      !inputMethod:xim;Scim除外                  
      !输入法样式可选:Root(置底) OverTheSpot(跟随) OffTheSpot OnTheSpot,后两种不是所有的都支持
      Rxvt.preeditType:Root
      
Tips:右键点击启动栏,“添加自启动器”,“自定义程序”,便可以在添加自己的启动图标。
在线帮助系统
------------
   您可以使用命令“man”或者“info”来阅读Linux命令的在线文档。命令的格式非常简单:
      man xxx
   大部分命令手册为英文版,如果您的英文不太好,或许有些困难。在后面的“系统管理”章节中,我们会尽力向您介绍命令的使用方法。
Tips:在使用“man”浏览器的时候,一些快捷键您可能会用到:
   Ctrl+f(orward)   向下翻一页   Ctrl+d(own)   向下翻半页
   Ctrl+b(ackward)   向上翻一页   Ctrl+u(p)   向上翻半页
   /   查找      q(uit)   退出
   以上为VI风格的键绑定。您也可以使用Emacs风格的键绑定,我们马上为您介绍
bash
====
   好了,现在我们换了一个遥控器,感觉顺手多了。现在来操练一下,下载一首mp3:
   我们使用《wget》这个程序,它非常可靠,完全值得您信赖。
   首先找到一个可以下载的地址,复制链接,在终端窗口内点击鼠标中键,把它粘贴进去。
   现在终端中大概是这种情形:
      http://www.download.net/xxx.mp3
   按下“Ctrl+a”组合键,我们发现光标移动到了行首。输入“wget”和空格
      wget http://www.download.net/xxx.mp3
   回车后,终端中出现一些信息,不一会儿工夫,mp3便下载完成。
   使用“Ctrl+a”组合键,我们就不需要使用方向键来移动光标,方向键每次只能移动一个字符,真是非常麻烦。
   您还可以使用“Ctrl+f”向前移动光标,“Ctrl+b”向后移动光标,“Ctrl+e”将光标移动到行末………………
Tips:Linux的图形界面中,鼠标中键通常执行“粘贴”的操作,如果您的鼠标没有中键,您可以左右键同时按下。
中止正在运行的程序
------------------
   如果一个命令的待续时间很长,以致于您不能够在当前Shell中继续其它操作,您可以使用“Ctrl+c”来强行中止它。
Ctrl+s
------
   出于意外,有时您可能会按下“Ctrl+s”这个组合键。这时Shell会被冻结,请尝试使用“Ctrl+q”组合键,看能否恢复正常。
键绑定
------
   等等,有必要记这么多快捷键么?都这么复杂!
   我们建议您还是记住它们,可以大幅度的提高您操作的效率。因为这是readline控件键绑定,在使用readline控件的任何程序中,您都可以使用它们。例如bash、lftp、gdb等程序;同时,Linux下最著名的Emacs编辑器,也是这种风格的键绑定(其实是readline使用了Emacs风格的键绑定才对),甚至FireFox中,也可以使用类似风格的快捷键!(Linux下主要有两种风格的键绑定,一种是VI风格,另一种是Emacs风格,我们会在后面的章节中向您介绍)
   现在我把ReadLine的键绑定为您列举出来,您可以自行尝试。(运行“man readline”命令,来查看ReadLine手册)
      我们先来了解一些约定:
      /C-a 表示 Ctrl+a
      /M-a 表示 Meta+a  Meta键在PC中通常为ALT键
      A   表示 Shift+a
      (括号中的/A代表Alt,/S代表Shift)
   移动命令:
   /C-a   移动到行首   Aheah
   /C-e   移动到行末   End
   /C-f   向前移动一个字符   Forward
   /C-b   向后移动一个字符   Backward
   /M-f   向前移动一个单词
   /M-b   向后移动一个单词
   /C-l   清空屏幕      cLear
   这两个命令您也可以理解为移动命令
   /C-p   上翻,前一条命令   Previous
   /C-n   下翻,后一条命令   Next
   编辑命令:
   /C-d   删除光标后的一个字符   /M-d   删除光标后的一个单词   Delete
   /BackSpace 删除光标前的一个字符  /M-BackSpace 删除光标前的一个单词
   /C-k   删除光标至行末的部分    Kill
   /C-u   删除光标至行首的部分    Unix-line-discard
   /C-w   删除光标前的一个单词    Word
   /C-y   粘贴(最后删除的对象)    Yank
   /C--   撤消   
   搜索历史纪录:
   /C-r   连续使用“C-r”可以查找下一个
   /M-p
   /M-n
   补全:
   /Tab   使用频率最高的功能!
   /C-o   遍历补全,默认没有这个键绑定,我们稍后设置它。
   /M-?   M-=   列出所有可能选项,相当于按两次Tab键(M-? 实际按键为/A+/S+/)
   /M-#   注释掉当前命令,用于将当前命令暂存于历史纪录列表(/A+/S+3)
   /M-!   补全命令,通常用来补全子命令,例如“sudo”的子命令(/A+/S+1)
   /M-~   补全用户名(/A+/S+`)
   /M-@   补全主机名(/A+/S+2)
   /M-$   补全变量(/A+/S+4)
   /M-_   补全历史纪录中的纪录(/A+/S+-)
   /M-*   将所有可能选项放到命令行中(/A+/S+8)
非增量查找 (待续)
自定义键绑定
----------
   我们可以通过修改“/etc/inputrc”文件来改变键绑定,不过我们建议您还是使用默认的键绑定,以免带来不必要的烦恼。当然了,Emacs风格的键绑定是非常通用的,您随时都有可能用到。
   在文件中添加该行,可以将ReadLine的键绑定设为VI风格。(Bash、Lftp等使用ReadLine的软件同时生效)
   set editing-mode vi
   找到这一行:
   $if mode=emacs
   在它的下面添加该行
   "^O": menu-complete
   重新登录Shell,您就可以使用/C-o(Ctrl+o)来遍历补全。假如您的文件名为中文,或者出现乱码时,您可以使用/M-*将所有文件名放入命令行,再删除多余的,这真是麻烦极了!所以您可以使用/C-o遍历补全,将所有可能的选项轮流放入命令行。
通配符
------
   使用“?”代表任意单个字符。例如“???lo”,表示“lo”前有三个字符,它可以匹配“Hello”
   使用“*”代表随意几个任意字符。例如“*.iso”,代表所有iso格式的文件。
Tips:您可以将遍历补全和通配符结合使用,以提高效率。
   例如:
   cd */   则遍历补全只补全文件夹
   chmview   *.chm 则遍历补全只补全chm文件
进程管理
--------
   在命令的末尾加上一个“&”符号,表示在后台执行该命令,例如:
   wget http://www.download.net/xxx/mp3 &
   如果使用“;”将多个命令连结起来,则表示命令按先后顺序执行命令
   如果使用“&&”将多个命令连结起来,则表示只有前面的命令执行成功,后面的命令才能得以执行
   `command`,如果一个命令中包含以“`”(Esc键下方的按键)包围的命令,那么这部分命令将被优先执行,执行结果被代入上一级命令继续执行,例如创建一个以当前时间命名的文件:
   touch `date +%m.%d_%H:%M:%S`
   “touch”命令能够创建一个文件,它的操作对象,为“date +%m%d%H%M%S”命令的输出“06.06_06:06:60”
        这样,我们创建了一个名为“06.06_06:06:60”的文件(六月六日六时六分刚过六十秒-_-!)
   
   当一个进程已经在前台执行,您可以使用“Ctrl+z”将它丢入后台
   不过这个时候进程的状态为
   [1]+  Stopped   xxx
   您可以使用“bg”命令使它在后台继续运行。这时它的状态为
   [1]+ xxx &
   使用“fg”命令,就可以把一个后台的命令取回前台运行
   
   方括号中的数字为命令的任务编号,您可以使用“jobs”命令来查看所有后台运行的命令
   如果后台运行多个命令,您可以在“bg”或者“fg”后跟任务编号,作为操作对象,例如:
   bg 2
管道、重定向
------------
   “>”为重定向符号,它的作用是将命令的输出重定向到一个文件中。比如我们想把命令“ls”的结果保存为“FileList”文件,作一个清单,我们可以使用重定向符号来完成它:
   ls -l > FileList
   “>>”作为与“>”基本相同,不同点在于,“>>”以追加的方式,将命令的输出写入文件的末尾。
   “(ayer) -l(oop) (0) -sh(uffle) -pl(aylist) (mp3_playlist)
   一阵猛按键,一个蛮长的命令就完成了。
   而且补全结果不唯一时给出的提示中含有简短的说明,这样通常也不用看帮助了:)比如:
   mplayer -l后,自动将参数补全为 -lo 然后给出提示
   -{lo}adidx (Load index from file) -{lo}op (Loop playback) {花括号中为青色文字}
   它的语法高亮功能十分有用,如果你输入的命令是正确的,则用青色显示,正确的参数用白色显示,错误的则一律用红色。
   2、方便的历史纪录搜索
   还是上面的那个命令
   mplayer -loop 0 -shuffle -playlist mp3_playlist
   你可以用上翻配合下翻浏览命令历史,直到找到这个命令,当然那样太慢了。
   你还可以输入以上命令中的某一部分,如“uffle”只要翻一次就可以找到了
   (还可以META+上翻在已输入部分中插入某一历史单词)
   
   3、文件夹历史纪录
   dirh (dir history)就可以显示当前会话中进入的文件夹纪录
   使用“prevd”和“nextd”跳转
   假如你分别进入过1 2 3 4 5 这几个文件夹,"prevd 4 "可以让你在 5 中直接跳到 1
其它的功能,fish基本是兼容bash的。键绑定也非常的相似,少数的键绑定不尽一致,例如:
   /C-h   删除光标前的一个字符(bash为退格键,不方便)
         
   您可以修改“/etc/fish_inputrc”这个文件,增加以下行:
    "/C-n": history-search-forward
    "/C-p": history-search-backward
    现在使用Ctrl+p上翻,使用Ctrl+n下翻。如果您已经在命令行中输入字符,那么Ctrl+p就是在历史纪录向上查找您输入的字符,Ctrl+n为向下查找,非常的方便。
设定您的默认Shell
=================
   如果您能够拥有root权限,您可以直接修改“/etc/passwd”文件。找到您用户ID起始的行
   user:x:1000:112:user,,,:/home/user:/bin/bash
   最后一个“:”后为您登录的默认Shell,“/bin/bash”是您的程序“bash”的主程序路径。您的“fish”主程序的路径通常为“/usr/bin/fish”。
   “/etc/shells”中列出系统中所有可用的Shell(“/bin/false”代表禁用Shell)
   您也可以使用如下命令改变您的默认Shell
   chsh -s /usr/bin/fish
   (需要输入您的密码)
Tips:您可以使用“whereis xxx”命令,来查找“xxx”程序的安装位置,我们会在系统管理中向您详细介绍。
设定命令的搜索路径
==================
    使用“echo $PATH”,可以显示“$PATH”变量,输出如下:
          /usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin /usr/bin/X11 /usr/games /usr/X11R6/bin
    它是一个环境变量,代表您所执行命令的搜索路径。   
    当您执行一个命令时,Shell会到“$PATH”变量定义的路径去搜索,并运行与您的命令同名的可执行文件。如果您的程序或者脚本等可执行文件并不包含在上面的路径中,您必须使用绝对路径或者相对路径定位您的可执行文件。
    例如:
    /usr/local/mplayer -menu xxx.rmvb
    /etc/init.d/powernowd start
    cd /usr/local/   &&  ./mplayer -menu xxx.rmvb
    您可以修改“/etc/environment”文件来设定您的命令搜索路径,找到“PATH”起始的行
    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin"
    在双引号中添加您的自定义路径,并以“:”分隔。

本文来自ChinaUnix博客,如果查看原文请点:[url]http://blog.chinaunix.net/u1/59058/showart_465904.html[/url]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值