第五章 手把手教会你使用 Linux 控制台

本文以openSUSE 12.2为示例系统,包括控制台下基础知识、常用命令精选、字符界面必备软件等版块,添加定制命令行提示符、添加背景图片等内容,手把手教会初学者比较熟练的使用Linux控制台。
“没在控制台看过片儿,别说你用过Linux”。Linux操作系统强大的命令行能力绝对秒杀所有对手。如果说各种图形界面是“o妹”的华丽衣服,那么什么都没有的命令行界面算什么呢?哎,我都没敢去想,还是正经点探讨知识吧。

一、基础知识普及

1、命令行界面(Command Line Interface,简写:CLI)是图形界面出现之前应用最为广泛的一种用户界面,通常不支持鼠标,采用键盘输入命令,计算机接收后执行并且输出,也称为字符用户界面(CUI)。
命令行界面最大的特点是效率高,包括两个方面:计算机本身不需要渲染臃肿的图形界面,省下更多的硬件资源譬如:内存、CPU等供程序更快执行,这一点在多用户多控制台登陆协作以及24小时运作的服务器电脑表现最明显,操作者可以“自由”组合命令实现自动化操作,编写脚本轻松实现自动化,而且纯键盘操作省却不断拨弄鼠标的时间和繁琐。所以电影上面超级NB的黑客们总是使用命令行,手指翻飞一阵敲打之后轻易侵入美国军方数据库,盗取绝密文件然后引发江湖新一轮腥风血雨,反正我是从来没有见过有黑客用一根网线颤巍巍的缓冲出对方的桌面,然后幽幽的光线下“咔咔”两声鼠标点击“文件另存为”……命令行界面的缺点也就是图形界面的优点:生动形象,鼠标一点万事OK。
2、运行级别:操作系统当前正在运行的功能级别就是运行级别。Linux的运行级别有七种(0~6),具体含义为:

运行级别原理:
在/etc/rc.d #目录中存在rc0.d~rc6.d七个目录,储存七个运行级别的信息。
目录中都是一些软链接,指向储存在 etc/rc.d/boot.d目录中的服务器脚本文件,开机运行时系统会根据指定的运行级别进入对应的rc*.d的目录,并按文件名顺序检索目录下的链接文件,K开头的文件系统将终止对应的服务,S开头的文件系统将开启对应的服务。
openSUSE 发行版默认的运行级别是init 5.
3、系统控制台(System console)是早期为了充分利用电脑资源,连接若干个由键盘和显示器组成的输入输出设备组成的,键盘输入用户指令之后发送到计算机计算处理然后反馈到显示器。顾名思义,虚拟控制台(Virtual console)就是计算机利用本身的硬件模拟出多个命令行界面,譬如Linux下的字符终端。控制台程序(Console applications)是字符界面下运行的应用程序,譬如Vi、fbi、w3m等。终端仿真器(Terminal emulator)是替代控制台或终端的程序,经常称为“虚拟终端”。概念好多,都绕晕了,简单一点可能更好,在计算机系统软件层面,刚进去黑漆漆的界面称作控制台终端,图形界面下打开的命令行程序,譬如gnome-terminal等,称为虚拟终端。
Linux支持多用户同时登陆,包括在本机同时登陆,默认提供7个虚拟控制台,前六个为命令行界面,名称依次为tty1~tty6,第七个为图形界面(如果安装的话),运行X-Window。进入方式非常简单,按住Ctrl+Alt+F1(~F7)即可进入相应终端,其中F7为图形界面。命令行界面下,“login:”输入帐号,“password:”输入密码,输入密码不显示任何字符,完全是为了安全考虑,防止传说中的星号阅读器,哈哈。注销使用“exit”命令,注销之后终端后台运行的程序不会终止。
控制台终端并不等同于Linux本身,它也是一个外围程序,叫做“shell”,中文就是“壳”的意思。把Linux比喻成一只海螺的话,内核(kernel)就是里面嫩嫩的螺肉,如果细嫩的一坨肉幽幽地四处游荡,恐怕分分钟都熬不过就被天敌美餐一顿,所以需要长出厚厚硬硬的一层壳保护自己,而shell就是Linux的壳,作用相当于X-window,提供用户界面,将使用者的输入发送给内核处理,然后把输出信息反馈给使用者。Linux默认的shell是bash,支持一次输入多个命令,支持后台启动程序(命令之后加&)。
一般情况下,如果希望开机时自动进入字符界面,将上文显示的默认运行级别更改为3即可。命令如下:

