linux linux中git命令使用用不了怎么办

比特客户端
您的位置:
详解大数据
详解大数据
详解大数据
详解大数据
Linux中history历史命令使用方法详解
关键字:Linux技巧
  当你在玩的时候,如果你经常使用命令行来控制你的Linux系统,那么有效地使用命令历史机制将会使效率获得极大提升。事实上,一旦你掌握了我在下面给出的15个有关Linux history历史命令的例子,你就会发现使用history历史命令行将更有乐趣。
  1、使用HISTTIMEFORMAT在历史中显示TIMESTAMP
  通常情况下,当你在命令行中键入history时,终端中将显示你刚输入的命令及其编号。如果出于审查命令的目的,和命令一起显示时间戳将会很有帮助,如下所示。
  # export HISTTIMEFORMAT='%F %T '
  # history | more
19:02:39 service network restart
19:02:39 exit
19:02:39 id
19:02:39 cat /etc/redhat-release
  [注:你也可以设置alias语句来查看最近的历史命令]
  alias h1='history 10'
  alias h2='history 20'
  alias h3='history 30'
  2、用Ctrl + R搜索历史命令
  我非常确信这应该是你最常使用的history特性,当你执行了一串相当长的命令之后,你只要用关键字搜索一下历史命令然后重新执行这条命令而不需要将整条命令再输一遍。方法是:按下Ctrl +R然后输入关键字。 在以下示例中,我搜索“red”,则显示以前的命令中含有”red”的命令“cat/etc/redhat-release”。
  [注:在命令行提示符下按下Ctrl+R,终端将显示如下提示Dreverse-i-search‖]
  (reverse-i-search)`red`: cat/etc/redhat-release
  [注:当看到你要的命令后按回车键,就可以重新执行这条命令了]
  #cat /etc/redhat-release
   release 9 (Sulphur)
  而有的时候你需要在执行历史命令之前编辑它.比如,你可以像下面那样搜索“httpd”,终端显示历史命令“service httpd stop”,选择它把“stop”改为“start”然后执行它
  [注: 在命令提示符下按 Ctrl+R , 将会显示提示符‖reverse-i-search‖]
  (reverse-i-search)`httpd`: service httpdstop
  [注: 看到你想要的命令后按下左键或者右键,就可以在执行这条命令之前编辑它了]
  # service httpd start
  3、四种不同的方法快速执行之前的命令
  有时出于某些原因你需要执行之前的命令,下面的四种方法可以用来重复最后执行的命令:
  1.用向上键(up arrow )查看上条命令,按回车执行。
  2.在命令行中输入!!并按回车。
  3.在命令行中输入!-1并按回车。
  4.按Ctrl+P显示上条命令,按回车执行。
  4、执行历史命令中的特定命令
  在下面的例子中,如果你想再次执行第四条命令,执行!4即可
  #history | more
  1 service network restart
  2 exit
  4 cat /etc/redhat-release
  # !4 cat /etc/redhat-release
  Fedora release 9 (Sulphur)
  5、执行以特定字开头的历史命令
  输入!和你要重新执行的命令的前几个字母。在下面的例子中,输入!ps,回车,执行历史命令中以“ps”开头的“psaux | grep yp”
  psaux | grep yp
