个人工具

UbuntuHelp:AdvancedCommandlineHowto/zh

来自Ubuntu中文

跳转至: 导航, 搜索


简介

这篇文档的目的是让你了解一些命令行的高级特性。文档将假定你已经阅读了CommandlineHowto。同时可以参见索引页[1][2]中的优秀文档。

命令导航

键盘快捷键

这是一份在默认shell, bash (/bin/bash)中经常使用的快捷键列表: 向上箭头向下箭头: 在当前会话中使用过的命令。
Ctrl + A: 移动光标到当前行的开始。
Ctrl + E: 移动光标到当前行的结尾。
Ctrl + U: 清除当前行。
Ctrl + H: 等同于空格。
Ctrl + K: 删除从当前光标位置开始的列。
Ctrl + W: 删除当前光标位置以前的词。
Ctrl + D: 在空白行等同于 exit 命令。否则, 删除光标前面的一个字符。
Ctrl + C: 停止当前正在运行的命令。

history 命令

history 命令是一个允许你 查看/使用 那些你已经使用过的命令的便捷的工具。这个工具的一个好处在于当你需要多次使用同一个命令时。当你解决一个系统问题或者你试图在Linux中设置一个特性时, 这个工具会变得很有用处。与 向上箭头向下箭头 不同, 就像在这篇文档先前部分看到的一样, history命令将存储所有使用过的命令并与当前终端会话使用的命令进行对照。这是一个使用 history 命令的例子。

localuser@localhost:~ $ history
1 ls
2 cd /
3 ls
4 history
localuser@localhost:~ $!1
test1.pdf
test2.txt
test3.gif
localuser@localhost:~ $

正如你看到的上面的例子, history 命令只会列出最近使用过的命令。在这个例子中你也能通过使用 ! 跟随命令号码来执行一个以前的命令。单独使用 !! 将再次执行最近使用的命令。

不同种类的命令行函数

这有一组不同种类的函数使得使用命令行更加简单。

环境变量

环境变量是能被所有命令使用的全局变量。存储在这些变量中的一部分信息是公共信息和系统信息。环境变量的一个例子是 PATH, 它包含了所有可执行程序的位置。使用 env 允许你列出和调整环境变量。当你单独使用 env 变量时, 将会列出所有环境变量。这是一个调整环境变量的例子:

localuser@localhost:~ $ env HOME=/usr/users/pmd bash

这个例子将改变你的 home 目录在开启subshell之前。

alias 命令

alias 命令允许你定义一个新的命令。这是一个使用 alias 命令的例子:

localuser@localhost:~ $ alias l='ls -r'

这个例子将允许你使用 l (译者: 这是斜体的 l, 不是斜扛) 以相反的顺序查看目录。

脚本

脚本是包含在一个逻辑文件中完成特定任务的命令的集合。脚本实例是一个登录脚本, 允许你启动程序或者设置变量且只被那个用户使用。假定本页面所需知识是你能使用一个编辑器。

编辑器

在Linux的世界里, 有很多关于什么是最好的编辑器的争论。每一个编辑器都有缺点和优点, 你所要做的就是确定一个, 试用它, 找到一个你喜欢的, 然後学习怎样正确地使用它。这有一个最普遍使用的编辑器列表。关于每一个编辑器的附加信息的链接已经在下面提供。

  • Emacs Emacs被 GNU 计划描述为: 可扩展的, 可定制的, 自文档化实时显示编辑器。作为 Richard Stallman 的 GNU 计划的一部分, Emacs常常适合初学者, 同时它也隐藏了那些深奥的需要仔细学习来释放这个编辑器所有能力的部分。注意: Emacs没有包含在标准的Ubuntu安装中, 可以从 Universe Repository 安装。Emacs Homepage
  • Vim-gnome Vim-gnome是Ubuntu提供的Vim的版本。主页描述Vim是: 一个先进的文本编辑器, 寻求提供事实上 (de-facto) Unix编辑器"Vi"的能力和更完全的特性集合。不像大多数其它的编辑器, Vim是一个双模式编辑器, 一个模式用来文档编辑, 另一个用来实际地插入文本。这似乎会难倒新用户, 但是同Emacs一样, 这个编辑器拥有需要学习的强大的特性。注意: Vim-gnome默认没有被安装到Ubuntu中, 但可以从安装CD中获得。Vim Homepage
  • nano 主页自豪地声明: GNU nano是一个小型的、友好的文本编辑器。与Emacs和Vim不同, 关于nano, 需要学习的很少, 你能键入脚本, 你能 查找/替换, 你能很快地开始使用。它缺少一些或者说大部分被专业的编码者需要的特性, 但它也有它自己的长处——最特别的是它很小的规模和内存需求, 这意味着它几乎总是被安装在任何基于Unix的环境中。GNU nano当然也是你的Ubuntu安装的一部分。Nano Homepage

怎样编写脚本

你能通过建立一个叫做脚本的文件来保存你每次需要在命令行中输入的, 而且可以重复任意次。你可以简单地编辑一系列重复的命令到一个文件中。编辑一个叫做 reverse 文件, 填入下面一行:

ls -ltr

我们现在需要改变这个文件, 使得它可以被执行:

$ chmod +x reverse

现在我们可以执行这个文件:

$ ./reverse

你应该能够看到目录以颠倒的顺序列出。当然有很多更简单的方法可以达到这个目的, 这只是一个简单的实例。上面的脚本将运行在用户的命令环境。因为这是一个非常简单的脚本, 它将可以工作在任何我所知道的shell中。你也可以使用特定的符号通知你的电脑哪个程序将用于你的脚本。看下面这个例子:

#!/bin/bash
echo "Hello World"

这个简单的脚本用了两行。第一行通知你的系统这段脚本使用bash程序, 位置在/bin/bash。这被完成通过使用'#!', 通常被叫做'hash-bang'。第二行是将命令传递给/bin/bash/程序, 在这里'Hello World'被打印在你的终端中。

其它脚本语言

Perl

perl (Practical Extraction and Report Language)[3]是一种一般用途脚本语言, 由 Larry Wall 创造。Perl的一个长处是文本操作。

Python

Python[4]是一种强大的面向对象脚本语言。

其它shell

通常其它的shell不被推荐使用, 主要是它与其它系统的兼容性。比如说, 你也许正在为 AIX Unix 系统开发一些东西, 而它的默认shell是ksh, 因此你必须在ksh下测试, 而不是bash。

(pd)ksh

ksh (korn shell)[5]是早期的高级shell之一。在ksh中编写的代码几乎不用修改就可以在bash中运行, 而且它们也不是完全不同。ksh是商用Unix发行版中常用的默认shell。

(t)csh

(t)csh[6]脚本语言是基于C的语法, 而且被认为比古老的bourne shell脚本简单。这个shell主要被用于支持现有的那些很早以前编写的应用程序。比如说OpenOffice.org, 因为历史上的原因而使用tcsh shell脚本。

zsh

zsh[7]是一种高级的脚本语言。它比bash拥有更好的命令行完成度。

索引及更多的材料

1. Introduction to Bash Scripting
2. Advanced Bash Scripting Guide
3. Learning perl
4. Python
5. (pd)ksh
6. (t)csh
7. zsh
  1. Introduction to Bash Scripting
  2. Advanced Bash Scripting Guide
  3. Learning perl
  4. Python
  5. (pd)ksh
  6. (t)csh
  7. zsh