天天看點

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

繼續閱讀