? Sl 13:10 0:00 ypbind
pts/0 S+ 19:19 0:00 grep yp
  6、用HISTSIZE控制历史命令的总数
  把下面的两行添加到.bash_profile然后重新登录bash(译者注:用source .bash_profile即可)查看有什么变化,在这个例子中,bash命令历史记录中只能储存450条命令。
  #vi ~/.bash_profile
  HISTSIZE=450
  HISTFLESIZE=450
  7、使用HISTFILE改变历史文件名
  默认情况下,命令历史被储存在.bash_history文件中,把下面的一行添加到.bash_profile文件中,重新登录shell,则.commandline_warrior文件将取代.bash_history文件用来储存历史命令。你可以使用这个命令来追踪不同终端中执行的命令,届时只需要将不同终端中所执行的命令保存在不同的历史文件中即可。
  #vi ~/.bash_profile
  HISTFILE=/root/.commandline_warrior
  8、使用HISTCONTROL来消除命令历史中的连续重复条目
  在下面的例子中pwd被输入了三次,当你使用history的时候,你会看到这三条命令连续出现。设置HISTCONTROL为ignoredups,来消除重复命令:
  # history | tail -4
  44 pwd
  45 pwd
  46 pwd
  47 history | tail -4
  [注: 上面pwd被执行了三次之后,历史中有三条pwd命令]
  # export HISTCONTROL=ignoredups
  # history | tail -3
  56 export HISTCONTROL=ignoredups
  57 pwd 58 history | tail -4
  [注:即使上面pwd被执行了三次,历史中也只有一条pwd命令]
  9、使用HISTCONTROL在整个历史中去除重复命令
  上面的ignoredups去除连续重复的命令,要消除整个命令历史中的重复命令,把HISTCONTROL设置成erasedups
  #export HISTCONTROL=erasedups
  # service httpd stop
  #history | tail -3
  38 pwd
  39 service httpd stop
  40 history | tail -3
  # ls -ltr
  # service httpd stop
  # history | tail -6
  35 export HISTCONTROL=erasedups
  36 pwd
  37 history | tail -3
  38 ls Cltr
  39 service httpd stop
  40 history | tail -6
  [注: 之前在pwd后面的servicehttpd stop命令被除去了]
  10、使用HISTCONTROL强制history忽略某条特定命令
  在执行一条命令时,你可以将HISTCONTROL设置为ignorespace并在该命令前加上一个空格来指示history忽略这条命令。可以预见的是,很多初级系统管理员将为他们能从history中成功隐藏某条命令而振奋。
  了解ignorespace的工作方式是很好。不过,实践中最好不要从history中去掩盖任何命令。
  #export HISTCONTROL=ignorespace
  # ls Cltr
  # service httpd stop
  [注: 在service的前面加上一个空格,以便在命令历史中忽略它]
  # history | tail -3
  67 ls Cltr
  68 pwd
  69 history | tail -3
  11、使用c选项清除所有的历史命令
  有时候你或许想要清除之前的历史命令。而你又想让history继续工作:
  #history Cc
  12、替换命令历史中的内容
  当你搜索历史命令时,你可能希望执行一个与刚刚查找到的历史命令具有相同的参数的命令。 在本例中,vi之后的"!!:$" 可以将前一个命令的参数做为当前命令的参数。
  #ls anaconda-ks.cfg
  anaconda-ks.cfg
  # vi !!:$
  vi anaconda-ks.cfg
  在下面的例子中,紧跟在vi后的参数“!^”把上一个命令的第一个参数传递给当前命令。
  #cp anaconda-ks.cfg anaconda-ks.cfg.bak
  anaconda-ks.cfg
  # vi !^
  vi anaconda-ks.cfg
  13、替换特定命令的特定参数
  在下例中,!cp:2 在命令历史中查找以cp开头的命令,并将其第二个参数做为当前命令(ls -l)的参数。
  #cp ~/longname.txt /really/a/very/long/path/long-filename.txt
  # ls -l !cp:2
  ls -l /really/a/very/long/path/long-filename.txt
  在下面的例子中“!cp:$”寻找先前以cp为开头的命令,并把该条指令的最后一个参数(在这个例子中依旧是第二个参数)替换到“ls Cl”中。
  #ls -l !cp:$
  ls -l /really/a/very/long/path/long-filename.txt
  14、用HISTSIZE禁用history
  如果你想禁用history,又不让bashshell记录你的命令,像下面那样把HISTSIZE设为0即可。
  #export HISTSIZE=0
  # history
  # [注: 执行history后没有显示任何信息]
  15、用HISTIGNORE让history在时忽略某些指令
  有时你不想在记录里看到诸如“pwd”,“ls”之类的基本指令,可以用HISTIGNORE忽略这些指令。
  注意在HISTIGNORE中添加“ls”,只忽略“ls”不忽略“ls Cl”。一定要准确的写出要忽略的的指令。
  #export HISTIGNORE=“pwd:ls:ls Cltr: ”
  # ls Cltr
  # service httpd stop
  # history | tail -3
  79 export HISTIGNORE=“pwd:ls:ls -ltr: ”
  80 service httpd stop
  81 history
  [注: history命令不显示pwd和ls]
