Unix & Linux 大學教程 學習總結

兩年前我看這本書時,是一本812頁的厚書,現在我總結成了40句話,什麼時候成了1句話就好了。


Unix & Linux 大學教程    Harley Hahn

0,操作系統最重要功能
控制計算機並在計算機啓動或者重新啓動時初始化計算機
支持與計算機交互所使用的界面
爲需要使用計算機資源(磁盤空間、文件位置、處理時間、內存等)的程序提供接口
管理計算機的內存
維護並管理文件系統
調度工作
提供賬戶和安全服務

1,內核提供服務:
內存管理(虛擬內存管理,包括分頁)
進程管理(進程創建、終止、調度)
進程間通信(本地,網絡)
輸入輸出
文件管理
安全和訪問控制
網絡訪問(如TCP/IP)

2,Unix=內核+使用工具(包括shell和gui)

3, Linus Torvalds

4,計算機系統:
計算機=終端+主機
終端=輸入設施+輸出設施

5,抽象層次
    
應用程序/用戶
桌面環境
窗口管理器
X Window
內核中的設備驅動程序
硬件

6,進程線程
在Unix系統中,每個對象或者用文件表示,或者用進程表示。簡單地講,文件存放數據或者允許訪問資源,而進程是正在執行的程序。
進程可以分成更小的單元,稱爲線程,線程是一組運行在進程環境中的指令。因此可以將程序的結構描述爲,在一個進程之內,不止一個線程在同時進行。

7,運行級別
0    關機
1    單用戶
2    非標準化
3    多用戶:CLI
4    非標準化
5    多用戶:GUI
6    重啓

8,快捷鍵
Ctrl + Alt + Left/Right 工作區的切換(基於gnome桌面)

9,終端
stty -a 獲取當前終端行設置
intr = ^C(停止正在運行程序); quit = ^\(停止程序並保存core文件); erase = ^?; kill = ^U(刪除整行); eof = ^D(提示已經沒有數據); start = ^Q(開始屏幕顯示);erae = ^H(刪除一個字符);stop = ^S(暫停屏幕顯示); susp = ^Z(暫停,fg恢復到前臺); rprnt = ^R(搜索history命令); werase = ^W(刪除一個單詞); lnext = ^V; flush = ^O;

infocmp 打印終端信息  infocmp vt100 | less  (infocmp需要安裝ncurses)
echo $TERM 得到的默認終端是xterm

export IGNOREEOF=5  可以按^D提示logout或者exit退出

10,which type whereis
type 是 shell 內嵌,查看內置命令,bash 69個
help打印一些內置命令列表

11,cal -j 5 2014
查看2014年5月的每一天

12,uptime,uname

13,users,who,finger,w(誰正在做什麼)

14,bc -l (支持+,-,*,/,%,^,sqrt(x),s(x),c(x),a(x),ln(x),j(n,x))

15,RTFM(Read the fucking manual),xman
(1).命令  (2).系統調用  (3).函數庫  (4).特殊文件  (5).文件格式  (6).遊戲  (7).雜項信息  (8).系統管理  
man -f 快速查尋命令用法    whatis
man -k 關鍵字        apropos
man builtin man bash

16,環境變量
env
perintenv
set/unset(csh)    set term=vt100
setenv/unsetenv(csh) setenv TEST hello
export(bash)
set -/+o 顯示shell選項控制(bash)

