iT邦幫忙

2022 iThome 鐵人賽

DAY 16
1
Software Development

林姓商人與指令操作的秘密—談 Linux command line interface系列 第 16

Day 16:塑造我們自己的魔法捷徑:type、alias、unalias

  • 分享至 

  • xImage
  •  

講了這麼多指令了,可能有的讀者會開始好奇:所以指令的本質是什麼呢?背後是什麼東西在運作這些指令?

基本上來說,linux 內的指令有四個種類:

  • 作業系統殼層的內建指令(shell builtin)
  • 作業系統內的可執行檔案
  • 別名(alias)
  • 作業系統殼層的函數(shell function)

要知道我們的指令是哪一種,我們可以用 type 這個指令

type type
type is a shell builtin

這也是為什麼,如果我們嘗試看 typeman 內容,會看見

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 這個別名囉!

今天對指令的分享就到這邊,我們明天見!


上一篇
Day 15:指令的秘密解讀:echo
下一篇
Day 17:談資料的輸入輸出:>、>>、&>
系列文
林姓商人與指令操作的秘密—談 Linux command line interface30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言