tty1 ~ tty6
) 登入提示字串
[root@dywHome ~]# cat /etc/issue Mandriva Linux release 2007.0 (Official) for i586 Kernel 2.6.17-5mdv on an i686 / \l
[root@dywHome ~]# man mingetty \d 本地端時間的日期; \l 顯示第幾個終端機介面; \m 顯示硬體的等級 (i386/i486/i586/i686...); \n 顯示主機的網路名稱; \o 顯示 domain name; \r 作業系統的版本 (相當於 uname -r) \t 顯示本地端的時間; \s 作業系統的名稱; \v 作業系統的版本。
[root@linux ~]# vi /etc/motd Hello everyone, Our server will be maintained at 2005/10/10 0:00 ~ 24:00. Please don't login at that time. # 使用者登入主機後,就會顯示這樣的訊息出來: Last login: Mon Aug 15 10:17:10 2005 from 127.0.0.1 Hello everyone, Our server will be maintained at 2005/10/10 0:00 ~ 24:00. Please don't login at that time.
PATH、USER、MAIL、HOSTNAME、HISTSIZE、umask
;
/etc/inputrc
鍵盤熱鍵的設定;
[root@dywOffice ~]# ls /etc/profile.d/ 10lang.csh* inputrc.csh* numlock.sh* 10lang.sh* inputrc.sh* python.csh* 10mandriva-release.csh* kde3.sh* python.sh* 10mandriva-release.sh* less.csh* qtdir3.csh* alias.csh* less.sh* qtdir3.sh* alias.sh* mc.csh* screen.sh* configure_keyboard.sh* mc.sh* ssh-client.sh* gconf.csh* menustyle.csh* tmpdir.csh* gconf.sh* menustyle.sh* tmpdir.sh* glib20.csh* msec.csh* xhost.csh* glib20.sh* msec.sh* xhost.sh*
MANPATH
規定 man page 時,會依據 MANPATH
的路徑分別搜尋。
[dywang@dywHome ~]$ ls -ald ~/.bash* -rw------- 1 dywang users 552 Feb 6 13:07 /home/dywang/.bash_history -rw-r--r-- 1 dywang users 24 Dec 3 06:04 /home/dywang/.bash_logout -rw-r--r-- 1 dywang users 376 Dec 3 06:04 /home/dywang/.bash_profile -rw-r--r-- 1 dywang users 124 Dec 3 06:04 /home/dywang/.bashrc
/etc/profile
,再根據 /etc/profile
的內容去讀取其他額外的設定檔,例如 /etc/profile.d
與 /etc/inputrc
等等設定檔;
~/.bash_profile
或 ~/.bash_login
或 ~/.profile
等設定檔;
~/.bashrc
。
~/.bashrc
,故只要將自己喜好的設定寫入該檔,不論原來系統做了什麼設定值,都可以使用屬於自己熟悉的環境。
[root@linux ~]# source file #範例: [root@linux ~]# source ~/.bashrc [root@linux ~]# . ~/.bashrc #利用 source 或小數點 (.) 都可以將設定檔的內容讀進來目前的 shell 環境中。
~/.bash_profile, ~/.bash_login, ~/.profile
這三個檔案其優先順序如上述。
~/.bashrc
。
[root@linux ~]# stty [-a] 選項: -a :將目前所有的 stty 參數列出來; #範例: #範例一:列出所有的按鍵與按鍵內容 [root@linux ~]# stty -a speed 38400 baud; rows 40; columns 80; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = ; eol2 = ; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; -parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
eof : End of file ,代表『結束輸入』。 erase : 向後刪除字元, intr : 送出一個 interrupt (中斷) 的訊號給目前正在 run 的程序; kill : 刪除在目前指令列上的所有文字; quit : 送出一個 quit 的訊號給目前正在 run 的程序; start : 在某個程序停止後,重新啟動他的 output stop : 停止目前螢幕的輸出; susp : 送出一個 terminal stop 的訊號給正在 run 的程序。
[root@linux ~]# stty erase ^h %*<==用 [ctrl]+h 來進行字元的刪除*)
[root@linux ~]# set [-uvCHhmBx] 選項: -u :預設不啟用。若啟用後,當使用未設定變數時,會顯示錯誤訊息; -v :預設不啟用。若啟用後,在訊息被輸出前,會先顯示訊息的原始內容; -x :預設不啟用。若啟用後,在指令被執行前,會顯示指令內容(前面有 ++ 符號) -h :預設啟用。與歷史命令有關; -H :預設啟用。與歷史命令有關; -m :預設啟用。與工作管理有關; -B :預設啟用。與刮號 [ ] 的作用有關; -C :預設不啟用。若使用 > 等,則若檔案存在時,該檔案不會被覆蓋。 #範例: #範例一:顯示目前所有的 set 設定值 [root@linux ~]# echo $- himBH # 那個 $- 變數內容就是 set 的所有設定。 bash 預設是 himBH。 #範例二:設定 "若使用未定義變數時,則顯示錯誤訊息" [root@linux ~]# set -u [root@linux ~]# echo $vbirding -bash: vbirding: unbound variable # 預設情況下,未設定/未宣告 的變數都會是『空的』,不過,若設定 -u 參數, # 那麼當使用未設定的變數時,就會有問題。很多的 shell 都預設啟用 -u 參數。 # 若要取消這個參數,輸入 set +u 即可。 #範例三:執行前,顯示該指令內容。 [root@linux ~]# set -x [root@linux ~]# echo $HOME + echo /root /root ++ echo -ne '\033]0;root@linux:~\007' # 要輸出的指令都會先被列印到螢幕上。前面會多出 + 的符號。
[root@linux ~]# cat /etc/inputrc # do not bell on tab-completion #set bell-style none set meta-flag on set input-meta on set convert-meta off set output-meta on .....以下省略.....
/etc/DIR_COLORS*
與 /etc/termcap
。
符號 | 內容 |
* | 萬用字元,代表 0 個或多個字元(或數字) |
? | 萬用字元,代表『一定有』一個字母 |
# |
註解,這個最常被使用在 script 當中,視為說明。 |
\ |
跳脫符號,將『特殊字元或萬用字元』還原成一般字元 |
; | 連續性命令的界定(注意。與管線命令並不相同) |
~ |
使用者的家目錄 |
/ | 路徑分隔的符號 |
$ | 亦即是變數之前需要加的變數取代值 |
' | 單引號,不具有變數置換的功能 |
" | 雙引號,具有變數置換的功能。 |
` ` | 兩個『 ` 』中間為可以先執行的指令。 |
& | 將指令變成背景下工作 |
[ ] |
在中間為字元的組合 |
! | 邏輯運算意義上的『非』 not 。 |
>, >> |
輸出導向,分別是『取代』與『累加』 |
( ) | 在中間為子 shell 的起始與結束 |
{ } |
在中間為命令區塊的組合。 |
分隔兩個管線命令的界定; | |
組合按鍵 | 執行結果 |
Ctrl + C | 終止目前的命令 |
Ctrl + D | 輸入結束(EOF),例如郵件結束的時候; |
Ctrl + M | 就是 Enter 。 |
Ctrl + S | 暫停螢幕的輸出 |
Ctrl + Q | 恢復螢幕的輸出 |
Ctrl + U | 在提示字元下,將整列命令刪除 |
Ctrl + Z | 『暫停』目前的命令 |
*, ?, #
[root@dywOffice ~]# ls test* %*<== * 代表後面不論接幾個字元都予以接受*) [root@dywOffice ~]# ls test? %*<== ? 代表後面『一定』要接『一個』字元*) [root@dywOffice ~]# ls test??? %*<== ??? 代表『一定要接三個』字元。*) [root@dywOffice ~]# ls \#list directory contents %*<== \# 接註解*) core.29348 core.29456 Download/ histfiles Pictures/ tmp/ Video/ core.29452 Documents/ drakx/ Music/ presets/ usretc.k3b
\
[root@dywOffice ~]# touch a\ b %*<== \ 跳脫空字元*) [root@dywOffice ~]# ls a* -rw-r--r-- 1 root root 0 Jan 31 14:33 a b [root@dywOffice ~]# touch a\ c; ll a* %*<== ; 連續執行兩指令*) -rw-r--r-- 1 root root 0 Jan 31 14:33 a b -rw-r--r-- 1 root root 0 Jan 31 14:34 a c
~
[root@dywOffice ~]# cd ~/Documents/ %*<== ~ 表家目錄, / 表路徑分隔*) [root@dywOffice Documents]# cd %*<== 回到家目錄,與 cd ~ 相同*)
' '
與 " "
[root@dywOffice ~]# name=csie %*<== 設定變數 name *) [root@dywOffice ~]# echo $name %*<== 以 \$ 取變數內容*) csie [root@dywOffice ~]# echo '$name' %*<== ' ' 單引號,不具有變數置換的功能*) $name [root@dywOffice ~]# echo "$name" %*<== " " 雙引號,具有變數置換的功能*) csie
` `
:被 ` `
括起來的內容『會先執行』
[root@dywOffice ~]# ls /lib/modules/`uname -r`/kernel/drivers acpi/ crypto/ input/ net/ telephony/ atm/ edac/ isdn/ parport/ usb/ block/ firmware/ md/ pci/ video/ bluetooth/ hwmon/ media/ pcmcia/ w1/ cdrom/ i2c/ message/ rtc/ char/ ide/ misc/ scsi/ connector/ ieee1394/ mmc/ serial/ cpufreq/ infiniband/ mtd/ spi/
&
[root@dywOffice ~]# vi a\ b & %*<== \& 背景執行*) [1] 24034 [root@dywOffice ~]# jobs [1]+ Stopped vi a\ b [root@dywOffice ~]# fg 1 %*<== 到前景執行後,退出*) vi a\ b [root@dywOffice ~]# jobs
[ ]
與 !
[root@dywOffice ~]# cp test[1-5] /tmp # 將 test1, test2, test3, test4, test5 若存在的話,就拷貝到 /tmp [root@dywOffice ~]# cp test[!1-5] /tmp # 只要不是 test1, test2, test3, test4, test5 之外的其他 test? , # 若存在的話,就拷貝到 /tmp
練習題
tty1 ~ tty6
) 登入提示字串,存在那個檔案?
\d
代表意義為何?
\l
代表意義為何?
\m
代表意義為何?
\n
代表意義為何?
\o
代表意義為何?
\r
代表意義為何?
\t
代表意義為何?
\s
代表意義為何?
\v
代表意義為何?
~/.bash_profile, ~/.bashrc
~/.bashrc
~/.bashrc
或 . ~/.bashrc
~/.bashrc
^D
,代表意義為何?
^?
,代表意義為何?
^C
,代表意義為何?
^U
,代表意義為何?
^Q
,代表意義為何?
^S
,代表意義為何?
^Z
,代表意義為何?
[ctrl]+h
來進行字元的刪除?
^h
[ctrl]+e
來結束輸入?
^e
#
list directory contents 之意義?
#
接註解,無關指令之執行
a\ b
之意義?
\
符號跳脫
a\ b; ll a*
中『;』之意義?
cd ~/Documents/
之意義?
$name
之意義?
'$name'
之意義?
$name
,' ' 不具有變數置換的功能,故不取變數 name 的內容
"$name"
之意義?
&
中『&
』之意義?
&
』使指令 vi ab.txt 在背景執行