大鳥老師AIX 223認證考試 AU13培訓視訊學習筆記

尛樣兒發表於2010-02-05

大鳥老師個人網站:http://www.qujon.com/

小型機-RISC-簡單指令集計算機

PC伺服器-CISC

遠端登陸-rlogin

ctrl+d  //關閉一個終端

cal 8 2009 //顯示2009年8月日曆表

cal 8      //顯示公元8年所有月份的日曆表

clear|echo|banner(後續內容用大字元顯示)

who          //所有登陸使用者的登陸名,終端名,日期,ip
who am i     //當前登陸使用者的登陸名,終端名,日期,ip
whoami       //當前登陸使用者的登陸名

finger team02     //指定使用者的詳細資訊

傳送mail
mail team01
mail team20@sys2 //sys2遠端主機名 向遠端主機使用者傳送mail

write team01    //單向傳送訊息,接受者只能檢視,不能互動

ctrl+d終止命令

wall //向所有線上使用者傳送資訊
ctrl+d終止命令
//命令終止後其他使用者才能看到傳送的資訊

talk命令(雙方都執行talk才能開啟會話)
aaa:talk qqq
qqq:talk aaa


mesg n 拒絕傳送資訊
mesg y 允許傳送資訊


常用鍵盤按鍵:
ctrl+c   //終止命令,返回shell
ctrl+d   //結束事務或結束檔案
ctrl+s   //臨時停止輸出到螢幕
ctrl+q   //返回到螢幕輸出
ctrl+u   //刪除正行內容


AIX體驗中心:
http://www.unix-center.net

man -k who //只顯示和關鍵字相關的命令及其內容,使用前需以root身份執行catman -w

在AIX上開啟線上幫助文件(需要安裝firefox)
#infocenter

IBM資訊中心
http://publib.boulder.ibm.com/infocenter/aix/v6r1/index.jsp

i-node
作業系統中的資料結構,包含了與檔案系統各個檔案相關的一些重要資訊。在unix中建立檔案系統時,同時將建立大量的i-node。通常,檔案系統磁碟空間中大約百分之一空間分配給i-node表。inumber只是i-node的標識編號。索引編號只是檔案相關資訊中的一項重要的內容。


檔案和目錄
ls -al

d此項為目錄
b此項為塊特殊檔案
c此項為字元特殊檔案
l此項為符號連結,或者指定-N標誌,或者符號連結不指向現有檔案。
p此項為一個先進先出(FIFO)特殊檔案。
s此項為本地套接字。
-此項為普通檔案。

ls -li i表示顯示節點號(即i-node中的inumber)

ls -ldi (檢視目錄的詳細資訊和節點號)

istat filename  //檢視檔案的詳細資訊,包含節點號,更新時間等

cd 效果等於cd ~

touch 可以更新檔案的訪問時間

user files

cp 命令 如果目的地有相同名稱的檔案會直接覆蓋,用cp -R會互動,有相關提示


cat | pg (列出一屏,Enter顯示下一螢幕)| more (空格顯示下一螢幕,Enter顯示下一行)

wc [-c] [-l] [-w] filename

-c位元組數
-l行數
-w單詞個數(不是字元個數,空格區分)

wc filename
顯示
行數 單詞個數 位元組數 檔名


ln 硬連線 多個檔案擁有同一個inumber號
軟連線 多個檔案擁有不同的inumber號

rm -i filename //互動刪除檔案

qprt  filename filename2 ....   //新增檔案到列印佇列
qchk                            //檢查列印佇列
qcan -x 99(job號)               //放棄job號的列印工作

檔案許可權

rwx

對於檔案:r(cat more) 檢視檔案內容,w(vi) 改變或者刪除檔案內容, x(sh) 能夠將檔名作為一個命令
對於目錄:r(ls) 找出目錄當中的檔案 w(mkdir,rmdir) 建立或者刪除目錄當中的檔案 x(cd) 訪問目錄當中的檔案

對於指令碼,需要x許可權和r許可權
對於可執行程式碼:x許可權即可

