linux基礎學習之 學習筆記
Linux是什麼
1、 linux的核心原型是1991年由託瓦茲(Linus Torvalds)寫出來的。
2、 1973年:unix的正式誕生,Ritchie等人以C語言寫出第一個正式unix核心。
3、 1977年:重要的unix分支——BSD(Berkeley Software Distribution)的誕生。
4、 目前被稱為純的unix指的就是System V(AT&T) 以及BSD(SUN)這兩套。
5、 1984年,史託曼開始GNU計劃,這個計劃的目的是:建立一個自由、開放的unix作業系統(Free unix)。
6、 主、次版本為奇數:發展中版本。
7、 主、次版本為偶數:穩定版本。
8、 Distribution主要分為兩大系統,一種是使用RPM方式安裝軟體的系統,包括red hat ,fedora,suse等這些;一種則是使用debian的dpkg方式安裝軟體的系統,包括debian,ubuntu,b2d等等。
9、 Linux的特點1、硬體需求低;2、架構開放;3、系統穩定性及保密性功能夠強;4、完全免費。
10、 Linux distribution的組成含有:linux kernel + free software +documentations(tools) + 可完全安裝的程式;所組成的一套完整的系統。
Linux怎麼學習
1、 計算器概論與硬體相關知識;
2、 先從linux的安裝與指令學起;
3、 Linux作業系統的基礎技能;
4、 務必學會vi文書編輯器;
5、 Shell與shell script的學習;
6、 一定要會軟體管理員;
7、 網路基礎的建立。
虛擬機器安裝過程
1、 網路型別:橋接網路、使用網路地址轉換、僅主機模式網路各自代表什麼意思。
2、 I/O控制型別:SCSI控制器:BusLogic 、LSI Logic、LSI Logic SAS三者各自代表什麼意思。
3、 磁碟型別:IDE、SCSI、SATA各自代表什麼意思。
常用指令和小技巧
date
#顯示日期的指令。
cal
#顯示日曆的指令。
bc
#簡單好用的計算器;輸入qiut離開bc這個計算器。
Tab按鍵
功能:
1、 命令補全。
2、 檔案補齊。
*#Tab接在一串指令的第一個字的後面,則為命令補全。
*#Tab接在一串指令的第二個字以後時,則為檔案補齊。
Ctrl + c按鍵
#讓當前的程式停掉。
Ctrl +d按鍵
#Ctrl+d按鍵代表:鍵盤輸入結束(End of File,EOF or End of Input)的意思!
#另外,他也可以用來取代exit的輸入!例如你想要離開文字介面,可以直接按下Ctrl+d就可以直接離開。
man page
#查詢指令的用法和相關引數的說明。
#指令後面跟的數字表示的內容:
#其中1、5、8三個號碼特別重要。
#man page的內容所包含的的部分:
#還可能會看到Authors與Copyright等。
info page
#info與man 的用途其實差不多,都是用來查詢指令的用法或者是檔案的格式。但是與man page 一口氣輸出一堆資訊不同的是,info page 則是將檔案資料拆成一個一個的段落,每個段落用自己的頁面來撰寫,並且在各個頁面中還有類似網頁的『超連結』來跳到各不同的頁面中,每個獨立的頁面也被稱為一個節點(node)。
1、File:代表這個info page的資料是來自info.info檔案所提供的;
2、Node:代表目前的這個頁面是屬於Top節點。 意思是info.info 內含有很多資訊,而Top 僅是info.info 檔案內的一個節點內容而已;
3、Next:下一個節點的名稱為GettingStarted,你也可以按『N』到下個節點去;
4、Up:回到上一層的節點總攬畫面,你也可以按下『U』回到上一層;
5、Prev:前一個節點。但由於Top 是info.info 的第一個節點,所以上面沒有前一個節點的資訊。
nano
#超簡單文字編輯器。
1、[ctrl]-G:取得聯機幫助(help),很有用的!
2、[ctrl]-X:離開naon 軟體,若有修改過檔案會提示是否需要儲存喔!
3、[ctrl]-O:儲存檔案,若你有許可權的話就能夠儲存檔案了;
4、[ctrl]-R:從其他檔案讀入資料,可以將某個檔案的內容貼在本檔案中;
5、[ctrl]-W:搜尋字串,這個也是很有幫助的指令喔!
6、[ctrl]-C:說明目前游標所在處的行數與列數等資訊;
7、[ctrl]-_:可以直接輸入行號,讓游標快速移動到該行;
8、[alt]-Y:校正語法功能開啟或關閉(單擊開、再單擊關)
9、[alt]-M:可以支援滑鼠來移動游標的功能。
正確的關機方式
1、 who 檢視有誰線上
2、 netstat –a 檢視網路的聯機狀態
3、 ps –sux 檢視背景執行的程式
4、 sync 將資料同步寫入硬碟中的指令
5、 shutdown 關機指令
6、 reboot, halt, poweroff 重新啟動。
切換執行等級:init
#Linux共有七種執行等級。
#run level 0 : 關機
#run level 3 : 純文字模式
#run level 5 : 含有圖形介面模式
#run level 6 : 重新啟動
linux 的檔案許可權與目錄配置
chgrp
改變檔案所屬群組
命令chgrpgroupname install.log
chmod
改變檔案的許可權
1、 用chmod改變擁有者和群組,chmoduser.group file或者chmoduser:group file
2、 chmod xyz 檔案或目錄
3、 chmod (u/g/o/a) (+/-/=) (r/w/x)檔案或目錄
mkdir
mkdir [-mp] 目錄名稱
-m : 配置檔案的許可權!直接設定,不需要看預設許可權的臉色。
-p : 幫助你直接將所需要的目錄(包括上層目錄)遞迴建立起來!
rmdir
rmdir [-p] 目錄名稱
-p :連同上層空的目錄一起刪除
cp
cp [-adfilprsu] 來原始檔(source) 目標檔案(destination)
選項與引數:
-a : 相當於–pdr 的意思,至於pdr 請參考下列說明;
-d : 若來原始檔為連結檔案的屬性(link file),則複製連結檔案屬性而非檔案本身;
-f : 為強制(force)的意思,若目標檔案已經存在且無法開啟,則移除後再嘗試一次;
-i : 若目標檔案已經存在時,在覆蓋時會先詢問動作的進行
-l : 進行硬式連線(hand link)的連線檔建立,而非複製檔案本身
-p : 連同檔案的屬性一起復制過去,而非使用預設屬性;
-r : 遞迴持續複製,用於目錄的複製行為
-s : 複製成為符號連結檔案(symbolic link),亦即【快捷方式】檔案
-u : 若destination比source舊才更新destination!
rm
移除檔案或目錄
rm [-fir] 檔案或目錄
-f : 就是force的意思,忽略不存在的檔案,不會出現警告訊息;
-i : 互動模式,在刪除前會詢問使用者是否動作
-r : 遞迴刪除啊!最常用在目錄的刪除了!
mv
移動檔案與目錄,或更名
mv [-fiu] source destination
-f : force強制的意思,如果目標檔案已經存在,不會詢問而直接覆蓋
-i : 若目標檔案(destination)已經存在時,就會詢問是否覆蓋
-u : 若目標檔案已經存在,且source比較新,才會更新(update)
touch
建立一個空的檔案
將某個檔案日期修訂為目前
touch [-acdmt] 檔案
-a : 僅修訂access time
-c : 僅修訂檔案的時間,若該檔案不存在則不建立新檔案
-d : 後面可以接欲修訂的日期而不用目前的日期,也可以使用–date=”日期或時間”
-m : 僅修改mtime
-t : 後面可以接欲修訂的時間而不用目前的時間
whereis
尋找特定檔案(在資料庫檔案裡面搜尋,不搜尋硬碟)
whereis [-bmsu] 檔案或目錄名
-b : 只找binary格式的的檔案
-m : 只找在說明檔案manual路徑下的檔案
-s : 只找source來源檔案
-u : 搜尋不在上訴三個專案當中的其他檔案
locate
locate [-ir] keyword
-i : 忽略大小寫的差異
-r : 後面可接正規表示法的顯示方式
壓縮檔案
*.Z compress程式壓縮的檔案
*.gz gzip程式壓縮的檔案
*.bz2 bzip2程式壓縮的檔案
*.tar tar程式打包的檔案,並沒有壓縮
*.tar.gz tar程式打包的檔案,並且經過gzip的壓縮
*.tar.bz2 tar程式打包的檔案,其中並且經過bzip2的壓縮
tar
1、 壓縮:tar –jcv –f filename.tar.bz2 要被壓縮的檔案或目錄名稱
2、 查詢:tar –jtv –f filename.tar.bz2
3、 解壓縮:tar –jxv –f filename.tar.bz2 –C 要解壓的目錄
dump
dump 的功能頗強,他除了可以備份整個檔案系統之外,還可以制定等級喔
vim程式編輯器
刪除
複製
yy 複製遊標所在的那一行;
nyy n為數字,複製游標所在的向下n行;
貼上
復原與重複
插入或取代
儲存與離開
Vim環境的變更
區塊選擇
多檔案編輯
多視窗
認識與學習BASH
Linux使用的shell稱為【BourneAgain SHell】,簡稱bash。
命令編修能力(history)
在指令列按上下鍵就可以找到前後一個輸入的指令。這麼多指令記錄在家目錄內的.bash_history裡面。
放在/root/.bash_history裡面。
命令與檔案補齊功能([tab]按鍵)
命令別名設定功能(alias)
例:alias lm=’ls-al’
後面的lm=’ls-al’不能有空格,要連在一起。
萬用字元(Wildcard)
Bash shell的內建命令:type
檢視指令是來自與外部指令或是內建bash當中的。
export
自定義變數轉成環境變數
影響顯示結果的語系變數(locale)
declare / typeset
宣告變數的型別
#declare [-aixr] variable
-a : 將後面名為variable的變數定義成陣列型別
-i : 將後面名為variable的變數定義成整數數字型別
-x : 用法與export一樣,就是將後面的variable變成環境變數
-r : 將變數設定為readonly型別,該變數不可被更改內容,也不能unset
正規表示法與檔案格式化處理
grep
用法:grep [選項]… 模式 [檔案]…
在每個檔案中查詢樣式或標準輸入。
PATTERN預設的是一個基本的正則表示式(BRE)。
例: grep –I ‘hello’menu.h main.c
正則表示式的選擇和解釋:
-E,--extended-regexp PATTERN是一個擴充套件的正則表示式(ERE)
-F,--fixed-strings PATTERN是一套新行分離修復字串
-G,--basic-regexp PATTERN是一個基本的正則表示式(BRE)
-P,--perl-regexp PATTERN是一個Perl正則表示式
-e,--regexp=PATTERN 使用 PATTERN 來匹配
-f,--file=FILE 從 FILE 來獲得 PATTERN
-i,--ignore-case 忽略大小寫
-w,--word-regexp 強制 PATTERN 僅匹配整個詞
-x,--line-regexp 強制 PATTERN 僅匹配整行
-z,--null-data 結尾為 0 位元組而不是新行符的資料行
雜項:
-s,--no-messages 不顯示錯誤資訊
-v,--invert-match 選擇不匹配的行
-V,--version 列印版本資訊並退出
--help 顯示本幫助並退出
--mmap 如果可能,使用記憶體映象作為輸入
輸出控制:
-m,--max-count=NUM 在有NUM個匹配後停止
-b,--byte-offset 在輸出行的同時列印位元組位移
-n,--line-number 在輸出行的同時列印行數
--line-buffered flush outputon every line
-H,--with-filename print the filenamefor each match
-h,--no-filename suppress theprefixing filename on output
--label=LABEL print LABELas filename for standard input
-o,--only-matching show only the partof a line matching PATTERN
-q,--quiet, --silent suppress all normaloutput
--binary-files=TYPE assume thatbinary files are TYPE;
TYPE is `binary',`text', or `without-match'
-a,--text 等同於 --binary-files=text
-I 等同於 --binary-files=without-match
-d,--directories=ACTION how to handledirectories;
ACTION is `read',`recurse', or `skip'
-D,--devices=ACTION how to handledevices, FIFOs and sockets;
ACTION is `read' or`skip'
-R,-r, --recursive 等同於 --directories=recurse
--include=FILE_PATTERN 只搜尋符合FILE_PATTERN型式的檔案
--exclude=FILE_PATTERN 跳過名字為FILE_PATTERN的檔案或目錄
--exclude-from=FILE skip filesmatching any file pattern from FILE
--exclude-dir=PATTERN directories that match PATTERN will be skipped.
-L,--files-without-match print only names of FILEs containing no match
-l,--files-with-matches print only names ofFILEs containing matches
-c,--count print only a countof matching lines per FILE
-T,--initial-tab make tabs line up(if needed)
-Z,--null FILE名字後列印0位元組
上下文控制:
-B,--before-context=NUM 列印 NUM 行上文
-A,--after-context=NUM 列印 NUM 行下文
-C,--context=NUM 列印 NUM 行輸出上下文
-NUM 與 --context=NUM相同
--color[=WHEN],
--colour[=WHEN] 使用標記來高亮匹配的字串;
WHEN 可取值為“always”,“never”或“auto”
-U,--binary 不去掉 EOL(MSDOS)處的 CR 字元
-u,--unix-byte-offsets 如果 CR 不在那裡(MSDOS),報告偏移值
‘egrep’ 與 ‘grep -E’含義一致。‘fgrep’與 ‘grep -F’的含義一致。
直接呼叫‘egrep’和‘fgrep’的方式已經被廢棄了。
沒有 FILE或者 FILE 是 -,讀取標準輸入。如果少於兩個 FILE,
假設 -h。如果任意行被選中,退出狀態為 0;
如果出現任何錯誤並且 -q 未被給出,退出狀態為 2。
如果想檢視沒有某個字元的行,用反向選擇[^]來實現。
想要檢視the開頭的:
#grep ‘^the’ a.txt
符號’^’在[]內和外是不同的,在[]內表示反向選擇,在[]外表示定位在行首的意思。
搜尋空白行,
#grep ‘^$’ a.txt
(小數點). 代表一定有一個任意字元的意思
(星星號)* 代表重複前一個0到無窮多次的意思,為組合形態
限定連續字元範圍{}
Shell script
1、 指令的執行是從上而下、從左而右的分析與執行
2、 指令的下達:指令、選項與引數間的多個空白都會被忽略掉
3、 空白行也會被忽略掉,並且[tab]按鍵所推開的空白同樣視為空格鍵
4、 如果讀到一個ENTER符號(CR),就嘗試開始執行該行命令
5、 至於如果一行的內容太多,則可以使用【\enter】來延伸至下一行
6、 【#】可作為批註,任何加在#後面的資料將全部被視為批註文字而被忽略
sh sh01.sh 和 ./sh01.sh 執行完以後,子程式內的各項變數將會結束而不會傳回到父程式中
source sh01.sh 執行完以後,子程式內的各項變數將會傳回到父程式中。