基本概念
X
window
interoperate with display & video card
XFree86
and X.org
the open source version of X window
KDE/GNOME,
字元集
一組二進位命令,
linux
系統發送給監視器以顯示字元
ASCII
ISO-8859-x, Unicode(all iso-8xx included)
類比終端
類比老式的
UNIX
非智能終端,定義顯示緩衝、圖形向量、行字元數等終端參數,定義按鍵等
環境變數
TERM
定義所使用的類比終端
XTERM
終端模擬器包
主題:指令碼中的格式
變數賦值“
=
”兩邊無空格
if
條件判斷的
[]
內必須有空格,
if
與[之間也需要空格
變數引用,除賦值及
for
外都應使用
$
雙引號允許變數和命令替換
單引號避免特殊萬用字元被解釋,如
$ ? | < >
,
eg: echo '$abc' #$abc
不會被解釋成變數
abc
另一種變數引用法:
${variable}
bash
的轉義符,
/
Environment
values
printenv, show all evn values
global env values:
大寫,任何由定義變數的進程及其子進程中可見;
local env values:
小寫,只在定義它的本地進程中可見,如當前
shell
;
set, show all env values, global &
local included.
set env values, use "" or '' :
a="A B C"
export,
將本地
env
匯出為全域
env
;
delete env: unset xxx
一些預設環境變數:
PATH
HOME
TMOUT
,設定閑置多久後
bash
自動結束
DISPLAY
數學運算
expr 5 /* 2
#
需要空格
var=$[ 5 * 2 ]
#
無所謂空格,
bash
專有
var=$[$var*(2+$var)]
這樣也可以:
var=$(( 5 * 2 ))
指令碼退出
獲得退出狀態:
$?
最大值
255
退出命令
: exit 0
#
是否可像函數一樣用
return
?
TBD
bash
變數數組
define
:
a=(1 2 3 4)
,空格分割,
()
echo ${a[1]}
# use:
index based on
0
echo ${a[*]}
# show all members
a[1]=20
# set a member
unset a
# deleted
TBD
:
how to add members to the array?
bash
的三種啟動方式
1
,使用者登入時的預設登入
shell
,依次執行
/etc/profile
,
$HOME/.bash_profile,
$HOME/.bash_login, $HOME/.profile
2
,非登入的互動式
shell
,處理
~/.bashrc
3
,運行指令碼的非互動式
shell
,由
$BASH_ENV
指定要執行的啟動指令碼
/etc/profile
第一次登陸時執行,最後從
/etc/profile.d
下的設定檔中收集
shell
設定資訊
~/.bash_profile
在使用者登入時執行,將調用
~/.bashrc
~/.bashrc
設定
alias
,並調用
/etc/bashrc
/etc/bashrc
每次執行
/
開啟
bash
時執行,其內容可被
~/.bashrc
覆蓋
~/.bash_logout
/etc/profile,
讀取
/etc/profile.d
目錄下的設定檔,第一次登入時執行
~/.profile
~/.bash_login
~/.bash_profile
~/.bashrc
,添加環境變數和別名的最佳地點
~/.bash_logout
,
logout
時執行
其他
coreutils package, the core utilities of
linux from GNU
echo -n xxx,
不輸出換行
user manage
UID
小於
100
,各種非實際使用者的功能建立的使用者
/etc/passwd
user_name:pwd:UID:GID:comments:HOME_DIR:deault_shell
/etc/shadom
useradd -D #show default setting for adding
user. SKEL set a pattern for the HOME dir of the new user.
userdel, del
user, param -r is appended if u want to del
the HOME_DIR also
usermod, set user such as adding user to a
group
passwd, change password
finger root, show user info
group
/etc/group
name:pwd:GID:user_list
passwd of group:
用於臨時成為該群組成員
null user_list: /etc/passwd
中的預設組使用者可以不出現在
group
的使用者列表中
usermod -G group1 user1
: add user to a group
groupadd
groupmod
id
命令,可以顯示使用者屬於的所有組
檔案許可權
umask, set the default value of the new
created file.
chmod 760 newfile
chmod +x newfile
# +, -, =
chown chgrp
檔案屬性
set user id(SUID)
,檔案將在檔案所有者許可權下執行,而非檔案執行者許可權下,如檔案由
root
所有,則普通使用者也將以
root
許可權執行該程式
set group id(SGID)
,對於目錄,目錄中的建立檔案將使用目錄的使用者組作為預設使用者組;一種建立多使用者共用資料夾的方法;
粘著位:進程結束後,檔案仍然保留在記憶體中,作用(?)
chmod +s xxx
,設定
SGID
位
臨時檔案
mktemp abc.XXXXXX
#6
個
X
將隨機產生,
X
數量要大於
3
,命令返回產生的檔案名稱(預設目前的目錄),
XX
必須在名稱最後
mktemp -t abc.XXX
#
在
/tmp
下組建檔案
mktemp -d abc.xxx
#
建立臨時目錄
字串處理
使用
## # % %%
進行字串截取
使用
expr
獲得字串長度、子串等,
expr substr STRING POS LENGTH
eg:
expr
substr abcd 1 100
#pos
從
1
開始,
length
可大於實際長度
expr length
abcd