對於目錄:
w許可權要求x許可權
從目錄中刪除檔案需要對該目錄的x和w許可權,對於被刪除檔案不需要任何許可權

chmod命令

u=owner of the file
g=owner's group
o=other users on the system
a=all

+ add permissions
- remove permissions
= clears permissions and sets to mode specified(清除許可權,設定為後面指定的許可權)

chmod go+w newfile
chmod a+x newfile
chmod o-rwx newfile

umask
預設建立的資料夾的許可權是777
預設建立的檔案的許可權是666
umask 022(the default value of 022 is set in /etc/security/user)

設定umask:
#umask 027

我們建立的資料夾的許可權是777-022=755
我們建立的資料夾的許可權是666-022=644


vi編輯器
shift+4 移動到行尾
shift+6 移動到行首
b 移動到上一個單詞的開始
w 移動到下一個單詞的開始

dw 刪除游標到下一個單詞開始的位置
db 刪除游標到上一個單詞開始的位置
d0刪除行首到游標所在字元
:20,40d 刪除20行到40行
dd 是剪下,可以用p進行復制
u 回退,只能做一次

/ 向下搜尋
? 向上搜尋

vi中可以執行命令
:!ls

:r filenames (讀取指定檔名的內容)

:set all 列出所有選項設定情況。
:set term 設定終端型別。
:set ignorecase 在搜尋中忽略大小寫。
:set list 顯示製表位(^|)和行尾標誌($)。
:set number 顯示行號。
:set showmode 顯示使用者處在什麼模式下。
:set report 顯示由面向行的命令修改國的行數目。
:set terse 顯示簡短的警告資訊。
:set warn 在轉到別的檔案時,若沒有儲存當前檔案則顯示no write資訊。
:set autowrite 在":n"和":!"命令之前都自動儲存檔案。
:set nomagic 允許在搜尋模式中,使用前面不帶\的特殊字元。
:set nowrapscan 禁止vi在搜尋到達檔案兩端時,又從另一端開始。
:est mesg允許vi顯示其他使用者用write寫到自己終端上的資訊。

所有的選項都儲存在$HOME/.exrc檔案中

命令列編輯
set -o vi
只在ksh中有效

h左 j下 k上 l右

shell

檢視系統中已經設定的變數:set
設定變數
name=value
顯示變數
echo $name
刪除變數
unset name

預定義的環境變數:
HOME=/home/team01 (表示home目錄)
PS1=$ (命令列提示符)
PS2=> (命令不完成的輸入的提示符)
SHELL=/usr/bin/ksh (預設shell)

echo the will be a ${xy}long meeting

now=$(date) or now=`date`
echo $now

HOST=$(hostname) or HOST=`hostname`
echo $HOST

echo '$HOME'
顯示結果: $HOME
echo "$HOME"           //當遇到$,`,\會轉化成元字元
顯示結果: /home/team01
echo \$HOME
顯示結果: $HOME

特殊符號含義
# 註釋
$ 變數
~ home目錄
; 連續命令
'' 單一字串
${} 變數正規表達方式 ${HOME}
"" 視為單一字串 允許變數擴充套件 $,`,\
`` 倒引號
\ 放在指令前,取消別名,放在特殊符號前,該特殊符號作用失效,放在指令末尾表示換行。
: 什麼事都不做 返回狀態值0
|| or關係
&& and關係
& 指令放入後臺工作

命令:
ls $dir/*.? 2>/dev/null | tee filelist.txt


shell

元字元(shell賦予了特定的意義)
< > | ; ! * ? [ ] $ \ " ` '
萬用字元
* ? ! [ ] [ - ]

萬用字元[abc] 多個字元當中的一個
ls ne[stw]
rm [fdsre]e[tw]
!表示非
[!tn]*
[-]表示區間
[2-5]

標準檔案

標準輸入                             檔案描述符:0 符號:<
標準輸出(無特殊情況,標準輸出是螢幕) 檔案描述符:1 符號:>
標準錯誤(無特殊情況,標準輸出是螢幕) 檔案描述符:2 符號:2>(2>>表示追加)

