樓主: changyongid
打印 上一主題 下一主題

一天一個(gè)Linux命令

[復制鏈接]
81
 樓主| 發(fā)表于 2009-9-16 08:59:33 | 只看該作者
由于cp過(guò)于是默認覆蓋已存在文件的,所以直接使用這個(gè)命令時(shí)會(huì )有一點(diǎn)危險。在~/.bashrc里面用alias將其替換成 cp -i 即可,加上-i參數,每次要覆蓋之前,它都會(huì )提示,這樣就安全了一些,防止誤操作。
82
 樓主| 發(fā)表于 2009-9-16 19:51:18 | 只看該作者
命令 : rm
使用 : rm [選項]... 文件...
說(shuō)明 : 刪除文件

  -f, --force      強制刪除,不需要提示
  -i                  每次刪除行為之前,都提示刪除動(dòng)作(需要用戶(hù)確認刪除)
  -I                  當一次刪除文件數為3個(gè)或3個(gè)以上時(shí),或在遞歸刪除一個(gè)目錄時(shí),只提示一次.與 -i 相比,這個(gè)選項即保障了安全又避免了刪除多個(gè)文件時(shí)的多次打擾。

  -r, -R, --recursive  遞歸刪除目錄和其中的文件
  -v, --verbose         交互動(dòng)作,顯示正在進(jìn)行的動(dòng)作
   
默認情況下,rm命令不會(huì )刪除目錄。使用 -r 或 -R 選項來(lái)刪除目錄和目錄內的文件。

如果一個(gè)文件名以“-”開(kāi)頭,比如“-foo”,用下面兩個(gè)命令中任一個(gè)來(lái)刪除:
  rm -- -foo

  rm ./-foo

注意,當使用rm來(lái)刪除文件時(shí),被刪除的文件是可恢復的。也就是說(shuō)rm只刪除了它的索引結點(diǎn)而已。如果想要真正的刪除,不可恢復,可以考慮使用shred。

我們刪除一個(gè)文件,可以直接的rm刪除。
刪除一個(gè)目錄,可使用 rm -rf ... 注意,此處的f是強制。

默認的情況下,我們的刪除是不會(huì )提示信息的,顯然這樣是有些危險的。我就曾經(jīng)犯過(guò)一個(gè)錯誤,錯將/bin/目錄里面的內容全部刪除掉了,結果可想而知。當然,我當時(shí)犯的錯誤跟我使用超級用戶(hù)root有直接的關(guān)系。
為了使我們的操作更安全,可以在.bashrc里用alias添加一行
rm='rm -i'
這樣,每次我們使用rm命令時(shí)都相當于使用 rm -i ,那么每次刪除都需要我們的確認了。這樣做是有一定好處的,當然還要考慮到個(gè)人的習慣問(wèn)題。
83
 樓主| 發(fā)表于 2009-9-16 20:00:48 | 只看該作者
命令 : mv --help
使用 : mv [選項]... [-T] SOURCE DEST
    or:  mv [選項]... SOURCE... DIRECTORY
    or:  mv [選項]... -t DIRECTORY SOURCE...
將SOURCE 重命名為 DEST, 或將 SOURCE(s) 移動(dòng)到 DIRECTORY.

  -f, --force                  強制,在覆蓋之前不進(jìn)行提示
  -i, --interactive            覆蓋之前進(jìn)行提示
  -n, --no-clobber          不覆蓋已存在的文件
注意:如果使用 -i, -f, -n, 這三個(gè)中的多個(gè),則只有最后一個(gè)起作用。

  -t, --target-directory=DIRECTORY  將所有的 SOURCE 都移動(dòng)到 DIRECTORY

學(xué)習了之前的命令之后,相信這個(gè)命令也會(huì )使用了。mv除了可以移動(dòng)一個(gè)文件或目錄之外,還是一種對文件或目錄重命名的方法。
84
 樓主| 發(fā)表于 2009-9-16 20:01:57 | 只看該作者
加班是一件不好玩的事情,特別是在餓肚子的時(shí)候加班,而且還沒(méi)什么事情做的時(shí)候卻硬被拖著(zhù)。
所以學(xué)習兩個(gè)命令,純當消遣……
85
 樓主| 發(fā)表于 2009-9-21 10:29:28 | 只看該作者
安排一下接下去要學(xué)的幾個(gè)命令:
echo  basename  ln  lndir  paste  stat  tee tree touch file split dirname

乍一看,好像太多了。
其中除了ln touch 之外,其它的都用的比較少,屬于雜類(lèi)且有點(diǎn)偏的命令。它們每個(gè)都只完成一個(gè)小小的功能,但完成的很好。

