第三章 使用帮助,使用帮助
第三章 使用帮助,使用帮助
内部命令和外部命令
内部命令:系统集成的命令,集成到bash程序中的命令,可以用enable和help查看内部命令,直接和系统一样运行在内存中,执行速度快。内部命令中的:相当于TRUE,即什么都不干。
enable cmd启用内部命令
enable –n cmd 禁用内部命令
enable –n 查看所有禁用的内部命令
enable –n enable 自杀,重新注销即可恢复
外部命令:在文件系统路径下有对应的可执行程序文件
查看路径:which -a |--skip-alias; whereis
区别指定的命令是内部或外部命令
type COMMAND
如果执行过一个外部命令,它会把这个命令的路径记录到内存中,这个就是hash缓存表
hash常见用法:
hash 显示hash缓存
hash -l 显示hash缓存,可作为输入使用,更详细。
hash –p path name 将命令全路径path起别名为name
hash –p /usr/bin/free f
hash –t name 打印缓存中name的路径
hash –t f
hash –d name 清除name缓存
hash –r 清除所有缓存
which –a free 显示所有路径下的free
命令执行优先级:别名>内部命令>外部命令
问:为什么有的命令既有内部又有外部?
有可能有的shell中没有这个内部命令,外部有还可以执行。
[root@centos7 ~]#alias alias cp='cp -i' ......
显示当前shell进程所有可用的命令别名
[root@centos7 ~]#alias date='date +%F'
定义别名date,其相当于执行命令date +%F
在命令行中定义的别名,仅对当前shell进程有效
如果想永久有效,要定义在配置文件中
仅对当前用户:~/.bashrc
对所有用户有效:/etc/bashrc 添加到最后即可
编辑配置给出的新配置不会立即生效,需要bash进程重新读取配置文件
source /path/to/config_file
. /path/to/config_file
撤销别名:unalias
unalias [-a] name [name …]
-a 取消所有别名
如果别名同原命令同名,要执行原命令,可使用
\COMMAND
‘COMMAND’
/PATH/COMMAND
退出某个执行的命令:
Ctrl+c:强制退出,有可能数据丢失。
Ctrl+d:正常退出。
tab键
[root@centos7 ~]#rpm -qa bash* bash-completion-2.1-6.el7.noarch
需要安装了上面这个包才能启用Tab功能
命令补全
内部命令:直接补全
外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文件,第一次找到的命令即为要执行的命令
路径补全
把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名
如果唯一:则直接补全
否则:再次Tab给出列表
双击Tab
command 2Tab 所有子命令或文件补全
string2Tab 以string开头命令
[root@centos7 ~]#/ app/ etc/ lost+found/ proc/ srv/ usr/ bin/ home/ media/ root/ sys/ var/ boot/ lib/ mnt/ run/ testdir/ dev/ lib64/ opt/ sbin/ tmp/
/2Tab 显示所有根目录下一级目录,包括隐藏目录
[root@centos7 ~]#./ .cache/ .dbus/ Documents/ .local/ Music/ Public/ Videos/ .config/ Desktop/ Downloads/ .mozilla/ Pictures/ Templates/
./2Tab 当前目录下子目录,包括隐藏目录
[root@centos7 ~]#*
Desktop Downloads Pictures Templates
Documents Music Public Videos
*2Tab 当前目录下子目录,不包括隐藏目录
[root@centos7 ~]#~ ~dbus/ ~polkitd/ ~sunan/ ~ftp ~postfix/ ~sync/~gnome-initial-setup ~root/ ~usbmuxd/ ......
~2Tab 所有用户列表
[root@centos7 ~]#$
$_ $LINENO
$BASH $LOGNAME
......
$2Tab 所有变量
[root@centos6 ~]#@ @::1 @localhost4.localdomain4 @localhost.localdomain @localhost @localhost6 @localhost4 @localhost6.localdomain6
@2Tab /etc/hosts记录 (centos7不支持)
[root@centos6 /]#= app/ dev/ lost+found/ opt/ srv/ .autofsck etc/ media/ proc/ sys/ bin/ home/ misc/ root/ tmp/ boot/ lib/ mnt/ sbin/ usr/ .dbus/ lib64/ net/ selinux/ var/
=2Tab 相当于ls –A (centos7不支持)
命令行历史
- 保存你输入的命令历史。可以用它来重复执行命令
- 登录shell时,会读取命令历史文件中记录下的命令~/.bash_history
- 登录进shell后新执行的命令只会记录在缓存中;这些命令会用户退出时“追加”至命令历史文件中
重复前一个命令,有4种方法
!:0 执行前一条命令(去除参数)
Ctrl + n 显示当前历史中的下一条命令,但不执行
Ctrl + j 执行当前命令
!n 执行history命令输出对应序号n的命令
!-n 执行history历史中倒数第n个命令
!string 重复前一个以“string”开头的命令
!?string 重复前一个包含string的命令
!string:p仅打印命令历史,而不执行
!$:p 打印输出!$(上一条命令的最后一个参数)的内容
!*:p打印输出!*(上一条命令的所有参数)的内容
^string删除上一条命令中的第一个string
^string1^string2将上一条命令中的第一个string1替换为string2
!:gs/string1/string2将上一条命令中所有的string1都替换为string2
使用up(向上)和down(向下)键来上下浏览从前输入的命令
ctrl-r来在命令历史中搜索命令
(reverse-i-search)
Ctrl+g:从历史搜索模式退出
要重新调用前一个命令中最后一个参数:
!$ 表示
Esc, .(点击Esc键后松开,然后点击.键)
Alt+ .(按住Alt键的同时点击.键)
调用历史参数:
command !^ : 利用上一个命令的第一个参数做cmd的参数
command !$ : 利用上一个命令的最后一个参数做cmd的参数
command !* : 利用上一个命令的全部参数做cmd的参数
command !:n : 利用上一个命令的第n个参数做cmd的参数
command !n:^ 调用第n条命令的第一个参数
command !n:$ 调用第n条命令的最后一个参数
command !n:m 调用第n条命令的第m个参数
command !n:* 调用第n条命令的所有参数
command !string:^ 从命令历史中搜索以string 开头的命令,并获取它的第一个参数
command !string:$ 从命令历史中搜索以string 开头的命令,并获取它的最后一个参数
command !string:n 从命令历史中搜索以string 开头的命令,并获取它的第n个参数
command !string:* 从命令历史中搜索以string 开头的命令,并获取它的所有参数
命令history:
history [-c] [-d offset] [n]
history -anrw[filename]
history -psarg[arg...]
-c: 清空命令历史
-d offset: 删除历史中指定的第offset个命令
n: 显示最近的n条历史
-a: 追加本次会话新执行的命令历史列表至历史文件
-r: 读历史文件附加到历史列表
-w: 保存历史列表到指定的历史文件
-n: 读历史文件中未读过的行到历史列表
-p: 展开历史参数成多行,但不存在历史列表中
-s: 展开历史参数成一行,附加在历史列表后
[root@centos6 ~]#history -p `ls` `pwd` ------------命令中调用命令使用反向单引号,就是键盘tab键上方的键
Desktop
Documents
...... ------------ls执行结果
/root ------------pwd执行结果
ls和pwd全执行了,但历史中没有记录,-p选项作用。
[root@centos6 ~]#history -s reboot
历史命令显示的是reboot,但系统没有重启,可以伪造历史
命令历史相关环境变量:
HISTSIZE:命令历史记录的条数,命令的记录的内存中历史的长度,修改/etc/profile文件即可。
HISTFILE:指定历史文件,默认为~/.bash_history,磁盘上历史文件
HISTFILESIZE:命令历史文件记录历史的条数
内存中记录的历史命令和磁盘文件记录的历史命令数可以不一样,但一般相同。
HISTTIMEFORMAT=“%F %T “ 显示时间
HISTIGNORE=“str1:str2*:… “ 忽略str1命令,str2开头的历史
控制命令历史的记录方式:
环境变量:HISTCONTROL
=ignoredups 默认,忽略重复的命令,连续且相同为“重复”
=ignorespace 忽略所有以空白开头的命令
=ignoreboth 相当于ignoredups, ignorespace的组合
=erasedups 删除重复命令
export 变量名="值“
存放在/etc/profile 或~/.bash_profile
bash快捷键:
Ctrl + l 清屏,相当于clear命令
Ctrl + o 执行当前命令,并重新显示本命令
Ctrl + s 阻止屏幕输出,锁定
Ctrl + q 允许屏幕输出
Ctrl + c 终止命令
Ctrl + z 挂起命令
Ctrl + a 光标移到命令行首,相当于Home
Ctrl + e 光标移到命令行尾,相当于End
Ctrl + f 光标向右移动一个字符
Ctrl + b 光标向左移动一个字符
Alt + f 光标向右移动一个单词尾
Alt + b 光标向左移动一个单词首
Ctrl + xx 光标在命令行首和光标之间移动
Ctrl + u 从光标处删除至命令行首
Ctrl + k 从光标处删除至命令行尾
Alt + r 删除当前整行
Ctrl + w 从光标处向左删除至单词首
Alt + d 从光标处向右删除至单词尾
Ctrl + d 删除光标处的一个字符
Ctrl + h 删除光标前的一个字符
Ctrl + y 将删除的字符粘贴至光标后
Alt + c 从光标处开始向右更改为首字母大写的单词
Alt + u 从光标处开始,将右边一个单词更改为大写
Alt + l 从光标处开始,将右边一个单词更改为小写
Ctrl + t 交换光标处和之前的字符位置
Alt + t 交换光标处和之前的单词位置
Alt + N 提示输入指定字符后,重复显示该字符N次
注意:Alt 组合快捷键经常和其它软件冲突
在SecureCRT有时候Alt键会有冲突:
解决办法:右击会话选择会话选项,选择Emacs,选中使用ALT作为元键,然后选中第三项。
使用帮助:
whatis command
依赖于后台数据库,刚刚装上的系统,执行makewhatis(centos6)或mandb(centos7)
command –-help
直接敲help或者enable显示所有的内部命令
man and info
本地帮助文档/usr/share/doc/
官网在线文档
其他网站和搜索
命令帮助:
内部命令:help COMMAND
man bash
注意:不要用man内部命令,man内部命令其实是打开的man bash
外部命令:
(1)COMMAND –-help(有些命令不支持,使用较少)
COMMAND -h
示例:
date --help
Usage:date[OPTION]...[+FORMAT]or: date[-u|--utc|--universal][MMDDhhmm[[CC]YY][.ss]]
[]表示可选项
CAPS或<>表示变化的数据
...表示一个列表
x |y| z的意思是“x或y或z“,即这三个意思一样,选一个即可
-abc的意思是-a -b –c
{ } 表示分组
(2)使用手册(manual)
man COMMAND(使用较多,比较通用)
提供命令帮助的文件
手册页存放在/usr/share/man
几乎每个命令都有man的”章节”
man页面分组为不同的“章节”
统称为Linux手册
man命令的配置文件:/etc/man.config(centos6)|man_db.conf(centos7)
MANPATH /PATH/TO/SOMEWHERE:指明man文件搜索位置
自己手工安装第三方软件,需要按上面的格式,放置帮助文档路径,不然man这个命令搜不到文档
man –M /PATH/TO/SOMEWHERE COMMAND:到指定位置下搜索
COMMAND命令的手册并显示
中文man需要安装包man-page-zh-CN
man 章节
1:用户命令
2:系统调用
3:C库调用
4:设备文件及特殊文件
5:配置文件格式
6:游戏
7:杂项
8:管理类的命令
9:Linux内核API
[root@centos6 /]#whatis date date (1) - print or set the system date and time date (1p) - write the date and time [root@centos6 /]#whatis passwd passwd (1) - update user's authentication tokens passwd (5) - password file passwd [sslpasswd] (1ssl) - compute password hashes
通过whatis命令可以查看命令有那些章节,带p的适合开发相关的。
[root@centos6 /]#man 5 passwd Formatting page, please wait... PASSWD(5) Linux Programmer's Manual PASSWD(5) NAME passwd - password file
需要添加第几章节,才是查看的是第几章节的命令,否则按1来看
[root@centos6 /]#whereis ls ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
前面是命令的路径,后面是文档的man帮助路径
man帮助段落说明
帮助手册中的段落说明:
NAME 名称及简要说明
SYNOPSIS 用法格式说明
[] 可选内容
<> 必选内容
a|b 二选一
{ } 分组
… 同一内容出现多次
DESCRIPTION 详细说明
OPTIONS 选项说明
EXAMPLES 示例
FILES 相关文件
AUTHOR 作者
COPYRIGHT 版本信息
REPORTING BUGS bug信息
SEE ALSO 其它帮助参考
man帮助:
查看man手册页
man [章节] keyword
列出所有帮助
[root@centos6 /]#man -a passwd Cannot open the message catalog "man" for locale "zh.CN" (NLSPATH="/usr/share/locale/%l/LC_MESSAGES/%N") Formatting page, please wait... PASSWD(1) User utilities PASSWD(1)
man –a keyword列出所有章节的passwd帮助,按q切换到下一个
搜索man手册
[root@centos6 /]#man -k hostname dnsdomainname [hostname] (1) - show the system's DNS domain name domainname [hostname] (1) - show or set the system's NIS/YP domain name gethostname (2) - get/set hostname gethostname (3p) - get name of current host hostname (1) - show or set the system's host name hostname (7) - hostname resolution description hosts (5) - The static table lookup for hostnames logresolve (1) - Resolve IP-addresses to hostnames in Apache log files nisdomainname [hostname] (1) - show or set system's NIS/YP domain name
man –k keyword 列出所有匹配的页面,使用whatis数据库
[root@centos6 /]#man -f passwd passwd (1) - update user's authentication tokens passwd (5) - password file passwd [sslpasswd] (1ssl) - compute password hashes [root@centos6 /]#whatis passwd passwd (1) - update user's authentication tokens passwd (5) - password file passwd [sslpasswd] (1ssl) - compute password hashes
man –f keyword,相当于whatis
[root@centos6 /]#man -w 5 passwd /var/cache/man/cat5/passwd.5.lzma (<-- /usr/share/man/man5/passwd.5.gz)
打印man帮助文件的路径,man –w [章节] keyword
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:翻至文件尾部
man搜索:
/KEYWORD:
以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索;不区分字符大小写;
n: 下一个
N:上一个
?KEYWORD:
以KEYWORD指定的字符串为关键字,从当前位置向文件首部搜索;不区分字符大小写;
n: 跟搜索命令同方向,下一个
N:跟搜索命令反方向,上一个
(3)信息页
info COMMAND
方向键,PgUp,PgDn 导航
Tab键移动到下一个链接
d 显示主题目录
Home 显示主题首部
Enter进入选定链接
n/p/u/l进入下/前/上一层/最后一个链接
s文字文本搜索
q退出info
(4)程序自身的帮助文档
README
INSTALL
ChangeLog
(5)程序官方文档
[root@centos7 /]#sosreport sosreport (version 3.4) This command will collect diagnostic and configuration information from this CentOS Linux system and installed applications.
向redhat官方发送系统分析包
官方站点:Documentation
(6)发行版的官方文档
(7)Google
评论暂时关闭