1. 程式人生 > 實用技巧 >認識BASH這個Shell

認識BASH這個Shell

20.11.22

合法shell

  • /bin/sh (已經被 /bin/bash 所取代)
  • /bin/bash (就是 Linux 預設的 shell)
  • /bin/ksh (Kornshell 由 AT&T Bell lab. 發展出來的,兼容於 bash)
  • /bin/tcsh (整合 C Shell ,提供更多的功能)
  • /bin/csh (已經被 /bin/tcsh 所取代)
  • /bin/zsh (基於 ksh 發展出來的,功能更強大的 shell)

Bash shell

  • 命令編修能力 (history)

    • 記錄命令
    • ~/.bash_history 記錄的是前一次登陸以前所執行過的命令
    • 當前這次登陸所執行的命令都被快取在記憶體中,登出後才會記錄到 ~/.bash_history
  • 與檔案補全功能 ([tab] 按鍵的好處)

    • [Tab] 接在一串命令的第一個字的後面,則為命令補全;
    • [Tab] 接在一串命令的第二個字以後時,則為『檔案補齊』!
  • 命令別名配置功能 (alias)

    • alias 就可以知道目前的命令別名有哪些
    • 例:alias lm='ls -al'
  • 任務管理、前臺、後臺控制 (job control, foreground, background)

  • 程式化指令碼 (shell scripts)

  • 萬用字元 (Wildcard)

    • 想要知道 /usr/bin 底下有多少以 X 為開頭的檔案嗎?使用:『 ls -l /usr/bin/X* 』

Bash shell 的內建命令: type

type [-tpa] name:檢視是否為內建命令

選項與引數:
:不加任何選項與引數時,type 會顯示出 name 是外部命令還是 bash 內建命令
-t :當加入 -t 引數時,type 會將 name 以底下這些字眼顯示出他的意義:
file :表示為外部命令;
alias :表示該命令為命令別名所配置的名稱;
builtin :表示該命令為 bash 內建的命令功能;
-p :如果後面接的 name 為外部命令時,才會顯示完整檔名;
-a :會由 PATH 變數定義的路徑中,將所有含 name 的命令都列出來,包含 alias


命令的下達

範例:如果命令串太長的話,如何使用兩行來輸出?
[vbird@www ~]# cp /var/spool/mail/root /etc/crontab \
> /etc/fstab /root

需要特別留意, [Enter] 按鍵是緊接著反斜槓 () 的,兩者中間沒有其他字元。 因為 \ 僅跳脫『緊接著的下一個字元』而已!