學(xué)習每一個(gè)命令,都在自己電腦里多試幾次,多試幾個(gè)參數,一下就可以熟悉大概。這就是學(xué)習中的“多動(dòng)手”吧。
86
 樓主| 發(fā)表于 2009-9-21 22:17:28 | 只看該作者
echo
英文“echo”是 “回聲”的意思。在Linux的命令里,它的作用是顯示一行內容。

功能說(shuō)明:顯示文字。
語(yǔ)   法:echo [-ne][字符串]或 echo [--help][--version]
補充說(shuō)明:echo會(huì )將輸入的字符串送往標準輸出。輸出的字符串間以空白字符隔開(kāi), 并在最后加上換行號。
參   數:-n 不要在最后自動(dòng)換行
     -e 若字符串中出現以下字符,則特別加以處理,而不會(huì )將它當成一般
     文字輸出:
     \a 發(fā)出警告聲;
        \b 刪除前一個(gè)字符;
        \c 最后不加上換行符號;
        \f 換行但光標仍舊停留在原來(lái)的位置;
        \n 換行且光標移至行首;
       \r 光標移至行首,但不換行;
       \t 插入tab;
        \v 與\f相同;
        \\ 插入\字符;
        \nnn 插入nnn(八進(jìn)制)所代表的ASCII字符;
      –help 顯示幫助
      –version 顯示版本信息
我們可以利用echo打印出上一次程序執行后的退出狀態(tài)。
87
 樓主| 發(fā)表于 2009-9-21 22:18:31 | 只看該作者
basename打印出文件名,不打印其路徑。若指定后綴,則也不打印后綴。
例:
  1. [changyongid@Fedora ~]$ basename /usr/include/stdio.h
  2. stdio.h
  3. [changyongid@Fedora ~]$ basename  /usr/include/stdio.h .h
  4. stdio
復制代碼
88
 樓主| 發(fā)表于 2009-9-21 22:24:57 | 只看該作者
dirname
作用:打印路徑名。
其參數是一個(gè)文件名。輸出除文件名之外的路徑。
例:
  1. [changyongid@Fedora ~]$ dirname ../linux/.bashrc
  2. ../linux
  3. [changyongid@Fedora ~]$ dirname /etc/passwd
  4. /etc
復制代碼
89
 樓主| 發(fā)表于 2009-9-23 14:12:01 | 只看該作者
file
使用: file [OPTION...] [FILE...]
測定文件的類(lèi)型

  -m, --magic-file LIST      use LIST as a colon-separated list of magic
                               number files
  -z, --uncompress          試著(zhù)探測壓縮文件類(lèi)型
  -b, --brief                打印輸時(shí)不打印文件名
  -c, --checking-printout    打印輸出分析的詳細過(guò)程。與m連用,便于調試所用。

  -f, --files-from FILE     從FILE中讀取要分析的文件名列表

  -L, --dereference          顯示符號鍕接所指向的文件類(lèi)型

file命令可以知道某個(gè)文件究竟是二進(jìn)制的可執行文件還是shell腳本文件,或是其他格式的文件。其能識別目錄、shell腳本、英文文本、二進(jìn)制可執行文件、C語(yǔ)言源文件、文本文件、DOS的可執行文件。能探測包括圖形、音頻等在內的多種媒體格式文件。
90
 樓主| 發(fā)表于 2009-9-23 14:14:26 | 只看該作者
本帖最后由 changyongid 于 2009-9-23 14:17 編輯

  1. 匯編文件
  2. $ file head.S
  3. head.S: ASCII C program text

  4. c源文件
  5. $ file main.c
  6. main.c: ASCII C program text

  7. mp3文件
  8. $ file ~/Documents/music/english/001.At\ last.MP3
  9. /home/changyongid/Documents/music/english/001.At last.MP3: MPEG ADTS, layer III, v1, 320 kbps, 44.1 kHz, JntStereo

  10. 下載到板上的
  11. $ file -b vivi
  12. DBase 3 index file

  13. 可執行的
  14. $ file -b tmp.o
  15. ELF 32-bit LSB executable, ARM, version 1, statically linked, not stripped

  16. 目錄
  17. $ file study/
  18. study/: directory
復制代碼
91
 樓主| 發(fā)表于 2009-9-24 20:33:16 | 只看該作者
用法:touch [選項]... 文件...
更新文件的訪(fǎng)問(wèn)和修改時(shí)間,更新為當前時(shí)間。

如果參數指定的文件不存在,則創(chuàng )建它,創(chuàng )建的文件為空。

A FILE argument string of - is handled specially and causes touch to
change the times of the file associated with standard output.
// 這一句不知道怎么翻。

