h a p p y r b b i t n am e 中哪个1080p大小不一样样

C O N T R O L
O F P A R A M E T E R
A B S O R B A B L E
S U T U R E O F
M E D I C O┐ B I O M
A T E R I A L
F I L A T U R E
E Q U I P M E N T--《JOURNAL OF TIANJIN URBAN CONSTRUCTION INSTITUTE》1999年02期
C O N T R O L
O F P A R A M E T E R
A B S O R B A B L E
S U T U R E O F
M E D I C O┐ B I O M
A T E R I A L
F I L A T U R E
E Q U I P M E N T
Qilan( T I U C) Wang
Ran( Tianjin
Institute of
Science and
Technology 300151)
A m ethod of fuzzy controlw as introduced,w hich can controlparam eters in the absorblesuture of m edico
biom aterialfilature equipm ent. The controlling results have better robustness andlittle super
adjusting.
【Key Words】:
【CateGory Index】:
supports all the CNKI
only supports the PDF format.
【Citations】
Chinese Journal Full-text Database
Wang W[J];Process Automation I1997-12
【Co-citations】
Chinese Journal Full-text Database
Zhang Kaisheng, Zhang Panfeng, Li Qianghua, Li Xia(College of Electrical and Message Engineering, Shanxi University of Science and Technology, Xianyang 712081, China);[J];Engineering Plastics A2007-02
Zhang Kaisheng(College of Electrical and Information Engineering,Shanxi University of Science & Technology,Xi'an 710021,China)Lü Yinfang(Shanxi Jinshan Electricity Co.Ltd.,Xianyang 712000,China)Wang Xuemei(College of Foreign Languages and Communications,Shanxi University of Science & Technology,Xi'an 710021,China);[J];Engineering Plastics A2007-07
Li Xianxiang (Anhui Institute of Mechanical and Electrical Engineering
241000);[J];JOURNAL OF ANHUI INSTITUTE OF MECHANICAL AND ELECTRICAL ENGINEERING;1996-02
Feng Xiaojun1) GuanYibing1) Wang Liang2) Feng Jie1)(1)College of Mechanical and Electronical Engineering,North China Univ.of Tech.,100144,Beijing,C2)Beijing Core Power Science and Technology Company,102200,Beijing,China);[J];Journal of North China University of Technology Beijing C2008-01
WANG Zhi-ying, ZHU Jian-lin (College of Information Engineering, Xiangtan University, Xiangtan 411105, China);[J];Ordnance Industry A2003-04
Fan XLu PChen Wenkai(Department of Automation,Beijing Polytechnic University,100022);[J];JOURNAL OF BEIJING POLYTECHNIC UNIVERSITY;1995-01
XIONG Ming,XU Xiao?li,CHENG Shao?geng,ZHAO Gang?(Department of Computer Science & Automation, Beijing Institute of Machinery, Beijing 100085,China)?;[J];Journal of Beijing Institute of M2003-01
LI Xiuren1) Material Sience and Engineering School, Tianjin University, Tianjin 300072, China 2) Institute of Mechanical Engineering, Tianjin IndustryUniversity, Tianjin 300160, C[J];Journal of University of Science and Technology B2002-04
Yuan KYu C Guo F Yuan Xingjun(Information Engineering School, UST Beijing, Beijing 100083, China);[J];JOURNAL OF UNIVERSITY OF SCIENCE AND TECHNOLOGY BEIJING;1998-02
Chen BPeng XCao Fan Department of Automatic Control,Beijing Institute of Technology,Beijing 100081;[J];Journal of Beijing Institute of T1997-02
China Proceedings of conference Full-text Database
Pan Yuxi Wang guitang (Guanddong University of Technology,Cuangzhou 510006,China);[A];[C];2007
;[A];[C];2007
Liu Jin Yang Haima (Department of Electrical Engineering and Automation, Shanghai University of Engineering and Science, Shanghai 200065, China)(College of Optics & Electronic Information Engineering, University of Shanghai for Science and Technology, Shanghai 200093, China);[A];[C];2005
;[A];[C];1995
Zhang Qinghua (Dept. of Automation,Guangdong Petrochemical Industry Institute, Maoming,525000);[A];[C];1996
Qiu Wen Feng Luchuan Post ,Guangxi 537700;[A];[C];1999
DONG Lizhi SUN Maoxiang School of Information Science and Engg ,Shenyang Polytechnic Univ , Shenyang 110023 ZHU Feng DONG Zaili YIN Chaowan Shenyang Institute of Automation ,C.A.S;[A];[C];1999
;[A];[C];2007
An Lianxiang Shang Lihui (Department of automation,school of electric engineering,Hebei University of Technology,Tianjin,300130);[A];[C];2002
Zhang Shengli An Lianxiang (Department of automation,school of electric engineering,Hebei University of Technology,Tianjin,300130);[A];[C];2002
【Secondary Citations】
Chinese Journal Full-text Database
Zhou zhunong Zhou X[J];Industrial Instrumentation & A1992-03
Huang Xiaolin Huang D[J];Industrial Instrumentation & A1993-05
LIU Xin (The Fourth Research Institute of MPT-Xi'an, 710056, PRC)YIN Shaoqing and XIAO Shunda (The Ninth Department, Northwest Polytechnic University,Xi'an, 710072, PRC);[J];Control Theory & A1993-04
LI PSUN Youxian and ZHOU Chunhui(Institute of Industrial Process Control,Zhejiang University.Hangzhou,310027,PRC);[J];CONTROL THEORY & APPLICATIONS;1995-01
LI Xuefeng and ZHOU Fengqi(College of Astronautics, Northwest Polytechnic University.Xi'an.710072,PRC);[J];CONTROL THEORY & APPLICATIONS;1995-02
Wang Jinzhang Yang Hui(Northeast University of Technology) (Jianxi Rare-earth Institute);[J];Control and D1989-04
Liu G Yang Xianhui (Xiangtan Institute of Machinery and Electricity Technology) (Tsinghua University);[J];CONTROL AND DECISION;1995-06
He H Zhou E Sun W Zhou Shichang(Northeastern University);[J];CONTROL AND DECISION;1996-02
Li X Zhou Fengqi(Northwestern Polytechnical University, Xi'an 710072) Yang Xianfa(Shaanxi Air Hard Metal Alloy Tools Company, Mianxian 724200);[J];JOURNAL OF NORTHWESTERN POLYTECHNICAL UNIVERSITY;1995-01
JIA LZHU M QI Xingguang (Mechanical and Electricat Engineering Department, Shandong Light Industrial Institute,Jinan)SUN Youxian(Institute of Industrial Control, Zhejiang University, Hangzhou);[J];INFORMATION AND CONTROL;1995-04
Similar Journals
(C)2006 Tsinghua Tongfang Knowledge Network Technology Co., Ltd.(Beijing)(TTKN) All rights reserved1720人阅读
草稿(33)
bash shell 是 Linux 中的众多可用 shell 的其中之一。它也被称为 Bourne-again
shell,这是以早期 shell(/bin/sh)的创建者 Stephen Bourne 命名的。Bash 在本质上是与 sh 兼容的,但是在函数和编程功能方面提供了许多改进。它合并了来自 Korn shell (ksh) 和 C shell (csh) 的特性,并且准备成为与 POSIX 兼容的 shell。
在我们深入研究 bash 之前,首先回忆一下,shell 是一个可以接受并执行命令的程序。它还支持编程结构,允许从比较小的部分构建复杂的命令。这些复杂的命令,即脚本,可以被保存为文件,从而构成新的命令。事实上,典型 Linux 系统中的许多命令都是脚本。
Shells 具有一些内置 命令,比如 cd、break 和 exec。其他命令是外部的。
Shell 还使用三个标准 I/O 流:
stdin 是标准输入流,为命令提供输入。 stdout 是标准输出流,为命令显示输出。 stderr 是标准错误流,显示命令中的错误输出。
输入流为程序提供输入,通常来自终端键盘。输出流输出文本字符,通常输出到终端。终端最初是一个 ASCII 打字机或显示终端,但是现在往往为图形桌面上的一个窗口。有关重定向这些标准 I/O 流的更多细节将在本
系列的另一篇文章中介绍。
在本文后面的内容中,我们将假设您知道如何获得一个 shell 提示。如果您不知道的话,请参考 developerWorks 文章 “”,其中介绍了如何完成这个操作以及其他内容。
如果使用不带图形桌面的 Linux 系统,或者在一个图形桌面中打开终端窗口,您将看到一个提示,可能类似于清单 1 所示。
[db2inst1@echidna db2inst1]$
ian@lyrebird:~&
如果作为根用户(或者超级用户)登录,您看到的提示应该如清单 2 所示。
[root@echidna ~]#
lyrebird:~ #
根用户具有相当大的权力,因此使用时应十分小心。当您拥有根权限时,大部分提示都包括一个 # 符号。普通用户的权限通常使用一个不同的字符加以区别,通常为一个美元符号($)。您实际看到的提示可能不同于本文显示的示例。您的提示也许包括用户名、主机名、当前目录、日期或输出提示的时间,等等。
这些文章包含的代码示例剪切自真实的 Linux 系统,使用了默认的提示。我们的根提示包含一个拖尾 # 号,因此您可以将它们与普通用户提示区分开,因为后者使用了一个拖尾 $ 符号。许多介绍此主题的书籍都一致使用这个约定。如果某些内容出错的话,那么检查示例中的提示。
现在您拥有了一个提示,让我们看看该如何处理它。shell 的主要功能是对您的命令进行解释,这样您就可以与 Linux 系统进行交互。在 Linux(以及 UNIX(R))系统中,命令具有一个命令名称,以及选项 和参数。某些命令既没有选项,也没有参数,而另一些命令可能只具有其中之一。
如果一行代码中包含一个 # 字符,那么该行中的所有其他字符都可以被忽略。因此 # 字符可能表示一个注释以及一个根提示,这可以从上下文中看出来。
echo 命令将它的参数输出(或回传)到终端,如清单 3 所示。
[ian@echidna ~]$ echo Word
[ian@echidna ~]$ echo A phrase
[ian@echidna ~]$ echo Where
Where are my spaces?
[ian@echidna ~]$ echo &Here
spaces.& # plus comment
在清单 3 的第三个示例中,所有额外的空间都被压缩到输出的单个空间中。为了避免这种情况,需要使用双引号(&)或单引号(')将字符串括起。Bash 使用空格,比如空白、制表符和换行符,来将输入行分离到标记(token)中,后者随后被传递给命令。使用引号引用字符串将保留多余的空格并将完整的字符串作为一个单一标记。在上面的示例中,命令名称之后的每一个标记都是一个参数,因此我们具有的参数分别为 1、2、4 和 1。
echo 命令包含两个选项。echo 通常会在输出的末尾加一个拖尾换行符。使用 -n 选项可以禁用这个行为。使用 -e 选项可以使某些反斜杠转义字符具有特殊的含义。其中一些如表 1 所示。
警告 (bell)
退格
禁用拖尾换行(与 -n 选项作用相同)
换页(在视频显示中清空屏幕)
水平制表符
在 bash 中使用反斜杠存在一个小问题。当未使用引号引用反斜杠字符(时),将作为一个转义来表示 bash 本身,用于保留以下字符的字面含义。这对于特殊的 shell 元字符是非常必要的,我们将在稍后讨论。这条规则有一个例外:反斜杠后跟一个换行符将致使 bash 合并这两个字符并将字符序列作为一个续行请求处理。这样做可以方便地将比较长的行断开,特别是在 shell 脚本中。
要使用 echo 命令或众多其他使用类似转义控制字符的命令来正确地处理上述字符序列,必须使用引号将转义序列括起,或作为引用字符串的一部分,除非您使用了另一个反斜杠,以使 shell 为命令保留一个反斜杠。清单 4 展示了反斜杠的各种使用示例。
[ian@echidna ~]$ echo -n No new line
No new line[ian@echidna ~]$ echo -e &No new line\c&
No new line[ian@echidna ~]$ echo &A line with a typed
A line with a typed
[ian@echidna ~]$ echo -e &A line with an escaped\nreturn&
A line with an escaped
[ian@echidna ~]$ echo &A line with an escaped\nreturn but no -e option&
A line with an escaped\nreturn but no -e option
[ian@echidna ~]$ echo -e Doubly escaped\\n\\tmetacharacters
Doubly escaped
metacharacters
[ian@echidna ~]$ echo Backslash \
& followed by newline \
& serves as line continuation.
Backslash followed by newline serves as line continuation.
注意,bash 在您输入包含不匹配引号的行时显示了一个特殊的 提示 (&)。您的输入字符串继续输入到下一行并包含一个换行符。
Bash 具有多个元字符,这些元字符在未使用引号括起时,可以用来将输入分成多个单词。除了空格以外,这些元字符还包括:
| & ; ( ) & &
我们将在本文的其他部分更详细地讨论其中一些元字符。现在要注意的是,如果您希望包含一个元字符作为文本的一部分,那么必须使用引号括起,或是使用反斜杠 (\) 进行转义,如清单 4 所示。
换行和某些元字符或元字符对也可以用作控制操作符。它们包括:
|| && & ; ;; | ( )
其中一些控制操作符允许您创建命令序列 或列表。
最简单的命令序列就是由两个命令组成的、用分号 (;) 分隔的序列。所有命令将按顺序执行。在任何可编程的环境中,命令返回成功或失败的指示;Linux 命令通常返回一个零值表示成功,并返回一个非零值表示失败。可以使用 && 和 || 控制操作符来将某些条件处理引入到列表中。如果使用控制操作符 && 来分隔两个命令,那么只有在第一个命令返回 0 表示退出时,才会执行第二个命令。如果使用 || 分隔命令,那么只有在第一个命令返回一个非零的退出代码时,才会执行第二个命令。清单 5 展示了一些使用 echo 命令的命令序列。这些例子并不怎么令人兴奋,因为
echo 返回了 0,但是当我们使用更多的命令时,您会看到更多例子。
[ian@echidna ~]$ echo line 1;echo line 2; echo line 3
[ian@echidna ~]$ echo line 1&&echo line 2&&echo line 3
[ian@echidna ~]$ echo line 1||echo line 2; echo line 3
您可以使用 exit 命令终止一个 shell。或者可以提供一个 exit 代码作为参数。如果您在图形桌面上的终端窗口中运行 shell,那么窗口将关闭。类似地,如果使用 ssh 或 telnet(举例来说)连接到一个远程系统,那么您的连接将中断。在 bash shell 中,可以同时按下
Ctrl键和 d 键来退出。
让我们查看另一个控制操作符。如果您使用圆括号括起命令或命令列表,那么命令或序列将在一个 sub shell 中执行,因此 exit 命令将退出 sub shell,而不是退出您所在的 shell。清单 6 展示了结合了 && 和 || 以及两个不同的退出代码的示例。
[ian@echidna ~]$ (echo I exit 0) && echo OK || echo Bad exit
In subshell
[ian@echidna ~]$ (echo I exit 4) && echo OK || echo Bad exit
In subshell
本文后面将介绍更多命令序列。
当您在 bash shell 中运行时,有许多东西构成了您的环境,比如提示表单、主目录、工作目录、shell 名称、打开的文件、定义的函数,等等。您的环境包括许多由 bash 或您设置的变量。bash shell 还允许您拥有
shell 变量,可以将其导出 到您的环境,以供运行在 shell 中的其他进程或衍生自当前 shell 的其他 shell 使用。
环境变量和 shell 变量都具有一个名称。可以通过在名称前面加一个 “$” 前缀来引用变量的值。表 2 显示了您将经常遇到的一些 bash 环境变量。
已登录用户的名称
用数字表示的已登录用户的用户 id
用户的主目录
当前的工作目录
shell 的名称
进程 id(或运行的 bash shell 或其他进程的 PID
启动当前进程的进程的 id(即父进程的 id)
上一个命令的退出代码
清单 7 展示了这些常见 bash 变量的内容。
[ian@echidna ~]$ echo $USER $UID
[ian@echidna ~]$ echo $SHELL $HOME $PWD
/bin/bash /home/ian /home/ian
[ian@echidna ~]$ (exit 0);echo $?;(exit 4);echo $?
[ian@echidna ~]$ echo $$ $PPID
通过输入一个名称并在其后紧接着输入一个等号 (=),您将创建或设置 一个 shell 变量。如果变量存在的话,可以修改它来分配新值。变量需要区分大小写,因此 var1 和 VAR1 表示两个不同的变量。一般来讲,变量(特别是导出的变量)都是大写的,但是这并不是强制要求。理论上来说,$$ 和 $? 属于 shell
参数 而不是变量。它们只能被引用;您不能为它们分配值。
在创建 shell 变量时,您通常需要将其导出 到环境中,这样才可以用于从这个 shell 中启动的其他进程。导出的变量不能 用于父 shell。您使用
export 命令导出变量名。作为 bash 中的一种简单方法,您可以在一个步骤中同时分配值并导出变量。
为了演示分配和导出,让我们在 bash shell 中运行 bash 命令,然后从新的 bash shell 中运行 Korn shell (ksh)。我们将使用
ps 命令显示有关当前运行命令的信息。我们将在本系列的另一篇文章中了解有关 ps 的更多信息(参见
获得系列路线图)。
[ian@echidna ~]$ ps -p $$ -o &pid ppid cmd&
[ian@echidna ~]$ bash
[ian@echidna ~]$ ps -p $$ -o &pid ppid cmd&
[ian@echidna ~]$ VAR1=var1
[ian@echidna ~]$ VAR2=var2
[ian@echidna ~]$ export VAR2
[ian@echidna ~]$ export VAR3=var3
[ian@echidna ~]$ echo $VAR1 $VAR2 $VAR3
var1 var2 var3
[ian@echidna ~]$ echo $VAR1 $VAR2 $VAR3 $SHELL
var1 var2 var3 /bin/bash
[ian@echidna ~]$ ksh
$ ps -p $$ -o &pid ppid cmd&
$ export VAR4=var4
$ echo $VAR1 $VAR2 $VAR3 $VAR4 $SHELL
var2 var3 var4 /bin/bash
[ian@echidna ~]$ echo $VAR1 $VAR2 $VAR3 $VAR4 $SHELL
var1 var2 var3 /bin/bash
[ian@echidna ~]$ ps -p $$ -o &pid ppid cmd&
[ian@echidna ~]$ exit
[ian@echidna ~]$ ps -p $$ -o &pid ppid cmd&
[ian@echidna ~]$ echo $VAR1 $VAR2 $VAR3 $VAR4 $SHELL
在序列的开始部分,bash shell 具有 PID 30576。 第二个 bash shell 的 PID 为 16353,它的父 shell 的 PID 为 30576,即最初的 bash shell。 我们在第二个 bash shell 中创建了 VAR1、VAR2 和 VAR3 变量,但是只导出了 VAR2 和 VAR3。 在 Korn shell 中,我们创建了 VAR4。echo 命令仅显示 VAR2、VAR3 和 VAR4 的值,确认 VAR1 没有被导出。当您看到即使在提示改变的情况下,SHELL 变量的值仍然未变,您是否感到吃惊?您不能始终依赖 SHELL 来获得当前正在运行的 shell,但是
ps 命令的确提供了实际的命令。注意,ps 将一个连字符 (-) 放到第一个 bash shell 的前面,表示这是一个登录 shell。
回到第二个 bash shell 中,我们可以看到 VAR1、VAR2 和 VAR3。 最后,我们返回到原始 shel,其中并未包含我们的新变量。
前面有关引用的讨论提到您可以使用单引号或双引号。这两者之间有一个重要的区别。shell 将扩展使用双引号 ($) 括起的 shell 变量,而在使用单引号 (') 时不会扩展。在前面的示例中,我们在 shell 中启动了另一个 shell 并且获得一个新的进程 id。使用
-c 选项,您可以将一个命令传递给另一个 shell,后者将执行命令并返回。如果传递一个使用引号括起的字符串作为命令,那么外部 shell 将去掉引号并传递字符串。如果使用的是双引号,那么将在传递字符串之前执行变量扩展,因此产生的结果可能与您期望的不同。shell 和命令将在另一个进程中运行,因此将使用另一个 PID。清单 9 解释了这些概念。顶级 bash shell 的 PID 被突出显示。
[ian@echidna ~]$ echo &$SHELL& '$SHELL' &$$& '$$'
/bin/bash $SHELL 2559 $$
[ian@echidna ~]$ bash -c &echo Expand in parent $$ $PPID&
Expand in parent 2559 2558
[ian@echidna ~]$ bash -c 'echo Expand in child $$ $PPID'
Expand in child 2845 2559
目前为止,我们的所有变量引用都使用空格作为结束,因此可以很清楚地显示变量名的终止位置。实际上,变量名可以只包含字母、数字和下划线字符。shell 知道变量名将在出现另一个字符的位置上终止。有时您需要在含义模糊的表达式中使用变量。在这种情况下,可以使用花括号来突出显示命令名,如清单 10 所示。
[ian@echidna ~]$ echo &-$HOME/abc-&
-/home/ian/abc-
[ian@echidna ~]$ echo &-$HOME_abc-&
[ian@echidna ~]$ echo &-${HOME}_abc-&
-/home/ian_abc-
env 在不包含任何选项或参数的情况下将显示当前的环境变量。可以使用它来在定制环境中执行命令。-i(或
-)选项将在运行命令之前清空当前环境,而 -u 选项取消了您不喜欢传递的环境变量。
清单 11 展示了不带任何参数的 env 命令的部分输出,以及在无父环境的情况下调用不同 shell 的三个例子。在我们进行讨论之前请仔细查看它们。
注意:如果系统还没有安装 ksh (Korn) 或 tcsh shell,那么您需要自己动手安装这些 shell。
[ian@echidna ~]$ env
HOSTNAME=echidna
SELINUX_ROLE_REQUESTED=
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=9.27.206.68 1316 22
SELINUX_USE_CURRENT_RANGE=
QTDIR=/usr/lib/qt-3.3
QTINC=/usr/lib/qt-3.3/include
SSH_TTY=/dev/pts/3
_=/bin/env
OLDPWD=/etc
[ian@echidna ~]$ env -i bash -c 'echo $SHELL; env'
PWD=/home/ian
_=/bin/env
[ian@echidna ~]$ env -i ksh -c 'echo $SHELL; env'
_=/bin/env
PWD=/home/ian
_AST_FEATURES=UNIVERSE - ucb
[ian@echidna ~]$ env -i tcsh -c 'echo $SHELL; env'
SHELL: Undefined variable.
注意,bash 设置了 SHELL 变量,但是没有将其导出到环境中,尽管 bash 在环境中创建了另外三个变量。在 ksh 例子中,我们拥有两个变量,但是我们回传 SHELL 变量的值的行为生成了一个空白行。最后,tcsh 并没有创建任何环境变量,并在我们尝试引用 SHELL 的值的时候生成了一个错误。
清单 11 展示了 shell 处理变量和环境的各种行为。虽然本文主要关注 bash,但是您最好知道并非所有 shell 都具有相同的行为。此外,shell 将根据它们是否是登录 shell 来做出不同的行为。目前,我们将登录 shell 定义为您在登录到一个系统时获得的 shell;如果愿意的话,您可以启动其他 shell 来作为登录 shell。上面使用
env -i 启动的三个 shell 并不是登录 shell。尝试向 shell 命令本身传递 -l 选项,看看使用登录 shell 会出现什么结果。
现在让我们来尝试在这些非登录 shell 中显示 SHELL 变量的值:
当 bash 启动后,它将设置 SHELL 变量,但是并不会自动将变量导出到环境。 当 ksh 启动后,它不会设置 SHELL 变量。然而,引用一个未定义的环境变量相当于引用一个具有空值的变量。 当 tcsh 启动后,它并不会设置 SHELL 变量。在这种情况下,默认的行为不同于 ksh (以及 bash),因为在我们尝试使用并不存在的变量时,将报告一个错误。
您可以使用 unset 命令来取消一个变量并从 shell 变量列表中移除它。如果变量被导出到环境中,那么将从环境中删除这个变量。可以使用
set 命令来对 bash(或其他 shell)的行为进行许多控制。Set 是一个内置在 shell 中的功能,因此各种选项都是特定于 shell 的。在 bash 中,-u 选项将使 bash 报告一个有关未定义变量的错误,而不是将它们作为已定义的空变量。可以使用
- 对 set 启用各种选项,并使用 + 来关闭选项。可以使用 echo $- 显示当前设置的选项。
[ian@echidna ~]$ echo $-
[ian@echidna ~]$ echo $VAR1
[ian@echidna ~]$ set -u;echo $-
[ian@echidna ~]$ echo $VAR1
-bash: VAR1: unbound variable
[ian@echidna ~]$ VAR1=v1
[ian@echidna ~]$ VAR1=v1;echo $VAR1
[ian@echidna ~]$ unset VAR1;echo $VAR1
-bash: VAR1: unbound variable
[ian@echidna ~]$ set +u;echo $VAR1;echo $-
如果使用不包含任何选项的 set 命令,它将显示所有 shell 变量及变量值(如果有的话)。还有另一个命令 declare,可以用它创建、导出和现实 shell 变量的值。可以通过手册页研究其他各种
set 选项和 declare 命令。我们稍后将讨论 。
最后将要介绍的命令是 exec。可以使用 exec 命令来运行将替换当前 shell 的另一个程序。启动 13 启动了一个子 bash shell 并使用
exec 来将它替换为一个 Korn shell。从 Korn shell 退出后,您将回到初始的 bash shell(本例为 PID 2852)中。
[ian@echidna ~]$ echo $$
[ian@echidna ~]$ bash
[ian@echidna ~]$ echo $$
[ian@echidna ~]$ exec ksh
[ian@echidna ~]$ echo $$
uname 命令输出有关您的系统及其内核的信息。清单 14 展示了 uname 的各种选项以及生成的信息;每个选项在表 3 中进行了定义。
[ian@echidna ~]$ uname
[ian@echidna ~]$ uname -s
[ian@echidna ~]$ uname -n
[ian@echidna ~]$ uname -r
2.6.29.6-217.2.3.fc11.i686.PAE
[ian@echidna ~]$ uname -v
#1 SMP Wed Jul 29 16:05:22 EDT 2009
[ian@echidna ~]$ uname -m
[ian@echidna ~]$ uname -o
[ian@echidna ~]$ uname -a
Linux echidna. 2.6.29.6-217.2.3.fc11.i686.PAE
#1 SMP Wed Jul 29 16:05:22 EDT
i686 i386 GNU/Linux
表 3. uname 选项
输出内核名称。如果没有指定任何选项的话,那么这将是默认行为。
输出节点名或主机名。
输出内核的发行版。这个选项常常结合用于模块处理命令。
输出内核的版本。
输出机器的硬件(CPU)名。
输出操作系统名称。
输出以上所有信息。
清单 14 来自运行 Intel(R) CPU 的 Fedora 11 系统。uname 命令可用于大多数 UNIX(R) 和类 UNIX 系统以及 Linux。根据所使用的 Linux 发行版和版本以及所运行机器的具体类型,输出的信息也各有差异。清单 15 展示了运行 Ubuntu 9.04 的 AMD Athlon 64 系统的输出。
ian@attic4:~$ uname -a
Linux attic4 2.6.28-14-generic #47-Ubuntu SMP Sat Jul 25 01:19:55 UTC
如果您在阅读本文时输入命令,那么可能会注意到经常会多次使用同一个命令,可能输入完全相同的命令,或者是稍微做一些修改。好消息是 bash shell 可以维护一个命令历史。这个功能在默认情况下是启用的。可以使用
set +o history 命令关闭该功能,并使用 set -o history 重新启用。名为 HISTSIZE 的环境变量将指定 bash 需要保持多少行历史。其他一些设置将控制如何控制和管理命令历史。查看 bash 手册页获得完整的信息。
可以用于历史功能的其中一些命令包括:
历史 显示完整历史 历史 N 显示历史中的最后 N 行 历史 -d N 从历史中删除行 N;比如,如果行中包含密码的话就需要这样做 !! 大部分最近使用的命令 !N 第 N 个历史命令 !-N 回到历史中的 N 个命令(!-1 相当于 !!) !# 正在输入的当前命令 !string 以 string 开头的最近一次命令 !?string? 包含 string 的最近一次命令
可以使用冒号 (:) 后跟某些值来访问或修改历史中的命令。清单 16 显示了一些历史功能。
[ian@echidna ~]$ echo $$
[ian@echidna ~]$ env -i bash -c 'echo $$'
[ian@echidna ~]$ !!
env -i bash -c 'echo $$'
[ian@echidna ~]$ !ec
[ian@echidna ~]$ !en:s/$$/$PPID/
env -i bash -c 'echo $PPID'
[ian@echidna ~]$ history 6
env -i bash -c 'echo $$'
env -i bash -c 'echo $$'
env -i bash -c 'echo $PPID'
[ian@echidna ~]$ history -d598
清单 16 中的命令完成以下操作:
回传当前 shell 的 PID 在新 shell 中运行一个 echo 命令并回传该 shell 的 PID 重新运行最后一个命令 重新运行以 ‘ec’ 开头的最后一个命令;在本例中将返回第一个命令 重新运行以 ‘en’ 开头的最后一个命令,但是使用 ‘$PPID’ 替换 ‘$$’,这样将显示父 PID 显示历史中的最后 6 个命令 删除历史条目 598,即最后一个 echo 命令
还可以交互式地编辑历史。bash shell 使用 readline 历史来管理命令编辑和历史。默认情况下,用于在历史中移动并编辑行的键和键组合类似于 GNU Emacs 编辑器中使用的相应内容。Emacs 按键组合常常被表示为
C-x 或 M-x,其中 x 为常规键,而
C 和 M 分别为 Control 和 Meta 键。在一个典型 PC 系统中,Ctrl 键充当 Emacs Control 键,而
Alt 键充当 Meta 键。表 3 总结了一些可用的历史编辑功能。除了表 3 所示的键组合外,鼠标移动键,比如上、下、左、右,以及 Home 和 End 键都通常被设置为以逻辑方式工作。其余功能以及如何使用 readline init 文件(通常为主目录中的 inputrc)定制选项等内容可以在手册页中找到。
常用 PC 键
向右移动一个空格
向左移动一个空格
将命令移动到命令历史的前面
将命令移动到命令历史的后面
增量反向搜索。输入一个或多个字符以向后搜索某个字符串。再次按下 C-r 以搜索同一字符串在历史中下一次出现的位置。
移动到下一单词的开始部分;GUI 环境常常使用这个键组合来打开窗口的 File 菜单
移动到前一个字符的开始部分
移动到行首
移动到行尾
删除游标前面的字符
删除游标以后的字符(Del 和 Backspace 功能可能被配置为相反的含义)
删除到行末,并保存被删除的文本供以后使用
删除到单词末尾,并保存被删除的文本供以后使用
恢复使用 kell 命令删除的文本
如果喜欢用 vi 类的编辑模式操作历史,那么使用 set -o vi 命令来切换到 vi 模式。使用 set -o emacs 切换回 emacs 模式。当在 vi 模式下检索到一个命令后,您最初将位于 vi 的 insert 模式。vi 编辑器将在本系列另一篇文章中介绍(参见
获得系列路线图)。
一些 bash 命令都是内置的,而另一些则来自外部。让我们探讨一下外部命令以及如何运行它们,以及如何判断某个命令是否是内部的。
外部命令就是指文件系统中的文件。基本命令管理将在本系列另一篇文章中介绍(参见
获得系列路线图)。在 Linux 和 UNIX 系统上,所有文件都作为一个大型树的其中一部分访问,这个树的根为 /。在我们的示例中,我们的当前目录目前为止一直都是用户的主目录。非根用户常常在 /home 目录中有一个主目录,比如这里的主目录为 /home/ian。根用户的主目录通常为 /root。如果输入一个命令名,那么 bash 将在您的路径(path)中查找该命令,路径就是指 PATH 环境变量中以冒号分隔的目录列表。
如果您希望知道在输入特定字符串后将执行哪个命令,那么使用 which 或 type 命令。清单 17 展示了我的默认路径以及多个命令的位置。
[ian@echidna ~]$ echo $PATH
/usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/bin:/bin:/usr/b
in:/home/ian/bin
[ian@echidna ~]$ which bash env zip xclock echo set ls
alias ls='ls --color=auto'
/usr/bin/zip
/usr/bin/xclock
/usr/bin/which: no set in (/usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/lib/ccache
:/usr/local/bin:/bin:/usr/bin:/home/ian/bin)
[ian@echidna ~]$ type bash env zip xclock echo set ls
bash is hashed (/bin/bash)
env is hashed (/bin/env)
zip is /usr/bin/zip
xclock is /usr/bin/xclock
echo is a shell builtin
set is a shell builtin
ls is aliased to `ls --color=auto'
注意,路径中的目录大部分以 /bin 结束。这是一个常见的习惯,但是正如 /usr/lib/ccache 一样,不是必须要求。which 命令报告指出,ls 命令是一个别名(alias)并且无法找到
set 命令。在这种情况下,我们将其解释为不存在或是一个内置命令。type 命令报告指出,ls 命令是一个别名,但是它将
set 命令标识为一个 shell 内置命令。它还报告说有一个内置的 echo 命令以及由 which 发现的位于 /bin 的命令。命令还将按照不同的顺序生成输出。
我们看到,用于列出目录内容的 ls 命令是一个别名。别名可以方便地配置一些命令以使用不同的默认值,或为某个命令提供可替换的名称。在我们的示例中,--color=tty 选项可以根据文件或目录的类型用不同的颜色编码目录清单。尝试运行
dircolors --print-database,看看如何控制不同颜色的编码以及将哪些颜色用于哪类文件中。
每个命令都提供有额外的选项。根据您的具体需求,可以使用任何一个命令。当我确信我将找到一个可执行文件并且只需要它的完整路径说明时,我将使用 which。我发现
type 为我提供了更准确的信息,我需要在某个 shell 脚本中使用到。
我们在清单 17 中看到,可执行文件拥有一个以 /根目录开头的完整路径。例如,xclock 程序的路径为 /usr/bin/xclock,即位于 /usr/bin 目录下的一个文件。在较旧的系统上,您可能会发现该文件位于 /usr/X11R6/bin 目录。如果命令没有出现在 PATH 说明中,那么可能仍然需要通过指定一个路径和一个命令名来运行它。您可以使用两种类型的路径:
绝对 路径指那些以 / 开头的路径,比如我们在清单 17 中看到的路径(/bin/bash、/bin/env 等等)。 相对 路径指的是相对于您的当前工作目录 的路径,正如 pwd 命令报告的那样。这些命令不是以 / 开头,但是至少包含了一个 /。
不管您的当前工作路径是什么,您都可以使用绝对路径,但是只有在一个命令接近当前目录时,才有可能使用相对路径。假设您在名为 mytestbin 的主目录的子目录中开发经典的 “Hello World!” 程序的新版本。您可能需要使用相对路径来以
mytestbin/hello 形式运行命令。您可以在路径中使用两种特殊名称;使用一个圆点 (.) 表示当前目录,使用一对圆点 (..) 表示当前目录的子目录。由于您的主目录通常并不在(通常来讲也不应该在)PATH 中,因此需要显式地为您希望从主目录中运行的任何可执行文件提供一个路径。例如,如果在主目录中有一个 hello 程序的副本,那么可以使用
./hello 命令运行它。可以使用 . 和 .. 作为绝对路径的一部分,尽管单个 . 在这种情形下并不是特别有用。您还可以使用一个波浪符号 (~) 来表示自己的主目录,并使用 ~用户名 表示名为
username 的用户的主目录。清单 18 展示了一些示例。
[ian@echidna ~]$ /bin/echo Use echo command rather than builtin
Use echo command rather than builtin
[ian@echidna ~]$ /usr/../bin/echo Include parent dir in path
Include parent dir in path
[ian@echidna ~]$ /bin/././echo Add a couple of useless path components
Add a couple of useless path components
[ian@echidna ~]$ pwd # See where we are
[ian@echidna ~]$ ../../bin/echo Use a relative path to echo
Use a relative path to echo
[ian@echidna ~]$ myprogs/hello # Use a relative path with no dots
-bash: myprogs/hello: No such file or directory
[ian@echidna ~]$ mytestbin/hello # Use a relative path with no dots
Hello world!
[ian@echidna ~]$ ./hello
Hello world!
[ian@echidna ~]$ ~/mytestbin/hello # run hello using ~
Hello world!
[ian@echidna ~]$ ../hello # Try running hello from parent
-bash: ../hello: No such file or directory
正如您可以从系统的不同目录中执行程序一样,您也可以使用 cd 命令来切换当前工作目录。cd 的参数必须是一个目录的绝对或相对路径。对于命令,您可以在路径中使用 .、..、~ 和 ~username。如果
cd 不使用任何参数,那么将切换到您的主目录。将一个连字符 (-) 作为参数意味着切换到前一个工作目录。您的主目录存储在 HOME 环境变量,而前一个目录存储在 OLDPWD 变量,因此
cd 相当于 cd $HOME,而 cd - 相当于 cd $OLDPWD。通常我们使用
change directory 指代 change current working directory。
对于命令,还包括一个环境变量 CDPATH,它包含在解析相对路径时执行搜索的以冒号分隔的目录集合(除了当前工作目录外)。如果解析使用了来自 CDPATH 的路径,那么
cd 将输出结果目录的完整路径。通常,成功的目录切换将不会产生输出,只会产生一个新的、很可能更改过的提示。清单 19 显示了一些示例。
[ian@echidna ~]$ cd /;pwd
[ian@echidna /]$ cd /usr/pwd
/usr/local
[ian@echidna local]$ pwd
[ian@echidna ~]$ cd -;pwd
/usr/local
/usr/local
[ian@echidna local]$ cd ~ian/..;pwd
[ian@echidna home]$ cd ~;pwd
[ian@echidna ~]$ export CDPATH=~
[ian@echidna ~]$ cd /;pwd
[ian@echidna /]$ cd mytestbin
/home/ian/mytestbin
本文讨论的最后一个话题就是教您如何通过手册页以及其他来源获得有关 Linux 命令的文档。
文档的主要(和传统)来源就是手册页,您可以通过 man 命令访问。图 1 解释了 man 命令的手册页。使用命令
man man 显示这些信息。
图 1 展示了手册页中的典型内容项:
一个标题,命令名后是使用圆括号括起的章节号 命令名以及同一手册页中描述的相关命令的名称 可用于该命令的选项和参数的摘要 命令的简短描述 有关每个选项的详细信息
您可能会找到有关使用、如何报告 bug、作者信息以及相关命令列表的章节。例如,man 的手册页告诉我们,相关的命令(以及手册页章节)为:
apropos(1)、whatis(1)、less(1)、groff(1) 和 man.conf(5)。
共有 8 个常见手册页章节。手册页通常在您安装包时进行安装,因此如果您没有安装包的话,您很可能并不具备手册页。某些手册页章节可能是空的,或几乎是空的。包含示例内容的常见手册页章节包括:
用户命令(env、ls、echo、mkdir、tty) 系统调用或内核函数(link、sethostname、mkdir) 库例程(acosh、asctime、btree、locale、XML::Parser) 与设备相关的信息(isdn_audio、mouse、tty、zero) 文件格式描述(keymaps、motd、wvdial.conf) 游戏(注意,许多游戏现在都是图形化的,并且在手册页系统之外提供了图形化帮助) 杂项(arp、boot、regex、unix utf8) 系统管理(debugfs、fdisk、fsck、mount、renice、rpm)
其他章节可能包括:9 表示 Linux 内核文档、n 表示新文档、o 表示旧文档,l 表示本地文档。
某些条目出现在多个章节中。在我们的例子中,mkdir 出现在章节 1 和 2 中,而 tty 出现在章节 1 和 4 中。您可以指定一个特定的章节,例如,man 4 tty 或
man 2 mkdir,或者可以指定 -a 选项来列出所有合适的手册章节。
您可能已经注意到,图中的 man 为您提供了许多选项。现在,让我们快速了解一下 “另外参见” 部分与 man 有关的一些命令。
与 man 有关的两个重要的命令分别为 whatis 和 apropos。whatis 命令在手册页中寻找您指定的名称,并从合适的手册页中显示名称信息。apropos 命令对手册页执行关键字搜索,并列出包含您的关键字的命令。清单 20 解释了这些命令。
[ian@echidna ~]$ whatis man
- format and display the on-line manual pages
- display system documentation
- macros to format man pages
- pages - conventions for writing Linux man pages
man.config []
- configuration data for man
(rpm) - Man (manual) pages from the Linux Documentation Project
(rpm) - A set of documentation tools: man, apropos and whatis
[ian@echidna ~]$ whatis mkdir
- make directories
- make directories
- create a directory
- make a directory
[ian@echidna ~]$ apropos mkdir
- make directories
- make directories
- create a directory
- make a directory
mkdirat []
- create a directory relative to a directory file descriptor
mkdirhier []
- makes a directory hierarchy
顺便提一下,如果无法在手册页中找到 man.conf,那么尝试运行 man man.config。
man 命令通过一个分页程序将输出分页到显示中。在大多数 Linux 系统中,很可能使用的是 less 程序。另一个选择是使用较旧的
more 程序。如果希望输出页面,那么指定 -t o选项来格式化页面,以使用 groff 或
troff 程序执行输出。
less 分页器包含多个命令,可以帮助您在显示的输出中搜索字符串。使用 man less 查找更多关于 /(向前搜索)、?(向后搜索)和
n(重复最后一次搜索)以及其他许多命令的信息。
或是留下您的資料:
名稱 (必要)
Email (不會公開) (必要)
Type the two words:Type
what you hear:Incorrect. Try again.
XHTML: You can use these tags: &a href=&& title=&&& &abbr title=&&& &acronym title=&&& &b& &blockquote cite=&&& &cite& &code& &del datetime=&&& &em& &i& &q cite=&&& &strike& &strong&
12-09 Update: The English version of Vim Visual Cheat Sheet is also available.
(更新: 在圖內加入基本指令表和說明以及,方便大家列印出來貼在牆上隨時查看。)
剛在寫那篇時,本來想附上一個vim的超簡單入門連結,但找了一下都沒有很滿意的,所以決定自己動手先來畫個入門用的說明圖。
這個圖把vim中基本的移動方法都畫上去了,為了方便programmer,特別列出了很多只有寫程式才會用的按鍵。除了這些以外,其實還有一些好用的東西我還沒想到怎麼畫上去比較好(像是tags、沒有標準快速鍵的tab、man..),如果大家有idea歡迎提供。
這些圖示依照移動的單位大小分為以下幾個種類,分別用不同顏色標示:
(注意,這不是完整的vim快速鍵列表,只是我覺得比較常用的鍵而已。)
字元(character)
單字(word)
下一個word
下一個word(跳過標點符號)
前一個word
跳到目前word的尾端
跳到目前行的開頭
跳到目前行第一個非空白字元
段落(paragraph)、區塊(block)
上一段(以空白行分隔)
下一段(以空白行分隔)
跳到目前區塊開頭
跳到目前區塊結尾
跳到目前對應的括號上(適用各種括號,有設定好的話連HTML tag都能跳)
螢幕(screen)、絕對位置
跳到第x行(x是行號)
搜尋(search)
往前搜尋目前游標所在的字(word)
往後搜尋目前游標所在的字(word)
在目前行往後搜尋字元x
跳到目前游標所在的字(word)的定義位置(寫程式用, 跳到定義變數/函式的地方)
分割視窗(可加檔名順便開啟另一檔案)
:diffsplit xxx
以分割視窗和檔案xxx做比較(diff)
跳到前一個分割視窗(在兩個分割窗來回切換)
跳到下面的分割窗
跳到左邊的分割窗
跳到上面的分割窗
跳到右邊的分割窗
自動補齊(Auto-completion) (在Insert Mode中使用)
自動補齊檔案內的下一個可能字(word)
自動補齊檔案內的上一個可能字(word)
Ctrl-X Ctrl-F
自動補齊檔名
This entry was posted on Tuesday, December 8th, 2009 at 12:03 am and is filed under
, . You can follow any responses to this entry through the
feed. You can , or
from your own site.
留下您的意見
这是一段在Makefile中常见的规则
rm -r core *.o *.a tmp_make
for i in *.c; do rm -f `basename $$i .c`.s; done
(cd chr_ make clean)
(cd blk_ make clean)
( make clean)
第一句的 rm -f core *. *.a tmp_make 作用只是删除文件,意思直白,没什么好说的。
第二句 for 循环遍历目录下所有的文件,将所有后缀名为.c文件名依次赋给i。然后执行do语句,当符合循环结束是执行done。可以说这里的for和shell里for语法是如此貌似。
我们可以来做个实验来验证一下:
$ mkdir test #建立个实验用的目录
$ touch a.x #建几个实验用的文件
$ touch b.x
$ touch yy.x
$ vi Makefile #写个实验脚本
在文件中写入:
for i in *.x; do echo $$i; done
写好后,保存退出。运行命令:
随后可看到输出的结果:
for i in *.x;do echo $i;done
看到结果,for语句实现的功能就很清楚了。
对于结果,有一个怪异的就是,原来脚本中的$$i,在输出是就变成了$i。这时的for是不是就是一样了。现在可以先做个结论,make处理脚本可shell处理脚本几乎雷同,只是个别情况下要做变通。make会对$x进行扩展。比如:
$(ec) 'ddd'
就可以在屏幕上看到输出:
echo 'ddd'
所以应该是make对Makefile进行处理,将其变成shell可执行的脚本,最后由shell解释器来执行有make翻译过的脚本。并且是翻译一句然后shell执行一句,对于这个可以再做个验证。
for i in *.x;do $e $$i;done
其输出为:
a.sh a.x b.x Makefile yy.x
for i in *.x;do echo $i;done
可以看到,$(prt)被扩展后就立即执行了。后面的for也是这样。
到这里开篇的那个例子算是解析完毕了。下面在看看Makefile中的规则定义,在make中的规则分为两种,一种是显示规则,另一种无可争议的就是隐含规则了。
显示规则,定义如下
目标文件 : 依赖文件
生成目标文件的规则
.源文件扩展名.目标文件扩展名:
生成目标文件的规则
在使用隐含规则时要使用一些内定宏来指定文件名:
$@ 全路径的目标文件
$* 去除扩张名的全路径的目标文件
$? 所有源文件名
$& 源文件名
检查整个Linux网络状态。
2.格式
netstat [-acCeFghilMnNoprstuvVwx][-A][--ip]
3.主要参数
-a--all:显示所有连线中的Socket。
-A:列出该网络类型连线中的IP相关地址和网络类型。
-c--continuous:持续列出网络状态。
-C--cache:显示路由器配置的快取信息。
-e--extend:显示网络其它相关信息。
-F--fib:显示FIB。
-g--groups:显示多重广播功能群组组员名单。
-h--help:在线帮助。
-i--interfaces:显示网络界面信息表单。
-l--listening:显示监控中的服务器的Socket。
-M--masquerade:显示伪装的网络连线。
-n--numeric:直接使用IP地址,而不通过域名服务器。
-N--netlink--symbolic:显示网络硬件外围设备的符号连接名称。
-o--timers:显示计时器。
-p--programs:显示正在使用Socket的程序识别码和程序名称。
-r--route:显示Routing Table。
-s--statistice:显示网络工作信息统计表。
-t--tcp:显示TCP传输协议的连线状况。
-u--udp:显示UDP传输协议的连线状况。
-v--verbose:显示指令执行过程。
-V--version:显示版本信息。
-w--raw:显示RAW传输协议的连线状况。
-x--unix:和指定“-A unix”参数相同。
--ip--inet:和指定“-A inet”参数相同。
4.应用实例
netstat主要用于Linux察看自身的网络状况,如开启的端口、在为哪些用户服务,以及服务的状态等。此外,它还显示系统路由表、网络接口状态等。可以说,它是一个综合性的网络状态的察看工具。在默认情况下,netstat只显示已建立连接的端口。如果要显示处于监听状态的所有端口,使用-a参数即可:
#netstat -a
Active Internet connections (only servers)
Local Address
Foreign Address
*:32768 *:* LISTEN
*:32769 *:* LISTEN
*:nfs *:* LISTEN
*:32770 *:* LISTEN
*:868 *:* LISTEN
*:617 *:* LISTEN
*:mysql *:* LISTEN
*:netbios-ssn *:* LISTEN
*:sunrpc *:* LISTEN
*:10000 *:* LISTEN
*:http *:* LISTEN
上面显示出,这台主机同时提供HTTP、FTP、NFS、MySQL等服务。
telnet表示开启终端机阶段作业,并登入远端主机。telnet是一个Linux命令,同时也是一个协议(远程登陆协议)。
2.格式
telnet [-8acdEfFKLrx][-b][-e][-k][-l][-n][-S][-X][主机名称IP地址&通信端口&]
3.主要参数
-8:允许使用8位字符资料,包括输入与输出。
-a:尝试自动登入远端系统。
-b:使用别名指定远端主机名称。
-c:不读取用户专属目录里的.telnetrc文件。
-d:启动排错模式。
-e:设置脱离字符。
-E:滤除脱离字符。
-f:此参数的效果和指定“-F”参数相同。
-F:使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机。
-k:使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名。
-K:不自动登入远端主机。
-l:指定要登入远端主机的用户名称。
-L:允许输出8位字符资料。
-n:指定文件记录相关信息。
-r:使用类似rlogin指令的用户界面。
-S:服务类型,设置telnet连线所需的IP TOS信息。
-x:假设主机有支持数据加密的功能,就使用它。
-X:关闭指定的认证形态。
4.应用说明
用户使用telnet命令可以进行远程登录,并在远程计算机之间进行通信。用户通过网络在远程计算机上登录,就像登录到本地机上执行命令一样。为了通过telnet登录到远程计算机上,必须知道远程机上的合法用户名和口令。虽然有些系统确实为远程用户提供登录功能,但出于对安全的考虑,要限制来宾的操作权限,因此,这种情况下能使用的功能是很少的。
telnet只为普通终端提供终端仿真,而不支持X-Window等图形环境。当允许远程用户登录时,系统通常把这些用户放在一个受限制的Shell中,以防系统被怀有恶意的或不小心的用户破坏。用户还可以使用telnet从远程站点登录到自己的计算机上,检查电子邮件、编辑文件和运行程序,就像在本地登录一样。
ftp命令进行远程文件传输。FTP是ARPANet的标准文件传输协议,该网络就是现今Internet的前身,所以ftp既是协议又是一个命令。
2.格式
ftp [-dignv][主机名称IP地址]
3.主要参数
-d:详细显示指令执行过程,便于排错分析程序执行的情形。
-i:关闭互动模式,不询问任何问题。
-g:关闭本地主机文件名称支持特殊字符的扩充特性。
-n:不使用自动登陆。
-v:显示指令执行过程。
4.应用说明
ftp命令是标准的文件传输协议的用户接口,是在TCP/IP网络计算机之间传输文件简单有效的方法,它允许用户传输ASCⅡ文件和二进制文件。为了使用ftp来传输文件,用户必须知道远程计算机上的合法用户名和口令。这个用户名/口令的组合用来确认ftp会话,并用来确定用户对要传输的文件进行什么样的访问。另外,用户需要知道对其进行ftp会话的计算机名字的IP地址。
用户可以通过使用ftp客户程序,连接到另一台计算机上;可以在目录中上下移动、列出目录内容;可以把文件从远程计算机机拷贝到本地机上;还可以把文件从本地机传输到远程系统中。ftp内部命令有72个,下面列出主要几个内部命令:
ls:列出远程机的当前目录。
cd:在远程机上改变工作目录。
lcd:在本地机上改变工作目录。
close:终止当前的ftp会话。
hash:每次传输完数据缓冲区中的数据后就显示一个#号。
get(mget):从远程机传送指定文件到本地机。
put(mput):从本地机传送指定文件到远程机。
quit:断开与远程机的连接,并退出ftp。
route表示手工产生、修改和查看路由表。
2.格式
#route [-add][-net|-host] targetaddress [-netmask Nm][dev]If]
#route [-delete][-net|-host] targetaddress [gw Gw] [-netmask Nm] [dev]If]
3.主要参数
-add:增加路由。
-delete:删除路由。
-net:路由到达的是一个网络,而不是一台主机。
-host:路由到达的是一台主机。
-netmask Nm:指定路由的子网掩码。
gw:指定路由的网关。
[dev]If:强迫路由链指定接口。
4.应用实例
route命令是用来查看和设置Linux系统的路由信息,以实现与其它网络的通信。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。
在Linux系统中,设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为Linux机器的默认路由。使用下面命令可以增加一个默认路由:
route add 0.0.0.0 192.168.1.1
rlogin用来进行远程注册。
2.格式
rlogin [ -8EKLdx ] [ -e char ] [-k realm ] [ - l username ] host
3.主要参数
-8:此选项始终允许8位输入数据通道。该选项允许发送格式化的ANSI字符和其它的特殊代码。如果不用这个选项,除非远端的不是终止和启动字符,否则就去掉奇偶校验位。
-E:停止把任何字符当作转义字符。当和-8选项一起使用时,它提供一个完全的透明连接。
-K:关闭所有的Kerberos确认。只有与使用Kerberos 确认协议的主机连接时才使用这个选项。
-L:允许rlogin会话在litout模式中运行。要了解更多信息,请查阅tty联机帮助。
-d:打开与远程主机进行通信的TCP sockets的socket调试。要了解更多信息,请查阅setsockopt的联机帮助。
-e:为rlogin会话设置转义字符,默认的转义字符是“~”。
-k:请求rlogin获得在指定区域内远程主机的Kerberos许可,而不是获得由krb_realmofhost(3)确定的远程主机区域内的远程主机的Kerberos许可。
-x:为所有通过rlogin会话传送的数据打开DES加密。这会影响响应时间和CPU利用率,但是可以提高安全性。
4.使用说明
如果在网络中的不同系统上都有账号,或者可以访问别人在另一个系统上的账号,那么要访问别的系统中的账号,首先就要注册到系统中,接着通过网络远程注册到账号所在的系统中。rlogin可以远程注册到别的系统中,它的参数应是一个系统名。
rcp代表远程文件拷贝,用于计算机之间文件拷贝,使用权限是所有用户。
2.格式
rcp [-px] [-k realm] file1 file2 rcp [-px] [-r] [-k realm] file
3.主要参数
-r:递归地把源目录中的所有内容拷贝到目的目录中。要使用这个选项,目的必须是一个目录。
-p:试图保留源文件的修改时间和模式,忽略umask。
-k:请求rcp获得在指定区域内的远程主机的Kerberos许可,而不是获得由krb_relmofhost(3)确定的远程主机区域内的远程主机的Kerberos许可。
-x:为传送的所有数据打开DES加密。
finger用来查询一台主机上的登录账号的信息,通常会显示用户名、主目录、停滞时间、登录时间、登录Shell等信息,使用权限为所有用户。
2.格式
finger [选项] [使用者] [用户@主机]
3.主要参数
-s:显示用户注册名、实际姓名、终端名称、写状态、停滞时间、登录时间等信息。
-l:除了用-s选项显示的信息外,还显示用户主目录、登录Shell、邮件状态等信息,以及用户主目录下的.plan、.project和.forward文件的内容。
-p:除了不显示.plan文件和.project文件以外,与-l选项相同。
4.应用实例
在计算机上使用finger:
[root@localhost root]# Finger
Login Time
Office Phone
5.应用说明
如果要查询远程机上的用户信息,需要在用户名后面接“@主机名”,采用[用户名@主机名]的格式,不过要查询的网络主机需要运行finger守护进程的支持。
mail作用是发送电子邮件,使用权限是所有用户。此外,mail还是一个电子邮件程序。
2.格式
[-s subject] [-c address] [-b address]
mail -f [mailbox]mail [-u user]
3.主要参数
-b address:表示输出信息的匿名收信人地址清单。
-c address:表示输出信息的抄送()收信人地址清单。
-f [mailbox]:从收件箱者指定邮箱读取邮件。
-s subject:指定输出信息的主体行。
[-u user]:端口指定优化的收件箱读取邮件。
nslookup命令的功能是查询一台机器的IP地址和其对应的域名。使用权限所有用户。它通常需要一台域名服务器来提供域名服务。如果用户已经设置好域名服务器,就可以用这个命令查看不同主机的IP地址对应的域名。
2.格式
nslookup [IP地址/域名]
3.应用实例
(1)在本地计算机上使用nslookup命令
$ nslookup
Default Server: .cn
Address: 192.168.1.9
在符号“&”后面输入要查询的IP地址域名,并回车即可。如果要退出该命令,输入“exit”,并回车即可。
(2)使用nslookup命令测试named
输入下面命令:
然后就进入交换式nslookup环境。如果named正常启动,则nslookup会显示当前DNS服务器的地址和域名,否则表示named没能正常启动。
下面简单介绍一些基本的DNS诊断。
◆检查正向DNS解析,在nslookup提示符下输入带域名的主机名,如,nslookup应能显示该主机名对应的IP地址。如果只输入hp712,nslookup会根据/etc/resolv.conf的定义,自动添加my.com域名,并回答对应的IP地址。
◆检查反向DNS解析,在nslookup提示符下输入某个IP地址,如192.22.33.20,nslookup应能回答该IP地址所对应的主机名。
◆检查MX邮件地址记录在nslookup提示符下输入:
然后输入某个域名,输入my.com和,nslookup应能够回答对应的邮件服务器地址,即和。
1.危险的网络命令
互联网的发展使安全成为一个不能忽视的问题,finger、ftp、rcp和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,嗅探器可以非常容易地截获这些口令和数据。而且,这些服务程序的安全验证方式也是有弱点的,很容易受到“中间服务器”方式的攻击。这里笔者把一些不安全的命令根据危险等级列出,见表3所示。
现在ftp、telnet可以被SSH命令代替绑定在端口22上,其连接采用协商方式,使用RSA加密。身份鉴别完成之后,后面的所有流量都使用IDEA进行加密。SSH(Secure Shell)程序可以通过网络登录到远程主机,并执行命令。rcp、rlogin等远程调用命令也逐渐被VNC软件代替。
2.在一张网卡上绑定多个IP地址
在Linux下,可以使用ifconfig方便地绑定多个IP地址到一张网卡。例如,eth0接口的原有IP地址为192.168.0 .254,可以执行下面命令:
ifconfig eth0:0 192.168.0.253 netmask 255.255.255.0
ifconfig eth0:1 192.168.0.252 netmask 255.255.255.0
3.修改网卡MAC地址
首先必须关闭网卡设备,命令如下:
/sbin/ifconfig eth0 down
修改MAC地址,命令如下:
/sbin/ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE
重新启用网卡:
/sbin/ifconfig eht0 up
这样网卡的MAC地址就更改完成了。每张网卡的MAC地址是惟一,但不是不能修改的,只要保证在网络中的MAC地址的惟一性就可以了。
4.初步部署IPv6
IPv4技术在网络发展中起到了巨大的作用,不过随着时间的流逝它无论在网络地址的提供、服务质量、安全性等方面都越来越力不从心,IPv6呼之欲出。Linux是所有操作系统中最先支持IPv6的,一般Linux基于2.4内核的Linux发行版本都可以直接使用IPv6,不过主要发行版本没有加载IPv6模块,可以使用命令手工加载,需要超级用户的权限。
(1)加载IPv6模块
使用命令检测,其中inet6 addr: fe80::5054:abff:fe34:5b09/64,就是eth0网卡的IPv6地址。
# modprobe IPv6
#ifconfig
Link encap:Ethernet
HWaddr 52:54:AB:34:5B:09
inet addr:192.168.1.2
Bcast:192.168.1.255
Mask:255.255.255.0
inet6 addr: fe80::5054:abff:fe34:5b09/64 Scope:Link
UP BROADCAST RUNNING MULTICAST
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:21 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 b)
TX bytes: Kb)
Interrupt:5 Base address:0xec00
(2)使用ping命令检测网卡的IPv6地址是否有效
#ping6 -I eth0 -c 2 fe80::200:e8ff:fea0:2586
和IPv4不一样,使用ping6命令时必须指定一个网卡界面,否则系统不知道将数据包发送到哪个网络设备。I表示Interface、eth0是第一个网卡,-c表示回路,2表示ping6操作两次。结果见图1所示。
图1 IPv6网络下的ping6命令
(3)使用ip命令在IPv6下为eth0增加一个IP地址
#ip -6 addr add 3ffe:ffff:0:f101::1/64 dev eth0
使用ifconfig命令,查看网卡是否出现第二个IPv6地址。
Linux网络的主要优点是能够实现资源和信息的共享,并且用户可以远程访问信息。Linux提供了一组强有力的网络命令来为用户服务,这些工具能够帮助用户进行网络设定、检查网络状况、登录到远程计算机上、传输文件和执行远程命令等。
上面介绍了Linux中比较重要的网络命令,其实Linux还有许多命令需要学习。Linux网络操作命令的一个特点就是命令参数选项很多,并不要求全部记住,关键在于理解命令的主要用途和学会使用帮助信息。(T111)
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:48328次
排名:千里之外
原创:26篇
转载:10篇
(7)(23)(5)(1)

我要回帖

更多关于 不一样的美男子 的文章

 

随机推荐