su
vi /etc/inittab

将其中id:5:initdefault:中的5改为3.
但是,不同的发行版可能做了一些改变,譬如openSUSE。因此,想上面那样更改是没有用的,怎么办呢?别着急,当然也有办法,仔细看一下,/etc/inittab里面有这么一段话:

意思大约就是默认运行级别是在这里定义的,请注意/etc/systemd/system/default.target的软链接需要更改至譬如/lib/systemd/system/runlevel3.target 。这下就简单了,运行以下两条命令即可:

unlink /etc/systemd/system/default.target 
ln -s /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target

这些基础知识真难看,好烦躁,看的心情真压抑,非常懒得看,看这些一点都没有用,说半天跟控制台操作电脑没有半毛钱关系,干嘛呢!好吧,接下来换点有意思的:命令行存活。存活?听起来很吊的样子,是什么呢?不瞒你说,还是基础知识……

二、控制台命令之存活篇

1、命令行提示符
登录之后,显示命令提示符:raitarlee@linux-te8a:~> ,其中raitarlee为用户名,@之后为登录主机,光标闪烁等待输入命令。某些情况下需要root权限,可以输入“su”命令获得root权限,此时命令提示符显示为linux-te8a:/home/raitarlee #,其中“:”之后“#”之前部分为当前所在目录,“#”在Linux提示符中代表root。
这些命令提示符都是系统默认显示的状态,其实用户完全可以进行更改,使其更加符合个人需求,彰显个性。使用vi编辑~/.bashrc文件,在最后加上:export PS1=’$ ‘即可,其中u显示当前用户账号,h显示当前主机名,W显示当前路径,A显示24小时格式时间,$显示’$'符号。这只是其中一个例子,若想更加深度的定制命令行提示符,就需要理解各个字符指定显示的内容,列举如下:

正所谓“人不好色,天诛地灭”,控制台下黑漆漆白晃晃闪眼的光标闪烁你还能忍受多久?
黑白在左,色彩在右,走在Linux的两旁,随时撒种,随时开花,将这一径长途,点缀的香花弥漫……
将提示符添加颜色其实非常简单,只不过是在上述基础上面添加修饰,正如语文的造句,黑白色相当于“我有一个苹果”,而彩色提示符相当于添加形容词作状语,是原来的句子更加生动形象,变成“我有一个红色的苹果”。可是计算机不懂高深的语文,它们的二进制大脑只学会了简单的“010101……”,因此,需要我们把这个表示颜色的修饰翻译为计算机能懂的语言。首先,我们需要一个词汇表:
ASCII颜色控制代码


懂了词汇,想造句还需要满足一定的语法吧,否则我们见了老外上去一阵胡扯“Hello afternoon morning good how……”,不仅听不懂,人家还以为来了神经病呢,所以写法按照一定的规范。在PS1中设置颜色的格式为\e[F;Bm] ,其中F代表前景色,B代表背景色。现在,只需要把F、B更改为上表内数字并置于/u等前面进行修饰,就万事大吉了。譬如PS1=’\e[31m]\u@\e[36m]\h \w \A]$\e[m]’。
设置完毕之后,运行source .bashrc,独一无二的命令行提示符就显现出来。
你不想设置吗?难道你不想赶紧设置吗?为什么你不想现在就设置?现在不设置,等你回首往事,自己后悔去吧!(悲壮音乐起,画外音:曾经有一个美丽的Linux控制台放在我面前,我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。如果上天能够给我一个再来一次的机会,我会对彩色命令行提示符说三个字:我爱你。如果非要在这份爱上加上一个期限,我希望是……一万年!)
2、Linux命令格式
Linux命令基本格式为:命令名 【选项】 【参数】,其中选项和参数允许省略。Linux命令对大小写敏感,命令可以使用Tab键补全。
譬如:rm -i file,这条命令中,rm为命令名,i为选项,file是参数,动作为删除名为file的文件,删除之前提示。命令名总是处于一条命令的起始位置,选项可以是多个,与命令名空格之后用“-”连接,多个选项时可以连在一起,譬如rm -ir dir,意思是删除名为dir的目录,删除之前提示。参数是执行命令涉及的操作对象,如本例中的目标文件file。
3、Linux必备命令
Linux命令纷繁复杂,功能强大,不过对于桌面用户来讲,掌握最基本的命令即可在Linux命令行界面强势存活,用熟练了甚至可以成功致富奔小康哦~话不多说,接下来看一看我为大家精心挑选的Linux存活必备命令吧。
系统管理
A、系统信息