長(cháng)選項必須用的參數在使用短選項時(shí)也是必需的。
  -a                     只更改訪(fǎng)問(wèn)時(shí)間access
  -c, --no-create        不創(chuàng )建任何文件
  -d, --date=字符串        使用<字符串>表示的時(shí)間而不是目前的時(shí)間
  -f                     (此選項不作處理)
  -m                     只更改修改時(shí)間modify
  -r, --reference=FILE   使用指定文件的時(shí)間屬性而非目前的時(shí)間
  -t STAMP               使用[[CC]YY]MMDDhhmm[.ss] 格式的時(shí)間而非當前時(shí)間


注意 -d 和 -t 選項接受不同格式的時(shí)間表達式。
92
 樓主| 發(fā)表于 2009-9-24 20:34:44 | 只看該作者
來(lái)實(shí)例一下。
[changyongid@localhost test]$ ll
總計 32
drwxrwxr-x   8 changyongid changyongid 4096 09-03 16:59 2410

[changyongid@localhost test]$ touch 2410/
[changyongid@localhost test]$ ll
總計 32
drwxrwxr-x   8 changyongid changyongid 4096 09-24 20:34 2410

看到時(shí)間的變化了吧。
93
 樓主| 發(fā)表于 2009-9-24 20:39:33 | 只看該作者
本帖最后由 changyongid 于 2009-9-24 20:43 編輯

如果文件不存在,touch則以這個(gè)名字創(chuàng )建一個(gè)普通文件。
這個(gè)可以去試一下。我還記得我用touch創(chuàng )建的第一個(gè)文件是.vimrc。當時(shí)是配置vim的時(shí)候。很早了,記得當時(shí)在~/下怎么也找不到.vimrc,很急,后來(lái)別人告訴我touch一下。果然,用了這個(gè)命令之后就有了,我當時(shí)很奇怪,F在想起來(lái),真是有些可笑……

當然,touch可以指定特定的時(shí)間。這個(gè)是比較重要的。來(lái)試一下吧。
----------------------
[changyongid@localhost test]$ touch  -t 01061803 aaa
[changyongid@localhost test]$ ll
-rw-rw-r--   1 changyongid changyongid    0 2009-01-06 aaa
----------------------
從上面可以看到,創(chuàng )建的文件為空。
注意一下它的時(shí)間。我指定的是01月06日18分03秒。默認為今年。
如果我在它前面再加上02,會(huì )怎么樣呢?
----------------------
[changyongid@localhost test]$ touch  -t 0201061803 aaa
[changyongid@localhost test]$ ll
-rw-rw-r--   1 changyongid changyongid    0 2002-01-06 aaa
----------------------
看到了吧。變成02年了。

再看
--------------------
[changyongid@localhost test]$ touch -d "6:03pm 02/06/2000" aaa
[changyongid@localhost test]$ ll aaa
-rw-rw-r-- 1 changyongid changyongid 0 2000-02-06 aaa
----------------------
這是用-d來(lái)指定。重點(diǎn)體會(huì )一下。
關(guān)于這里的時(shí)間格式,可以參考date命令。感覺(jué)有點(diǎn)麻煩。
94
 樓主| 發(fā)表于 2009-9-24 20:48:58 | 只看該作者
再來(lái)看下-r選項。即把目標文件指定跟另一個(gè)文件一樣的時(shí)間。
-------------------------------------------
[changyongid@localhost test]$ ll
總計 32
drwxrwxr-x   8 changyongid changyongid 4096 09-24 20:34 2410
-rw-rw-r--   1 changyongid changyongid    0 2002-01-06 aaa
-------------------------------------------
[changyongid@localhost test]$ touch -r 2410/ aaa
[changyongid@localhost test]$ ll
總計 32
drwxrwxr-x   8 changyongid changyongid 4096 09-24 20:34 2410
-rw-rw-r--   1 changyongid changyongid    0 09-24 20:34 aaa
這樣操作之后,aaa就跟2410一樣的時(shí)間了。注意,2410是個(gè)目錄。所以這里無(wú)論是指定目錄還是普通文件都是可行的。

ps:那么從哪里可以看出2410是個(gè)目錄呢?
我從終端下,他的顏色就可以直觀(guān)的表現出來(lái)。
貼出來(lái)以后,你可以看到最左邊的 “d”了么?那個(gè)就表示文件的屬性。
在UNIX Linux下,一切皆為文件。不管是目錄、普通文件、設備等等,對于我們用戶(hù)來(lái)說(shuō),它們都是文件。這個(gè)可以看看UNIX環(huán)境高級編程。
95
 樓主| 發(fā)表于 2009-9-24 20:52:19 | 只看該作者