17,引用和轉義
使用反斜線引用單個字符(稱爲轉義了這個字符)
使用單引號引用一串字符
使用雙引號引用一串字符,但是保留$,`,\的特殊意義

18,搜素路徑
export PATH="/...:/..."
set path=(/... /...)
PS1  shell 提示
export PS1="\u\w\@\$"
prompt(csh)
``命令替換

19,fc -l history

20,自動補全
文件名補全
命令補全
變量補全
用戶標識補全
主機名補全(bash)

21,別名
alias,umalias
alias 'a=alias'

22,初始化文件
.profile文件
.rc文件
登陸shell(.bash_profile)
非登陸shell(.bashrc)

23,輸入輸出
<重定向標準輸入(同0<)
>重定向標準輸出(同1>)
>>追加標準輸出(同1>>)
2>重定向標準錯誤
2>>追加標準錯誤
2>&1將標準錯誤重定向到標準輸出
>&或者&>重定向標準輸出+標準錯誤(只適用於Bash)
|管道
2>&1 |所有輸出到管道
set -o noclobber 可以禁用>,但是可以用>|(強制重寫)

24,編組和子shell
(cd directory; command)

25,管道線分流tee(從標準輸入讀取數據發送屏幕和文件各一份)
cat 1 2 3 |tee 123|grep hh (tee可以輸出保存不止一個副本)

26,條件執行
command1 && command2(命令1成功執行後執行命令2)
command1 || command2(命令1沒有成功後執行命令2)

27,過濾器
cat|grep|sort|less
(1)分析問題
(2)選擇工具
(3)與他人討論
(4)選擇選項

28,文件簡單操作
split 分割文件
tac 反轉文本行順序
rev 反轉字符
colrm 刪除指定的數據列,然後將剩餘的數據寫入標準輸出

29,比較和抽取
cmp 逐字節地比較兩個文件
comm 一行一行比較兩個有序文本
diff    比較無序文本文件
cut -f 1,3-5 -d ':' /etc/passwd | sort (f列,d分隔符)
cut -c1-8(c按字符)
paste 可以將幾個文件(其中每個文件都包含一列數據)組成一個大表
paste 水平組合數據,cat垂直組合數據

30,統計和格式化
nl 創建行號
wc 統計行、單詞和字符
:set list 可視化製表符和空格
expand將製表符轉換成空格(unexpand)
fold分割行  fold -s -w 40 file  (40個字符一行,單詞不分割)

31,選取、排列、組合及變換
grep (global re  print)
ls -F /etc |grep -c "/" (c統計)
-in(忽略大小寫並按行號)
-l (列出文件名)
-v(reverse,相反)
-x (佔整行)
-r(recursive,遞歸)
-s(suppress,抑制)
-E(egrep)
look
sort -dfnu(sort -u = sort|uniq = cat|sort|uniq)
uniq -cdu(d只看重複行,u只看唯一行,c統計行數)
join 合併有序數據
strings在二進制中搜索字符串 strings /usr/bin/sort
tr A-Z a-z < old > new大小寫轉換
[:upper:] [:lower:] [:digit:]

32,非交互式文本編輯sed
sed 's/h/H/g'ole >new   (-i in-place可以改變原始文件)
(1)從輸入流中讀取一行
(2)執行指定的命令,對該行進行必要的交換
(3)將該行寫入到輸出流中
number [,number] |/regex/ 對指定行進行操作或者包含特定字符串的行
5,10s(5到10行)
$s(最後一行)
/OK/(字符串OK所在行)
[0-9][0-9]包含兩個連續數字的行
-e 多條更改
-f 文件

33,正則表達式
元字符
.
^
$
\<    匹配單詞的開頭
\>    匹配單詞的結尾
[abc]    匹配abc中的任何字符
[^abc]    匹配不在abc中的任何字符
()    組:視爲一個單獨的單元
|    匹配選擇之一
\    引用:從字面上解釋元字符
運算符
*    0或多次
+    1或多次
?    0或1次
{n}    n次       (xyz){5}匹配字符"xyz"5次
{n,}    最少n次
{,m}    最多m次
{n,m}    n,m之間次  [0-9]{3,5}匹配3到5個數字

[:lower:]    a-z
[:upper:]    A-Z    
[:alpha:]    A-Za-z
[:alnum:]    A-Za-z0-9
[:digit:]    0-9
[:punct:]    標點符號
[:blank:]    空格或製表符

grep -w 'cat' data
grep '\<cat\>'data    \<和\>是整個數字或者單詞,沒有就是對字符串
grep '\bcat\b'data
man ascii
locale -a

34,顯示文件
hexdump   hexdump -C /bin/grep |less   顯示二進制文件 -C 文件
od      od -Ax -txlz /bin/grep |less

35,vim文本編輯器
命令模式
h
j
k
l
w
e
b
r
R
x
X
D
dd
u
U
yy
yw
y10w
y2)
y5}
10yy
p
P
xp    調換兩個字符
ddp    調換兩行
deep    調換2個單詞
輸入模式
i
a
o
I
A
O
搜索模式
:/keywords
:set number
:set all
.vimrc

36,文件系統
基於磁盤的文件系統
ext3、ext4,FAT32,HFS+(層次式文件系統),ISO 9660(CD-ROM),NTFS,UDF(可重寫CD和DVD),UFS2(BSD,Solaris)
網絡文件系統
NFS,SMB
特殊文件系統
devpts  僞終端的設備界面(PTY)
procfs    proc文件系統
sysfs    系統數據文件系統(設備與驅動器)
tmpfs    臨時存儲文件系統

37,目錄操作
.
..
~
pushd
popd
dirs
ls -CrR1F(C列,r字母表從大到小顯示,R全部子目錄,1文件名佔一行,F帶標誌)
ls -lrtu顯示最近訪問過得文件
-普通
d目錄
l符號
b塊
c字符
p管道
dumpe2fs /dev/sda1   | grep "Block size"
tree    文件樹

38,文件操作

setuid
setgid
umask
shred -fvuz filename  清空文件內容
stat   file
ls -i
ln -s
whereis
locate
find
find  path ... test ... action...
test如下:
-name
-iname
-type
-perm
-user
-group
-empty
-size
-atime
-ctime
-mtime
action如下:
-print
-fprint file
-ls
-exec command{} \;執行命令,{}指示匹配的文件名
-ok command{} \;同上,但是運行命令之前確認
-delete    刪除文件
-fls file
xargs處理查找到的文件
find ~ -type f | xargs ls -s
(whoami;date) |xargs

39, 進程和作業控制
echo $$ 顯示當前shell的PID
echo $! 顯示上一條移至後臺的命令的PID
sleeep (sleep 20;cat /etc/passwd) && vim /etc/termcap
jobs
ps
fg
bg
suspend    掛起當前shell
^Z
kill
top
prtstat
pstree
fuser
nice

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章