B、文件管理
Linux文件系统跟Windows不同,记得刚刚安装Linux的时候,惊恐的发现自己的电脑上面亲爱的C、D、E、F、G、H……盘不见了,吓得惶惶然,赶紧重启进入Windows系统查找,发现它们依然安静的躺在那里才松了一口气,现在想起来好生可笑,全然是因为不懂Linux文件系统导致的。现在,让我们共同探索Linux堪称完美的文件系统。
首先需要打破一个认识误区,在脑海中根深蒂固的C、D、E等盘符是经常使用Windows系统带给我们的偏见,其实那些盘符只是代表逻辑分区,物理磁盘中甚至可能散落各地,这种文件系统容易产生文件碎片,因此Windows系统需要定期进行磁盘清理和碎片整理,否则硬盘的读写速度会受到严重影响,甚至破坏硬盘本身。
在Linux系统中,文件系统不是这样划分,而是采用一种叫做目录树的结构。参天大树,从根部开始,越往上越发枝繁叶茂。所谓目录树,也有一个根目录(root),用/表示,所有的目录、文件和设备全部在根目录之下。在“/”下,主要有bin、dev、home、mnt、proc等目录,各自储存专门的信息,每个目录主要内容及功能如下:

认识Linux文件系统之后,就可以进行命令行界面下的文件管理。Linux默认并不会挂载全部的磁盘分区,首先需要学会挂载。挂载一块分区主要需要两条命令:fdisk和mount。使用fdisk -l查看硬盘分区(可能需要root权限),这时候显示的并不是你给它们重新更改的名字,而是sda1~sdax,后面跟着分区大小、分区类型和起至位置等信息,需要我们分区的大小才能正确选择以便挂载。接下来就可以使用mount命令进行挂载,选好挂载点,Linux下挂载点应该是目录,使用mount <参数> <分区> <挂载点>格式,譬如mount /dev/sda7 /run/media/raitarlee/documents/,就是把sda7这个分区挂载到后面的挂载点,然后就可以使用了。安全起见,使用完毕之后尽量卸载分区,命令为umount <分区>,譬如:umount /dev/sda7。
懂得了挂载分区,接下来的工作就更加容易展开,主要会用到以下命令:

C、文件操作

D、压缩解压
为了便于管理,使文件一目了然,我们经常将一堆有联系的文件放到同一个文件夹中,这其实叫做“打包”;为了节省存储空间,方便网络共享,我们经常将文件或者文件夹压缩……命令行模式下,我们同样可以这样。
a、tar,打包多个文件到一个文件夹,可以同时进行压缩,常用范例为:

同时,tar命令可以用于解压缩,命令更加简单,将上述压缩命令中的参数c换为x,后面跟目标文件即可。譬如:tar -zcvf <目标文件>。
b、其他压缩解压缩命令还有zip、7z、rar等,使用方式大同小异,区别无非是最终的压缩包格式不同而已。
E、进程管理

F、系统升级与软件安装
openSUSE 使用的是zypper软件包管理器,可以用于系统升级、软件源管理、软件安装与卸载等过程。
升级过程中需要root权限,相关命令可以在前面添加sudo临时获得,也可以直接使用su,在一段时间内获得root权限,直到使用exit命令退出。

G、计算机

三、命令行界面必备软件