錯誤輸出到標準輸出當中 2>&1
cat > ttt
輸入內容


兩個命令的結果是不同的
command > outfile 2>&1(標準輸出是outfile檔案)
command 2>&1 > outfile(標準輸出是螢幕)

管道符
把前一個命令的輸出作為後一個命令的輸入

過濾器:
ls -l | grep "^d" | wc -l

分割輸出(分割符tee):
ls | tee /tmp/ls.save | wc -l

tee 命令讀取標準輸入,然後將程式的輸出寫到標準輸出,並同時將其複製到指定的一個或多個檔案。

要同時檢視和儲存一個命令的輸出:

lint program.c | tee program.lint它在工作站上顯示命令 lint program.c 的標準輸出,同時在檔案 program.lint 中儲存輸出的一個副本。如果 program.lint 檔案早已存在,它將被刪除並替換。

要同時檢視一個命令的輸出並儲存到一個現有檔案:
lint program.c | tee  -a program.lint

它將在工作站上顯示 lint program.c 命令的標準輸出,同時在 program.lint 檔案尾部新增輸出的一個副本。如果 program.lint 檔案不存在,它將被建立。


多個命令組合在一行執行:
ls -R > outfile ; exit

換行命令:\
cat /home/mydir/mysubdir/mydata \
/home/youdir/yousubdir/yourdata


程式(所以的命令,指令碼,程式,shell等都是作為程式來執行的)
檢視當前shell程式ID:
echo $$
當前執行程式:
ps -u team01

變數和程式的關係
變數只在程式中有效
x=4
ksh
echo $x
x=1

echo $x

export作用:
export x=4
ksh
echo $x
x=1
exit
echo $x (結果還是4)
總結:export後的變數在子程式是可以訪問到的,子程式也可以修改該變數,但修改後的的變數僅限於子程式訪問


SHELL指令碼
儲存在文字檔案中的命令集合
sh run.sh (開啟新的shell進行執行run.sh shell指令碼)
run.sh 需要把路徑加到PATH環境變數中(開啟新的shell程式執行run.sh shell指令碼)
. run.sh(當前shell程式中執行run.sh shell指令碼)


控制程式(ps命令)
-e 將除核心程式以外所有程式的資訊寫到標準輸出。
-f 生成一個完整列表。
-k 列出核心程式。
-l 生成一個長列表。具有F,S,UID,PID,PPID,C,PRI,NI,ADDR,SZ,PSS,WCHAN,TTY,TIME和CMD欄位。
-m 列出核心執行緒和程式。
-o Format以format變數指定的格式顯示資訊。

前臺程式和後臺程式(&)

結束前臺程式: , kill
結束後臺程式:kill

訊號:通訊中用的方式

kill -l 檢視所有的訊號
kill -9 (9就表示訊號)

nohup
nohup ls -R / > out 2> err.file &
當使用者退出系統後,該使用者之前執行的程式不會被kill。
標準輸出會輸出到nohup.out檔案中
不需要和前臺進行互動,適合長時間執行的命令在後臺執行

作業

一個正在執行的程式稱為一個作業,而且作業可以包含一個或多個程式,尤其是當使用了管道和重定向命令。例如"nroff -man ps.1| grep kill | more"這個作業就同時啟動了三個程式。
作業控制指的是控制正在執行的程式的行為。比如,使用者可以掛起一個程式,等一會兒再繼續執行該程式。shell 將記錄所有啟動的程式情況,在每個程式過程中,使用者可以任意地掛起程式或重新啟動程式。作業控制是許多shell(包括bash和tcsh)的一個特性,使使用者能在多個獨立作業間進行切換。
一般而言,程式與作業控制相關聯時,才被稱為作業。

jobs列出所有執行在後臺和停止的程式
掛起前臺程式
fg % 在前臺執行Job(將後臺執行的Job引入前臺)
bg %jobnumber 在後臺執行Job(將前臺執行的job引入後臺)