本帖最后由 changyongid 于 2009-9-24 21:07 編輯

tree 也是一個(gè)很實(shí)用的命令。有時(shí)候我們想了解一個(gè)目錄下的所有文件,并希望以資源管理器的樹(shù)形視圖方式顯示文件之間的結構,那么就可以用tree命令來(lái)實(shí)現這個(gè)功能。

help一看,這個(gè)命令的參數還真是多呀!不過(guò)取其中的幾個(gè)了解一下,就夠我們使的了。
  1. tree --help
  2. usage: tree [-adfghilnpqrstuvxACDFNS] [-H baseHREF] [-T title ] [-L level [-R]]
  3.         [-P pattern] [-I pattern] [-o filename] [--version] [--help] [--inodes]
  4.         [--device] [--noreport] [--nolinks] [--dirsfirst] [--charset charset]
  5.         [--filelimit #] []
  6.   -a         列出所有文件
  7.   -d          只列出目錄
  8.   -l          如遇到符號鏈接,則直接列出其所指向的目錄
  9.   -f           顯示完整路徑
  10.   -i            不以階梯狀列出
  11.   -p           列出屬性
  12.   -u          列出屬主或UID
  13.   -g           列出所屬組或組id
  14.   -s            以字節形式列出文件大小
  15.   -h           以人性化閱讀方式列出
  16.   -D            列出修改時(shí)間
  17.   -t            以修改時(shí)間排序
  18.   -x            Stay on current filesystem only.將范圍局限在現在的文件性統中。比如把home放到別的分區里,則列出/時(shí)不會(huì )列出它下面的文件。
  19.   -L level      指定深度(層數)。這個(gè)很有用。一般列出某個(gè)目錄下,文件太多了。而我們只需要看當前層目錄下或最近兩層的。就用它來(lái)指定。
  20.   -o file        輸出到指定文件。有了這個(gè)就不用重定向了。
  21.   --inodes      列出每個(gè)文件的索引點(diǎn)節
  22.   --device      列出其所屬的設備的設備號

復制代碼


先列出這么多吧。。。其實(shí)看起來(lái)命令多,但使用起來(lái)真的很簡(jiǎn)單。上面列出的參數我幾乎都試了一遍,確實(shí)還是挺有用的。
太簡(jiǎn)單了,我就不麻煩舉列了。
你可以 tree -L -1看一下效果。再逐個(gè)添加別的參數。
96
發(fā)表于 2009-10-14 09:26:34 | 只看該作者
學(xué)習是永恒的!
97
發(fā)表于 2009-10-16 18:37:05 | 只看該作者
很久沒(méi)更新了。
98
 樓主| 發(fā)表于 2009-10-20 17:20:14 | 只看該作者
樓上很仔細嘛。。謝謝一直掛念著(zhù)。。
99
 樓主| 發(fā)表于 2009-10-20 17:22:12 | 只看該作者
本帖最后由 changyongid 于 2009-10-20 17:52 編輯

[changyongid@localhost vacs]$ ln --help
用法:ln [選項]... [-T] 目標 鏈接名稱(chēng) (第一種格式)  為“目標”創(chuàng )建一個(gè)名為“鏈接名稱(chēng)”的鏈接
  或:ln [選項]... 目標               (第二種格式)           在當前目錄創(chuàng )建一個(gè)指向“目標”的鏈接
  或:ln [選項]... 目標... 目錄       (第三種格式)        三、四兩種格式 :為目錄里的每個(gè)“目標”創(chuàng )建鏈接
  或:ln [選項]... -t 目錄 目標...    (第四種格式)


默認不加“選項”的時(shí)候是創(chuàng )建硬鏈接。如果要創(chuàng )建符號鏈接,則需要加上 “--symbolic”
如果創(chuàng )建硬鏈接,則命令行中的“目標”必須存在。符號鏈接能夠指向任意的文本,
長(cháng)選項必須用的參數在使用短選項時(shí)也是必需的。

      --backup[=CONTROL]      為存在的目標文件創(chuàng )建備份
  -b                                         --backup,但是不接受參數
  -d, -F, --directory                  建立目錄的硬鏈接
  -f, --force                            強行建立文件或目錄的鏈接,不論文件或目錄是否存在。
  -n, --no-dereference            如果目的地是一個(gè)鏈接至某目錄的符號鏈接,會(huì )將
                                             該符號鏈接當作普通文件處理,先將該已存在的
                                             鏈接備份或刪除
  -i, --interactive                   確認是否刪除目的地文件
  -s, --symbolic                       創(chuàng )建符號鏈接而不是硬鏈接
  -S, --suffix=SUFFIX                  使用-b參數備份目標文件后,備份文件的字毛會(huì )被加上一個(gè)后綴。默認的是“~”,可以通過(guò)-S來(lái)改變它
  -t, --target-directory=DIRECTORY  指定創(chuàng )建鏈接的路徑

備份文件的后綴為“~”,除非以 --suffix 選項或是 SIMPLE_BACKUP_SUFFIX
環(huán)境變量指定。版本控制的方式可透過(guò) --backup 選項或 VERSION_CONTROL 環(huán)境
變量來(lái)選擇。以下是可用的變量值:

  none, off       不會(huì )進(jìn)行備份 (即使使用了 --backup 選項)
  numbered, t     備份文件會(huì )加上數字
  existing, nil   若有數字的備份文件已經(jīng)存在則使用數字,否則使用普通方式備份
  simple, never   永遠使用普通方式備份

說(shuō)明:這個(gè)命令是經(jīng)常用到的。有人說(shuō)鏈接跟windows下的快捷方式差不多。但我覺(jué)得還是千萬(wàn)不要以windows的思維方式來(lái)理解。要完全的理解ln,需要對Linux里的文件系統有一定的了解。這里我引用網(wǎng)上的一些解釋?zhuān)ê谏糠譃樽约杭拥囊稽c(diǎn)理解):
每個(gè)存儲設備或存儲設備的分區(存儲設備是硬盤(pán)、軟盤(pán)、U盤(pán) ... ...)被格式化為文件系統后,應該有兩部份,一部份是inode,另一部份是Block,Block是用來(lái)存儲數據用的。而inode呢,就是用來(lái)存儲這些數據的信息,這些信息包括文件大小、屬主、歸屬的用戶(hù)組、讀寫(xiě)權限等。inode為每個(gè)文件進(jìn)行信息索引,所以就有了inode的數值。操作系統根據指令,能通過(guò)inode值最快的找到相對應的文件。做個(gè)比喻,比如一本書(shū),存儲設備或分區就相當于這本書(shū),Block相當于書(shū)中的每一頁(yè),inode 就相當于這本書(shū)前面的目錄,一本書(shū)有很多的內容,如果想查找某部份的內容,我們可以先查目錄,通過(guò)目錄能最快的找到我們想要看的內容。雖然不太恰當,但還是比較形象。

