講了這麼多指令了,可能有的讀者會開始好奇:所以指令的本質是什麼呢?背後是什麼東西在運作這些指令?
基本上來說,linux 內的指令有四個種類:
要知道我們的指令是哪一種,我們可以用 type
這個指令
type type
type is a shell builtin
這也是為什麼,如果我們嘗試看 type
的 man
內容,會看見
NAME
bash, :, ., [, alias, bg, bind, break, builtin, caller, cd, command, compgen, complete, compopt, continue, declare, dirs, disown, 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 commands, see bash(1)
BASH BUILTIN COMMANDS
我們用 type
這個指令看看之前分享過的內容
type cd
cd is a shell builtin
type cp
cp is /usr/bin/cp
type ls
ls is aliased to `ls --color=auto'
內建指令跟可執行檔案都好理解,不過「別名」是什麼呢?
這邊的「別名」指的是我們可以設定一些縮寫,來代表較長的指令內容。這樣一來,我們就可以不用每次都輸入完整的指令,只需要輸入別名就可以了!
首先,我們先來輸入 lll
這個指令
-bash: lll: command not found
確定這個指令不存在之後,我們利用 alias
這個指令,將 lll
設置成 ls -al
的別名
alias lll="ls -al"
lll
我們就可以看到跟 ls -al
一模一樣的內容囉!
要看到目前所有的別名,可以直接輸入 alias
alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias lll='ls -al'
alias ls='ls --color=auto'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
原來系統已經預先寫好很多的別名了!真是意外的發現!
如果要移除別名,可以用 unalias
這個指令
unalias lll
lll
-bash: lll: command not found
這樣,我們就成功移除了 lll
這個別名囉!
今天對指令的分享就到這邊,我們明天見!