目录
一、帮助命令
1、man命令
1.1、man 命令
1.2、man 章节
1.3、导览man手册页
1.4、man 命令
1.5 man 搜索
2、info命令
2.1 info
2.2导航info页
3、 通过本地文档获取帮助
4、 通过在线文档获取帮助
5、红帽全球技术支持服务
6、 网站和搜索
二、命令行历史
1、重复前一个命令
2、调用和搜索历史命令
3、调用历史参数
4、命令history的选项
5、命令历史相关环境变量
6、控制命令历史的记录方式
7、bash 的快捷键
一、帮助命令
1、man命令
man是manual的简写,意思为操作说明。man命令是linux下的一个帮助指令,可以用它查询指令帮助、配置帮助信息、文件帮助信息等。
1.1、man 命令
man命令手册存放在/usr/share/man中。无论是内部命令还是外部命令,大部分命令都有帮助信息。但是有一些命令查询会有错误。
man查询cd命令时,会指向bash的帮助页。
[root@6 /]# man cd BASH_BUILTINS(1) BASH_BUILTINS(1) NAME bash, :, ., [, alias, bg, bind, break, builtin, caller, cd, com- mand, compgen, complete, compopt, continue, declare, dirs, dis- own, echo, enable, eval, exec, exit, export, false, fc, fg, getopts, hash, help, history, jobs, kill, let, local, logout, mapfile, popd, printf, pushd, pwd, read, readonly, return, set, shift, shopt, source, suspend, test, times, trap, true, type, typeset, ulimit, umask, unalias, unset, wait - bash built-in com- mands, see bash(1)
man 命令的配置文件:/etc/man.config | man_db.conf
1.2、man 章节
1: 用户命令
2: 系统调用
3: C 库调用
4: 设备文件及特殊文件
5: 配置文件格式
6: 游戏
7: 杂项
8: 管理类的命令
9 :Linux 内核API
1.3、导览man 手册页
1.查看man 手册页
2.SYNOPSIS 摘要:[ ] :可选内容
< >: 必选内容
a|b :二选一
...: 同一内容可出现多次
3.man –a keyword 列出所有帮助
4.使用之前的whatis命令可以知道所要查询的命令在man帮助的章节,节省时间。
以查询ls命令为例
[root@7 ~]# whatis ls ls (1) - list directory contents ls (1p) - list directory contents [root@7 ~]# man 1 ls LS(1) User Commands LS(1) NAME ls - list directory contents SYNOPSIS ls [OPTION]... [FILE]...
1.4、man 命令
在进入man帮助页之后,使用快速的查询命令可以事半功倍。该页面使用less 命令实现
以下是一些快速的查询命令
Space, ^V, ^f, ^F: 向文件尾翻屏 b, ^B: 向文件首部翻屏 d, ^D: 向文件尾部翻半屏 u, ^U: 向文件首部翻半屏 RETURN, ^N, e, ^E or j or ^J: 向文件尾部翻一行 y or ^Y or ^P or k or ^K :向文件首部翻一行 q: 退出 # :跳转至第#行 行 1G: 回到文件首部 G :翻至文件尾部
1.5 man 搜索
在man帮助页中,可以使用快捷查询命令。如果还嫌麻烦,或者不清楚具体的章节位置。可以使用man的搜索功能实现检索查询。
/KEYWORD:
以 以KEYWORD指定的字符串为关键字,从当前位置向文件
尾部搜索;不区分字符大小写;
n: 下一个
N :上一个
?KEYWORD:
以 以KEYWORD指定的字符串为关键字,从当前位置向文件
首部搜索;不区分字符大小写;
n: 跟搜索命令同方向,下一个
N :跟搜索命令反方向,上一个
2、info命令
info命令是Linux下info格式的帮助指令。相比man更容易一些,但是内容比men要丰富。总之对新手不是很友好。再次做大致了解。
2.1 info
1.man考 常用于命令参考 ,GNU 工具info 适合通用文档参考。
2. 没有参数, 列出所有的页面
3.info 页面的结构就像一个网站
4.每一页分为“节点”
5.前 链接节点之前 *
6.info [ 令 命令 ]
[root@7 ~]# info ls File: coreutils.info, Node: uniq invocation, Next: comm invocation, Prev: shu\ f invocation, Up: Operating on sorted files 7.3 'uniq': Uniquify files
2.2导航info页
1.方向键,PgUp ,PgDn 导航
2.Tab键 键 移动到下一个链接
3.d 显示主题目录
4.Home 显示主题首部
5.Enter入 进入 选定链接
6.n/p/u/l 进入下/ 前/ 上一层/ 最后一个链接
7.s 字 文字 文本搜索
8.q 出 退出 info
除了以上的man,info命令,还可以通过其他途获取帮助信息。本地文档,在线帮助,网络的搜索的等。
3、 通过本地文档获取帮助
1. 点击“系统”-> “文档”:
提供的官方使用指南和发行注记
2. /usr/share/doc 目录
多数安装了的软件包的子目录, 包括了这些软件的相关原理说明
[root@7 ~]# cd /usr/share/doc [root@7 doc]# ls abattis-cantarell-fonts-0.0.16 abrt-2.1.11 abrt-dbus-2.1.11 accountsservice-0.6.35 acl-2.2.51 adwaita-cursor-theme-3.14.1 adwaita-icon-theme-3.14.1 aic94xx-firmware-30 alsa-firmware-1.0.28 alsa-lib-1.0.28 alsa-plugins-pulseaudio-1.0.27
4、 通过在线文档获取帮助
1. 第三方程序官方文档
2. 通过发行版官方的文档光盘或网站可以获得
安装指南
部署指南
虚拟化指南
红帽知识库和官方在线文档
http://kbase.redhat.com
http://www.redhat.com/docs
5、红帽全球技术支持服务
1. rhn.redhat.com 或者本地卫星服务器/ 代理服务器
基于网络管理的机器
RHN 代理服务器为RHN 流量提供缓存
RHN 卫星服务器提供自主的RHN
2. RHN 账户
为及其注册和基于网络管理的RHN 用户
用于系统自动验证的系统ID
3. sosreport
收集所有系统上的日志信息的工具,并自动打成压缩包,方便技术支持人员和红帽全球支持提供分析问题的依据
6、 网站和搜索
1. http://tldp.org
2. http://www.slideshare.net
3.http://www.google.com
Openstack filetype:pdf
rhca site:redhat.com/docs
二、命令行历史
我们在linux输入的命令都会储存在系统的文件以及缓存中,可以很灵活的调用,提高我们的工作效率。
登录shell 时,会读取命令历史文件中记录下的命令~/.bash_history
登录进shell 后新执行的命令只会记录在缓存中;这些命令会用户退时“追加”至命令历史文件中
1、重复前一个命令,有4 种方法:
重复前一个命令 使用上方向键,并回车执行。
按 !! 并回车执行。
按 !-1 并回车执行。
按 Ctrl+p 并回车执行
[root@7 ~]# ls anaconda-ks.cfg 公共 视频 文档 音乐 initial-setup-ks.cfg 模板 图片 下载 桌面 [root@7 ~]# !! ls anaconda-ks.cfg 公共 视频 文档 音乐 initial-setup-ks.cfg 模板 图片 下载 桌面 [root@7 ~]# ls anaconda-ks.cfg 公共 视频 文档 音乐 initial-setup-ks.cfg 模板 图片 下载 桌面 [root@7 ~]# ls anaconda-ks.cfg 公共 视频 文档 音乐 initial-setup-ks.cfg 模板 图片 下载 桌面 [root@7 ~]# !-1 ls anaconda-ks.cfg 公共 视频 文档 音乐 initial-setup-ks.cfg 模板 图片 下载 桌面
! 字符串: 重复前一个以“字符串”开头的命令
[root@7 ~]# !l ls anaconda-ks.cfg 公共 视频 文档 音乐 initial-setup-ks.cfg 模板 图片 下载 桌面
!num: 按照history 命令输出中的序号重复对应命令
475 ls 476 history [root@7 ~]# !475 ls anaconda-ks.cfg 公共 视频 文档 音乐 initial-setup-ks.cfg 模板 图片 下载 桌面
!? 字符串 : 重复前一个包含字符串 的命令
[root@7 ~]# !?l ls anaconda-ks.cfg 公共 视频 文档 音乐 initial-setup-ks.cfg 模板 图片 下载 桌面
!-n : 重复n 个命令之前的那个命令
2、调用和搜索历史命令
使用up (向上)和down (向下)键来上下浏览从前输入的命令
键入ctrl-r 来在命令历史中搜索命令 ((reverse-i-search ):
(reverse-i-search)`s': man issue
3、调用历史参数
要重新调用前一个命令中最后一个参数:
!$
Esc, . (点击Esc击 键后松开,然后点击 .键)
Alt+ . (按住Alt击 键的同时点击 .键)、
[root@7 ~]# ls / /root /: bin dev home lib64 mnt proc run srv testdir usr boot etc lib media opt root sbin sys tmp var /root: anaconda-ks.cfg 公共 视频 文档 音乐 initial-setup-ks.cfg 模板 图片 下载 桌面
#cmd !^ : 利用上一个命令的第一个参数做cmd 的参数
[root@7 ~]# ls !^ ls / bin dev home lib64 mnt proc run srv testdir usr boot etc lib media opt root sbin sys tmp var
#cmd !$ : 利用上一个命令的最后一个参数做cmd 的参数
[root@7 ~]# ls !$ ls /root anaconda-ks.cfg 公共 视频 文档 音乐 initial-setup-ks.cfg 模板 图片 下载 桌面 #cmd !* : 利用上一个命令的全部参数做cmd 的参数 [root@7 ~]# ls !* ls / /root /: bin dev home lib64 mnt proc run srv testdir usr boot etc lib media opt root sbin sys tmp var /root: anaconda-ks.cfg 公共 视频 文档 音乐 initial-setup-ks.cfg 模板 图片 下载 桌面
#cmd !:n : 利用上一个命令的第n 个参数做cmd 的参数
[root@7 ~]# ls !:2 ls /root anaconda-ks.cfg 公共 视频 文档 音乐 initial-setup-ks.cfg 模板 图片 下载 桌面
!n:^ 调用第n 条命令的第一个 参数
[root@7 ~]# ls !486:^ ls / bin dev home lib64 mnt proc run srv testdir usr boot etc lib media opt root sbin sys tmp var
!n:$ 调用第n 条命令的最后一个 参数
[root@7 ~]# ls !486:$ ls /root anaconda-ks.cfg 公共 视频 文档 音乐 initial-setup-ks.cfg 模板 图片 下载 桌面
!m:n 调用第m 条命令的第n个参数
[root@7 ~]# ls !486:2 ls /root anaconda-ks.cfg 公共 视频 文档 音乐 initial-setup-ks.cfg 模板 图片 下载 桌面
!n:* 调用第n 条命令的所有参数
[root@7 ~]# ls !486:* ls / /root /: bin dev home lib64 mnt proc run srv testdir usr boot etc lib media opt root sbin sys tmp var /root: anaconda-ks.cfg 公共 视频 文档 音乐 initial-setup-ks.cfg 模板 图片 下载 桌面
以下参数同理
!string:^ 以 从命令历史中搜索以 string 开头的命令,并获取它的第一个 参数
!string:$ 以 从命令历史中搜索以 string 开头的命令, 并获取它的 最后一个 参数
!string:n 以 从命令历史中搜索以 string 开头的命令,并获取它的第n个 参数
!string:* 以 从命令历史中搜索以 string 开头的命令,并获取它的所有参数
4、命令history的选项
history [-c] [-d offset] [n]
history -anrw [filename]
history -ps arg [arg...]
-c: 清空命令历史
删除历史条目 rm -f /root/.bash_history history -c
-d: 删除历史中指定的命令;
[root@6 ~]# history 97 ls /etc 98 ls-a /etc 99 ls -a /etc 100 ls -a /root 101 cat /root/.bash_history [root@6 ~]# history -d 99 98 ls-a /etc 99 ls -a /root 100 cat /root/.bash_history 101 history help
#: 显示最近的# 条历史
[root@6 ~]# history 10 37 init 38 init 5 39 ip addr 40 history 41 echo -e "\033[31m \033[5m *******" "\n\033[32m \033[5m ***** \n\033[33m \033[5m *** \n\033[34m \033[5m * \033[0m" 42 cat_history 43 cat .bash_history 44 history -a 45 cat .bash_history 46 history 10
-a: 追加本次会话新执行的命令历史列表至历史文件
[root@6 ~]# cat .bash_history #首先查看历史文件中 .......................... ./vmware-install.pl init 3 init init 5 ip addr [root@6 ~]# history -a [root@6 ~]# cat .bash_history #再次查看历史文件,发现已经添加了几条刚执行的命令 echo -e "\033[31m \033[5m *******" "\n\033[32m \033[5m ***** \n\033[33m \033[5m *** \n\033[34m \033[5m * \033[0m" cat_history cat .bash_history history -a
-n: 读历史文件中未读过的行到历史列表
#1_6.8、2_6.8为登陆同一账号的两个终端 #1_6.8中输入若干命令,通过 -a命令保存到历史文件中。2_6.8查询历史文件命令,历史列表没有上述的命令。通过 -n命令,可以同步到2_6.8的历史列表中。
-r: 读历史文件附加到历史列表
[root@6 ~]# history -c [root@6 ~]# history -r [root@6 ~]# history 1 2016-07-26 23:06:35history 2 2016-07-26 23:06:44history -r 3 2016-07-26 22:50:44cd 4 2016-07-26 22:51:04rm -f .bash_history 5 2016-07-26 22:51:40cat .bash_histoty 6 2016-07-26 22:52:52ls / 7 2016-07-26 22:53:02history -a 8 2016-07-26 23:06:49history
-w: 保存历史列表到指定的历史文件
[root@6 ~]# history -w his [root@6 ~]# cat his cd cd .. ls grdit /etc/gdm/customconf gedit /etc/gdm/customconf gedit /etc/gdm/custom.conf ifconfig cp /media/VMware\ Tool/ /testdir/ cp /media/VMware\ Tool /testdir/ df cp /media/VMware/ Tool0s/ /testdir/ cp /media/VMware/ Tools/ /testdir/ cp /media/VMware\ Tools/ /testdir/ cd /testdir/
-p: 展开历史参数成多个行,但不存在历史列表中 显示字符串不保存列表
[root@6 ~]# history -p echo/ echo/ [root@6 ~]# history -p echo/ ls/ echo/ ls/ [root@6 ~]# history ................... 48 cat his 49 history -p 50 history #历史列表中并没有保存 [root@6 ~]#
-s: 展开历史参数成一行,附加在历史列表后 附加列表不执行
[root@6 ~]# history -s rm -rf / [root@6 ~]# history ....................... 50 history 51 rm -rf / 52 history #历史列表中存在命令,但是该命令并没有执行 [root@6 ~]#
5、命令历史相关环境变量
HISTSIZE :命令历史记录的条数;
[root@6 testdir]# echo $HISTSIZE 1000
HISTFILE :指定历史文件,默认为~/.bash_history;
[root@6 testdir]# echo $HISTFILE /root/.bash_history
HISTFILESIZE :命令历史文件记录历史的条数;
[root@6 testdir]# echo $HISTFILESIZE 1000
HISTTIMEFORMAT=“%F %T“ 显示时间
HISTTIMEFORMAT="`hostname`:%F %T" [root@6 ~]# history 1 6.localdomain;2016-07-2709:40:06cd 2 6.localdomain;2016-07-2709:40:06cd .. 3 6.localdomain;2016-07-2709:40:06ls 4 6.localdomain;2016-07-2709:40:06grdit /etc/gdm/customconf
HISTIGNORE=“str1:str2:… “ 忽略string1,string2 历史
[root@6 ~]# HISTIGNORE="echo*:passwd" [root@6 ~]# echo "red"|passwd --stdin root 更改用户 root 的密码 。 passwd: 所有的身份验证令牌已经成功更新。 [root@6 ~]# history 5 76 6.localdomain;2016-07-2709:46:00HISTTIMEFORMAT="`hostname`;%F%T" 77 6.localdomain;2016-07-2709:46:10history 78 6.localdomain;2016-07-2709:48:10HISTIGNORE="echo*:passwd" 79 6.localdomain;2016-07-2709:49:35history 80 6.localdomain;2016-07-2709:51:08history 5
6、控制命令历史的记录方式:
环境变量:HISTCONTROL
ignoredups :忽略重复的命令;连续且相同方为“重复”
[root@6 ~]# HISTCONTRO=ignoredups [root@6 ~]# ls -d / / [root@6 ~]# ls -d / / [root@6 ~]# ls -d / / [root@6 ~]# ls -d / / [root@6 ~]# ls -d / / [root@6 ~]# history 5 80 6.localdomain;2016-07-2709:51:08history 5 81 6.localdomain;2016-07-2709:51:58history -5 82 6.localdomain;2016-07-2709:53:56HISTCONTRO=ignoredups 83 6.localdomain;2016-07-2709:54:04ls -d / 84 6.localdomain;2016-07-2709:54:20history 5
[root@6 ~]# echo `date` 2016年 07月 30日 星期六 22:45:51 CST [root@6 ~]# echo `date` 2016年 07月 30日 星期六 22:45:52 CST [root@6 ~]# echo `date` 2016年 07月 30日 星期六 22:45:53 CST [root@6 ~]# history 5 597 2016-07-30 22:45:03history 598 2016-07-30 22:45:36echo `date` 599 2016-07-30 22:45:45history 600 2016-07-30 22:45:51echo `date` 601 2016-07-30 22:46:04history 5 ###可以看出重复命令保留第一条
ignorespace :忽略所有以空白开头的命令
[root@6 ~]# HISTCONTROL=ignorespace [root@6 ~]# cd / [root@6 /]# ls -d / / [root@6 /]# cd / [root@6 /]# cd [root@6 ~]# history 5 85 6.localdomain;2016-07-2709:55:47HISTCONTROL=ignorespace 86 6.localdomain;2016-07-2709:56:01cd / 87 6.localdomain;2016-07-2709:56:21cd / 88 6.localdomain;2016-07-2709:56:34cd 89 6.localdomain;2016-07-2709:56:43history 5
ignoreboth : ignoredups & ignorespace
[root@6 ~]# HISTCONTROL=ignoreboth [root@6 ~]# ls -d / / [root@6 ~]# ls -d / / [root@6 ~]# ls -d / / [root@6 ~]# ls -d / / [root@6 ~]# cd / [root@6 /]# cd [root@6 ~]# history 8 87 6.localdomain;2016-07-2709:56:21cd / 88 6.localdomain;2016-07-2709:56:34cd 89 6.localdomain;2016-07-2709:56:43history 5 90 6.localdomain;2016-07-2709:58:05HISTCONTROL=ignoreboth 91 6.localdomain;2016-07-2709:59:17ls -d / 92 6.localdomain;2016-07-2709:59:45cd / 93 6.localdomain;2016-07-2709:59:51cd 94 6.localdomain;2016-07-2710:00:11history 8
erasedups: 删除重复命令
[root@6 ~]# HISTCONTROL=erasedups [root@6 ~]# ls anaconda-ks.cfg install.log 公共的 视频 文档 音乐 his install.log.syslog 模板 图片 下载 桌面 [root@6 ~]# ls / bin dev home lib64 media mnt opt root selinux sys tmp var boot etc lib lost+found misc net proc sbin srv testdir usr [root@6 ~]# ls / bin dev home lib64 media mnt opt root selinux sys tmp var boot etc lib lost+found misc net proc sbin srv testdir usr [root@6 ~]# history 5 83 6.localdomain;2016-07-2710:01:11history 84 6.localdomain;2016-07-2710:02:18HISTCONTROL=erasedups 85 6.localdomain;2016-07-2710:02:20ls 86 6.localdomain;2016-07-2710:02:30ls / 87 6.localdomain;2016-07-2710:02:42history 5
当需要用到两个选项,之间用:隔开即可
HISCONTROL="ignorespace:erasedups" [root@6 ~]# HISTCONTROL=ignorespace:erasedups [root@6 ~]# cd / [root@6 /]# ls -d / / [root@6 /]# ls -d / / [root@6 /]# ls -d / / [root@6 /]# cd / [root@6 /]# history 5 82 6.localdomain;2016-07-2710:04:38HISTCONTROL=erasedups 83 6.localdomain;2016-07-2710:05:25HISTCONTROL=ignorespace:erasedups 84 6.localdomain;2016-07-2710:07:05ls -d / 85 6.localdomain;2016-07-2710:07:40cd / 86 6.localdomain;2016-07-2710:07:47history 5
7、bash 的快捷键
Ctrl+l 清屏,相当于clear 命令
Ctrl+c 取消命令的执行
Ctrl-a 会移动到命令行的最前面
Ctrl-e 会移动到命令行的最后面
arrow ctrl-b ctrl-f 会向左或向右移动一个字符
Esc-b 左移一个单词
Esc-f 右移一个单词