在Linux 文件系統中,inode值相同的文件是硬鏈接文件,也就是說(shuō),不同的文件名,inode可能是相同的,一個(gè)inode值可以對應多個(gè)文件。理解鏈接文件并不難,看看例子就會(huì )了。在Linux中,鏈接文件是通過(guò)ln工具來(lái)創(chuàng )建的。 (那么創(chuàng )建硬鏈接,即是創(chuàng )建一個(gè)inode,它也指向某個(gè)文件。這樣,對于這個(gè)文件,同時(shí)就有兩個(gè)inode來(lái)指向它。刪除某個(gè)文件時(shí),即刪除了它對應的inode,如果刪除了兩上inode中的一個(gè),文件還是存在的。因為還有一個(gè)inode指向它。硬鏈接只能鏈接文件,而不能鏈接目錄。且不能鏈接別的文件系統里的文件(即不同分區的文件)

軟鏈接也叫符號鏈接,他和硬鏈接有所不同,軟鏈接文件只是其源文件的一個(gè)標記。當我們刪除了源文件后,鏈接文件不能獨立存在,雖然仍保留文件名,但我們卻不能查看軟鏈接文件的內容了
由上面的解釋可以了解到,鏈接好比一個(gè)指針一樣,我們通過(guò)它來(lái)訪(fǎng)問(wèn)文件或目錄,修改它也實(shí)際上就修改了那個(gè)文件或目錄

100
 樓主| 發(fā)表于 2009-10-20 18:01:53 | 只看該作者
我們來(lái)試幾個(gè)例子吧。。。
[changyongid@localhost ~]$ mkdir ttt              創(chuàng )建一個(gè)測試文件夾
[changyongid@localhost ~]$ ln -s ttt/ ./aaa     為其創(chuàng )建一個(gè)符號鏈接
[changyongid@localhost ~]$ ll aaa
lrwxrwxrwx 1 changyongid changyongid 4 10-20 17:59 aaa -> ttt/
[changyongid@localhost ~]$ rm aaa/                試著(zhù)這樣來(lái)刪除它,是行不通的
rm: 無(wú)法刪除 “aaa/”: 是一個(gè)目錄
[changyongid@localhost ~]$ rm -rf aaa/            如果強制呢???執行完后,兩者還是存在
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页