[ 责任编辑:jj ]
新经济、新业态环境下,数据量呈…
甲骨文的云战略已经完成第一阶段…
软件信息化周刊
比特软件信息化周刊提供以数据库、操作系统和管理软件为重点的全面软件信息化产业热点、应用方案推荐、实用技巧分享等。以最新的软件资讯,最新的软件技巧,最新的软件与服务业内动态来为IT用户找到软捷径。
商务办公周刊
比特商务周刊是一个及行业资讯、深度分析、企业导购等为一体的综合性周刊。其中,与中国计量科学研究院合力打造的比特实验室可以为商业用户提供最权威的采购指南。是企业用户不可缺少的智选周刊!
比特网络周刊向企业网管员以及网络技术和产品使用者提供关于网络产业动态、技术热点、组网、建网、网络管理、网络运维等最新技术和实用技巧,帮助网管答疑解惑,成为网管好帮手。
服务器周刊
比特服务器周刊作为比特网的重点频道之一,主要关注x86服务器,RISC架构服务器以及高性能计算机行业的产品及发展动态。通过最独到的编辑观点和业界动态分析,让您第一时间了解服务器行业的趋势。
比特存储周刊长期以来,为读者提供企业存储领域高质量的原创内容,及时、全面的资讯、技术、方案以及案例文章,力求成为业界领先的存储媒体。比特存储周刊始终致力于用户的企业信息化建设、存储业务、数据保护与容灾构建以及数据管理部署等方面服务。
比特安全周刊通过专业的信息安全内容建设,为企业级用户打造最具商业价值的信息沟通平台,并为安全厂商提供多层面、多维度的媒体宣传手段。与其他同类网站信息安全内容相比,比特安全周刊运作模式更加独立,对信息安全界的动态新闻更新更快。
新闻中心热点推荐
新闻中心以独特视角精选一周内最具影响力的行业重大事件或圈内精彩故事,为企业级用户打造重点突出,可读性强,商业价值高的信息共享平台;同时为互联网、IT业界及通信厂商提供一条精准快捷,渗透力强,覆盖面广的媒体传播途径。
云计算周刊
比特云计算周刊关注云计算产业热点技术应用与趋势发展,全方位报道云计算领域最新动态。为用户与企业架设起沟通交流平台。包括IaaS、PaaS、SaaS各种不同的服务类型以及相关的安全与管理内容介绍。
CIO俱乐部周刊
比特CIO俱乐部周刊以大量高端CIO沙龙或专题研讨会以及对明星CIO的深入采访为依托,汇聚中国500强CIO的集体智慧。旨为中国杰出的CIO提供一个良好的互融互通 、促进交流的平台,并持续提供丰富的资讯和服务,探讨信息化建设,推动中国信息化发展引领CIO未来职业发展。
IT专家新闻邮件长期以来,以定向、分众、整合的商业模式,为企业IT专业人士以及IT系统采购决策者提供高质量的原创内容,包括IT新闻、评论、专家答疑、技巧和白皮书。此外,IT专家网还为读者提供包括咨询、社区、论坛、线下会议、读者沙龙等多种服务。
X周刊是一份IT人的技术娱乐周刊,给用户实时传递I最新T资讯、IT段子、技术技巧、畅销书籍,同时用户还能参与我们推荐的互动游戏,给广大的IT技术人士忙碌工作之余带来轻松休闲一刻。
微信扫一扫
关注ChinabyteIBM Bluemix
点击按钮,开始云上的开发!
developerWorks 社区
GUI 非常优秀,但是要释放 Linux® 的真正威力,命令行是任何东西都无法取代的。在这篇文章中,Ian Shields 为您介绍了 bash shell 的一些主要特性,并重点介绍对 LPI 认证非常重要的特性。阅读完本文后,您将可以非常熟练地使用基本的 Linux 命令,比如 echo 和 exit、设置环境变量,以及收集系统信息。
, 高级程序员, EMC
Ian Shields 参与 developerWorks Linux 专区的许多 Linux 项目。他是 IBM 北卡罗莱那州 Research Triangle Park 的一名高级程序员。他于 1973 年作为一名系统工程师加入 IBM 位于澳大利亚堪培拉的子公司。之后,在加拿大蒙特利尔和北卡罗莱那州 RTP 从事通信系统和普及运算。他拥有多项专利。他毕业于 Australian National University,本科学位是纯粹数学和哲学。他拥有北卡罗来纳州立大学的计算机硕士和博士学位。
概述本文提供了对 bash shell 的某些主要特性的简介,并且涵盖了以下这些主题: 使用命令行与 shell 和命令交互使用有效的命令和命令序列定义、修改、引用和导出环境变量访问命令历史并编辑实用工具 在路径内和路径外调用命令 使用手册页查找相关的命令 本文帮助您准备 Junior Level Administration (LPIC-1) 考试 101 中主题 103 下的目标 103.1。该目标的权值为 4。
shell 是一个非常丰富的环境,我们鼓励您进一步研究它。许多出色的书籍都专门介绍了 UNIX 和 Linux shell,而 bash shell 则是其中的重点;参见
获得一些建议。bash shellbash 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 所示。 清单 1. 一些典型的用户提示[db2inst1@echidna db2inst1]$
ian@lyrebird:~&
$如果作为根用户(或者超级用户)登录,您看到的提示应该如清单 2 所示。
清单 2. 超级用户或根用户的提示示例[root@echidna ~]#
lyrebird:~ #
#根用户具有相当大的权力,因此使用时应十分小心。当您拥有根权限时,大部分提示都包括一个 # 符号。普通用户的权限通常使用一个不同的字符加以区别,通常为一个美元符号($)。您实际看到的提示可能不同于本文显示的示例。您的提示也许包括用户名、主机名、当前目录、日期或输出提示的时间,等等。 这些文章包含的代码示例剪切自真实的 Linux 系统,使用了默认的提示。我们的根提示包含一个拖尾 # 号,因此您可以将它们与普通用户提示区分开,因为后者使用了一个拖尾 $ 符号。许多介绍此主题的书籍都一致使用这个约定。如果某些内容出错的话,那么检查示例中的提示。 命令和序列现在您拥有了一个提示,让我们看看该如何处理它。shell 的主要功能是对您的命令进行解释,这样您就可以与 Linux 系统进行交互。在 Linux(以及 UNIX®)系统中,命令具有一个命令名称,以及选项 和参数。某些命令既没有选项,也没有参数,而另一些命令可能只具有其中之一。如果一行代码中包含一个 # 字符,那么该行中的所有其他字符都可以被忽略。因此 # 字符可能表示一个注释以及一个根提示,这可以从上下文中看出来。Echoecho 命令将它的参数输出(或回传)到终端,如清单 3 所示。 清单 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
spaces.在清单 3 的第三个示例中,所有额外的空间都被压缩到输出的单个空间中。为了避免这种情况,需要使用双引号(")或单引号(')将字符串括起。Bash 使用空格,比如空白、制表符和换行符,来将输入行分离到标记(token)中,后者随后被传递给命令。使用引号引用字符串将保留多余的空格并将完整的字符串作为一个单一标记。在上面的示例中,命令名称之后的每一个标记都是一个参数,因此我们具有的参数分别为 1、2、4 和 1。
echo 命令包含两个选项。echo 通常会在输出的末尾加一个拖尾换行符。使用 -n 选项可以禁用这个行为。使用 -e 选项可以使某些反斜杠转义字符具有特殊的含义。其中一些如表 1 所示。
表 1. Echo 和转义字符转义 序列作用\a警告 (bell)\b退格\c禁用拖尾换行(与 -n 选项作用相同)\f换页(在视频显示中清空屏幕) \n换行\r回车\t水平制表符转义和续行在 bash 中使用反斜杠存在一个小问题。当未使用引号引用反斜杠字符(时),将作为一个转义来表示 bash 本身,用于保留以下字符的字面含义。这对于特殊的 shell 元字符是非常必要的,我们将在稍后讨论。这条规则有一个例外:反斜杠后跟一个换行符将致使 bash 合并这两个字符并将字符序列作为一个续行请求处理。这样做可以方便地将比较长的行断开,特别是在 shell 脚本中。 要使用 echo 命令或众多其他使用类似转义控制字符的命令来正确地处理上述字符序列,必须使用引号将转义序列括起,或作为引用字符串的一部分,除非您使用了另一个反斜杠,以使 shell 为命令保留一个反斜杠。清单 4 展示了反斜杠的各种使用示例。
清单 4. 更多 echo 示例[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 shell 元字符和控制操作符(control operator)Bash 具有多个元字符,这些元字符在未使用引号括起时,可以用来将输入分成多个单词。除了空格以外,这些元字符还包括: | & ;
( )&&我们将在本文的其他部分更详细地讨论其中一些元字符。现在要注意的是,如果您希望包含一个元字符作为文本的一部分,那么必须使用引号括起,或是使用反斜杠 (\) 进行转义,如清单 4 所示。 换行和某些元字符或元字符对也可以用作控制操作符。它们包括:||&&&;;;|()其中一些控制操作符允许您创建命令序列 或列表。最简单的命令序列就是由两个命令组成的、用分号 (;) 分隔的序列。所有命令将按顺序执行。在任何可编程的环境中,命令返回成功或失败的指示;Linux 命令通常返回一个零值表示成功,并返回一个非零值表示失败。可以使用 && 和 || 控制操作符来将某些条件处理引入到列表中。如果使用控制操作符 && 来分隔两个命令,那么只有在第一个命令返回 0 表示退出时,才会执行第二个命令。如果使用 || 分隔命令,那么只有在第一个命令返回一个非零的退出代码时,才会执行第二个命令。清单 5 展示了一些使用 echo 命令的命令序列。这些例子并不怎么令人兴奋,因为 echo 返回了 0,但是当我们使用更多的命令时,您会看到更多例子。 清单 5. 命令序列[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
line 3退出您可以使用 exit 命令终止一个 shell。或者可以提供一个 exit 代码作为参数。如果您在图形桌面上的终端窗口中运行 shell,那么窗口将关闭。类似地,如果使用 ssh 或 telnet(举例来说)连接到一个远程系统,那么您的连接将中断。在 bash shell 中,可以同时按下 Ctrl键和 d 键来退出。 让我们查看另一个控制操作符。如果您使用圆括号括起命令或命令列表,那么命令或序列将在一个 sub shell 中执行,因此 exit 命令将退出 sub shell,而不是退出您所在的 shell。清单 6 展示了结合了 && 和 || 以及两个不同的退出代码的示例。 清单 6. Subshell 和序列[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
Bad exit本文后面将介绍更多命令序列。 环境变量当您在 bash shell 中运行时,有许多东西构成了您的环境,比如提示表单、主目录、工作目录、shell 名称、打开的文件、定义的函数,等等。您的环境包括许多由 bash 或您设置的变量。bash shell 还允许您拥有 shell 变量,可以将其导出 到您的环境,以供运行在 shell 中的其他进程或衍生自当前 shell 的其他 shell 使用。 环境变量和 shell 变量都具有一个名称。可以通过在名称前面加一个 “$” 前缀来引用变量的值。表 2 显示了您将经常遇到的一些 bash 环境变量。表 2. 一些常见 bash 环境变量名称作用USER已登录用户的名称UID用数字表示的已登录用户的用户 idHOME用户的主目录PWD当前的工作目录SHELLshell 的名称$进程 id(或运行的 bash shell 或其他进程的 PIDPPID启动当前进程的进程的 id(即父进程的 id) ?上一个命令的退出代码 清单 7 展示了这些常见 bash 变量的内容。
清单 7. 环境和 shell 变量[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 的更多信息(参见
获得系列路线图)。清单 8. 更多环境和 shell 变量[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
/bin/bash注意:在序列的开始部分,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 被突出显示。
清单 9. 引用和 shell 变量[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 所示。 清单 10. 使用花括号表示变量名[ian@echidna ~]$ echo "-$HOME/abc-"
-/home/ian/abc-
[ian@echidna ~]$ echo "-$HOME_abc-"
[ian@echidna ~]$ echo "-${HOME}_abc-"
-/home/ian_abc-Envenv 在不包含任何选项或参数的情况下将显示当前的环境变量。可以使用它来在定制环境中执行命令。-i(或 -)选项将在运行命令之前清空当前环境,而 -u 选项取消了您不喜欢传递的环境变量。 清单 11 展示了不带任何参数的 env 命令的部分输出,以及在无父环境的情况下调用不同 shell 的三个例子。在我们进行讨论之前请仔细查看它们。 注意:如果系统还没有安装 ksh (Korn) 或 tcsh shell,那么您需要自己动手安装这些 shell。 清单 11. env 命令[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 的值的时候生成了一个错误。 Unset 和 set清单 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 $- 显示当前设置的选项。
清单 12. Unset 和 set[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 $-
himBH如果使用不包含任何选项的 set 命令,它将显示所有 shell 变量及变量值(如果有的话)。还有另一个命令 declare,可以用它创建、导出和现实 shell 变量的值。可以通过手册页研究其他各种 set 选项和 declare 命令。我们稍后将讨论 。Exec最后将要介绍的命令是 exec。可以使用 exec 命令来运行将替换当前 shell 的另一个程序。启动 13 启动了一个子 bash shell 并使用 exec 来将它替换为一个 Korn shell。从 Korn shell 退出后,您将回到初始的 bash shell(本例为 PID 2852)中。 清单 13. 使用 exec[ian@echidna ~]$ echo $$
[ian@echidna ~]$ bash
[ian@echidna ~]$ echo $$
[ian@echidna ~]$ exec ksh
[ian@echidna ~]$ echo $$
2852使用 uname 显示系统信息 uname 命令输出有关您的系统及其内核的信息。清单 14 展示了 uname 的各种选项以及生成的信息;每个选项在表 3 中进行了定义。 清单 14. uname 命令[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 选项选项描述-s输出内核名称。如果没有指定任何选项的话,那么这将是默认行为。 -n输出节点名或主机名。-r输出内核的发行版。这个选项常常结合用于模块处理命令。 -v输出内核的版本。-m输出机器的硬件(CPU)名。-o输出操作系统名称。-a输出以上所有信息。清单 14 来自运行 Intel® CPU 的 Fedora 11 系统。uname 命令可用于大多数 UNIX® 和类 UNIX 系统以及 Linux。根据所使用的 Linux 发行版和版本以及所运行机器的具体类型,输出的信息也各有差异。清单 15 展示了运行 Ubuntu 9.04 的 AMD Athlon 64 系统的输出。 取得 15. 对其他系统使用 unameian@attic4:~$ uname -a
Linux attic4 2.6.28-14-generic #47-Ubuntu SMP Sat Jul 25 01:19:55 UTC
GNU/Linux命令历史如果您在阅读本文时输入命令,那么可能会注意到经常会多次使用同一个命令,可能输入完全相同的命令,或者是稍微做一些修改。好消息是 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 显示了一些历史功能。 清单 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)定制选项等内容可以在手册页中找到。 表 3. 使用 emacs 命令编辑历史命令常用 PC 键说明C-f右箭头向右移动一个空格C-b左箭头向左移动一个空格C-p向上箭头将命令移动到命令历史的前面C-n向下箭头将命令移动到命令历史的后面C-r增量反向搜索。输入一个或多个字符以向后搜索某个字符串。再次按下 C-r 以搜索同一字符串在历史中下一次出现的位置。M-fAlt-f移动到下一单词的开始部分;GUI 环境常常使用这个键组合来打开窗口的 File 菜单M-bAlt-b移动到前一个字符的开始部分 C-aHome移动到行首C-eEnd移动到行尾BackspaceBackspace删除游标前面的字符C-dDel删除游标以后的字符(Del 和 Backspace 功能可能被配置为相反的含义) C-kCtrl-k删除到行末,并保存被删除的文本供以后使用M-dAlt-d删除到单词末尾,并保存被删除的文本供以后使用C-yCtrl-y恢复使用 kell 命令删除的文本 如果喜欢用 vi 类的编辑模式操作历史,那么使用 set -o vi 命令来切换到 vi 模式。使用 set -o emacs 切换回 emacs 模式。当在 vi 模式下检索到一个命令后,您最初将位于 vi 的 insert 模式。vi 编辑器将在本系列另一篇文章中介绍(参见
获得系列路线图)。路径 - 我的命令在哪里? 一些 bash 命令都是内置的,而另一些则来自外部。让我们探讨一下外部命令以及如何运行它们,以及如何判断某个命令是否是内部的。 shell 如何查找命令?外部命令就是指文件系统中的文件。基本命令管理将在本系列另一篇文章中介绍(参见
获得系列路线图)。在 Linux 和 UNIX 系统上,所有文件都作为一个大型树的其中一部分访问,这个树的根为 /。在我们的示例中,我们的当前目录目前为止一直都是用户的主目录。非根用户常常在 /home 目录中有一个主目录,比如这里的主目录为 /home/ian。根用户的主目录通常为 /root。如果输入一个命令名,那么 bash 将在您的路径(path)中查找该命令,路径就是指 PATH 环境变量中以冒号分隔的目录列表。 如果您希望知道在输入特定字符串后将执行哪个命令,那么使用 which 或 type 命令。清单 17 展示了我的默认路径以及多个命令的位置。 清单 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 展示了一些示例。 清单 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 显示了一些示例。 清单 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. 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 解释了这些命令。 清单 20. Whatis 和 apropos 示例[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(重复最后一次搜索)以及其他许多命令的信息。 其他文档来源除了从命令行访问手册页外,Free
Software Foundation 提供了大量使用 info 程序处理过的 info 文件。它们提供了大量导航功能,包括跳到其他章节的功能。尝试 man info 或 info info 获得更多信息。并非所有的命令都使用 info 归档,因此如果您是一名 info 用户的话,那么可以同时使用 man 和 info。手册页还包含许多图形界面,比如 xman(来自 XFree86 Project)和 yelp(Gnome 2.0 帮助浏览器)。 如果无法获得有关某个命令的帮助,尝试用 --help 选项运行命令。这将提供命令的帮助,或者它将告诉您如何获得所需的帮助。
参考资料 使用
找到可以帮助您准备 LPIC-1 认证的 developerWorks 文章。 回顾 developerWorks 上的整个 ,学习 Linux 基础知识并为参加系统管理员认证考试做好准备。
中,找到 Linux Professional Institute 的 Linux 系统管理认证的任务列表、样例问题和详细目标。
在 “”(developerWorks,2005 年 3 月)中,了解如何打开一个终端窗口或 shell 提示以及更多内容。
提供了大量有用的文档,特别是 HOWTO 文档。 在
寻找为 Linux 开发人员(包括 )准备的更多参考资料,查阅我们 。 在 developerWorks 上查阅所有
和 。 随时关注 developerWorks 和。
使用可直接从 developerWorks 下载的
构建您的下一个 Linux 开发项目。 。加入 ;您可以通过个人信息和定制主页获得自己感兴趣的 developerWorks 文章,并与其他 developerWorks 用户进行交流。
developerWorks: 登录
标有星(*)号的字段是必填字段。
保持登录。
单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件。
在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。
所有提交的信息确保安全。
选择您的昵称
当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。
您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。
标有星(*)号的字段是必填字段。
(昵称长度在 3 至 31 个字符之间)
单击提交则表示您同意developerWorks 的条款和条件。 .
所有提交的信息确保安全。
文章、教程、演示,帮助您构建、部署和管理云应用。
立即加入来自 IBM 的专业 IT 社交网络。
为灾难恢复构建应用,赢取现金大奖。
static.content.url=/developerworks/js/artrating/SITE_ID=10Zone=LinuxArticleID=426625ArticleTitle=学习 Linux,101: Linux 命令行publish-date=

我要回帖

更多关于 windows使用linux命令 的文章

 

随机推荐