指令的執行過程
系統第一次執行外部指令時Hash快取表為空,系統會先從PTAH路徑下尋找指令,找到後會將路徑加入Hasa快取中,當再次執行此指令時會直接從Hash的路徑下執行,如果有直接執行,如果不存在將繼續從PATH下的路徑繼續查找,Hash表可以提高指令的呼叫速率。
指令的優先權
alias --------------------- ----------------別名
builtin------------------------------------- -內部指令
hash-------------------------快取表
$PATH----------- ----可執行程式或腳本(外部指令)
內部指令與外部指令
##內部指令是shell自帶的外部命令是安裝系統時預設安裝的,並且在檔案系統下有對應的路徑
type [commnd ]
[root@centos6 ~]# type cat #判断cat命令,外部命令显示文件路径 cat is /bin/cat [root@centos6 ~]# type cd #判断cd命令 cd is a shell builtin
命名別名只在目前行程中有效如果想永久有效,要定義在設定檔中
僅對目前使用者:~/.bashrc
對所有使用者有效:/etc/bashrc
alias
[root@centos6 ~]#alias alias cp='cp -i' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' ......
alias NAME="VALUE"
[root@centos6 ~]#alias aubin=cat [root@centos6 ~]#aubin test hello world
[root@centos6 ~]#unalias aubin [root@centos6 ~]#aubin test -bash: aubin: command not found
目前使用者永久生效的別名
[root@centos6 ~]#vim .bashrc # .bashrc # User specific aliases and functions alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' alias aubin=cat # <<<-----此处定义别名 # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi [root@centos6 ~]#. .bash #立即生效
指定使用者生效的別名
[root@centos6 ~]#cd ~ li [root@centos6 li]#vim .bashrc #编辑用户目录下的.bashrc
所有使用者生效的別名
[root@centos6 ~]#vim /etc/bashrc alias aubin=cat # <<<-----加入定义别名 [root@centos6 ~]#. /etc/bashrc #立即生效
[root@centos6 ~]#help
[root@centos6 ~]#enable enable . enable : enable [ enable alias enable bg enable bind ......
<pre class="brush:php;toolbar:false">[root@centos6 li]#enable -n cd #禁用内部命令
[root@centos6 li]#enable cd #启用内部命令</pre>
[root@centos6 li]#enable -n pwd
[root@centos6 li]#enable -n #查看禁用的内部命令或如下图用help
enable -n pwd
也可以
查已經被停用的指令【指令前的*
代表指令已經用】
停用內部指令enable -n pwd
後依然可以使用<pre class="brush:php;toolbar:false">[root@centos6 li]#pwd
/home/li</pre>
使用
檢視指令的執行檔<pre class="brush:php;toolbar:false">[root@centos6 li]#which pwd
/bin/pwd</pre>
當內部指令停用後,依照bash優先權繼續搜尋Hash表、
PATH中發現/bin/pwd的可執行檔則將其運行。
[root@centos6 li]#enable -n enable -n cd enable -n pwd
或如上圖所示使用
help命令查看
<pre class="brush:php;toolbar:false">[root@centos6 ~]# hash
hits command
3 /usr/bin/cal
1 /usr/bin/yum</pre>
<pre class="brush:php;toolbar:false">[root@centos6 ~]# 查看详细的Hash表
[root@centos6 ~]#hash -l
builtin hash -p /bin/dd dd
builtin hash -p /usr/bin/yum yum</pre>
<pre class="brush:php;toolbar:false">[root@centos6 ~]#将cat定义一个别名存在hash表
[root@centos6 ~]#hash -p /bin/cat aubin
[root@centos6 ~]#aubin test
hello world</pre>
<pre class="brush:php;toolbar:false">[root@centos6 ~]#hash -t aubin
/bin/cat</pre>
<pre class="brush:php;toolbar:false">[root@centos6 ~]#hash -d aubin</pre>
<pre class="brush:php;toolbar:false">[root@centos6 ~]# hash -r</pre>
<pre class="brush:php;toolbar:false">[root@centos6 ~]# which cat #查看命令的路径,以第一个路径为准
/bin/cat
[root@centos6 ~]# which -a cat #查看命令所有路径,一个命令可能有多个路径
/bin/cat
/usr/local/bin/cat</pre>
[root@centos6 /]#which echo #列出命令的路径 /bin/echo
[root@centos6 /]#which cp #which列出文件路径会显示别名 alias cp='cp -i' /bin/cp [root@centos6 /]#which --skip-alias cp #列出文件路径而不显示别名 /bin/cp
[root@centos6 /]#which -a echo /bin/echo
[root@centos6 /]#whereis echo echo: /bin/echo /usr/share/man/man1/echo.1.gz /usr/share/man/man1p/echo.1p.gz
以上是LInux系統操作講解之基礎指令分類的詳細內容。更多資訊請關注PHP中文網其他相關文章!