哎……别着急,等等,有了命令存活篇,那还有进阶篇、高手篇呢,你该不会是落了吧?哎……
还哎,再哎掌嘴。什么进阶篇、高手篇,早就说了我是一个非专业业余爱好者,能会这点命令有时候还得拿出笔记本看着往电脑输入,哪儿会些高手的东西!想高手,man去吧。路漫漫其修远兮,君当上下而求索……
不废话了,青春易逝啊,还是抓紧时间看看接下来的内容,小心韶华负你。
作为一名桌面电脑用户,目的无非就是上个网、听听歌、看个图片、找个片儿呗,这些功能Linux命令行界面全部都能满足你,是的,你想要的,这里都有。而且,控制台还能给你超出你期望的“特服”——特殊服务哦,想要吧?往下看吧。
打开电脑,Ctrl+Alt+F3进入控制台,手指翻飞使用着上文中的命令驰骋于硬盘,突然,边塞传来紧急文书,慌忙拆开来看时,你变得茫然失措,纵抓耳挠腮亦于事无补,奈何,难道大好江山就要这么被无情侵略?你脑海里想,难道电脑出问题了,为什么一个个好好的汉字变成了正方形,中毒了吗?不是说Linux是世界上最安全的系统吗,怎么会,这么渣?#¥%&&@@@%¥……哎呀,别着急吐槽,其实,只需要一个小软件,这一切就会瞬间改变。
之所以不能在控制台下查看汉字,是因为图形界面中的中文环境并不在字符界面下运行,换句话说,字符界面下只需要安装显示汉字的软件,这一切就都能够轻松搞定了。什么软件呢,这么神奇?当然就是大名鼎鼎的fbterm。fbterm是使用framebuffer设备的虚拟终端,能够在字符界面下提供中文环境。停,那这framebuffer又是什么玩意儿呢?framebuffer就相当于一个大水池,CPU把需要显示的内容经过计算之后冲水进framebuffer,然后framebuffer又把这股数据流冲到显示器,而且中间不进行任何数据计算。因此,使用framebuffer会加重电脑CPU的负担。这下明白了吧,安装之。运行fbterm,再看一眼,所有的汉字全部显示正常。至于输入汉字,就推荐安装国人精品:小小输入法,或者ibus-fbterm,还有fctix也能够支持fbterm(字符界面输入法欢迎大家补写,共同帮助坛友)。这样,就能够阅读输入两不误了。阅读檄文,赶紧上阵杀敌去吧。
在字符界面下编辑文本,该闹哪样?字符界面下可没有office组件啊!莫慌,从传说中走来的vim编辑器就是绝对的一把大杀器。使用命令vi filename就可以打开或者新建一个文本文件,刚刚进入时,处于vim编辑器的普通模式,该模式下只能看不能进行编辑等操作;按下“i”键,进入编辑模式,此时可以对文件进行编辑,点击“Esc”键重新进入普通模式;按下“:”键,进入命令模式,此时输入wq会保存文件并退出,输入q!会强制退出,而不会保留更改。关于vim,还有两点需要牢记:1、每个键都是功能键;2、除了方向键,使用j、i、k、l键移动光标效率会更高。
翻看硬盘,某某文件夹里面的某某女神安静的躺在那里呢,等你吆~对了,已经装过mplayer了,赶紧,一条命令mplayer &&&&.avi,鲜活如真,动感惑人……干嘛呢,你可是21世纪祖国的花朵,还不赶紧继续探索,将来为祖国的自主知识产权计算机系统做贡献,怎么能沉迷于动画片呢?
匆匆瞥两眼,恋恋不舍的Esc,继续cd、ls、less……好无聊,这时候一边听歌一边学习才惬意呢,图形界面下还有banshee、amrok,现在在字符界面下,黑不眬咚,前不着村后不着店的,眼看着一个亲戚都没有,现在想听个歌都难……正当你欲哭无泪的时候,突然灵光乍现,一道金光在你的脑海里面乍现:mplayer,上前听命。mplayer依然神勇,美妙的音乐徐徐飘来。只是,听完三四首歌之后,但恨一首歌没有一小时那么长……告诉你吧,字符界面下有专业的音乐播放器,还自带图形界面哦。不信,安装moc试试吧。
不知道怎么的,虽然软件的名字叫做moc,但是要想运行它,需要输入mocp。左侧是音乐文件,按A添加进播放列表,q最小化后台听歌,Q直接退出软件。看看它优雅的淡蓝色界面吧:



