認識Linux及Linux下的基本指令
Linux下的重要目錄:
/proc:此目錄的所有資料都在記憶體裡,如 系統核心,外部裝置,網路狀態。由於所有資料都儲存在記憶體裡,所以不佔用磁碟空間。 /sys:檔案系統訪問Linux核心。 /SElinux:SELinux是一種基於域-型別模型(domain-type)的強制訪問控制(MAC)安全系統,它由NSA編寫並設計成核心模組 包含到核心中,相應的某些安全相關的應用也被打了SELinux的補丁,最後還有一個相應的安全策略。 /bin:可在執行的二進位制檔案的目錄,如ls mc cat ...... /usr:應用程式存放目錄 。 /urs/lib:存放一些不能直接執行,卻是很多應用程式執行必須要用到的一些 庫函式檔案。 /urs/local:存放軟體升級包。 /var:放置系統執行過程中不斷改變的檔案,如隨時更改的日誌檔案 /var/log,/var/log/message: 所有的登入檔案存放目 錄,/var/spool/mail: 郵件存放的目錄, /var/run: 程式或服務啟動。 /tmp:一般使用者或正在執行的程式存放臨時檔案的目錄,任何人都可以訪問,重要的檔案不可以放在此目錄下。
基本指令:
1.ls指令
語法:
ls [選項][目錄或檔案]
功能:
對於目錄,該命令列出該目錄下的所有子目錄的檔案。對於檔案,將列出檔名及其他資訊。
常用選項:
-a:列出目錄下的所有檔案,包括以 . 開頭的隱含檔案
-d:將目錄象檔案一樣顯示,而不是顯示其下的檔案。
-f :對輸出的檔案不進行排序,-aU 選項生效,-lst 選項失效
-h:以容易理解的格式列出檔案大小 (例如 1K 234M 2G
-i:印出每個檔案的 索引資訊。
-k :即 –block-size=1K,以 k 位元組的形式表示檔案的大小。
-l :列出檔案的詳細資訊。
-n:用數字的UID,GID代替名稱。
-L:當顯示符號連結的檔案資訊時,顯示符號連結所指示的物件而並非符號連結本身的資訊。
-m :所有專案以逗號分隔,並填滿整行行寬。
-o :類似 -l,顯示檔案的除組資訊外的詳細資訊。
-r:依相反次序排列。
-R:同時列出所有子目錄層。
-s:以塊大小為單位列出所有檔案的大小。
-S :根據檔案大小排序。
-t:以時間排序。
-1:一行只輸出一個檔案。
2.pwd指令
語法:
pwd
功能:
顯示當前使用者所在目錄。
3.cd指令
語法:
cd 目錄名
功能:
改變工作目錄。將當前工作目錄改變到指定目錄下。
常用選項:
-p 如果要切換到的目標目錄是一個符號連線,直接切換到符號連線指向的目標目錄
-L 如果要切換的目標目錄是一個符號的連線,直接切換到字元連線名代表的目錄,而非符號連線所指向的目標目錄。
- 當僅實用"-"一個選項時,當前工作目錄將被切換到環境變數"OLDPWD"所表示的目錄。
舉例:
cd 進入使用者主目錄;
cd ~ 進入使用者主目錄;
cd - 返回進入此目錄之前所在的目錄;
cd .. 返回上級目錄(若當前目錄為“/“,則執行完後還在“/";".."為上級目錄的意思);
cd ../.. 返回上兩級目錄;
cd !$ 把上個命令的引數作為cd引數使用。
4.touch指令
語法:
touch(選項)...檔案...
功能:
一是用於把已存在檔案的時間標籤更新為系統當前的時間(預設方式),它們的資料將原封不動地保留下來;
二是用來建立新的空檔案。
常用選項:
-a:或--time=atime或--time=access或--time=use 只更改存取時間;
-c:或--no-create 不建立任何檔案;
-d:<時間日期> 使用指定的日期時間,而非現在的時間;
-f:此引數將忽略不予處理,僅負責解決BSD版本touch指令的相容性問題;
-m:或--time=mtime或--time=modify 只更該變動時間;
-r:<參考檔案或目錄> 把指定檔案或目錄的日期時間,統統設成和參考檔案或目錄的日期時間相同;
-t:<日期時間> 使用指定的日期時間,而非現在的時間;
--help:線上幫助;
--version:顯示版本資訊。
5.mkdir指令
語法:
mkdir[選項] dirname
功能:
在當前目錄下建立一個名為“dirname”的目錄
常用選項:
-p或--parents 若所要建立目錄的上層目錄目前尚未建立,則會一併建立上層目錄;
舉例:
mkdir -p test/test1:遞迴建立多個目錄
6.rmdir指令&&rm指令
>rmdir:是一個與mkdir對應的指令。mkdir建立目錄,rmdir刪除目錄。
語法:
rmdir[-p][dirmane]
功能:
刪除空目錄
適用物件:
具有當前目錄操作許可權的所有使用者
常用選項:
-p:當子目錄被刪除後如果父目錄也是空目錄的話,就連父目錄一起刪除
>rm:可以同時刪除檔案或目錄
語法:
rm [-f-i-r-v][dirname]
功能:
刪除檔案或目錄
適用物件;
所有使用者
常用選項:
-f:不管刪除的目錄是否存在,直接刪除。
-i:刪除前逐一詢問確認。
-r:刪除目錄及其下所有檔案。
-v:可以直接刪除一個或者多個檔案,並且使用-v選項給予提示
7.man指令
Linux的命令有很多引數,我們不可能都記住,我們可以通過檢視聯機手冊獲取幫助。訪問Linux手冊頁的命令是man。
man語法:
man [選項]命令
常用選項:
-f:等價於指令,顯示給定關鍵字的簡短描述資訊; -P:指定內容時使用分頁程式; -M:指定man手冊搜尋的路徑。 -a:在所有的man幫助手冊中搜索; Linux手冊分為8章: 1.普通的命令。 2.是系統呼叫,如open,write之類的(很方便的查到呼叫這個函式需要什麼標頭檔案)。 3.是庫函式,如printf,fread4是特殊檔案,也就是/dev下的各種裝置檔案。 5.是指檔案的格式,如passwd。就會說明這個檔案中各個欄位的含義。 6.給遊戲留的,有各個遊戲自己定義。 7.是附件還有一些變數,如environ這種全域性變數都有說明。 8.是系統管理用的命令,這些命令只能由root使用
8.cp指令
語法:
cp [選項] 原始檔或目錄 目標檔案或目錄
功能:
複製檔案或目錄
說明:
cp指令用於複製檔案或目錄,如果同時指定兩個以上的檔案或目錄,且最後的目的地是一個已經存在的目錄,則會把前面指定的所有檔案或目錄複製到此目錄中。
如同時指定多個檔案或目錄,而最後的目的地並非存在的,則會出現錯誤資訊。
常用選項:
-a:此引數的效果和同時指定"-dpR"引數相同; -d:當複製符號連線時,把目標檔案或目錄也建立為符號連線,並指向與原始檔或目錄連線的原始檔案或目錄; -f:強行復制檔案或目錄,不論目標檔案或目錄是否已存在; -i:覆蓋既有檔案之前先詢問使用者; -l:對原始檔建立硬連線,而非複製檔案; -p:保留原始檔或目錄的屬性; -R/r:遞迴處理,將指定目錄下的所有檔案與子目錄一併處理; -s:對原始檔建立符號連線,而非複製檔案; -u:使用這項引數後只會在原始檔的更改時間較目標檔案更新時或是名稱相互對應的目標檔案並不存在時,才複製檔案; -S:在備份檔案時,用指定的字尾“SUFFIX”代替檔案的預設字尾; -b:覆蓋已存在的檔案目標前將目標檔案備份; -v:詳細顯示命令執行的操作。
9.mv指令
mv命令可以用來將原始檔移至一個目標檔案中,或將一組檔案移至一個目標目錄中。原始檔被移至目標檔案有兩種不同的結果:
語法:
mv [選項] 原始檔或目錄 目標檔案或目錄
功能:
1當第二個引數型別是檔案時,mv完成檔案重新命名,此時原始檔只能有一個(也可能是源目錄名),它將所給的原始檔或目錄重新命名為給定目標檔案。
3.第二個引數的型別不同(是目標檔案還是目標目錄),mv命令將檔案重新命名或者移至一個新的目錄中。
2.當第二個引數是目錄檔案時,原始檔或目標引數可以有多個,mv命令將各引數指定的原始檔均移至目標檔案。
常用選項:
-b:當檔案存在時,覆蓋前,為其建立一個備份; -f:若目標檔案或目錄與現有的檔案或目錄重複,則直接覆蓋現有的檔案或目錄; -i:互動式操作,覆蓋前先行詢問使用者,如果原始檔與目標檔案或目標目錄中的檔案同名,則詢問使用者是否覆蓋目標檔案。 使用者輸入”y”,表示將覆蓋目標檔案;輸入”n”,表示取消對原始檔的移動。這樣可以避免誤將檔案覆蓋。
10.cat/tac指令
語法:
cat[選項][檔案]
功能:
檢視目標檔案的內容
常用選項:
-b:對非空輸出行編號。
-n:對輸出的所有行編號。
-s:不輸出多行空行。
例:開啟passwd檔案
cat /etc/passwd
passwd檔案的內容:
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
…………………………
passwd中每一列含義:
(使用者名稱):(密碼佔位符):(使用者ID):(使用者所在組的ID):(使用者的說資訊):(家目錄):(shell的終端名字)
11.more指令
語法:
more [選項][檔案]
功能:
類似於cat
常用選項:
-n:對輸出的所有行編號。
q:退出more
12.less指令
less工具也是對檔案或其他輸出進行分頁顯示的工具,應該說Linux正統檢視檔案內容的工具,功能強大。
less的用法比more更加的有彈性。在more的時候,我們並沒有辦法向前面翻,只能往後看。
使用less時就可以使用[pageup][pagedown]等鍵的功能來往前後翻看檔案,更容易用來檢視一個檔案的內容。
less裡面可以擁有更多的搜尋功能,不止可以往下搜,還可以往上搜。
語法:
less[引數]檔案
功能:
less與more類似,但less可以隨意瀏覽檔案,而more只能向前移動,卻不能向後移動,而且less在檢視檔案之前不會載入整個檔案。
常用選項:
+n 從笫n行開始顯示
-n 定義螢幕大小為n行
+/pattern 在每個檔案顯示前搜尋該字串(pattern),然後從該字串前兩行之後開始顯示
-c 從頂部清屏,然後顯示
-d 提示“Press space to continue,’q’ to quit(按空格鍵繼續,按q鍵退出)”,禁用響鈴功能
-l 忽略Ctrl+l(換頁)字元
-p 通過清除視窗而不是滾屏來對檔案進行換頁,與-c選項相似
-s 把連續的多個空行顯示為一行
-u 把檔案內容中的下畫線去掉
常用操作命令:
Enter 向下n行,需要定義。預設為1行
空格鍵 向下滾動一屏
B 返回上一屏
J 向下1行。
= 輸出當前行的行號
:f 輸出檔名和當前行的行號
V 呼叫vi編輯器
!命令 呼叫Shell,並執行命令
q 退出more
13.head指令
head命令和tail命令就像他的名字一樣淺顯易懂,它是用來顯示開頭或者結尾某個數量的文字區塊,head用來顯示檔案的開頭至標準輸出當中,
而tail想當然就是檢視檔案的結尾。
語法:
head [引數]…[檔案]
功能:
head用來顯示檔案的開頭至標準輸出當中,預設head命令列印其相應檔案的開頭10行。
常用選項:
-q 隱藏檔名
-v 顯示檔名
-c 顯示位元組數
-n 顯示的行數
14.tail指令
tail指令從指定點開始將檔案寫到標準輸出,使用tail命令的-f選項可以方便的查閱正在改變的日誌檔案,
tail -f fname會把fname裡最尾部的內容 顯示在顯示屏上,並且不斷重新整理,使你看到最新的檔案內容。
語法:
tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ]
功能:
用於顯示指定檔案末尾得內容,不指定檔案時 ,作為輸入資訊處理。常用檢視日誌檔案。
常用選項:
-f 該引數用於監視File檔案增長。
-c Number 從 Number 位元組位置讀取指定檔案
-n Number 從 Number 行位置讀取指定檔案。
-m Number 從 Number 多位元組字元位置讀取指定檔案,比方你的檔案假設包括中文字,假設指定-c引數,可能導致截斷,但使用-m則會避免該問題。
-b Number 從 Number 表示的512位元組塊位置讀取指定檔案。
-k Number 從 Number 表示的1KB塊位置讀取指定檔案。
舉例:
有一個檔案共有100行內容,請取出第50行內容<br>
seq 1 100>test //生成1到100的序列裝入test
方法1:head -n50 test>tmp //將前50行裝入臨時檔案tmp
tail -n1 tmp //得到中間行
方法2:head -n50 test | tail -n1
補充:
echo:回顯,輸入什麼內容,輸出什麼內容。
echo "abcd">tmp //tmp的內容為abcd -->輸出重定向
echo "1234">tmp //此時內容變成1234,將原來的內容覆蓋 -->輸出重定向
echo "abcd">>tmp //此時的內容變成1234abcd
輸出重定向一個大於號> : 輸出重定向, 覆蓋輸出
兩個大於號>> :追加輸出
15.cut指令
語法:
cut -[n]b file
cut -c file
cut -d[分隔符] -f[域] file
功能:
cut命令是一個選取命令,其功能是將檔案中的每一行”位元組” ”字元” ”欄位” 進行剪下,選取我們需要的,並將這些選取好的資料輸出至標準輸出
常用選項:
-b(bytes) :以位元組為單位進行分割。這些位元組位置將忽略多位元組字元邊界,除非也指定了 -n 標誌。
-c(characters) :以字元為單位進行分割。
-d :自定義分隔符,預設為製表符。
-f(filed) :與-d一起使用,指定顯示哪個區域。
-n :取消分割多位元組字元。僅和 -b 標誌一起使用。如果字元的最後一個位元組落在由 -b 標誌的 List 引數指示的
舉例:
統計除去後的shell行數
cut -d: -f7 /etc/passwd >tmp //將shell終端的那一列資料拿出來放到tmp檔案中
sort tmp >tmp1 //將tmp中的內容進行排序,相同的在一塊,然後儲存到tmp1中。
uniq tmp1 >tmp2 //uniq去除相鄰重複行,並儲存到tmp2中
wc -l tmp2 //wc -l 統計檔案中的行數
wc:統計行,單詞,字元
-l:行數
-w:單詞數
-c:字元個數
16.時間相關的指令
date顯示
date指定格式顯示時間:date +%Y:%m:%d
語法:
date[OPTION]……[+FORMAT]
常見選項:
在顯示方面,使用者可以設定欲顯示的模式,格式設定為一個加號後接數個標記:
%H:小時(00....23)
%M:分鐘(00....59)
%S:秒(00...61)
%X:相當於%H:%M:%S
%d:日(0...31)
%m:月(00....12)
%Y:完整年份(0000......9999)
%F:相當於%Y-%m-%d
在設定時間方面:
date-s //設定當前時間,只有root才能設定,其他只能檢視
date-s 20180606 //設定成20180606,這樣會把具體時間設定成空00:00:00
date -s 01:01:01 //設定具體時間,不會對日期做更改
date -是“01:01:01 20180606” //設定全部時間
時間戳:
時間->時間戳:date +%s
時間戳->時間:date -d @時間戳
17.Cal指令
al命令可以用來顯示公曆(陽曆)日曆。公曆是現在國際通用的歷法,又稱格列歷,通稱陽曆。
“陽曆”又名“太陽曆”,系以地球繞行太陽一週為一年,為西方各國所通用,故又名“西曆”。
語法:
cal [引數][月份][年份]
功能:
用於檢視日曆等時間資訊,如只有一個引數,則表示年份(1-9999),如有兩個引數,則表示月份和年份
常用選項:
-1 顯示一個月的月曆
-3 顯示系統前一個月,當前月,下一個月的月曆
-s 顯示星期天為一個星期的第一天,預設的格式
-m 顯示星期一為一個星期的第一天
18.查詢指令:
>查詢命令:
命令分為外部命令和內建命令
查詢外部命令時:which +命令
查詢內建命令時:whereis +命令
>查詢檔案:
find指令
語法:
find fname -options
功能:
用於在檔案樹中查詢檔案,並作出相應處理(可訪問磁碟)
常用選項:
-name 按照檔名查詢檔案
例如:
find . -name "*.c" //“*”萬用字元[0~n]長的任意字元
>查詢內容
grep指令
語法:
grep[選項]搜尋字串 檔案
功能:
在檔案中搜索字串,將找到的打印出來
常用選項:
-i:忽略大小寫的不同,所以大小寫相同
-n:順便輸出行號
-v:反向選擇,亦即顯示出沒有“搜尋字串”內容的那一行
例:
在工程中找出某個函式的實現:
find . -name "*.c" |xargs grep-n"函式名"
19.zip/unzip指令
語法:
zip壓縮檔案。zip 目錄或檔案
功能:
將目錄或檔案壓縮成zip格式
常用選項:
-r:遞迴處理,將指定目錄下的所有檔案和子目錄一併處理
20.tar指令:打包/解包,不開啟它,直接看內容
語法:
tar[-cxtzjvf]檔案與目錄……引數
常用選項:
-c: 建立壓縮檔案
-x:解壓
-t:檢視內容
-r:向壓縮歸檔檔案末尾追加檔案
-u:更新原壓縮包中的檔案
這五個是獨立的命令,壓縮解壓都要用到其中一個,可以和別的命令連用但只能用其中一個。
下面的引數是根據需要在壓縮或解壓檔案時可選的。
-z:有gzip屬性的
-j:有bz2屬性的
-Z:有compress屬性的
-v:顯示所有過程
-O:將檔案解開到標準輸出
-C解壓到指定目錄
下面的引數-f是必須的
-f: 使用檔案名字,切記,這個引數是最後一個引數,後面只能接檔案名。
例:
壓縮:tar -czvf 目錄/檔名 .tar.gz 目錄
解壓:tar -xzvf 壓縮包 -C指定目錄
21.bc指令
bc命令主要進行浮點運算
22.uname指令
語法:
uname [選項]
功能:
uname用來獲取電腦和作業系統的相關資訊
補充說明:
uname可顯示Linux主機所用作業系統的版本,硬體名稱等資訊
常用選項:
-a或all:詳細列出所有資訊,依次為核心名稱,核心版本號,核心版本,硬體名,處理器型別,硬體平臺型別,作業系統名稱
23.關機
語法:
shutdown[選項]**常見選項:**
常用選項:
-h:將系統的服務停後,立即關機
-r;在將系統的服務停掉後就重新啟動
-t sec:-t後面加秒數,過幾秒關機
24.du指令
功能:
du作用是磁碟空間使用情況,功能是逐級進入指定目錄的每一個子目錄並顯示該目錄佔用檔案系統資料塊的情況,如果沒有指定目錄,則對當前的目錄進行統計
常用選項:
a:顯示全部目錄和其次目錄下的每個檔案所佔的磁碟空間
s:只顯示各檔案大小的總合
b:大小用bytes來表示
x:跳過在不同檔案系統上的目錄不予統計
25.top指令
語法:
df [options]
功能:
命令用來顯示執行中的程式程序,使用許可權是所有使用者
常用選項:
d:指定更新的間隔,以秒計算。
q:沒有任何延遲的更新。如果使用者有超級使用者,則top命令將會以最高的優先序執行。
c:顯示程序完整的路徑與名稱。
S:累積模式,會將己完成或消失的子行程的CPU時間累積起來。
s:安全模式。
i:不顯示任何閒置(Idle)或無用(Zombie)的行程。
n:顯示更新的次數,完成後將會退出top。
26.df指令
功能:
df命令用來檢查檔案系統的磁碟空間佔用情況,使用許可權是所有使用者。
常用選項:
-s:對每個Names引數只給出佔用的資料塊總數。
-a:遞迴地顯示指定目錄中各檔案及子目錄中各檔案佔用的資料塊數。若既不指定-s,也不指定-a,則只顯示Names中的每一個目錄及其中的各子目錄所佔的磁碟塊數。
-k:以1024位元組為單位列出磁碟空間使用情況。
-x:跳過在不同檔案系統上的目錄不予統計。
-l:計算所有的檔案大小,對硬連結檔案則計算多次。
-i:顯示inode資訊而非塊使用量。
-h:以容易理解的格式印出檔案系統大小,例如136KB、254MB、21GB。
-P:使用POSIX輸出格式。
-T:顯示檔案系統型別。
27.free指令
語法:
free [-b|-k|-m] [-o] [-s delay] [-t] [-V]
功能:
free命令用來顯示記憶體的使用情況,使用許可權是所有使用者
常用選項:
-b -k -m:分別以位元組(KB、MB)為單位顯示記憶體使用情況。
-s delay:顯示每隔多少秒數來顯示一次記憶體使用情況。
-t:顯示記憶體總和列。
-o:不顯示緩衝區調節列。
28.su指令
語法:
su [選項]… [-] [USER [ARG]…]
功能:
變更為其它使用者的身份,超級使用者除外,需要鍵入該使用者的密碼
常用選項:
f , –fast:不必讀啟動檔案(如 csh.cshrc 等),僅用於csh或tcsh兩種Shell。
-l , –login:加了這個引數之後,就好像是重新登陸為該使用者一樣,大部分環境變數(例如HOME、SHELL和USER等)都是以該使用者(USER)為主,並且工作目錄也會改變。如果沒有指定USER,預設情況是root。
-m, -p ,–preserve-environment:執行su時不改變環境變數。
-c command:變更賬號為USER的使用者,並執行指令(command)後再變回原來使用者。
USER:欲變更的使用者賬號,ARG傳入新的Shell引數。
29.adduser指令
建立使用者指令:
adduser 0
useradd
使用者刪除命令:
adduser: 會自動為建立的使用者指定主目錄、系統shell版本,會在建立時輸入使用者密碼。
useradd:需要使用引數選項指定上述基本設定,如果不使用任何引數,則建立的使用者無密碼、無主目錄、沒有指定shell版本
30.passwd指令
語法:
passwd(選項)(引數)
功能:
用於設定使用者的認證資訊,包括使用者密碼、密碼過期時間等。系統管理者則能用它管理系統使用者的密碼。只有管理者可以指定使用者名稱稱,一般使用者只能變更自己的密碼。
常用選項:
-d:刪除密碼,僅有系統管理者才能使用;
-f:強制執行;
-k:設定只有在密碼過期失效後,方能更新;
-l:鎖住密碼;
-s:列出密碼的相關資訊,僅有系統管理者才能使用;
-u:解開已上鎖的帳號。
31命令分類:
安裝和登入命令:login,shutdown,halt,reboot,install,mount,umount,chsh,exit,last
檔案處理命令:file,mkdir,grep,dd,find,mv,ls,diff,cat,ln
系統相關管理命令:df,top,free,quota,at,lp,adduser,groupadd,kill,crontab
網路操作命令:ifconfig,ip,ping,netstat,telnet,ftp,route,rlogin,rcp,finger,mail,nslookup
系統安全指令:passwd,su,umask,chgrp,chmod,chown,chattr,sudops,who
其他指令:tar,unzip,gunzip,unarj,mtools,man,unencode,uudecode