daemons
守護程式,永不停止的程式

例子:
ls -R / > out 2> errfile &  //start job
jobs                        //lists jobs
fg %1                       //foreground
                    //suspend
bg %1                       //background
jobs                        //list jobs
kill %1                     //terminate


aix 常用工具(命令)
find命令
find . -name 'm*' -exec ls -l {} \;
find . -name m\* -ok rm {} \;(-ok表示有互動,提示是否刪除)

find命令選項:
-type f (普通檔案) d (目錄)
-size +n (大於n個blocks) -n(小雨n個blocks) n(等於n個blocks)
-mtime +x(x天以前) -x(x天以後)
-perm onum(access permissions match "onum")
      mode(access permissions match "mode" values (ex.rwx))
-user user (查詢的使用者)
-o (或者 or關係)
-newer ref.log (比我們規定的ref.log更新的檔案)

ls與find對比
ls 當前目錄
find 當前目錄和子集目錄


例子:
find . -name 's*' -type f -size +2 -exec ls -l {} \;
find . -prem 644 -mtime +4 -print
find . -name fleas -o -name misc
find / -name 'security' -print 2> errfile

刪除系統中的臨時檔案(a.out *.o core)
find . \( -name a.out -o -name '*.o' -o -name 'core' \) -exec rm {} \;

複製目錄中的全部內容
cd /path/to/source/dir
find . | cpio -pdumv /path/to/destination/dir

find $LOGDIR -type d -mtime +0 -exec compress -r {} \;
find $LOGDIR -type d -mtime +5 -exec rm -f {} \;

grep 命令
針對檔案內容
grep [options] pattern(文字或正規表示式) [file1 file2 ...]

grep 800 phone1 (搜尋phone1檔案中帶800的行)
grep 600 phone* (搜尋多個phone開始的帶有800的行)

grep 'regular_expression' file
. 任何單一字元
* 0或者別的字元
[aA] a或者A
[a-f] a-f
^a 以a開頭
z$ 以z結尾


grep              shell
^(以什麼開始)     ^
$(以什麼結尾)     $(變數)
.(單字元)         ?(單字元)
.*(多字元)        *(多字元)
[-](表示範圍)     [-](表示範圍)

例子:
ps -ef | grep team01
grep '^B' phone1
grep '5$' phone1
grep '^[DH]' phone1
grep '^A.*0$' phone1

option:
-v do not match
-c count(匹配行的累積值)
-l 匹配行的名字
-n 行號
-i 忽略大小寫
-w 整單詞搜尋

egrep 與fgrep
grep -e(egrep) 增強型,可以使用|符號
grep -f(fgrep) fast grep ,不能使用正規表示式

sort 命令
sort [-t delimiter ] [+field [.column]] [options]
-d 地點順序排序
-r 反序
-n 算數值對數字進行排序
-t 哪個字元作為欄位的分隔符

(對檔案內容進行排序)
cat animals
sort anilmals
cat animals | sort +0.1 (0表示欄位號,1表示列號)
cat animals | sort -t . -n +1


補充例子:
/etc/passwd檔案格式:
loginID:x(密碼):UID:GID:comment:home directory:login shell

sort -t : -k(排序關鍵字) 5,5 /etc/passwd
按照註釋欄位對passwd進行排序

sort -t : -k 3,4 /etc/passwd
按照第3個欄位開始,第4個欄位結束對/etc/passwd進行排序

sort -t : -k 1.3,5.7 /etc/passwd
按照第1個欄位的第3個字元開始,第5個欄位的第7個字元結束對/etc/passwd進行排序

head -5 myfile
檢視檔案的前幾行(預設值10)
tail -20 file (最後20行)
tail +20 file (從20行到末尾)
tail file (檢視動態的增長請況)

aix與dos資料檔案(dos軟盤)互動
dosdir -l
dosread file1.doc file1 (cp)
doswrite file1 file1.doc
dosread -a letter.txt letter (dos和aix檔案轉換)
doswrite -a letter letter.txt (aix和dos檔案轉換)