坐在电脑前,吃着火锅还听着歌,突然就遇到难题了……按说不难,就是想看图片。这控制台连电影都能看,区区几张图片肯定更加不在话下,但是,任凭你使出吃奶的劲儿,屏幕总还是漆黑一片,不见动静。真不屑的说你了,“术业有专攻”,想看图片,当然首先就得请老师来教你的电脑啊。接下来,有请fbi粉墨登场。不过可不是联邦调查局的墨镜西装男,这真的只是一个十几kb的看图软件。好了,不需要教怎么用吧,还能放大缩小哦。
那如果,想截图,就像我现在写东西做插图一样,怎么办?来,偷偷告诉你,有一个叫做fbgrab的小软件,它可以……哎,谁让你这么大声音重复的!安静,还有一个小窍门哦,试试看fbgrab -s 10 a.png&吧,它可以后台运行等到10秒钟之后截取屏幕,足够你打开希望截取的内容了吧。这更是秘密哦,地球人就我和你知道……
问你,平时用什么浏览器?IE、Firefox 还是Google Chrome?你开始想了,那肯定是***,然后叽哩巴拉一大堆道理,外加一大堆理由,再然后各个主流浏览器的粉丝们开始干架,疯狂维护自己心目中浏览器之神的威名。其实,再仔细想想,客观地讲一下,差别真的那么大吗?更多的,这些区别是我们心中的偏见赋予的,软件本身各有千秋,目标群体千差万别,因此很多功能就是众口难调,绝非一言两语可以讲清。
但是,今天我告诉你的这款浏览器,说出来之后你就能够像神一样超脱出群殴的杂乱场景,俯视众生,长叹一口气:这群无知的现代人……
不卖关子了,这款神奇的浏览器就是w3m。一款纯字符界面浏览器,超级简洁、超级高效、超级原始人的哦!
外加一个w3m-inline-image包的话还能看图。使用方法非常简单,命令行提示符后面输入w3m <url网址>即可,纯键盘操作,常用快捷键为B返回上一页,b向上翻页,空格键向下翻页,q退出。上一张w3m下浏览opensuse官方网站的图片,绿色蜥蜴性感依旧啊……


好了,正点、闲聊加上神经质的臆想,终于把字符界面下使用Linux的方法讲完了,试试看吧,亲,用我教你的方法,保证就连高手看到你的电脑也不会小看你的哦。
算了,还是坦白吧。
自古至今,江湖上混的人,哪一个高手低手没有点保留曲目?
黑漆漆的控制台界面,你也早就看够了吧,告诉你一个秘密,我能把它变成壁纸哦,就跟图形界面一样,很神奇的哦。安装home:MargueriteSu软件源中的fbv软件,把下面的代码写进新文件,然后保存为cfbterm,最后管理员命令将它移动到/usr/bin文件夹中,每次使用cfbterm启动控制台就可以体验五花八门的字符界面了。

#控制台添加背景图片的脚本
echo -ne "\e?25l" # hide cursor 
fbv -ciuker "/更改为背景图片的绝对路径" << EOF 
q 
EOF 
shift 
export FBTERM_BACKGROUND_IMAGE=1 
exec fbterm "$@"

