學習Linux系統的重要性應該不用多說,下面我就對Linux的基礎知識進行一個全面而又簡單的總結。不過建議大家還是裝個Linux系統多練習,平時最好只在Linux環境下編程,這樣會大有提高。
linux的特點
- 免費的/開源
- 支援多線程/多使用者
- 安全性好
- 對記憶體和檔案管理優越
關機命令
shutdown -h now(立即進行關機) shutdown -r now (現在重新啟動電腦) reboot (現在重新啟動電腦)
進入案頭
startx
使用者登入
登入時盡量少用root賬戶登入,因為它是系統管理員,最大的許可權,難免操作失誤。可以利用普通使用者登入,登入後再用“su -”命令來切換成系統管理員身份
使用者登出
在提示符下輸入logout即可
linux的檔案系統是採用層級式的樹狀目錄結構,在此結構中的最上層是根目錄“/”,然後在此目錄下再建立其他的目錄,深刻理解linux檔案目錄是非常重要的
- /
- root,存放root使用者的相關檔案
- home,存放普通使用者的相關檔案
- bin,存放常用命令的目錄,如vi,su
- sbin,要具有一定許可權才可以使用命令
- mnt,預設掛載光碟機和軟碟機的目錄
- etc,存放配置的相關檔案
- var,存放經常變化的檔案,如網路連接的sock檔案
- boot,存放引導系統啟動的相關檔案
- usr,安裝一個軟體的預設目錄,相當於windows下的program files
下面就來介紹一些比較常用的命令及使用方法:
pwd,顯示當前在哪個路徑下
linux的使用者管理
useradd 使用者名稱,添加使用者
【案例】useradd xiaoming
passwd 使用者名稱,為新使用者設密碼
【案例】passwd xiaoming,修改小明的密碼
userdel 使用者名稱,刪除使用者
【案例】userdel xiaoming,刪除使用者但儲存使用者主目錄
【案例】userdel ‐ xiaoming,刪除使用者以及使用者主目錄
logout,目前使用者推出
who am i,目前使用者是誰
cd,改變目錄
ls,列出檔案和目錄
ls ‐a,顯示目錄下的所有檔案,包括隱藏檔案
ls ‐l,顯示長列表格式
mkdir,建立目錄
rmdir,刪除空目錄
touch,建立空檔案
cp,複製命令
【案例】cp ‐r dir1 dir2,遞迴複製命令(複製子目錄資訊)
mv,移動檔案和改檔案名稱
rm,刪除檔案和目錄
rm ‐rf *,刪除所有內容,包含目錄和檔案,r表示遞迴,f表示強制
ln,建立符號串連,類似於建立某個檔案的捷徑
ln ‐s 源目標
【案例】ln ‐s /etc/inittab inittab,inittab指向實際檔案/etc/inittab inittab
more,顯示檔案內容帶分頁,ctrl + page up上翻,長空格下翻
less,顯示檔案內容帶分頁
grep,在文本中查詢內容
【案例】假設存在某個檔案test.cpp中含有hello關鍵字,此時可以使用grep名命令來尋找,grep n “hello” test.cpp,n表示在第n行出現
|,管道命令,在linux和unix系統,把上一個命令的結果交給|後面的命令處理
【案例】ls ‐l /etc/ | more
man [command],協助,類似於dos中的help
find,搜尋檔案及目錄。在linux中,因為檔案系統是以層級式的結構來組成的,所以要在整個系統中找到特定的檔案和目錄並不是件容易的事。而“find”命令可以解決上述問題
在特定的目錄下搜尋並顯示指定名稱的檔案和目錄
【案例】find / -name man:意思是說從根目錄開始搜尋名稱為man的檔案或目錄
搜尋一段時間內被存取/變更的檔案或目錄
【案例】find /home -amin -10:十分鐘記憶體取的檔案或目錄
【案例】find /home -atime -10:十小時記憶體取的檔案或目錄
【案例】find /home -cmin -10:十分鐘內更改過的檔案或目錄
【案例】find /home -ctime +10:十小時前更改過的檔案或目錄
搜尋指定大小的檔案
【案例】find /home -size +10k:意思是說尋找/home目錄下大小為10k的檔案
重新導向命令
ls -l > a.txt,列表的內容寫入檔案a.txt中(覆蓋寫)
ls -al >> aa.txt,列表的內容追加到檔案aa.txt的末尾
從檔案中輸入資訊:database_program < database_data
en,查看環境變數
壓縮和解壓
以zip和unzip處理.zip檔案
zip命令的基本使用方法
zip file.zip *:zip後接壓縮後的檔案名稱,在它的後面輸入要壓縮的檔案即可
壓縮後,自動刪除原檔案
【案例】zip m file.zip to.txt:把to.txt檔案壓縮成file.zip檔案,to.txt會自動刪除的
將子目錄一起壓縮
【案例】zip ‐r file.zip *:將目前的目錄下的子目錄一起壓縮
忽略子目錄的內容
【案例】zip ‐j file.zip *
將已壓縮的或沒有必要壓縮的檔案去掉
【案例】zip ‐n .mpg: .jpg: .gif:第一種檔案中間要用“:”分開
壓縮某一日之後的檔案
【案例】zip ‐t 080915 file.zip:將目前的目錄下在2015年8月9日之後檔案壓縮
不壓縮連結檔案的原檔案
【案例】zip ‐y file.zip *
壓縮率問題,-1~-9,其中-9的壓縮率最高
【案例】zip -9 file.zip *
將不需要壓縮的檔案排除在外
【案例】zip file.zip * -x file2.txt:在壓縮時,將目前的目錄內的file2.txt檔案排除在外
以unzip命令進行.zip檔案的解壓縮
直接解壓縮檔案
【案例】unzip file.zip
排除不需要解壓縮的檔案
【案例】unzip file.zip ‐x file2:除了file2檔案外,其他的檔案都解壓縮
查看壓縮包的內容
【案例】unzip ‐Z file.zip:查看file.zip壓縮包的內容,也可以使用“-l” “-v”來查看壓縮包的內容
以gzip和gunzip處理.gz檔案
在linux中的每個使用者必須屬於一個組,不能獨立於組外。在linux中每個檔案有所有者、所在組、其它組的概念 。
1)所有者:一般為檔案的建立者,誰建立了該檔案,就天然的成為該檔案的所有者。用ls ‐ahl命令可以看到檔案的所有者。也可以使用chown 使用者名稱 檔案名稱來修改檔案的所有者。
2)檔案所在組:當某個使用者建立了一個檔案後,這個檔案的所在組就是該使用者所在的組,用ls ‐ahl命令可以看到檔案的所有組,也可以使用chgrp 組名 檔案名稱來修改檔案所在的組。
3)其它組:除開檔案的所有者和所在組的使用者外,系統的其它使用者都是檔案的其它組。
檔案許可權
ls -l中顯示的內容如下:
-rwxrw-r‐-1 root root 1213 Aug 9 09:39 abc
10個字元確定不同使用者能對檔案幹什麼
第一個字元代表檔案(-)、目錄(d),連結(l)
其餘字元每3個一組(rwx),讀(r)、寫(w)、執行(x)
第一組rwx:檔案所有者的許可權是讀、寫和執行
第二組rw-:與檔案所有者同一組的使用者的許可權是讀、寫但不能執行
第三組r--:不與檔案所有者同組的其他使用者的許可權是讀不能寫和執行
也可用數字表示為:r=4,w=2,x=1 因此rwx=4+2+1=7
1 表示串連的檔案數
root 表示使用者
第二個root表示使用者所在的組
1213 表示檔案大小(位元組)
Aug 9 09:39 表示最後修改日期
abc 表示檔案名稱
改變許可權的命令
chmod 改變檔案或目錄的許可權
chmod 755 abc:賦予abc許可權rwxr-xr-x
chmod u=rwx,g=rx,o=rx abc:同上u=使用者權限,g=組許可權,o=不同組其他使用者權限
chmod u-x,g+w abc:給abc去除使用者執行的許可權,增加組寫的許可權
chmod a+r abc:給所有使用者添加讀的許可權
改變所有者(chown)和使用者組(chgrp)命令
chown xiaoming abc:改變abc的所有者為xiaoming
chgrp root abc:改變abc所屬的組為root
chown root ./abc:改變abc這個目錄的所有者是root
chown ‐R root ./abc:改變abc這個目錄及其下面所有的檔案和目錄的所有者是root
改變使用者所在組
在添加使用者時,可以指定將該使用者添加到哪個組中,同樣用root的系統管理權限可以改變某個使用者所在的組
usermod ‐g 組名 使用者名稱
你可以用 usermod ‐d 目錄名 使用者名稱,改變該使用者登入的初始目錄
linux分區詳解
硬碟的分區主要分為基本分區(Primary Portion)和擴充分區(Extension Portion)兩種。只是針對一個硬碟來講,基本分區和擴充分區的數目之和不能大於4個,且基本分區可以馬上被使用但不能再分區。擴充分區必須再進行分區後才能使用,也就是說它必須還要進行二次分區。那麼有擴充分區再分下去的是什麼呢。它就是邏輯分區(Logical Portion),而且邏輯分區沒有數量上限制
對windows使用者來說,有幾個分區就有幾個磁碟機,並且每個分區都會獲得一個字母標識符,然後就可以選用這個字母來指定在這個分區上的檔案和目錄。它們的檔案結構都是獨立的,非常好理解。但對這些使用者初上手Linux,可就有點惱人了。因為對Linux使用者來說無論有幾個分區,分給哪一個目錄使用,它歸根結底就只有一個根目錄、一個獨立且唯一的檔案結構。Linux中每個分區都是用來組成整個檔案系統的一部分。因為它採用了一種叫“載入”的處理方法,它的整個檔案系統中包含了一整套的檔案和目錄,並將一個分區和一個目錄聯絡起來。這時要載入的那個分區將使它的儲存空間在這個目錄下獲得。
下面介紹幾個重要的命令
掛載命令
mount [-parameters] [裝置名稱] [掛載點]
卸載命令
umount [掛載點]
查看磁碟使用方式
df [-parameters]
df -h
df ‐l
df [目錄全路徑],查看某個目錄是在哪個分區
查看linux系統磁碟分割具體情況
fdisk ‐l
shell編程
其實作為命令語言互動式地解釋和執行使用者輸入的命令只是shell功能的一個方面。shell還可以用來進行程式設計。它提供了定義變數和參數的手段以及豐富的程式控制結構。使用shell編程類似於DOS中批次檔,稱為shell script,又叫shell程式或shell命令檔案。
shell指令檔:
是一個文字檔
命令的集合
有執行的許可權
執行方式(./檔案名稱)
用export可以臨時加入一個系統路徑,如export PATH=$PATH HOME/bin:/root/test/t1,輸出環境PATH,引用原來的值$PATH,$HOME表示工作主目錄,:是路徑分隔字元
shell萬用字元
*代表多個字母或數字
?代表一個字母或數字
【案例】ls a* ls a? ls f080[1-6].tif
逸出字元\
【案例】ls /mnt/win1/My\Documents
單引號:不處理任何變數和命令
【案例】echo ‘Welcome $NAME, the date is date ’
雙引號:處理變數但不處理命令
【案例】echo “Welcome $NAME, the date is date “
反引號:把引號中的每個單詞作為一個命令,如果是變數則先求值然後作為一個命令處理
【案例】echo “Welcome $NAME, the date is `date` “
查閱記錄
history,查看使用過的命令的記錄
history 5,此項說明會顯示最近使用的5個命令
!5,此項說明執行曆史編號為5的命令
!ls,此項說明執行最後一次以“ls”開頭的命令