dosdel filez 從dos磁碟刪除檔案

tn命令
tn=telnet

ftp命令
ftp 主機名

tar命令
備份和恢復
tar -cvf /tmp/file.tar .
tar -xvf /tmp/file.tar

tar -tvf /tmp/file.tar 檢視檔案內容

ls -l /home | egrep 'txt$ | team01$' | sort -r +7 | tail +4 | head -5

xargs命令
cat oldfilelist
cat oldfilelist | xargs -t rm

批量改名
ls | xargs -t -I {} mv {} {}.old

find . -type f -mtime +30 | xargs -t rm

find . -type f | xargs -t grep -l Hello

find命令-links選項

find /home -type f -links +1(連結數大於1) | xargs ls -li

別名
alias mylinks='find . -type f -links +1 | xargs ls -li'
執行命令
mylinks

which find grep      //查詢命令所在路徑
whereis find grep    //類似which
whence -pv find grep //效果類似

file命令
檢視檔案型別
file
file
file
file -f filename 檢視檔案內容

diff 命令(分析比較文字檔案)

diff [-options] file1 file2
1c1
4d3
5a5

cmp命令(比較所有型別檔案)
cpm names names.old
names names.old differ: byte 6, line 1

cmp -l names names.old

dircmp 比較兩個目錄
dircmp -d /home/team01 home/team02

1部分
顯示2個目錄完全不同的
2部分
完全相同的
3部分
比較相同名稱檔案的不同

壓縮,解壓縮
compress -v file1
zcat               //檢視file1.Z的內容
uncompress file1.Z //解壓縮

顯示不可列印字元
cat myfile
cat -vte myfile (顯示不可列印字元)

-v 顯示不可列印字元
-t 顯示TAB顯示為^I
-e 顯示每一行的換行$

例子
$ls
greatefile
$rm greatfile
no such file
$ls | cat -vt
^Ggreatfile

刪除:
$rm ^Ggreatfile
$mv ^Ggreatfile greatfile
$ls -i
// 130 ^Ggreatfile 127 myfile
$find . -inum 130 -exec rm {} \;

$touch myfile$$
$ls
myfile1288

$date + '%m%d%H%M%S'
$touch myfile.$(date +'%m%d')
myfile.1214

shell
SHELL系統環境變數(不可修改)
$$ pid
$0 執行shell指令碼名稱
$# 傳遞給shell指令碼引數的個數
$* 傳遞給指令碼引數值
$? 上一個命令的返回碼
$! 上一次後臺程式的PID

位置引數
$1,$2,$3
xxx.sh aaa bbb ccc
$0 (xxx.sh)
$1 (aaa)
$2 (bbb)
$3 (ccc)

expr工具
例子:
var1=6
var2=3
expr $var1 / $var2                //注意:操作符號兩邊有空格
expr $var1 - $var2

expr \($var1 + $var2 \) \* 5

var3=$(expr $var1 / $var2)
echo $var3

條件執行
command1 && command2
if (command1 successful) then do (command2)
ls s* && rm s*

command1 || command2
if (command1 not successful) then do (command2)

cd /dir1 || echo Cannot change to /dir1

test命令
test expression or [expiression] or [[expression]]
$string1 =$string2   //String are identical
$string1 != $string2 //string are not identical
$number1 -eq $number2 //numbers are equal
$number1 -ne $number2 //numbers are not equal
-e $file //file exists
-d $file //file is a directory
-r $file //file is readable
-w $file //file is writable

shell控制結構
if condition is true
then
....
else(可選)
....
fi