此文与本人其他帖子互为系列,系培训期间闲来无事总结自己使用Linux的经验进行分享,希望能够帮助Linux爱好者。
其他帖子:
第一章 “o”家有女初长成](https://forum.suse.org.cn/viewtopic.php?f=28&t=1607)
第二章 喜迁新居](https://forum.suse.org.cn/viewtopic.php?f=28&t=1623)
第三章 为“o妹”置办家具](https://forum.suse.org.cn/viewtopic.php?f=28&t=1755)
第四章 给“o妹”披层薄纱](https://forum.suse.org.cn/viewtopic.php?f=28&t=1770)

1赞

谢谢楼主,楼主可以的,楼主幸苦了,希望有更多更好的面向新手的好文章。

PS:我自作主张帮楼主改了下排版,没动正文,除了把几个「opensuse」和「Opensuse」改成「openSUSE」了以外。。。

谢谢了,更改之后果然神清气爽好看多了,嘿嘿~

这个有错别字, 楼主介绍一下简单的文本编辑器吧. 例如 nano,vi 等, 我觉得这个还是大多数新手紧急需要的.

改好了,我一直用 vi,等有时间写一下我的使用经验吧。算是抛砖引玉,怕写出来不成样子,坛子里的牛人可以写写

非常好的帖子,受益匪浅。如果我安装准备好的话,这应该就是我梦想中的电脑。

按照楼主的介绍,终于顺利按照到了 fbterm,把自己增加到了 video 用户组,终于可以用了。

但是在输入法环节,我几经尝试,还是不能顺利在实现输入法的正确安装。

下面我介绍几个我错误的问题
(我是 opensuse 12.3 amd64)
1、用 zypper 安装,
安装过程顺利,但是在使用的时候提示,libl.so 没有找到链接文件。
2、用 opensuse Download 网页里面搜索 yong,然后下载一键安装,得到的提示同第 1 个错误

3、下载 yong.dgod.net 的 rpm 版本,不能安装

4、下载 yong.dgod.net 里的.7z 的安装安装文件
4.1 用 yong-tool.sh 进行安装,但是安装后没有反应,直接回到命令行提示符,也没有报错
4.2 用 yong-tool.sh 安装以后,在.bashrc 里面按照按照说明的内容进行设置变量
XMODIFIERS="@im=yong"
GTK_IM_MODULE=xim
QT_IM_MODULE=xim
结果直接不能进入系统,从登录选项里选择 recovery 也不能行,最后无奈,找了一个光盘启动盘进行修改成原来的.bashrc 才能正常登录。

  1. 再次回过头用 zypper 安装一次
    提示:yong: error while loading shared libraries: libl.so: cannot open shared object file: No such file or directory
    不能找到链接。
    然后用 root 进行运行 yong -d,得到一样的结果。
    然后在 dolphin 里面找到 libl.so,发现该文件位于 /usr/lib64/yong 文件夹里面,是正常的文件,不是一个链接。

最后我只能在这里发帖,希望得到帮助。期间我也找了 google、bing、baidu,都没有找到相关的解决方案。

谢谢楼主和各位高手的关注。

你好,谢谢捐赠和提问,我会继续努力的。
我现在外地参加培训,版本不同,这个问题我搞不太清楚。当时安装 ibus-fbterm 的时候,也存在问题,我已经在项目区提出问题。希望各位高手也多加关注,或者楼上可以另外开贴提问,寻求更多的解决办法。抱歉没能帮到你。

你好,尝试一下 fcitx 吧,据说支持 fbterm,我没试过,没有发言权。如果有问题可以求助 lilydjwg。

~> sudo dolphin
dolphin: cannot connect to X server
求大神指示一下该如何解决,还有 Fcitx 皮肤源码包或 deb 包怎么安装?

kdesu dolphin

或者
su

dolphin

又或者。。。。dolphin 本来就有超级用户模式啊。。。Fcitx 皮肤可以通过右击控制面板里的输入法标志,找到配置再找到皮肤管理,右下边有获得新皮肤。。。。当然你也可以设置原有皮肤。。。但是默认的皮肤不是蛮好看的么。。。

还有。。。为什么是 deb 包。。。还还有,有问题尽量开新帖。。。

好的 谢了,发完帖子我就找到答案了,

我继续我之前的控制台下的输入法的安装。

我最终成功安装的是fcitx-fbterm。

首先我从源里安装了 fbterm

然后在图形界面里把自己添加到了video用户组

然后安装libcap-progs软件包,这里面有setcap工具

下面就是根据 fcitx-im.org/wiki/Fbterm 的提示进行安装了

sudo setcap ‘cap_sys_tty_config+ep’ /usr/bin/fbterm

在添加fbterm的权限方面,我比较幼稚,把fbterm的权限改为了777

最后运行 fcitx-fbterm-helper -l 就可以在终端里输入汉字了。

同时我也发现,不需要提前运行 fbterm,直接运行fcitx-fbterm-helper -l就可以。

1赞

好,就是需要所有人共同尝试,众人拾柴火焰高。。。

补充一下关于命令行提示符的,就是楼主的 “二、控制台命令之存活篇 ==> 1、命令行提示符” 这部分的内容:
设置PS1 这个变量,要查2 个man 文档就可以了,
1. man bash' ,看一下 “PROMPTING” 这一节,主要讲了Bash 命令行提示符有哪些可以转义的特殊字符; 2.man 4 console_codes’ ,介绍了Linux 控制终端转义和控制序列,PS1 变量里的“31m”、“0m”,还有颜色代码之类的就是参考这篇文档来的。

$ ‘即可
楼主帖子里的这个配置不能正常工作,Bash 里定义变量的时候,如果字符串用单引号(’)括起来,特殊字符是不会转义的。如果有童鞋用了这个配置,会发现你的提示符还是定义PS1的字符串,并没有转义成想要的 “用户@主机 PWD 时间 $” 之类的提示符。

配置命令行提示符我也遇到个问题没有搞定,下面是我的配置:

1016 => $ cat /etc/bash.bashrc.local
#!/bin/bash
#
# Customizing Bash Environment
unset PS1 EDITOR VISUAL
EDITOR="/usr/bin/vim"
VISUAL=${EDITOR:=/usr/bin/vim}

if  "$UID" = 0 ]] ; then
  PS1="\n\\033[1;31m\]\u\\033[0m\]@\\033[0;34m\]\H\\033[0m\]:\\033[1;36m\]\w\\033[0m\]] \\033[32m\]\d - \t]\n\\033[0m\]\! => \\033[1;31m\]#\\033[0m\] "
