linux shell命令的详细使用方法及演示Word下载.docx
- 文档编号:16634494
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:23
- 大小:36.76KB
linux shell命令的详细使用方法及演示Word下载.docx
《linux shell命令的详细使用方法及演示Word下载.docx》由会员分享,可在线阅读,更多相关《linux shell命令的详细使用方法及演示Word下载.docx(23页珍藏版)》请在冰豆网上搜索。
二、提示符
三、改变$PATH
第六篇:
命令的别名、Shell函数/从这里出发/Shell常见问题
一、命令的别名、Shell函数
1、命令的别名
2、Shell函数
二、从这里出发
关于本文
相关文档
+++++++++++++++++++++++++++++++++++++++++++++++++++++
正文
本文的内容来源于MUO的Basics部分,其原始英文版可以从这里获得http:
//www.mandrakeuser.org/docs。
中文版来自吴晓光的CMUO是MandrakeLinux()为用户提供的入门手册,其内容实用并且实时更新,非常适合初学者做入门参考。
与常见的各种Linux教程不同,MUO介绍给Linux初学者的是学习Linux的方法而非对某个系统的描述,这对各种有着千差万别的Linux发行版的学习尤为重要。
本文编译整理时对相关章节做了相应的删改处理,去掉了针对MandrakeLinux的部分内容。
使用Shell
以下将介绍并解释基本的shell命令和机制。
一、超级工具
您或许听过这样的论调:
命令行(themommandline)早就已经过时了,那东西神秘兮兮的,等等。
有些人甚至觉得操作系统中应该没有这些命令才好。
事实是上,您可以不懂任何shell,就能使用Linux。
您启动系统后可以直接进入XWindow,最后在XWindow下关机。
我坚信,用Linux而不懂shell,就象开车只会用头档(firstgear)一样。
当然,最初看起来,直接而简单,在大多数情况下都管用。
但速度慢,而且无法真正体验驾驶的乐趣。
对,命令行很有趣。
就象用一大堆收集到的积木,竟可以完成许多意想不到的创举,一些极其复杂的工作,只需几行命令就可以解决。
这是因为,在Unix中,shell可不是简单的命令解释器(典型的有Windows中的DOS),而是一个全功能的编程环境。
这并不意味着shell非常容易学通,您知道,好事多磨,这还是要花点工夫的。
;
-)但请相信我,这绝对值得。
您在很短时间内,就能被一大帮门外汉吹捧为Unixwizard(奇才)。
*grin*
二、为了说明shell,这里需要一些背景知识。
1、Terminals,xterms与Shells
追溯到Unix诞生的那个年代,当时还没有现在流行的"
个人计算机"
。
被称为计算机的机器,还是吞吐磁带与magneticmemory(用术语'
core'
来表示系统memory)的庞然大物。
DEC公司(现在的Compaq)推出的PDP-11,体积小(被称为mini)而且价格底,在大学中引起了巨大的反响,很多学校直到那时才买得起一台计算机(PDP-11物美价廉,只有10000$)。
这些机器的操作系统由汇编语言、机器语言写成,所以运行起来效率很高,但都无法移植(unportable)。
每家计算机公司都给自己的机器配上独有的操作系统,然后再销售。
这种笨拙的作法很快就被人们意识到了,于是就开始兴建一个可以在不同品牌机器上运行的操作系统。
1969年,KenThompson开始写后来成为Unix的第一行代码。
(Thompson曾经参加了一个项目:
MULTICS,Unix是与这有关的一个玩笑词)其实,DennisRitchie为这个新的操作系统设计了一种新的编程语言--C语言后,事情才真正开始。
虽然Unix的效率不及原来的操作系统,但有三个突出的优点:
可以任意移植到其他机器,其中的C语言大大简化了编程,而且这些都free。
很快,全美国的大学都忙着开始为机器安装Unix。
2、终端(Terminals)
Unix是可以在许多种机器上运行的操作系统,但人们又如何使用这些机器呢?
他们是通过哑终端来连接到这些机器,也就是用键盘、显示器及足够的electronics(电子元件)组成的机器与中央计算机(centralcomputer)相连。
在这些终端上,用户可以敲字符(teletypy),这就是字符串'
tty'
表示终端设备文件,和'
getty'
命令的名称来历。
您可能会问,现在这些东西都在哪儿。
这些终端的厂家无法达成一项最终标准,这导致每种牌子的终端都有各自的键盘布局、各自的在屏幕上显示字符的方法、发送或接收什么信号表示什么字符、控制代码等等。
为了避免这些混乱,就创建了一个含有所有不同终端特性的(capability)文件,这就是'
termcap'
用一个工具打开'
/etc/termcap'
瞧瞧,可别吓着了;
-)。
Linux终端大多数用'
vt100'
或'
linux'
作为终端类型。
3、xterms
在八十年代初期,产生了一个Unix的图形子系统--theXWindowSystem。
九十年代早期,为了更好地实现基于Intel的Unix类系统上(如FreeBSD、NetBSD、Linux)的应用,产生了一个系统分支--XFree86。
XWindow中一个很大的好处是可以运行多个虚拟(virtual)终端。
甚至在XWindow下就有这么个应用程序--'
xterm'
您将发现'
和'
virtualterminal'
在很多情况下都是一样的。
有的地方说'
打开一个xterm'
,其实您不是非要用'
程序,其他的终端模拟器(terminalemulator),如rxvt、konsole、aterm、eterm、wterm等等,一样有效。
终端模拟器(又称为虚拟终端)通过伪(pseudo)tty设备--pty与系统相连,并且使用自己的显示标准--xterm。
这导致不同的终端模拟器可能在一些按键或程序上存在细小的差别,这取决于模拟器多大程度上遵守了'
的显示标准。
4、Shells
为了在终端中运行程序,需要shell。
shell是操作系统的一部分,用来与用户打交道,并且可以用来协调各个命令。
第一个真正的Unixshell--'
sh'
,亦称为'
Bourneshell'
,诞生于1975年,作者是SteveBourne。
很快,出现了其他shell,如基于原始'
的'
ksh'
、'
zsh'
,后者常用作专属Unixes系统中的标准shell;
也有一些从C语言中衍生出来的shell,如'
csh'
tcsh'
在Linux中,标注的shell是'
bash'
,即theGNUBourne-AgainShell(有点玩笑的味道……)。
这个shell功能非常强大(甚至有人觉得太庞大了),压缩的manpage就有50KB。
三、Shell起步
首先,有一点小说明:
在平常应用中,建议您不要用'
root'
帐号运行shell,如果您还是新手,这一点尤其要注意。
作为普通用户,不管您有意还是无意,都无法破坏系统;
但如果是'
,那就不同了,只要敲几个字母,就可能导致灾难性后果。
当您登入系统或打开一个xterm窗口,首先看到的是提示符(prompt)。
RedHatLinux的标准提示符包括了您的用户名、登入的主机名(没有设置的话,是'
localhost'
)、当前所在的目录(workingdirectory)、提示符号:
[tom@belbotom]$
我以用户名'
tom'
登入名为'
belbo'
的主机,当前在我的home目录--'
/home/tom'
中。
'
的提示符:
[root@belboroot]#
除了不同的用户名外,提示符号由'
$'
变成了'
#'
根据Bourneshell的传统,普通用户的提示符以'
结尾,而超级用户用'
提示符的每个部分都可以定制,您在后面将有更深的了解。
要运行命令的话,您只要在提示符后敲进命令,然后在按键。
shell将在其路径中(详情见后)搜索这个命令,找到以后就运行,并在终端里输出相应的结果(如果有的话),命令结束后,再给出新的提示符:
[tom@belbotom]$whoami
tom
顺带指出,当您敲ENTER时,光标(cursor)在哪里并不要紧,因为shell总是会整行地读取。
基本的命令有:
ls'
(listdirectory,列出目录内容)、'
cp'
(copy,复制)、'
mv'
(move/rename,移动/重命名),'
cd'
(changedirectory,改变目录),这些命令后面都可以跟上一帮可选项,这方面manpage有详细的介绍(manls,manmv等等)。
在您动身前往shell领地前,这里有几个术语(terminology)的简短说明。
命令可能带一些可选项(options)、参数(arguments):
mv-ifiledir
其中'
-i'
是命令'
的一个可选项,而'
file'
dir'
则是参数。
所有可选项在该命令的manpage都中有详细的介绍(此例中用manmv),而参数则由您提供。
可选项决定命令如何工作,而参数则用于确定命令作用的目标。
到目前为止,介绍得有点象许多人厌恶轻视的DOSshell,但伴随着下面的介绍,您将会有新的体验。
Unix(及后继者Linux)在命令行下面诞生,因此,Unix中的命令行有许多非常实用的功能。
在本篇中,我们将来作一些了解。
一、自动补齐;
如何用'
cd'
(改变目录,changedirectory)最快地从您当前所在的home目录跳到'
/usr/src/redhat/'
呢?
cd/u<
TAB>
sr<
r<
这称为'
命令行自动补齐'
(automaticcommandlinecompletion),这在平常应用中是不可缺少的。
让我们仔细看看这个例子:
扩展成了cd/usr/,很简单吧。
下面的
扩展为cd/usr/src/。
如果您只敲了cd/us,'
/usr'
下匹配的('
cd/u*/s*'
)三个子目录将列出供您选择:
/usr/sbin'
/usr/share'
/usr/src'
因此,键可以很方便地用于根据前几个字母,来查找匹配的文件或子目录。
比如,ls/usr/bin/zip将列出所有'
/usr/bin'
下面,以字符串'
zip'
开头的文件或子目录。
当然,完成这类任务还有更厉害的命令,但这个方法确实很管用。
另外,碰到长文件名时就显得特别方便。
假设您要安装一个名为'
boomshakalakwhizbang-4.6.4.5-i586.rpm'
的RPM包,您输入rpm-iboom,如果目录下没有其他文件能够匹配,那shell就会自动帮忙补齐。
cd/usrl
将扩展成cd/usr/src/linux,并等待继续。
中有两个匹配的目录:
/usr/src/linux-[...]'
/usr/src/linux'
如何告诉shell您想要后面的那个呢?
只要跟一个斜线(/,slash),就可以选择后面的那个了。
假如您不确定是'
/usr/src/linux/Documentation'
还是'
/usr/src/linux/documentation'
而您知道,Linux是区分大小写的。
如果已经仔细读过前面部分的话,您想到可以用:
cd/usrl/d
扩展成了'
/usr/src/linux/drivers/'
,因此应该是'
Documentation'
(大写的'
D'
)。
这种补齐对命令也有效:
[tom@belbotom]$gre<
grecordgrefergrep
[tom@belbotom]$gre
在这里shell将列出所有以字符串'
gre'
开头的已知命令。
二、命令行的历史记录
通过按向上方向键,您可以向后遍历近来在该控制台下输入的命令。
用向下方向键可以向前遍历。
与SHIFT键连用的话,您还可以遍历以往在该控制台中的输出。
您也可以编辑旧的命令,然后再运行。
按后,shell就进入"
reverse-i(ncremental)-search"
(向后增量搜索)模式。
现在输入您要找的命令的首字母:
(reverse-i-search)`'
:
.敲入'
i'
可能会变成:
(reverse-i-search)`i'
isdnctrlhangupippp0
如果您再按键,上面的命令将再次执行。
而如果您按了向右、向左方向键或,上面的命令将回到普通的命令行,这样您就可以进行适当编辑。
编辑命令行
通过光标和功能键(Home、End等键),您可以浏览并编辑命令行,如果您需要,还可以用键盘的快捷方式来完成一般的编辑:
l<
CTRLk>
:
删除从光标到行尾的部分
CTRLu>
删除从光标到行首的部分
ALTd>
删除从光标到当前单词结尾的部分
CTRLw>
删除从光标到当前单词开头的部分
CTRLa>
将光标移到行首
CTRLe>
将光标移到行尾
ALTa>
将光标移到当前单词头部
ALTe>
将光标移到当前单词尾部
CTRLy>
插入最近删除的单词
!
$>
重复前一个命令最后的参数。
例如:
您用命令mkdirpeter/pan/documents/tinkerbell新建了一个目录,现在您向用命令'
进入该目录,您可以用cd!
$,shell将把前一个命令'
mkdir'
的参数添加到现在的'
后面。
当您更深入了解Linux后,将看到这些快捷方式在其他应用程序下输入时,有时也有效,比如,在浏览器中的输入框中。
三、可用的Shell快捷方式
RedHatLinux带有不少快捷方式,其中一部分是bash原来就有的,而还有一些则是为您预先设置的(在后面您将看到如何设置)。
由于home目录是每位用户的活动中心,许多Unix对此有特殊的快捷方式。
~'
就是您的home目录的简写形式。
我们假设您在其他目录,想把一个名为'
sometext'
的文件复制到您home目录下的'
docs'
子目录中。
除了输入:
cpsometext/home/myusername/docs
您还可以用简写:
cpsometext~/docs
理论上,这也可以应用在命令'
上。
无论当前路径在哪里,cd~将回到您的home目录。
其实还可以简化,只要键入cd,就可以返回home目录了。
RedHatLinux为您提供了一些预先设置的快捷方式(称为'
别名'
,aliases),比如:
lll:
将执行'
ls-l-k'
(以长格式列出目录内容,包括一些文件属性,并以KB而不是byte为单位显示文件大小)
lls:
ls-F--color=auto'
(列出目录内容,加上文件类型标识,并使用颜色)
现在,您应该对shell及一些快捷方式有了进一步的了解,下面我们来看看除了应用一些简单的命令,shell还能作什么。
一、命令的排列
现在您将看到一些常用的命令排列。
您可能想在一行中给出所有命令,然后就可以把注意力转移到其他地方。
没问题,shell允许您在不同的命令之间,放上特殊的排列字符(queuingcharacters)。
这儿将介绍最常用的两种。
请注意,为了看起来更清楚,我在这些字符两旁加了空格。
而在实际应用中,您不一定要这么做,'
ls-a;
du-hs'
ls-a;
du-hs'
的效果是一样的。
command1;
command2
先执行command1,不管command1是否出错,接下来执行command2。
du-hs
将先在屏幕上列出目录中的所有内容,然后列出所有目录及其子目录所占磁盘大小。
command1&
&
只有当command1正确运行完毕后,才执行command2。
ls-abogusdir&
将返回ls:
bogusdir:
Nosuchfileordirectory,而'
du'
则根本没有运行(这是因为您没有'
bogusdir'
目录)。
如果您将符号换成了'
,'
将被执行。
为了进一步说明'
的区别,及一般命令排列的用处,下面举一个经典的例子:
Linux内核的编译和安装。
要编译、安装Linux,您需要执行一串命令:
makedep'
makeclean'
makebzImage'
makemodules'
makemodules_install'
makeinstall'
如果要等一个命令完成后,再输入下一个,再等,再输入,……,那就太麻烦了。
另一方面,每个命令只有当前面的命令都正确执行完毕后,才能开始执行。
如果您用'
来排列命令,则即使有命令执行失败,后面的也照常运行,最后,您可能在'
/boot'
目录下得到一个有问题的内核映像(image)。
而用'
makedep&
makeclean&
makebzImage&
makemodules&
makemodules_install&
makeinstall
不需要中途打断,就可以编译内核及其模块,并完成后面的安装。
二、命令的任务调度
当您在终端里运行一个命令或开启一个程序时,终端要等到命令或程序运行完毕后,才能再被使用。
在Unix中,我们称这样的命令或程序在前台(foreground)运行。
如果您想在终端下运行另一个命令,则需要再打开一个新的终端。
但这里还有一个更优雅的办法,称为任务调度(jobbing)或后台(backgrounding)。
当您运用任务的调度或将命令置于后台,终端就立即解放了,这样一来,终端立即就可以接受新的输入。
为实现这样的目的,您只需在命令后面添加一个&
:
gqview&
告诉shell将图片查看器'
GQview'
放到后台去执行(即当成job来运行)。
命令jobs将告诉您,在这个终端窗口中,运行着哪些命令与程序:
jobs
[1]+Runninggqview&
当您要关闭终端窗口时,这一点就很重要,因为关闭终端将导致所有在其中运行的任务都将被中止,在此例中,如果您关闭了终端,由这个终端开启的GQview程序也将被关闭。
但如何将前台运行的一个程序放到后台去?
没问题:
gqview
<
CTRLz>
[2]+Stoppedgqview
bg
[2]+gqview&
组合键将挂起终端中正在运行的程序,然后您就可以用bg命令将其放到后台去执行。
请注意,在后台运行图形应用程序有时候是有用处的,这样可以在终端下显示这个程序的出错信息,虽然这对您可能没有直接的帮助,当如果碰到了麻烦,向别人询问时,这些出错提示就有用武之地了。
一些图形程序,很可能还处在测试期(Beta),尽管在后台执行,也会在终端中输出一些信息。
如果您对此不满,可以用下面命令:
command&
>
/dev/null&
这不仅将程序送到后台执行,还将其输出发到'
/dev/null'
文件。
是系统的"
碎纸机"
(shredder),所有送到那里的信息都将消失殆尽。
三、命令的替换
命令替换(Commandsubstitution)是一项很实用的功能。
我们假设,您想看看XFree86文档中的'
README.mouse'
文件,但您不知道这个文件的位置。
但您是位机灵的用户,已经听说了'
locate'
命令,也安装了'
slocate'
包,您就可以用:
locateREADME.mouse
发现那个文件在'
/usr/X11R6/lib/X11/doc'
现在您就可以在终端里用'
less'
或在文件管理器中进入那个目录然后读取文件。
而命令替换可以给您带来一些便捷:
less$(locateREADME.mouse)
一步到位。
命令'
locateREADME.mouse'
的输出(=/usr/X11R6/lib/X11/doc/README.mouse)作为'
的参数,然后就可以显示文件内容了。
这种机制的语法是:
command1$(command2)
除了'
$()'
,您还可以用后引号(backquote):
command1`command2`
这样虽然可以减少输入,但可读性差,而且很容易就和没有替换功能的一般单引号混淆。
我更欣赏前一种方法,但这最终起决于您。
这里有另外一个例子。
我们假设,您打算结束一个名为'
rob'
的程序。
您先得用命令'
pi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux shell命令的详细使用方法及演示 shell 命令 详细 使用方法 演示