1第3章Linux的常用命令本章学习目标命令的使用方式文件及目录操作命令文件压缩命令联机帮助命令进程管理的命令23.1使用命令3.1.1命令的使用方式在Linux系统中打开终端的方式有以下两种:种是在桌面上依次单击“主程序→系统工具→终端”可打开如图3-1的终端窗口;另一种是在Linux桌面上单击鼠标右键,从弹出的快捷菜单中选择“终端”命令,也可打开终端窗口。3一般的Linux使用者均为普通用户,而系统管理员一般使用超级用户帐号完成一些系统管理的工作要说明的是,不同的用户登录其终端的提示符略有不同,在图3-1中显示的是超级用户的提示符。如果是一般用户登录,其提示符如图3-2所示。Linux系统是以全双工的方式工作,即从键盘把字符输入系统,系统再将字符回送到终端并显示出来。通常,回送到终端的字符与输入字符相同,因此操作员看到的正是自己输入的字符。但也有个别的时候,系统不回送符号。4键盘上大多数字符是普通打印字符,它们没有特殊含义。只有少数特殊字符指示计算机做专门的操作。其中最常见的特殊字符是回车键RETURN,它表示输入行结束;系统收到回车信息便认为输入的当前行结束,系统的响应是让屏幕光标回到下一行行首。回车符只是控制符的一个例子。控制符是指控制终端工作方式的非显示字符。输入一般控制符必须先按下控制键,或称作CTRL键,然后再按所对应的字符键。例如,输入回车符可以直接按回车键,也可以先按控制键,再按m键。CONTROL-m或CTL-m也是回车符。一些常用的控制符有:CTL-d,它表示终端的输入结束;CTL-g控制终端响铃;CTL-h称为退格键,用于改正输入的错误.此外还有两个特殊键,一个是DELETE键,另一个是BREAK键。大多数LINUX系统中,DELETE键表示立即终止程序。在有些系统里,也用CTL-c终止程序。一般说来,BREAK键与DELETE键、CTL-c的功能基本相同。5终端显示提示符后,用户就可以输入命令请示系统执行。这里所谓命令就是请示调用某个程序。例如当用户输入date命令时,系统就去调用date程序显示当前的日期和时间,终端屏幕上会出现类似下面的信息:[root@chenlroot]#date日2月115:49:11CST2004当命令输入完毕后,一定不要忘记按回车健,因为系统只有收到回车键才认为命令行结束。又如询问当前有哪些用户挂在系统里。命令及响应如下所示:[root@chenlroot]#whoroot:0Feb115:41rootpts/0Feb115:46(:0.0)jlpts/1Feb115:40(:0.0)6还有另外的方法可以查看目前登录用户的注册信息。命令及响应如下所示:[root@chenlroot]#whoamirootpts/0Feb115:46(:0.0)这时系统仅回送用户自己的注册信息。假如用户打错了命令,系统将回答这一命令没有找到。[root@chenlroot]#whomwhom:unabletoopen/root/Mail/draft:没有那个文件或目录上面几条命令在终端中的输入方法及响应如图3-3所示。7另外,在终端上还有一个命令补齐(Command-LineCompletion)的操作技巧,所谓命令补齐是指当键入的字符足以确定目录中一个唯一的文件时,只须按Tab键就可以自动补齐该文件名的剩下部分,例如要把目录/freesoft下的文件gcc-3.8.1.tar.gz解包,当键入到tarxvfz/freesoft/g时,如果此文件是该目录下唯一以g开头的文件,这时就可以按下Tab键,这时命令会被自动补齐为:tarxvfz/freesoft/gcc-3.8.1.tar.gz,非常方便8Shell简介在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下的command.com。它接收用户命令,然后调用相应的应用程序。同时它又是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高阶语言中才具有的控制结构,包括循环和分支。在C++中,Shell是希尔排序的名称。window7中包含的shell9Shell简介基本上shell分两大类:一:图形界面shell(GraphicalUserInterfaceshell即GUIshell)例如:应用最为广泛的WindowsExplorer(微软的windows系列制作系统),还有也包括广为人知的Linuxshell,其中linuxshell包括Xwindowsmanger(BlackBox和FluxBox),以及功能更强大的CDE、GNOME、KD、XFCE。二:命令行式shell(CommandLineInterfaceshell,即CLIshell)例如:bash/sh/ksh/csh(Unix/linux系统)COMMAND.COM(MS-DOS系统)cmd.exe/命令提示字符(WindowsNT系统)10shell的类型在UNIX中主要有两大类shellBourneshell(包括sh,ksh,andbash)Bourneshell(sh)Kornshell(ksh)BourneAgainshell(bash)POSIXshell(sh)Cshell(包括cshandtcsh)Cshell(csh)TENEX/TOPSCshell(tcsh)113.1.2环境变量与特殊字符在linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现“commandnotfound”的提示内容。如果每次都到安装目标文件夹内,找到可执行文件来进行操作就太繁琐了。这涉及到环境变量PATH的设置问题,而PATH的设置也是在linux下定制环境变量的一个组成部分。Linux是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义。用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。12定制环境变量环境变量是和Shell紧密相关的,用户登录系统后就启动了一个Shell。对于Linux来说一般是bash,但也可以重新设定或切换到其它的Shell。根据发行版本的情况,bash有两个基本的系统级配置文件:/etc/bashrc和/etc/profile。这些配置文件包含两组不同的变量:shell变量和环境变量。前者只是在特定的shell中固定(如bash),后者在不同shell中固定。很明显,shell变量是局部的,而环境变量是全局的。环境变量是通过Shell命令来设置的,设置好的环境变量又可以被所有当前用户所运行的程序所使用。对于bash这个Shell程序来说,可以通过变量名来访问相应的环境变量,通过export来设置环境变量。133.1.2环境变量与特殊字符在Linux系统的终端中有几个最有用的bash变量,这些变量变量名及简单描述如下:HISTFILE:用于贮存历史命令的文件。HISTSIZE:历史命令列表的大小。HOME:当前用户的用户目录。OLDPWD:前一个工作目录。PATH:bash寻找可执行文件的搜索路径。PS1:命令行的一级提示符。PS2:命令行的二级提示符。PWD:当前工作目录。SECONDS:当前shell开始后所流逝的秒数。14这意味着bash保留了一定数目的先前已经在shell里输入过的命令。这个数目取决于一个叫做HISTSIZE的变量。使用历史记录列表最简单的方法是用上方向键。另一个使用命令历史文件的方法是用bash的内部命令history和fc(fix命令)命令来显示和编辑历史命令。history命令能以两种不同的方法来调用。第一种是:history[n]当history命令没有参数时,整个历史命令列表的内容将被显示出来。使用n参数的作用是仅有最后n个历史命令会被列出。例如,history5显示最后5个命令。15Bash有两级提示符。第一级提示符是经常见到的Bash在等待命令输入时的情况。第一级提示符的默认值是$符号。如果用户不喜欢这个符号,或者愿意自己定义提示符,只需修改PS1变量的值。例如将其改为:PS1=”输入一个命令:”第二级提示符是当Bash为执行某条命令需要用户输入更多信息时显示的。第二级提示符默认为“>”。如果需要自己定义该提示符,只需改变PS2变量的值。例如将其改为:PS2=”更多信息:”16用户也可以使用一些事先已经定义好的特殊字符。这些特殊字符将使提示符中包含当前时间之类的信息。表3-1列出了最常用的一些特殊字符及其含义。表3-1bash提示符常用特殊字符17特殊字符说明\!显示该命令的历史编号\#显示shell激活后,当前命令的历史编号\$显示一个$符号,如果当前用户是root则显示#符号\\显示一个反斜杠\d显示当前日期\h显示运行该shell的计算机主机名\n打印一个换行符,这将导致提示符跨行\s显示正在运行的Shell的名称\t显示当前时间\u显示当前用户的用户名\W显示当前工作目录基准名\w显示当前工作目录18下面来看几个实际例子:PS1=”\d”将使提示符变成显示日期,如下所示:一2月02而PS1=”d”,将使提示符变成如下所示:d若PS1=[\W@\h\w]将使提示符变成如下所示:[nic@chenl~/liunuxbook/nic]该例就是使用三个特殊字符的组合得到的。19命令别名通常是其他命令的缩写,用来减少键盘输入。还有一个使工作变得轻松的方法是使用命令别名命令格式为:alias[alias-name=’original-command’]其中,alias-name是用户给命令取的别名,original-command是原来的命令和参数。需要注意的是,由于Bash是以空格或者回车来识别原来的命令的,所以如果不使用引号就可能导致Bash只截取第一个字,从而出现错误。注意:在定义别名时,等号两边不能有空格,否则shell将不能决定要做什么。仅在命令中包含空格或特殊字符时才需要引号。如果键入不带任何参数的alias命令,将显示所有已定义的别名。命令别名203.1.3通配符基础通配符又称多义符。在描述文件时,有时在文件名部分用到一些通配符,以加强命令的功能。在Linux系统中有以下基本的通配符:?:表示该位置可以是一个任意的单个字符。*:表示该位置可以是若干个任意字符。方括号[charset]:可替代charset集中的任何单个字符下面对方括号通配符进行一些说明。例如[cChH]:表示在文件的该位置中可出现任意单个的c或h字符的大小写形式。通配符集还能描述介于字符对之间的所有字符。如“[a-z]”就可以代替任意小写字母,而[a-zA-Z]则可替代任意字母。注意可替代的字符包括a到z和A到Z字符对之间的所有字符。21那么,是否能在一条指令中用多个通配符呢?答案是肯定的。如rma*out*tmp?该命令可以删除一系列临时性的输出文件,如ab.out.temp1、ab.out.temp1等。UNIX或Linux系统可将一定相关的文件看作一个集合的一部分,用户可以用该集合去匹配。所以,如果需要显示nic-1.png,nic-3.png,nic-3.png,nic-4.png,nic-5.png,只须要在终端的命令提示符后输入:lsnic-[1-5].pngcpnic-[1-5].png/tmp/22这样利用通配符可以使指令的输入变得更加灵活。该技巧的可很容易实现显示一些文件名相关的文件。以上的各例在Linux系统的终端中所显示的结果如图3-5所示。233.2文件概念及操作命令3.2.1文件显示命令显示指定工作目录中所包含的内容的指令是ls,要说明的是ls命令列出文件的名字,而不是文件的内容。该命令的使用方式如下:ls[选项][文件