1. 程式人生 > >linux基礎學習之 學習筆記

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  執行完以後,子程式內的各項變數將會傳回到父程式中。