所有 Linux 系列文章使用环境均为 Fedora 20 (Heisenbug) 或 RHEL 7.
1. Terminal
打开 Linux Terminal ,一般会看到这样的显示:[ybian@m3l3 ~]$
-
ybian
:表示目前登陆的帐号 -
@m3l3
:@ 之后的表示主机名 -
~
:表示当前所在目录,~
代表当前帐号所在的家目录,在当前情况下相当于/home/ybian
-
$
:提示符,普通用户的提示符为$
, root 的提示符为#
由于 root 用户的拥有所有权限,所以一般建议使用普通用户登陆操作,只有需要进行系统功能配置修改时才使用 root 用户登陆。
2. 在 Terminal 执行命令
命令的语法:command [options] parameter1 parameter2 ...
一行命令中输入的第一部分为 command(命令的名称)或一个可执行文件
包含在
[ ]
中的内容是可选的,一般是命令的选项。选项分为两种,一种是前边带有-
的简写形式,另一种是带--
的选项的完整名称在选项后边为命令或选项需要的参数,可能为 0 个或多个
命令、选项和参数之间以空格进行区分,无论多少个空格都会被 Shell 解释为一个空格
可以使用反斜线
\
使命令延续到下一行,除非 \ 代表转义-
当命令输入结束后,直接回车即可执行命令
一般情况下文章忽略命令的执行结果,只关心命令本身
[ybian@m3l3 ~]$ ls # ls 是 Linux 中的一个命令,在 Terminal 里直接输入命令即可执行
[ybian@m3l3 ~]$ ls -a # 在命令后边可以添加相应的参数对命令进行补充,从而得到想要的结果
[ybian@m3l3 ~]$ ls --all # 选项可以有以 - 开头的短选项,也有以 -- 开头的长选项
[ybian@m3l3 ~]$ cd Documents # 有些命令需要参数,参数和选项的位置并不固定,但一般参数在后
[ybian@m3l3 ~]$ cd \
Documents # 可以使用反斜线 \ 延续命令至下一行
```
-
需要注意的一点:在 Linux 中严格区分大小写,不管是文件名或是命令,都需要注意大小写
$ Ls
bash: Ls: command not found...
Similar command is: 'ls' # 如果输入一个错误的命令,则会出现错误提示
```
3. Terminal 下几个重要的快捷键
-
Tab:Tab 是最经常使用的快捷键之一,它具有命令补全和文件补全的功能。即当我们输入命令的前几个字母时,按下 Tab 键可以帮助我们补全命令;如果根据输入的字母无法确定命令,连续两次按下 Tab 键会将以这几个字母开始的所有命令都列出来。
$ shu [tab][tab]
shuf shutdown # 连续两次按下 tab 可以列出所有以 shu 开始的命令
$ cd Do[tab][tab]
Documents/ Downloands/ # 在命令后边参数时,可以实现文件名补全的功能
Tab 的作用不仅仅局限于帮助我们补全命令和文件名,而是可以减少拼写错误
- Ctrl + c:结束当前正在运行的命令或程序
- Ctrl + d:将当前正在运行的命令或程序放在后台执行,而不是终止命令
- Crtl +Shift + t:打开一个新的 Terminal 标签
- Alt + 1/2/3/...:在不同的 Terminal 之间进行切换
- Ctrl + Shift + c:复制
- Ctrl + Shift + v:粘贴
- Ctrl + l:清屏
更多 Terminal 快捷键参考:[Linux Terminal Keyboard Shortcuts](http://www.howtogeek.com/howto/ubuntu/keyboard-shortcuts-for-bash-command-shell-for-ubuntu-debian-suse-redhat-linux-etc/)
### 4. 获取命令帮助信息
我们很难能记住 Linux 下所有的命令的详细用法,因此经常需要查看命令的帮助信息来了解命令的使用方法。
- 使用 __--help__:在输入命令时,使用 --help 选项(或 -h),可以获得关于该命令的使用方法
```
$ ls --help
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
... ... # --help 选项会直接列出命令的帮助信息
```
- 使用 man 命令:并不是所有的命令都有 --help 选项,因此有时候我们需要使用 man 命令来进行查找。man 是 manual 的缩写,在 man 后边直接添加要查找的命令作为参数即可得到该命令的使用手册。
```
$ man ls # 使用 man 后会进入man page,即命令的使用手册
```
__Man Page__:一个完整的 man page 可能包含以下几个部分
| 标题 | 内容 |
| ------ | ------ |
| NAME | 简短的命令、数据名称说明 |
| SYNOPSIS | 简短的命令语法 |
| DESCRIPTION | 完整的命令说明 |
| OPTIONS | 列举出命令所有的选项进行逐个说明 |
| COMMANDS | 程序运行时,可以在程序中使用的命令 |
| FILES | 使用或参考或连结到的文件 |
| EXAMPLE | 一些参考的范例 |
| BUGS | 是否存在相关的 Bug |
| SEE ALSO | 相关的参考资料 |
以上内容基本上包含了 Man Page 的所有信息,但这些并非都是必须的,不同的命令和软件可以只包含其中的部分内容,或者再添加一些其他部分。其中重要的部分主要是:NAME、SYNOPSIS、DESCRIPTION 和 OPTIONS,我们可以根据这几部分对命令有一个比较完整的了解,可以实现大部分场景的应用。
__使用方法__:
| 按键 | 所进行的操作 |
| ------ | ------------------ |
| 空格 | 向下翻页 |
| Page Down | 向下翻页 |
| Page Up | 向上翻页 |
| Home | 跳至首页 |
| End | 跳至尾页 |
| /string | 以当前页为基准向下进行搜索 |
| ?string | 以当前页为基准向上进行搜索 |
| n / N | 搜索时,n 用于继续下一个搜索,N 为反方向搜索 |
| q | 推出 man page |
- 关于搜索:在 man page 中只需要输入 `/` 或 `?`,然后输入要搜索的关键词即可进行搜索
- __-k__ 选项:当我们需要查找某一命令,但又不知道该命令的完整名称时可以使用 -k 参数进行模糊查找
```
$ man -k cd
nscd.conf (5) - name service cache daemon configuration file
cd (1) - bash built-in commands, see bash(1)
cd (1p) - change the working directory
cd-create-profile (1) - Color Manager Profile Creation Tool
... .... # 使用 -k 选项可以将所有包含该关键字的 man page 列出
```
- man page 的级别:在 man page 的首行我们可以看到类似 `CD(1)` 这样的显示,其中 `(1)` 中的数字代表了 man page 的级别,一个命令可能同时包含不同级别的 man page。
| 数字 | 代表内容 |
| ------ | ------------ |
| __1__ | __使用者在 shell 环境中可以操作的命令或可执行文件__ |
| 2 | 系统内核可调用的函数与工具 |
| 3 | 一些常用的函数或函数库,大部分为 C 的函数库 |
| 4 | 配置文件的说明,通常为 /dev 下的文件 |
| __5__ | __配置文件或某些文件的格式__ |
| 6 | 游戏 |
| __7__ | __惯例与协议__ |
| 8 | 系统管理员可用的命令 |
| 9 | 与内核相关的文件 |
实际中的级别要复杂的多,但一般可以划分为以上几类,其中 1、5、7 是我们经常查看的级别。
- __-f__ 选项:通过 -f 选项我们可以查看命令都具有哪些级别的 man page
$ man -f cd
cd (1p) - change the working directory
cd (1) - bash built-in commands, see bash(1) # 列出所有指定命令的 man page 文件
$ man 1p cd
... ... # 可以指定要打开的 man page 文件级别进行查看
- Tips:
- man page 一般保存在 /usr/share/man 目录中
- man 命令的配置文件为:/etc/man_db.conf
- man page 默认打开的级别顺序为:`SECTION 1 1p 8 2 3 3p 4 5 6 7 9 0p n l p o 1x 2x 3x 4x 5x 6x 7x 8x`
- man 也是 linux 的命令,所以使用 `man man` 来获取更多关于 man 命令的信息 : -)