例子:
USAGE ="$0 userid"
if [[$# -ne 1]]
then
 echo "Proper Usage : $USAGE"
 exit 1
fi

if who | grep $1 > /dev/null
then
 echo "$1 is active"
else
 echo "$1 is not active"
fi

exit

USAGE="$0 username"

if [[$# -ne 1]]
then
 echo "Proper usage :$USAGE"
 exit 2
fi

grep $1 /etc/passwd >/dev/null
if [[ $? -eq 0 ]]
then
 echo "$1 is a valid user"
 exit 0
else
 echo "$1 is not a valid user"
 exit 1
fi


read 命令
read name 輸入值賦給name變數
if [[ -f $name ]]
then
 rm $name
else
 echo "Error : $name is not an ordinary file"
fi

for迴圈
for variable in list
do
 command(s)
done

for var in file1 file2 file3
do
 wc -l $var
done

for FILE in /tmp/*
do
 echo "Removing $file"
 rm $FILE
done

while迴圈
while expression
do
 command(s)
done

例子:
x=1
while [[ $x -lt 9]]
do
 echo "It is now $(date)"
 echo "There are $(ps -ef | wc -l) processes"
 ......
 x=$(expr $x +1)
 sleep 600
done

XWindows

定製環境
/etc/environment 所有程式指定基本環境的變數,檔案是登入時作業系統使用的第一個檔案。
一個新的程式啟動時,exec 子程式產生Name=Value格式的字串變數組,稱為環境(environment)。/etc/environment檔案不是一個shell script。應只包含Name=Value格式的資料,不應包含shell命令。嘗試從該檔案執行命令可導致初始化程式失敗。

/etc/profile 系統使用的第二個檔案,所有使用者環境的配置

$HOME/.profile 系統使用的第三個檔案,(優先順序最高) 控制獨立的工作環境,使用者自定義的環境變數

CDE登入時使用.dtprofile檔案。

.kshrc 對KSHELL進行一些設定。每次開啟一個kshell都會生效,設定別名
alias ll='ls -l'
執行 ll

alias檢視別名的定義
unalias取消別名設定

fc -l 檢視歷史命令

預定義環境變數
LOCPATH 本地語言支援資訊的地區全路徑名
NLSPATH message catalogs的完整路徑名
PATH 路徑次序。冒號分隔
LPDEST 預設印表機
TERM 終端型別
EDITOR 執行編輯功能命令使用的預設編輯器。
TZ 時區

AIXwindows 環境

rexec nysys(機器名) xclock -d dalsys(機器名):0

xhost是否允許一臺機器開啟一個client
xhost + moon 允許開啟一個x client
xhost - pluto 拒絕開啟一個x client
xhost + 允許所有的主機開啟x client


startx:
 (xinit).xinitrc->mwm->.Xdefaults->.mwmrc

startx預設開啟:
xclock (使用.xinitrc)
xterm (使用.xinitrc)
mwm (使用.Xdefault .mwmrc)

會首先在使用者的系統目錄下搜尋,如果找不到使用系統預設值

.xinitrc檔案
1.startx shell script. will first search for a file specified by the user's XINITRC環境變數

2.尋找.Xinit .xinit .Xinitrc .xinitrc .xsession

3./usr/lpp/X11/defaults/xinitrc

定製自己的環境 cp /usr/lpp/X11/defaults/xinitrc ~/.xinitrc,然後修改。

例子:
xclock -geometry -0+0 -fg AntiqueWhitel -bg grey60 -update 1 &

-geometry WIDTH*HEIGHT
+XOFF+YOFF (where WIDTH,HEIGHT,XOFF AND YOFF are numbers)

e.g:
aixterm -geometry 80*40+200+300
xclock -geometry 200*250-0+0

color database
/usr/lib/X11/rgb.txt

字型
/usr/lib/X11/fonts

custom -e font 列出所有字型

.Xdefaults 定製AIXWindows環境

.Xdefaults檔案格式:
object*attribute:value

Aixterm*background: grey
Aixterm*foreground: navy
......

.mwmrc檔案
cp /usr/lpp/X11/defaults/Motif1.2/system.mwmrc $HOME/.mwmrc
vi $HOME/.mwmrc

xsetroot命令
定製root window視窗
當前有效
永久有效 修改.xinitrc檔案

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23135684/viewspace-626927/,如需轉載,請註明出處,否則將追究法律責任。

相關文章