1.2-Linux命令幫助的獲取詳解
外部命令:都有一個可執行程序,位於文件系統某目錄下:
which,whereis
shell程序搜尋可執行程序文件的路徑定義在PATH環境變量中:
# echo $PATH
註意:自左至右
內部命令:
#help COMMAND
外部命令:
(1)# COMMAND --help
# COMMAND -h
(2)使用手冊(manual)
# man COMMAND
(3)信息頁
# info COMMAND
(4)程序自身的幫助文檔
README
INSTALL
ChangeLog
(5)程序官方文檔
官方站點:Documentation
(6)發行版的官方文檔
(7)Google
內部命令幫助獲取方式:
# help COMMAND
hash命令:
shell搜尋到的外部命令的路徑結果會緩存至kv(key-value)存儲中
[[email protected] ~]# hash
hits command
1 /sbin/service
1 /bin/cat
2 /usr/bin/elinks
1 /bin/vi
hits:緩存命中
當命令在緩存當中被找到,此數值+1
[[email protected] ~]# ls #第一次使用ls命令
anaconda-ks.cfg install.log install.log.syslog
[[email protected] ~]# hash
hits command
1 /sbin/service
1 /bin/cat
2 /usr/bin/elinks
1 /bin/vi
1 /bin/ls
[[email protected] ~]# mv /bin/ls /usr/bin/ls #將ls命令移動到/usr/bin/ls
[[email protected] ~]# ls #再次輸入ls命令提示如下:
-bash: /bin/ls: 沒有那個文件或目錄
[[email protected] ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
[[email protected] ~]# hash
hits command
1 /sbin/service
1 /bin/cat
2 /usr/bin/elinks
1 /bin/mv
1 /bin/vi
2 /bin/ls #在緩存當中找而不是在PATH當中找
[[email protected] ~]# type hash
hash is a shell builtin #hash是一個內部命令
[[email protected] ~]# help hash
hash: hash [-lr] [-p pathname] [-dt] [name ...]
Remember or display program locations.
Determine and remember the full pathname of each command NAME. If
no arguments are given, information about remembered commands is displayed.
Options:
-d forget the remembered location of each NAME
-l display in a format that may be reused as input
-p pathname use PATHNAME is the full pathname of NAME
-r forget all remembered locations
-t print the remembered location of each NAME, preceding
each location with the corresponding NAME if multiple
NAMEs are given
Arguments:
NAME Each NAME is searched for in $PATH and added to the list
of remembered commands.
Exit Status:
Returns success unless NAME is not found or an invalid option is given.
[[email protected] ~]# hash -r #清除緩存當中所有記錄
[[email protected] ~]# ls
anaconda-ks.cfg install.log install.log.syslog
[[email protected] ~]# hash
hits command
1 /usr/bin/ls
history命令:
作用是什麽?相關的環境變量是什麽?有用的選項?
管理命令歷史:
登錄shell時,會讀取命令歷史文件中記錄下的命令:~/.bash_history
登錄進shell後,新執行的命令只會記錄在緩存中。這些命令會在用戶退出時“追加”至命令歷史文件中
history:
-a:追加本次會話新執行的命令歷史列表至歷史文件中
-d:刪除歷史中指定的命令
-c:清空命令歷史
快捷操作:
!n:調用歷史中第n條命令
!string:調用歷史中最近一個以string開頭的命令
!!:調用上一條命令
外部命令幫助獲取方式:
(1)COMMAND --help
[[email protected] bin]# type grep
grep is /bin/grep
[[email protected] bin]# grep --help
用法: grep [選項]... PATTERN [FILE]...
在每個 FILE 或是標準輸入中查找 PATTERN。
默認的 PATTERN 是一個基本正則表達式(縮寫為 BRE)。
例如: grep -i ‘hello world‘ menu.h main.c
正則表達式選擇與解釋:
-E, --extended-regexp PATTERN 是一個可擴展的正則表達式(縮寫為 ERE)
-F, --fixed-strings PATTERN 是一組由斷行符分隔的定長字符串。
-G, --basic-regexp PATTERN 是一個基本正則表達式(縮寫為 BRE)
-P, --perl-regexp PATTERN 是一個 Perl 正則表達式
-e, --regexp=PATTERN 用 PATTERN 來進行匹配操作
(2)man COMMAND
手冊頁:/usr/share/man
man1...man8
man1:用戶命令
man2:系統調用
man3:庫調用
man4:設備文件及特殊文件
man5:配置文件格式
man6:遊戲相關
man7:雜項
man8:管理類的命令
註意:有些關鍵字不止在一個章節中存在幫助手冊,要查看指定章節中的手冊:man n COMMAND
man命令的配置文件:/etc/man.config
MANPATH:/PATH/TO/SOMEWHERE:指明新的手冊文件搜索位置
# man -M /PATH/TO/SOMEWHERE COMMAND:到指定位置下搜索COMMAND命令的手冊頁並顯示
幫助手冊中的段落說明:
NAME:程序的名字及簡要說明
SYSNOPSIS:命令使用簡要幫助
DESCRIPTION:功能的詳細描述
OPTIONS:選項
EXAMPLES:使用示例
AUTHOR:作者
REPORTING BUGS:
SEE ALSO:
SYSNOPSIS:
[]:可選內容
<>:可選內容
a|b:二選一
...:同一內容可以出現多次
man命令的操作方法:(調用less命令)
Space,Ctrl+v,Ctrl+f,Ctrl+F:向文件尾部翻屏
b,Ctrl+B:向文件首部翻屏
d,Ctrl+D:向文件尾部翻半屏
u,Ctrl+U:向文件首部翻半屏
RETURN or ^N or e or ^E or j or ^J:向文件尾部翻1行
y or ^Y or ^P or k or ^K:向文件首部翻1行
q:退出
g:回到文件首部
G:翻至文件尾部
文本搜索:
/KEYWORD:
以KEYWORD指定的字符串為關鍵字,從當前位置向文件尾部搜索:不區分字符大小寫
n:下一個
N:上一個
?KEYWORD:
與/KEYWORD用法相反
練習:date命令
顯示今天為周幾?
設定當前系統時間?
顯示今天的日期,形如:08/15/15?
顯示當前的時間,形如:16:01:21?
(3)info
info COMMAND
(4)程序自身的幫助文檔
/usr/share/doc/COMMAND-VERSION
(5)程序官方文檔
官方網站
(6)發行版的官方文檔
http://www.redhat.com/docs
(7)Google
openstack filetype:pdf #指定搜索的openstack文檔為PDF格式
openstack site:openstack.com #指定在openstack.com站點進行搜索
(8)slideshare
https://www.slideshare.net/
1.2-Linux命令幫助的獲取詳解