本文轉載自網路 1.1 shell家族 shell:命令解釋器,根據輸入的命令執行相應命令。 察看當前系統下有哪些shell: 察看當前系統正在使用的shell 常見shell: 1.2 bash bash 是一個為GNU計劃編寫的Unix shell。它的名字是一系列縮寫:Bourne-Again ...
本文轉載自網路
1.1 shell家族
shell:命令解釋器,根據輸入的命令執行相應命令。
察看當前系統下有哪些shell:
cat /etc/shells
察看當前系統正在使用的shell
echo $SHELL
常見shell:
/bin/sh (已經被 /bin/bash 所取代)
/bin/bash (就是 Linux 預設的 shell)
/bin/ksh (Kornshell 由 AT&T Bell lab. 發展出來的,相容於 bash)
/bin/tcsh (整合 C Shell ,提供更多的功能)
/bin/csh (已經被 /bin/tcsh 所取代)
/bin/zsh (基於 ksh 發展出來的,功能更強大的 shell)
1.2 bash
bash 是一個為GNU計劃編寫的Unix shell。它的名字是一系列縮寫:Bourne-Again SHell — 這是關於Bourne shell(sh)的一個雙關語(Bourne again / born again)
bash 是 許 多 Linux 平 台 的 內 定 Shell, 事 實 上, 還 有 許 多 傳 統 UNIX 上 用 的 Shell, 像 tcsh、csh、ash、bsh、ksh等等,Shell Script大致都類同,當您學會一種Shell以後,其 它的Shell會很快就上手,大多數的時候,一個Shell Script通常可以在很多種Shell上使用。
bash是大多數Linux系統以及Mac OS X v10.4預設的shell,它能運行於大多數Unix風格 的操作系統之上,甚至被移植到了Microsoft Windows上的Cygwin系統中,以實現windows的POSIX虛擬介面。此外,它也被DJGPP項目移植到了MS-DOS上。
1.3 命令和路徑補齊
在bash下敲命令時,Tab鍵可以補全已經敲了一部分的文件名和目錄名。如果是Ubuntu 系統,系統預設啟用了bash completion,還可以補全命令的某些參數、Makefile目標等 等。如果是Debian系統,可以用以下命令啟用bash completion:
$ source /etc/bash_completion
建議將這一行加入∼/.bashrc
啟動腳本中。比如使用sudo後面接命令,如果沒有bash completion則只有sudo可以補全,後面的命令不能補全。如果啟用了bash completion,則 後面的命令,包括命令的某些參數(比如aptitude命令的install)都可以補全了。
比如在主目錄下要列出桌面目錄的內容,輸入(不回車)
$ ls De
然後敲Tab鍵,如果以De開頭的文件或文件夾只有Desktop一個,就自動補全為
$ ls Desktop
否則,再敲一次Tab鍵,將會把所有以De開頭的文件或文件夾列在下麵供你選擇(在這裡 我們手動創建另外一個以De開頭的文件)
$ touch Death
$ ls De
Death Desktop/
你可以再補敲一個s再Tab,這次Desktop就會補全到命令後面了。有 的 人 是 從 DOS 時 代 過 來 的, 留 下 一 個 很 不 好 的 習 慣 就 是 在 找 一 個 文 件 時 反 復 地cd、ls、cd、ls
等找到了要找的文件時再想回到先前的目錄,已經不記得先前是 從哪個目錄轉到這裡來的了。
我們從上面可以看出,Tab補全本身就具備了ls的功能,上面的Tab補全相當於ls -Fd De*
命令。所以我們完全不必反覆地cd到別的目錄然後ls去找文件,多按幾次Tab就可以一條 命令完成了,這樣的好處是我們的當前目錄不用變,不需要找完了文件再cd回來,同時省去 了大量的按鍵次數。更重要的是,自動補全同時兼具了檢查拼寫錯誤的功能,如果前面幾個 字母拼寫錯了,就補全不出東西來,用戶就知道拼寫錯了,如果前面幾個字母沒有拼寫錯, 那麼由系統補全出來的文件名肯定也不會有拼寫錯誤,避免了用戶在敲很長的文件名時易犯 的拼寫錯誤。
1.4 歷史記錄
history
歷史記錄是另外一個非常方便的功能。按上下移動游標鍵(或者Ctrl-p、Ctrl-n
)可以 一條一條瀏覽以前輸過的命令。如果有需要重覆輸入的命令就不用輸第二次了。如果你能記 住以前輸過的某條命令中的某個關鍵字,可以按Ctrl-r,然後輸入關鍵字,隨著你每輸入一 個字母,bash會做增量式(increasingly)查找,也可以反覆按Ctrl-r或Ctrl-s向前向後查 找。如果找到了,按左右移動游標鍵或Home鍵(Ctrl-a)或End鍵(Ctrl-e)將該命令帶回提示 符下進一步修改,或者直接按Enter鍵原封不動地執行該命令。
1.5 主鍵盤快捷鍵
bash的快捷鍵和emacs保持一致,用慣其中之一再用另一個程式會很順手的。請記住一條原則:儘量使用主鍵盤快捷鍵而不使用移動游標鍵和編輯鍵。因為手不必離開主鍵盤是效 率最高的,這樣在你一生之中所節省的來回移動手的時間絕對可以用星期來計算,是絕對值 得你花十分鐘的時間記住這些快捷鍵的。
功能 快捷鍵 助記
上 | Ctrl-p | previous |
下 | Ctrl-n | next |
左 | Ctrl-b | backward |
右 | Ctrl-f | forward |
Del | Ctrl-d | delete游標後面的 |
Home | Ctrl-a | the first letter |
End | Ctrl-e | end |
Backspace | Backspace | delete游標前面的 |
目錄和文件
2.1 類Unix系統目錄結構
ubuntu沒有盤符這個概念,只有一個根目錄/,所有文件都在它下麵
/ 根目錄
bin //系統可執行程式,如命令
boot //內核和啟動程式,所有和啟動相關的文件都保存在這裡 grub //引導器相關文件
dev //設備文件
etc //系統軟體的啟動和配置文件,系統在啟動過程中需要讀取的文件都在這個目錄。如LILO參數、用 戶賬戶和密碼。
home //用戶的主目錄。下麵是自己定義的用戶名的文件夾
lib //系統程式庫文件,這個目錄里存放著系統最基本的動態鏈接共用庫,類似於Windows下的system32 目錄,幾乎所有的應用程式都需要用到這些共用庫。
media //掛載媒體設備,如光碟機、U盤等
mnt //目錄是讓用戶臨時掛載別的文件系統,如掛載Windows下的某個分區,ubuntu預設還是掛載在/media 目錄。
opt //可選的應用軟體包(很少使用)
proc //這個目錄是系統記憶體的映射,我們可以直接訪問這個目錄來獲取系統信息。也就是說,這個目錄 的內容不在硬碟上而是在記憶體里。
sbin //管理員系統程式 selinux
srv
sys //udev用到的設備目錄樹,/sys反映你機器當前所接的設備 tmp //臨時文件夾
usr //這是個最龐大的目錄,我們要用到的很多應用程式和文件幾乎都存放在這個目錄下。] bin // 應用程式
game //游戲程式 include
lib //應用程式的庫文件 lib64
local //包含用戶程式等 sbin //管理員應用程式
2.2 用戶目錄
位於/home/user
,稱之為用戶工作目錄或家目錄,表示方式:
/home/user
~
2.2.1 相對路徑和絕對路徑
絕對路徑
從/目錄開始描述的路徑為絕對路徑,如:
cd /home ls /usr
相對路徑
從當前位置開始描述的路徑為相對路徑,如:
cd ../../ ls abc/def
.和..
每個目錄下都有.和..
. 表示當前目錄
.. 表示上一級目錄,即父目錄 根目錄下的.和..都表示當前目錄
2.3 ls
ls [OPTION]… [FILE]…
ls是英文單詞list的簡寫,其功能為列出目錄的內容。這是用戶最常用的一個命令,因 為用戶需要不時地查看某個目錄的內容。該命令類似於DOS下的dir命令。 對於每個目錄, 該命令將列出其中的所有子目錄與文件。對於每個文件,ls將輸出其文件名以及所要求的其 他信息。預設情況下,輸出條目按字母順序排序。當未給出目錄名或是文件名時,就顯示當 前目錄的信息。
主要的OPTION有:
-a 列出隱藏文件,文件中以“.”開頭的均為隱藏文件,如:~/.bashrc
-l 列出文件的詳細信息
-R 連同子目錄中的內容一起列出
用ls -l
命令顯示的信息中,開頭是由10個字元構成的字元串,其中第一個字元表示文 件類型,它可以是下述類型之一:
- 普通文件 d 目錄
l 符號鏈接
b 塊設備文件
c 字元設備文件
s socket文件,網路套接字 p 管道
後面的9個字元表示文件的訪問許可權,分為3組,每組3位。第一組表示文件屬主的權 限,第二組表示同組用戶的許可權,第三組表示其他用戶的許可權。每一組的三個字元分別表示 對文件的讀、寫和執行許可權。各許可權如下所示:
r 讀
w 寫
x 可執行。對於目錄,表示進入許可權。
s 當文件被執行時,把該文件的UID或GID賦予執行進程的UID(用戶ID)或GID(組 ID)。
t 設置標誌位(sticky bit)。如果是有sticky bit的目錄,在該目錄下任何用戶只要有適當的許可權即可創建文 件,但文件只能被超級用戶、目錄擁有者或文件屬主刪除。如果是有sticky bit的可執行文件,在該文件執行後, 指向其正文段的指針仍留在記憶體。這樣再次執行它時,系統就能更快地裝入該文件。
- 沒有相應位置的許可權。
訪問許可權後面的數字表示與該文件共用inode的文件總數,即硬鏈接數(參見下麵ln命 令)。
2.4 cd
change dir 改變當前所在路徑
cd ~
cd dir1/dir2 cd ..
2.5 which
查看指定命令所在路徑
which ls
2.6 pwd
查看當前所在路徑
pwd
2.7 mkdir
mkdir [OPTION] DIRECTORY…
創建目錄DIRECTORY,可以一次創建多個。OPTION如果是-p,表示可以連同父目錄一起 創建。
2.8 rmdir
rmdir [OPTION]… DIRECTORY…
刪除空目錄,可以一次刪除多個。OPTION如果是-p,表示可以連同空的父目錄一起刪 除。mkdir和rmdir的用法舉例:
$ mkdir a
$ mkdir a/b
$ ls a b
$ rmdir a/b
$ ls a
$ rmdir a
$ mkdir a/b
mkdir: cannot create directory `a/b': No such file or directory
$ mkdir -p a/b
$ rmdir -p a/b
2.9 touch
touch [OPTION]… FILE…
- 將每個文件的訪問及修改時間都更新為目前的時間。
- 如果文件不存在,則創建一個位元組數為0的文件。
2.10 rm
刪除文件:
rm file
刪除目錄:
rm dir -rf
2.11 mv
重命名:
mv file1 file2
移動文件:
mv file1 ~/
2.12 cp
拷貝文件:
cp file1 file2 cp file1 dir/ cp file1 ../
拷貝目錄:
cp dir1 dir2 -r cp dir1 ~/ -r
2.13 cat
查看文件里內容,輸出到終端,如果cat時沒跟文件名,則讀標準輸入,遇到\n後,輸 出到標準輸出,終端下輸入Ctrl-d表示結束
2.14 more
more [OPTION] FILE…
查看文本文件的內容,屏幕顯示完一屏就等待用戶按下任意鍵再滾動到下一屏,如果中 途不想繼續看下去了,可以按Ctrl+C或q終止顯示。
2.15 less
less [OPTION] FILE…
查看文本文件的內容,屏幕顯示完一屏就等待用戶按鍵,用戶可以向上或向下查看,如 果中途不想繼續看下去了,可以按Ctrl+C或q終止顯示。
2.16 head
head [OPTION]… FILE…
顯示指定文件的前面幾行。如果沒有指定文件,將從標準輸入(鍵盤)上讀取。如果沒
有指定要顯示的行數,則預設顯示前10行。如果要顯示文件的前5行:
$ head -5 file1
2.17 tail
tail [OPTION]… FILE…
顯示文件的最後幾行。若沒有指定顯示的行或字元數,則預設顯示末尾10行。如果要顯
示文件末5行:
$ tail -5 file1
2.18 ln
鏈接有兩種,一種被稱為硬鏈接(Hard Link),另一種被稱為符號鏈接(Symbolic Link)。建立硬鏈接時,鏈接文件和被鏈接文件必須位於同一個文件系統中,並且不能建立 指向目錄的硬鏈接。而對符號鏈接,則不存在這個問題。預設情況下,ln產生硬鏈接。如果 給ln命令加上-s選項,則建立符號鏈接。舉例如下,註意ls -l列出文件的硬鏈接數和位元組 數:
硬鏈接:
touch hello
ln hello word_h
軟鏈接:
ln -s hello word_s
2.19 tree
這個命令需要下載安裝,ubuntu下
sudo apt-get install tree
按結構樹的形狀顯示目錄和文件
2.20 wc
利用 wc 指令我們可以計算文件的 Byte 數、字數、或是列數,若不指定文件名稱、或 是所給予的文件名為“-”,則 wc 指令會從標準輸入設備讀取數據。
wc -l ./*
-c 或–bytes 或–chars 只顯示 Bytes 數。
-l 或–lines 只顯示列數。
-w 或–words 只顯示字數。
2.21 od
od -tcx file1
-t 指定數據的顯示格式,主要的參數有:
c ASCII字元或反斜杠序列
d[SIZE] 有符號十進位數,每個整數SIZE位元組。 f[SIZE] 浮點數,每個整數SIZE位元組。
o[SIZE] 八進位(系統預設值為02),每個整數SIZE位元組。 u[SIZE] 無符號十進位數,每個整數SIZE位元組。
x[SIZE] 十六進位數,每個整數SIZE位元組。
2.22 du
查看某個目錄的大小: 以M為單位
du -hm /home/sihai/test
以B為單位
du -hb ./*
以K為單位,4k的整數倍
du -hk ./*
2.23 df
df查看磁碟使用情況
df --block-size=GB df --block-size=MB
文件屬性和用戶用戶組
3.1 whoami
查看當前登陸用戶
3.2 chmod
- 文字設定法
chmod [who] [+|-|=] [mode] 文件名
操作對象who可是下述字母中的任一個或者它們的組合:
u 表示“用戶(user)”,即文件或目錄的所有者。
g 表示“同組(group)用戶”,即與文件屬主有相同組ID的所有用戶。 o 表示“其他(others)用戶”。
a 表示“所有(all)用戶”。它是系統預設值。
操作符號可以是:
- +添加某個許可權。
- -取消某個許可權。
- = 賦予給定許可權並取消其他所有許可權(如果有的話)。
設置mode所表示的許可權可用下述字母的任意組合:
r 可讀。 w 可寫。
x 可執行。
- 數字設定法
chmod [mode] 文件名 我們必須首先瞭解用數字表示的屬性的含義:
0表示沒有許可權,
1表示可執行許可權,
2表示可寫許可權,
4表示可讀許可權,
然後將其相加。所以數字屬性的格式應為3個從0到7的八進位數,其順序是
(u)(g)(o)。
例如,如果想讓某個文件的屬主有“讀/寫”二種許可權,需要把4(可讀)+2(可寫)= 6(讀/寫)。
比如設置一個文件允許所有用戶可寫
$ chmod a+w file1
設置一個文件允許所有用戶可讀、可寫、不可執行
$ chmod 666 file1
3.3 chown
chown [OPTION]… [OWNER:GROUP] FILE…
chown [OPTION]… –reference=RFILE FILE…
更改某個文件或目錄的屬主和屬組。這個命令也很常用。例如root用戶把自己的一個文件拷貝給用戶A, 為了讓用戶A能夠存取這個文件,root用戶應該把這個文件的屬主設為A, 否則,用戶A無法存取這個文件。
OPTION的主要參數:
- -R 遞歸式地改變指定目錄及其下的所有子目錄和文件的擁有者。
- -v 顯示chown命令所做的工作。 比如把一個文件改為sihai用戶和nogroup用戶組所有
$ sudo chown sihai:nogroup file1
註意:
- chown需要特權用戶才能執行
- 一個文件的owner和owning group是沒有關聯的。一個文件屬於用戶A,也屬於用戶組 B,並不表示用戶A屬於用戶組B。
3.4 chgrp
chgrp [OPTION]… GROUP FILE…
chgrp [OPTION]… –reference=RFILE FILE…
該命令改變(指定)指定文件所屬的用戶組。其中group可以是用戶組ID,也可以是/etc/group文件中用戶組的組名。
文件名是以空格分開的要改變屬組的文件列表,支持通配 符。如果用戶不是該文件的屬主或超級用戶,則不能改變該文件的組。
OPTION的主要參數:
- -R 遞歸式地改變指定目錄及其下的所有子目錄和文件的屬組。
查找與檢索
4.1 find
根據文件名查找
find [OPTION] path… [expression]
在目錄中搜索文件,path指定目錄路徑,系統從這裡開始沿著目錄樹向下查找文件。它是一個路徑列表,相互用空格分離,如果不寫path,那麼預設為當前目錄。Expression 是 find命令接受的表達式,find命令的所有操作都是針對錶達式的。
一條最常用的find命令--在當前目錄及子目錄下查找所有以file開頭的文件名。
$ find . -name 'file*'
$ find / -name 'vimrc'
$ find ~ -name '*.c'
4.2 grep
根據內容檢索
grep [options] PATTERN [FILE...]
在指定文件中搜索特定的內容,並將含有這些內容的行輸出到標準輸出。若不指定文件 名,則從標準輸入讀取。
[options]部分包含的主要參數:
-
-c:只輸出匹配行的計數。
-
-I:不區分大小寫(只適用於單字元)。
-
-h:查詢多文件時不顯示文件名。
-
-l:查詢多文件時只輸出包含匹配字元的文件名。
-
-n:顯示匹配行及行號。
-
-s:不顯示不存在或無匹配文本的錯誤信息。
-
-v:顯示不包含匹配文本的所有行。
-
-R: 連同子目錄中所有文件一起查找。
比如到系統頭文件目錄下查找所有包含printf的文件
$ grep 'printf' /usr/include -R
安裝卸載軟體
5.1 apt-get
更新源伺服器列表
sudo vi /etc/apt/sources.list
更新完伺服器列表後需要更新下源
sudo apt-get update 更新源
sudo apt-get install package 安裝包
sudo apt-get remove package 刪除包
sudo apt-cache search package 搜索軟體包
sudo apt-cache show package 獲取包的相關信息,如說明、大小、版本等 sudo apt-get install package --reinstall 重新安裝包
sudo apt-get -f install 修複安裝
sudo apt-get remove package --purge 刪除包,包括配置文件等 sudo apt-get build-dep package 安裝相關的編譯環境
sudo apt-get upgrade 更新已安裝的包 sudo apt-get dist-upgrade 升級系統
sudo apt-cache depends package 瞭解使用該包依賴那些包 sudo apt-cache rdepends package 查看該包被哪些包依賴 sudo apt-get source package 下載該包的源代碼
sudo apt-get clean && sudo apt-get autoclean 清理無用的包 sudo apt-get check 檢查是否有損壞的依賴
5.2 deb包安裝
安裝deb軟體包命令: sudo dpkg -i xxx.deb
刪除軟體包命令: sudo dpkg -r xxx.deb
連同配置文件一起刪除命令: sudo dpkg -r --purge xxx.deb
查看軟體包信息命令: sudo dpkg -info xxx.deb
查看文件拷貝詳情命令: sudo dpkg -L xxx.deb
查看系統中已安裝軟體包信息命令: sudo dpkg -l
重新配置軟體包命令: sudo dpkg-reconfigure xxx
5.3 原碼安裝
- 解壓縮源代碼包
- cd dir
- ./configure 檢測文件是否缺失,創建Makefile,檢測編譯環境
- make 編譯源碼,生成庫和可執行程式
- sudo make install 把庫和可執行程式,安裝到系統路徑下
磁碟管理
6.1 mount
命令格式:
mount [-t vfstype] -o options device dir
其中:
- -t vfstype 指定文件系統的類型,通常不必指定。mount 會自動選擇正確的類型。常 用類型有:
光碟或光碟鏡像:iso9660
DOS fat16文件系統:msdos Windows 9x fat32文件系統:vfat Windows NT ntfs文件系統:ntfs
Mount Windows文件網路共用:smbfs UNIX(LINUX) 文件網路共用:nfs
-
-o options 主要用來描述設備或檔案的掛接方式。常用的參數有: loop:用來把一個文件當成硬碟分區掛接上系統
ro:採用只讀方式掛接設備
rw:採用讀寫方式掛接設備 iocharset:指定訪問文件系統所用字元集 -
device 要掛接(mount)的設備。
-
dir設備在系統上的掛接點(mount point)。
6.1.1 掛接光碟鏡像文件
由 於 近 年 來 磁 盤 技 術 的 巨 大 進 步, 新 的 電 腦 系 統 都 配 備 了 大 容 量 的 磁 盤 系 統, 在 Windows下許多人都習慣把軟體和資料做成光碟鏡像文件通過虛擬 光碟機來使用。這樣做有 許多好處:一、減輕了光碟機的磨損;二、現在硬碟容量巨大存放幾十個光碟鏡像文件不成問 題,隨用隨調十分方便;三、硬碟的讀取速度要遠 遠高於光碟的讀取速度,CPU占用率大大 降低。其實linux系統下製作和使用光碟鏡像比Windows系統更方便,不必借用任何第三方軟 件包。
1.從光碟製作光碟鏡像文件。將光碟放入光碟機,執行下麵的命令。
cp /dev/cdrom /home/sunky/mydisk.iso
或
dd if=/dev/cdrom of=/home/sunky/mydisk.iso
註:執行上面的任何一條命令都可將當前光碟機里的光碟製作成光碟鏡像文件/home/ sunky/mydisk.iso
2.文件和目錄製作成光碟鏡像文件,執行下麵的命令。
mkisofs -r -J -V mydisk -o /home/sunky/mydisk.iso /home/sunky/ mydir
註:這條命令將/home/sunky/mydir目錄下所有的目錄和文件製作成光碟鏡像文件/ home/sunky/mydisk.iso
,光碟捲標為:mydisk
3.光碟鏡像文件的掛接(mount)
mkdir /mnt/vcdrom
註:建立一個目錄用來作掛接點(mount point)
mount -o loop -t iso9660 /home/sunky/mydisk.iso /mnt/vcdrom
註:使用/mnt/vcdrom就可以訪問盤鏡像文件mydisk.iso里的所有文件了。
6.1.2 掛載U盤
1.檢測存儲設備名稱
sudo fdisk -l
2.掛載存儲設備sdb1到掛載點/mnt目錄
sudo mount /dev/sdb1 /mnt
3.訪問/mnt
4.卸載/mnt
sudo umount /mnt
6.2 umount
卸載命令
sudo umount 掛在點
6.3 dd
dd:拷貝
例1:拷貝光碟(註意,你的光碟是標準的 iso9660格式才可以這麼做)
dd if=/dev/cdrom of=cdrom.iso
例2:將文件sfile拷貝到文件 dfile中。
$ dd if=sfile of=dfile
例3:創建一個100M的空文件
dd if=/dev/zero of=hello.txt bs=100M count=1
/dev/null,外號叫無底洞,你可以向它輸出任何數據,它通吃,並且不會撐著!
/dev/zero,是一個輸入設備,你可你用它來初始化文件,從裡面讀出來的數據都是0。
壓縮包管理
7.1 tar
tar [主選項+輔選項] 文件或者目錄 tar可以為文件和目錄創建檔案。
利用tar命令用戶可以為某一特定文件創建檔案(備份文件),也可以在檔案中改變文件,或者向檔案中加入新的文件。使用該命令時,主選項是 必須要有的,輔選項是輔助使用的,可以選用。
主選項包括:
- c 創建新的檔案文件。如果用戶想備份一個目錄或是一些文件,就要選擇這個選項。
- r 把要存檔的文件追加到檔案文件的未尾。
- t 列出檔案文件的內容,查看已經備份了哪些文件。
- u 更新文件。用新增的文件取代原備份文件,如果在備份文件中找不到要更新的文件,則把它追加到備份文件的最 後。
- x 從檔案文件中釋放文件。(常用)
輔選項包括:
-
f 使用檔案文件或設備,這個選項通常是必選的。(常用) k 保存已經存在的文件。
-
m 在還原文件時,把所有文件的修改時間設定為現在。 M 創建多捲的檔案文件,以便在幾個磁碟中存放。
-
v 詳細報告tar處理的文件信息。如無此選項,tar不報告文件信息。(常用) w 每一步都要求確認。
-
z 用gzip來壓縮/解壓縮文件,加上該選項後可以將檔案文件進行壓縮,但還原時也一定要使用該選項進行解壓 縮。(常用)
-
j 用bzip2來壓縮/解壓縮文件,加上該選項後可以將檔案文件進行壓縮,但還原時也一定要使用該選項進行解壓 縮。(常用)
要將文件備份到一個特定的設備,只需把設備名作為備份文件名。 打包:
tar cvf dir.tar dir tar xvf dir.tar dir
打gz壓縮包:
tar zcvf dir.tar.gz dir tar zxvf dir.tar.gz
打bz2壓縮包:
tar jcvf dir.tar.bz2 dir tar jxvf dir.tar.bz2
指定目錄解壓縮:
tar zxvf dir.tar.gz -C ~/test
7.2 rar
打包:把dir壓縮成newdir.rar
rar a -r newdir dir
解包:把newdir.rar解壓縮到當前目錄
unrar x newdir.rar
7.3zip
打包:
zip -r dir.zip dir
解包:
unzip dir.zip
進程管理
8.1 who
查看當前線上上的用戶情況。所有的選項都是可選的,不使用任何選項時,who命令將 顯示以下三項內容:
login name:登錄用戶名; terminal line:使用終端設備; login time:登錄到系統的時間。
sihai@ubuntu:~/demo$ who -uH
名稱 線路 時間 空閑 進程號 備註 sihai tty2 2014-08-14 13:31 . 6798
sihai tty7 2014-08-14 01:31 舊 2423
sihai pts/1 2014-08-14 01:31 12:00 2843 (:0)
sihai pts/3 2014-08-14 10:39 . 2843 (:0)
8.2 ps
ps [選項]
ps命令用於監控後臺進程的工作情況,因為後臺進程是不和屏幕鍵盤這些標準輸入/輸 出設備進行通信的,所以如果需要檢測其情況,便可以使用ps命令了。選項部分如下:
-
-e 顯示所有進程。
-
-f 全格式。
-
-h 不顯示標題。
-
-l 長格式。
-
-w 寬輸出。
-
a 顯示終端上的所有進程,包括其他用戶的進程。 r 只顯示正在運行的進程。
-
x 顯示沒有控制終端的進程。
這個命令參數有很多,但一般的用戶只需掌握一些最常用的命令參數就可以了。
最常用的三個參數是u、a、x
, 我們首先以root身份登錄系統,查看當前進程狀況
sihai@ubuntu:~$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 3672 2008 ? Ss 08:46 0:01 /sbin/init
sihai@ubuntu:~$ ps ajx
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND 4592 6948 6948 4592 pts/3 6948 R+ 1000 0:00 ps ajx
sihai@ubuntu:~$ ps -Lf 2423
UID PID PPID LWP C NLWP STIME TTY STAT TIME CMD
1000 2423 2282 2423 0 4 08:46 ? Ssl 0:00 gnome-session --session=ubuntu
1000 2423 2282 2465 0 4 08:46 ? Ssl 0:00 gnome-session --session=ubuntu
1000 2423 2282 2466 0 4 08:46 ? Ssl 0:00 gnome-session --session=ubuntu
1000 2423 2282 2468 0 4 08:46 ? Ssl 0:00 gnome-session --session=ubuntu
Head標頭:
USER 用戶名
UID 用戶ID(User ID)
PID 進程ID(Process ID)
PPID 父進程的進程ID(Parent Process id) SID 會話ID(Session id)
%CPU 進程的cpu占用率
%MEM 進程的記憶體占用率
VSZ 進程所使用的虛存的大小(Virtual Size)
RSS 進程使用的駐留集大小或者是實際記憶體的大小,Kbytes位元組。 TTY 與進程關聯的終端(tty)
STAT 進程的狀態:進程狀態使用字元表示的(STAT的狀態碼)
R 運行 Runnable (on run queue) 正在運行或在運行隊列中等待。
S 睡眠 Sleeping 休眠中, 受阻, 在等待某個條件的形成或接受到信號。 I 空閑 Idle
Z 僵死 Zombie(a defunct process) 進程已終止, 但進程描述符存在, 直到父進程調用wait4()系統調 用後釋放。
D 不可中斷 Uninterruptible sleep (ususally IO) 收到信號不喚醒和不可運行, 進程必須等待直到有中 斷發生。
T 停止 Terminate 進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號後停止運行運行。 P 等待交換頁
W 無駐留頁 has no resident pages 沒有足夠的記憶體分頁可分配。 X 死掉的進程
< 高優先順序進程 高優先序的進程
N 低優先 級進程 低優先序的進程
L 記憶體鎖頁 Lock 有記憶體分頁分配並縮在記憶體內 s 進程的領導者(在它之下有子進程);
l 多進程的(使用 CLONE_THREAD, 類似 NPTL pthreads)
- 位於後臺的進程組
START 進程啟動時間和日期 TIME 進程使用的總cpu時間
COMMAND 正在執行的命令行命令 NI 優先順序(Nice)
PRI 進程優先順序編號(Priority)
WCHAN 進程正在睡眠的內核函數名稱;該函數的名稱是從/root/system.map文件中獲得的。 FLAGS 與進程相關的數字標識
8.4 fg
fg [job…]
把指定的後臺作業或掛起作業移到前臺運行。 參數job是一個或多個進程的PID,或者 是命令名稱,或者是作業號(作業號前面要帶一個%號)。
通常在shell中輸入命令啟動進程後,如果該進程需要與用戶交互,那麼此後用戶的鍵 盤輸入都被該進程讀取,直到該進程退出後才出現shell提示符
不能識別此Latex公式:
,這種進程為前臺進程。
如果在命令行的末尾加上&字元,則shell為這個命令創建一個後臺進程,它雖然也可以 輸出到屏幕,但是不能讀取鍵盤輸入,不管執行命令的進程有沒有退出都立刻回到shell提 示符接受下一條命令的輸入。如果該進程也需要讀取鍵盤輸入,則被掛起等待直到用戶用fg 命令把它變成前臺進程。如果一個命令需要較長的處理時間並且不需要與用戶交互,就適合 把它放在後臺執行。
8.5 bg
bg [job…]
把被掛起的進程提到後臺執行。 其中,job是一個或多個進程的PID、命令名稱或者作 業號,在參數前要帶%號。
8.6 kill
向指定進程發送信號
kill [ -signal | -s signal ] pid …
查看信號編號
kill -l [ signal ]
給一個進程發信號,或終止一個進程的運行。
kill命令如果不帶參數而直接跟pid,就是發給該進程SIGTERM信號,大部分進程收到該 信號就會終止。但是被掛起的進程不能處理信號,所以必鬚髮SIGKILL信號,由系統強制終 止進程。
8.7env
查看當前進程環境變數
$env
- vim ∼/.bashrc 配置當前用戶環境變數
- vim /etc/profile 配置系統環境變數,配置時需要有root許可權
用戶管理
9.1 創建用戶
sudo useradd -s /bin/bash -g sihai -d /home/sihai -m sihai sudo useradd -s /bin/sh -g group -G adm,root xwp
此命令新建了一個用戶xwp,該用戶的登錄Shell是/bin/sh,他屬於group用戶組,同時 又屬於adm和root用戶組,其中group用戶組是其主組。
-
-s 指定新用戶登陸時shell類型
-
-g 指定所屬組,該組必須已經存在
-
-G 指定附屬組,該組必須已經存在
-
-d 用戶家目錄
-
-m 用戶家目錄不存在時,自動創建該目錄
9.2 設置用戶組
sudo groupadd sihai
9.3 設置密碼
sudo passwd sihai
9.4 切換用戶
su 用戶名
su sihai
9.5 root用戶
變成root用戶
sudo su
設置root密碼
passwd
9.6 刪除用戶
userdel 選項 用戶名
常用的選項是-r,他的作用是把用戶的主目錄一起刪除。 例如:
sudo userdel -r sihai
此命令刪除用戶sihai在系統文件(主要是/etc/passwd,/etc/shadow,/etc/ group等)中的記錄,同時刪除用戶的主目錄。
網路管理
10.1 ifconfig
1.查看網卡信息
ifconfig
2.關閉網卡
sudo ifconfig eth0 down
3.開啟網卡eth0
sudo ifconfig eth0 up
4.給eth0配置臨時IP
sudo ifconfig eth0 IP
10.2ping
ping [選項] 主機名/IP地址
查看網路上的主機是否在工作。它向該主機發送ICMP ECHO_REQUEST包。有時我們想從網路上的某台主機上下載文件,可是又不知道那台主機是否開著,就需要使用ping命令查看。
命令中各選項的含義如下:
-c 數目 在發送指定數目的包後停止。
-d 設定SO_DEBUG的選項。
-f 大量且快速地送網路封包給一臺機器,看它的回應。
-I 秒數 設定間隔幾秒送一個網路封包給一臺機器,預設值是一秒送一次。
-l 次數 在指定次數內,以最快的方式送封包數據到指定機器(只有超級用戶可以使用此選項)。
-q 不顯示任何傳送封包的信息,只顯示最後的結果。
-r 不經由網關而直接送封包到一臺機器,通常是查看本機的網路介面是否有問題。
-s 位元組數 指定發送的數據位元組數,預設值是56,加上8位元組的ICMP頭,一共是64ICMP數據位元組。
10.3netstat
netstat [選項]
顯示網路連接、路由表和網路介面信息,可以讓用戶得知目前都有哪些網路連接正在運 作。命令中各選項的含義如下:
-a 顯示所有socket,包括正在監聽的。
-c 每隔1秒就重新顯示一遍,直到用戶中斷它。
-i 顯示所有網路介面的信息,格式同“ifconfig -e”。
-n 以網路IP地址代替名稱,顯示出網路連接情形。
-r 顯示核心路由表,格式同“route -e”。
-t 顯示TCP協議的連接情況。
-u 顯示UDP協議的連接情況。
-v 顯示正在進行的工作。
10.4nslookup
nslookup name
查詢一臺機器的IP地址和其對應的功能變數名稱。它通常需要一臺功能變數名稱伺服器來提供功能變數名稱服務。 如果用戶已經設置好功能變數名稱伺服器,就可以用這個命令查看不同主機的IP地址對應的功能變數名稱。
不帶參數使用nslookup命令時,出現提示符“>”,在後面輸入要查詢的IP地址或功能變數名稱 並回車即可。如果要退出該命令,輸入exit並回車即可。
sihai@ubuntu:~$ nslookup
> www.sihai.cn
Server: 127.0.0.1
Address: 127.0.0.1#53
10.5 finger
finger [-lmsp] user [user@host …]
查詢用戶的信息,通常會顯示系統中某個用 戶的用戶名、主目錄、停滯時間、登錄時間、登錄shell等信息。如果要查詢遠程機上的用 戶信息,需要在用戶名後面接“@主機名”,採用[用戶名@主機名]的格式,不過要查詢的網 絡主機需要運行finger守護進程。
命令中各選項的含義如下:
-s 顯示用戶的註冊名、實際姓名、終端名稱、寫狀態、停滯時間、登錄時間等信息。
-l 除了用-s選項顯示的信息外,還顯示用戶主目錄、登錄shell、郵件狀態等信息,以 及用戶主目錄下的.plan、.project和.forward文件的內容。
-p 除了不顯示.plan文件和.project文件以外,與-l選項相同。
sihai@ubuntu:~$ finger sihai
Login: sihai Name: sihai
Directory: /home/sihai Shell: /bin/bash
On since Mon Sep 8 08:55 (CST) on tty7 14 hours 48 minutes idle On since Mon Sep 8 21:57 (CST) on pts/1 from :0
11 minutes 18 seconds idle
On since Mon Sep 8 23:12 (CST) on pts/2 from :0 6 seconds idle
No mail. No Plan.
常用伺服器構建
11.1 ftp
11.1.1ftp伺服器
1.安裝vsftpd伺服器
sudo apt-get install vsftpd
2.配置vsftpd.conf文件
sudo vi /etc/vsftpd.conf
添加下麵設置
anonymous_enable=YES
anon_root=/home/sihai/ftp
no_anon_password=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=0022
3.重啟伺服器,重新載入/etc/vsftpd.conf配置文件
ubuntu12.04下
sudo /etc/init.d/vsftpd restart
ubuntu14.04下
sudo /lib/init/upstart-job vsftpd restart
4.進入你的/home/sihai/ftp目錄下創建一個空目錄,供用戶上傳
cd ~/ftp
mkdir anonymous chmod 777 anonymous
5.測試上傳功能,登陸ftp伺服器,進入到anonymous目錄
ftp IP
cd anonymous
6.上傳命令,可以把你當前目錄下的文件上傳到ftp伺服器的anonymous目錄
put somefile
get somefile
11.1.2 ftp客戶端
Ubuntu 預設已經安裝ftp客戶端
11.1.3 lftp客戶端
lftp 也 是 一 種 ftp 客 戶 程 序。 它 是 以 文 本 方 式 操 作 的, 但 是 比 起 圖 形 界 面 更 為 方 便。lftp幾乎具有bash的所有方便功能,Tab 補全,bookmark, queue, 後臺下載等可以 得到支持。用法與ftp類似,主要的指令如下:
put 上傳文件
mput 上傳多個文件 get 下載文件
mget 下載多個文件
mirror 下載整個目錄及其子目錄 mirror –R 上傳整個目錄及其子目錄
!command 調用本地shell執行命令command
註意,有的發行版可能預設沒有安裝lftp工具,需要用戶自己安裝。如果是Debian或 Ubuntu系統,則安裝lftp軟體包。
sudo apt-get install lftp
11.2 nfs
1.安裝nfs伺服器
sudo apt-get install nfs-kernel-server
2.設置/etc/exports配置文件
sudo&