Bash這個Shell,瞭解一下概念
BoumeAgain Shell(bash),是一個Bourne Shell的增強版本,基準於GNU架構下發展出來。
GNU是一個自由的作業系統,其內容軟體完全以GPL方式釋出。這個作業系統是GNU計劃的主要目標,名稱來自GNU’s Not Unix!的遞迴縮寫,因為GNU的設計類似Unix,但它不包含具著作權的Unix程式碼。GNU的創始人,理查德·馬修·斯托曼,將GNU視為“達成社會目的技術方法”。
作為作業系統,GNU的發展仍未完成,其中最大的問題是具有完備功能的核心尚未被開發成功。GNU的核心,稱為Hurd,是自由軟體基金會發展的重點,但是其發展尚未成熟。在實際使用上,多半使用Linux核心、FreeBSD等替代方案,作為系統核心,其中主要的作業系統是Linux的發行版。Linux作業系統包涵了Linux核心與其他自由軟體專案中的GNU元件和軟體,可以被稱為GNU/Linux(見GNU/Linux命名爭議)。
合法的shell需要被寫入 /etc/shells ,某些服務在執行過程中,會在此檢查使用者能夠使用的shell
[[email protected] etc]# cd /etc/
[[email protected] etc]# cat -n shells
1 /bin/sh ## 已經被 /bin/bash替代
2 /bin/bash ##Linux的預設Shell
3 /sbin/nologin ##用來混淆視聽的怪怪的shell
4 /bin/dash
5 /bin/tcsh ## 整合C Shell,提供更多的功能
6 /bin/csh ##已經被 /bin/tcsh 所取代
以 /etc/passwd 為例,可以看到以下內容,最後一個數據就是對應賬號登入後可以獲得的預設shell
[[email protected] etc]# cat -n /etc/passwd 1 root:x:0:0:root:/root:/bin/bash 2 bin:x:1:1:bin:/bin:/sbin/nologin 3 daemon:x:2:2:daemon:/sbin:/sbin/nologin 4 adm:x:3:4:adm:/var/adm:/sbin/nologin 5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 6 sync:x:5:0:sync:/sbin:/bin/sync 7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 8 halt:x:7:0:halt:/sbin:/sbin/halt 9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin 10 uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
Bash shell功能
1 命令編輯能力 history
主資料夾內 .bash_history中會儲存之前登入用過的1000個指令,本次登入的指令則會記錄在記憶體中,只有登出才會持久化到.bash_history
優點 :記錄足跡,但是要小心駭客入侵獲取與系統有關的命令,例如直接輸入mysql的密碼在命令列上
2 命令與檔案補全功能 tab
一次tab補全命令,兩次tab顯示備選檔案
3 命令別名設定功能 alias
[[email protected] ~]# alias
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
別名設定辦法:
[[email protected] ~]# alias la='ls -al'
[[email protected] ~]# la
total 248
dr-xr-x---. 27 root root 4096 Nov 17 09:26 .
dr-xr-xr-x. 22 root root 4096 Nov 17 08:32 ..
......
4 工作控制、前景背景控制 job control、foreground、background
使用前、背景的控制可以讓工作進行的更為順利!
至於工作控制(jobs)的用途則更廣, 可以讓我們隨時將工作丟到背景中執行!而不怕不小心使用了 [Ctrl] + c 來停掉該程式。此外,也可以在單一登陸的環境中,達到多工的目的。
5 程式化指令碼 shell scripts
將系統管理常需要下達的連續指令寫成一個檔案,該檔案可以通過對談互動式的方式來進項主機的偵測工作。
藉由shell提供的環境變數和相關指令來設計程式
6 萬用字元 Wildcard
例如 *
[[email protected] bin]# ll /usr/bin/X*
lrwxrwxrwx. 1 root root 4 Oct 5 2015 /usr/bin/X -> Xorg
-rwsr-xr-x. 1 root root 2274256 Nov 23 2013 /usr/bin/Xorg
常用指令介紹
type 查詢指令是否為Bash shell的內建命令
[[email protected] bin]# type ls
ls is aliased to `ls --color=auto' #列出ls主要使用狀態
[[email protected] bin]# type -t ls
alias #列出ls執行時的依據
[[email protected] bin]# type -a ls
ls is aliased to `ls --color=auto' #最先使用aliase
ls is /bin/ls #外部指令的位置在 /bin/ls
[[email protected] bin]# type -p ls #如果是外部指令,則會顯示完整檔名
指令下達的快速編輯
\ + [Enter] - 折到下一行
[ctrl] + u - 從游標處向前刪除指令串
[ctrl] + u - 從光標出向後刪除指令串
[ctrl] + a - 讓游標移動到整個指令串的最前面
[ctrl] + e - 讓游標移動到整個指令串的最後面