1. 程式人生 > >Bash這個Shell,瞭解一下概念

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 - 讓游標移動到整個指令串的最後面