else
  PS1="\n\\033[1;33m\]\u\\033[0m\]@\\033[0;34m\]\H\\033[0m\]:\\033[1;36m\]\w\\033[0m\]] \\033[32m\]\d - \t]\n\\033[0m\]\! => \\033[1;33m\]$\\033[0m\] "
fi
export PS1 EDITOR VISUAL

效果如下:

!](http://farm4.staticflickr.com/3766/11114265513_d149cb148a_o.png)
](http://www.flickr.com/photos/imtz/11114265513/)
Flickr 上 Terry ZhengBash-prompting
我没有用 \$' 这个转义字符,因为我用了之后 root 用户登陆系统,并没有转义成 '#' ,反正我也要单独定义颜色,索性就自己判断 ${UID} 来指定是用 '#' 还是 '$' 了。 不知道是不是我的转义序列那里出错了,还是Bash有Bug,已经折腾N次了,我也试过不加其他转义序列,只用单独的$’ ,无论是在 tty 还是 Konsole 中,都没有用,登录 root 用户还是不会转义。还请高手指点一下,不胜感激!

Note:
$PS1 包含 \n' 以后, 要使用’ 保持换行. 这个序列应该出现在不移动光标的字符序列(如颜色转义序列)之前。它使 Bash 能够正确计算自动换行。

學習了 樓主辛苦~ 期待更新 進階篇

我的配置之后效果是这样的:




还补充一点,文中配置可以显示根用户 #:



楼上可能有更高要求的话,大家可以继续探讨。

进阶篇的话坐等高手大牛吧 :wave:

不能工作是因为我看错结果了,当时直接复制了原帖的配置,以为是单引号没有转义特殊字符,其实是因为转义字符没有用反斜杠( \ )。
export PS1=’\u@\h \W \A]$ '
写成反斜杠就正常了。

这里raitar 误会了,我说的我自己的配置根用户不会显示#。现在问题已经解决了,把 ${PS1} 的值用单引号就正常了,但是还不知道为什么会这样,需要高人指点。

修改后的配置,不相关的代码省略了:

if  "$UID" = 0 ]] ; then
  PS1='\n\\033[1;31m\]\u\\033[0m\]@\\033[0;34m\]\H\\033[0m\]:\\033[1;36m\]\w\\033[0m\]] \\033[32m\]\d - \t]\n\\033[0m\]\! => \\033[1;31m\]\$\\033[0m\] '
else
  PS1='\n\\033[1;33m\]\u\\033[0m\]@\\033[0;34m\]\H\\033[0m\]:\\033[1;36m\]\w\\033[0m\]] \\033[32m\]\d - \t]\n\\033[0m\]\! => \\033[1;33m\]\$\\033[0m\] '
fi

:1: 嫦娥三号发射也成功,庆祝

这老兄广告发的