命令行扩展:$( ) 或 或 ``

把一个命令的输出打印给另一个命令的参数

括号扩展:{ }

打印重复字符串的简化形式

$ echo file{1,3,5}

file1 file3 file5

Tab键

命令补全

CentOS7上命令补全可以补全长选项

外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文件,第一次找到的命令即为要执行的命令

用户给定的字符串只有一条惟一对应的命令,直接补全。否则,再次Tab会给出列表

路径补全

把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名

如果惟一:则直接补全,否则:再次Tab 给出列表

whatis命令

显示命令的简短描述

每晚使用一个数据库更新

刚安装后不可立即使用,需要更新数据库

centos6

makewhatis

centos7

mandb 

显示命令章节

#whatis COMMAND 

内部命令 : 

#help COMMAND

cd.pwd.echo.hash

外部命令: 

(1) # COMMAND --help

(2) 使用手册(manual)

# man COMMAND

(3) 信息页

# info COMMAND

(4) 程序自身的帮助文档

README

INSTALL

ChangeLog

(5) 程序官方文档

官方站点:Documentation

(6) 发行版的官方文档

(7) Google

man命令 manul 手册

提供命令帮助的文件

手册页存放在/usr/share/man

几乎每个命令都有man 的“页面”

man 页面分组为不同的“章节”

1:  用户命令

2:  系统调用

3:  C库调用

4:  设备文件及特殊文件

5:  配置文件格式

6:  游戏

7:  杂项

8:  管理类的命令

9: Linux  内核API

统称为Linux 手册

man [ 章节] 命令

man 5 passwd 查看passwd第5章节

查看命令章节

#whatis COMMAND 

#man –f COMMAND

man 命令的配置文件:

centos6

/etc/man.config 

centos7

/etc/man_db.conf 

MANPATH /PATH/TO/SOMEWHERE:  指明新手册文件搜索位置

# man - M /PATH/TO/SOMEWHERE COMMAND : 到指定位置下搜索COMMAND命令的手册页并显示

查看man 手册页

SYNOPSIS 摘要 

[] :可选内容

<>:  必选内容

a|b :二选一

...:  同一内容可出现多次

#man –a keyword  列出所有章节帮助

搜索man 手册

#man -k keyword  列出所有匹配的页面

使用 whatis 数据库

man 命令的操作方法:使用less 命令实现

Space:  向文件尾翻一屏

b:  向文件首部翻一屏

Ctrl+d:  向文件尾部翻半屏

Ctrl+u:  向文件首部翻半屏

Enter:  向文件尾部翻一行

y or k:向文件首部翻一行

q: 退出

#:跳转至第#行

1G: 回到文件首部

G:翻至文件尾部

man搜索

/KEYWORD:以 以KEYWORD 指定的字符串为关键字,从当前位置向文件尾部搜索;不区分字符大小写;

?KEYWORD:以 以KEYWORD 指定的字符串为关键字,从当前位置向文件首部搜索;不区分字符大小写;

n:  跟搜索命令同方向,下一个

N: 跟搜索命令反方向,上一个

info

#info COMMAND

man常用于命令参考,GNU工具info适合通用文档参考。

没有参数, 列出所有的页面

info  页面的结构就像一个网站

每一页分为“节点”

链接节点之前有 *

导航info页

方向键,PgUp ,PgDn  导航

Tab键 移动到下一个链接

d 显示主题目录

Home 显示主题首部

Enter进入  选定链接

n/p/u/l进入下/ 前/ 上一层/ 最后一个链接

s 文字  文本搜索

q退出 info

/usr/share/doc 目录

多数安装了的软件包的子目录,包括了这些软件的相关原理说明

     不适合其它地方的文档的位置

配置文件范例

HTML/PDF/PS 格式的文档

授权书详情

第三方程序官方文档

通过发行版官方的文档光盘或网站可以获得

http://tldp.org

the linux document project

http://www.slideshare.net

http://www.google.com

Openstack filetype:pdf //搜索.pdf的文档

rhca site:redhat.com/docs //在redhat.com网站中搜索rhca关键字

命令行历史

保存你输入的命令历史。可以用它来重复执行命令

     登录shell时,会读取命令历史文件(~/.bash_history)中记录下的命令

     登录进shell后新执行的命令只会记录在缓存中;这些命令会用户退出时“追加”至命令历史文件(~/.bash_history)中

重复前一个命令,有4 种方法:

使用上方向键,并回车执行

按!! 并回车执行

输入!-1 并回车执行

按Ctrl+p 并回车执行

!字符串: 重复前一个以“字符串”开头的命令

!num: 执行history命令列表中对应num(号数)的命令

!?abc: 重复最近一个包含abc字符串的命令

!-n: 重复命令历史中反向查找的第n条命令

     键入ctrl-r 来在命令历史中搜索命令 (reverse-i-search )`’

再键入ctrl-r 可以查找下一条匹配的指令

要重新调用前一个命令中最后一个参数:

!$ 表示

Esc, .(点击Esc击键后松开,然后点击 . 键)

Alt+ .(按住Alt击 键的同时点击 .  键)

调用历史参数

#cmd !^   调用上一个命令的第一个参数做cmd的参数

#cmd !$   调用上一个命令的最后一个参数做cmd的参数

#cmd !*   调用上一个命令的全部参数做cmd的参数

#cmd !:n   调用上一个命令的第n个参数做cmd的参数

!n:^  调用第n 条命令的第一个参数

!n:$  调用第n 条命令的最后一个参数

!m:n  调用第m 条命令的第n个参数

!n:*  调用第n 条命令的所有参数

!string:^ 从命令历史中搜索以 string 开头的命令,并获取它的第一个参数

!string:$ 从命令历史中搜索以 string 开头的命令, 并获取它的最后一个参数

!string:n 从命令历史中搜索以 string 开头的命令,并获取它的第n个参数

!string:* 从命令历史中搜索以 string 开头的命令,并获取它的所有参数

......

history命令

history [-c] [-d offset] [n]

history -anrw [filename]

history -ps arg [arg...]

-c:  清空命令历史

-d:  删除历史中指定的命令;

#:  显示最近的# 条历史

-a:  追加本次会话新执行的命令历史至历史文件

-n:  读历史文件中未读过的行(历史列表中没有的命令)到历史列表

-r:  读历史文件追加到历史列表

-w:  保存历史列表到指定的历史文件

-p:  展开历史参数成多个行,但不存在历史列表中

-s:  展开历史参数成一行,附加在历史列表后

命令历史相关环境变量

HISTSIZE :命令历史记录的条数;

HISTFILE :指定历史文件,默认为~/.bash_history; ;

HISTFILESIZE :命令历史文件记录历史的条数;

HISTTIMEFORMAT=“%F %T“ 显示时间

HISTIGNORE="str1:str2:… "  忽略string1,string2 在历史命令列表中忽略

控制命令历史的记录方式:

环境变量:HISTCONTROL

ignoredups:忽略重复的命令;连续且相同方为“重复”

ignorespace:忽略所有以空白开头的命令 

ignoreboth:ignoredups, ignorespace的结合

erasedups: 删除重复命令,命令连续或者不连续都是重复的

#export  变量名="值" 修改环境变量

环境变量都存放在 /etc/profile 或 ~/.bash_profile

bash中的快捷键

Ctrl+l 清屏,相当于clear 命令

Ctrl+c  取消命令的执行

Ctrl-a  会移动到命令行的最前面

Ctrl-e  会移动到命令行的最后面

Ctrl-u  会删除到行首

Ctrl-k  会删除到行尾

Esc-b 左移一个单词

Esc-f 右移一个单词