第三章 使用帮助,使用帮助


内部命令和外部命令

内部命令:系统集成的命令,集成到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

        

相关内容

    暂无相关文章