Linux 系統區分英文字符的大小寫。好比,myfile, Myfile 和 myFILE表示的是三個不一樣的文件。一樣,用戶密碼和登陸名也須要區分大小寫(這裏沿用了Unix 和 C 語言的命名規則)。命名目錄和命名文件的規則是相同的。除非有特別的緣由,不然用戶建立的文件和目錄名要使用小寫字符。大多數的 Linux 命令也使用小寫字符。 html
Linux 系統下的文件名長度最多可到256個字符。一般狀況下,文件名的字符包括:字母、數字、"."(點)、"_"(下劃線)和"-"(連字符)。Linux 容許在文件名中使用除上述符號以外的其它符號, 但並不建議用戶這樣作。 有些轉意字符 (即該字符被系統借用,表示某種特殊含義) 在Linux 的命令解釋器(shell)中有特殊的含義(shell 相似於 DOS下的命令處理器 COMMAND.COM)。這樣的轉意字符有:"?"(問號),"*"(星號), " "(空格), "$"(貨幣符), "&", 擴號等等。在文件名中應儘可能避免使用這些字符。文件名中能夠有" "(空格),但建議用戶用"_"(下劃線)來替代。
"/" 既可表明目錄樹的根也可做爲路徑名中的分隔符(相似DOS下的"/),所以"/"不能出如今文件名中。 shell
和DOS同樣,"." 和 ".." 分別用來表示"當前目錄"和"父目錄", 所以它們也不能做爲文件名。 spa
正如DOS 中同樣,咱們不能將文件命名爲 . 或者 .. (點或者雙點)——它們分別表明當前目錄和當前目錄的父目錄(上一級目錄)。這跟DOS中是徹底一致的。 命令行
下面列出了一些轉意字符及其意義:
* = 用於匹配任意長度大於等於零的字符序列。以 . (點)開頭的文件名除外。
? = 用於匹配任意單個字符
[abC1] = 用於匹配枚舉集合中任意單個字符。比例中,集合由‘a’,‘b’,‘c’,‘1’組成。
[a-z] = 用於匹配任意小字字母
[A-F] = 用於匹配任意大寫字母
[0-9] = 用於匹配任意個位數字
[a-zA-Z0-9] = 用於匹配任意字母(大小寫)或者數字。 htm
/ (反斜線)也是一個特殊的字符。它屏蔽後繼特殊字母的特殊含義(轉意),使該字符僅取其符號所表明的字面意義。 ip
例: 下面的命令會列出當前目錄中除了文件名以 . 開頭的文件以外的任何文件。 it
ls * 登錄
與此等價的命令是ls 或者 dir (不須要後跟 「*」)。 文件名以 . 開頭的文件不被列出是由於 「.」是文件名的首字符,它並不與「*」匹配。咱們能夠把文件名以 . 開頭的文件等價地理解成DOS中隱藏文件。使用ls –a (帶 all 選項的ls 命令)或者 ls .* 命令來查看這些「點」文件。「點」文件在用戶的home目錄中很常見。它們一般是用戶級的配置文件。 擴展
如下命令可列出當前目錄中文件名含 . 的任何文件 (文件名以點開頭的除外)。 配置
ls *.*
如下命令可列出當前目錄中文件名含兩個點的任何文件(文件名以點開頭的除外)。
ls *.*.*
請注意Linux中沒有與DOS中文件擴展名相應的概念,可是你可使用擴展名。例如,一個文件能夠命名爲 my_text.txt.zip 。另有一些DOS中的命名特點在Linux中是徹底找不到的(比方說Micro~1.doc )。
如下的命令會找出擴展名爲「htm」後再跟任意一個字符的文件:
locate *.htm?
如下命令可列出當前目錄中全部文件名以a,b或者任意大寫字母開頭的文件:
ls [abA-Z]*
如下命令可列出當前目錄中全部文件名以a開頭,以n結尾的文件:
ls a*n
命令行自動完成是一個有用的功能——使用[Tab]鍵能夠極大的節約時間,使處理複雜的長文件名變得輕鬆。例如,使用自動完成的功能,能夠極大的減化輸入如下這個長文件名的工做。
dir Eurosong/ 2000/ Olson/ Brothers/ -/ Fly/ on/ the/ wings/ of/ love/ /(denmark/).mp3
我只要輸入
dir Eu<Tab>
若是沒有其餘文件的文件名以Eu 開頭,輸入<Tab>以後,系統會自動輸入文件名的其他部分。
若是還有其餘文件的文件名也以Eu開頭,咱們能夠查看一下可能的選擇(系統會列出),進一步輸入文件名中的下一兩個字符,從而使文件的選擇惟一化,系統的自動寫成功能就能夠啓動完成整個長文件名的輸入了。文件名中的反斜線做用在於提示系統其後繼的字符「空格」僅取其字面意義,即,文件名中包含的確實是空格。
文件名中的有「怪」字符怎麼辦?大部分問題能夠經過自動完成功能解決。另外,處理文件名中含有轉意字符的文件,咱們可使用成對的‘’(單引號)。因爲這些特殊的轉意字符被單引號引用,命令解釋器不會試圖去解釋其特殊意義。例如,給一個名爲my file*的文件改名(文件名中含空格和*), 咱們可使用:
mv 'my file*' filename_without_weird_characters.txt
請注意我使用了一對‘’號 (單引號)。使用成對的「」(雙引號)引用一般沒有使用‘’有效。若是你使用「」號(雙引號), 部份轉意字符可能會被命令解釋器加以解釋(這就意味着它們可能被轉意,而不是保持字面意義)。
跟從UNIX的傳統,在Linux上,建立文件時,咱們能夠在文件名中可使用幾乎任何字符,包括不可打印字符(控制字符)。可是這狀況很是少見。若是你在遇到文件名使用了這些字符,你可能會感受很異樣。我一般會在適當的位置使用一個轉意字符*對這種文件進行重命名。我會先使用ls命令確認我要重命名的文件的文件名,而後對這個文件進行改名(使用mv 命令):
ls –l myfile*y.html
mv myfile*y.html myfile.html
(此例中我假定非標準字符位於字母e和y之間)
這裏舉一個關於在文件名中使用很是規字符的極端的例子: 建立一個文件名以短橫線 - 開頭的文件,再等它刪除。 用常規的刪除命令彷佛沒有辦法(由於短橫錢一般是用來引導命令選項的)。例如:
dir > -junk
以上命令將建立一個以-junk爲名的文件(跟DOS相似,符號 > 將dir 命令的輸出重定向到一個名爲「-junk」的文件。常規的刪除文件命令沒法把這個文件刪除。咱們須要使用:
rm ./-junk
文件名前的./ 表示當前目錄。在此其目的是避免文件名把的首字符 - 被命令解釋器看成rm命令的選項引導。事實上沒有必要在文件名中使用這些特殊字符。聽從傳統的命名規則,不會過多地使事情複雜化。
除了使用自動完成,單引號,雙引號以外,咱們也能夠利用 / (反斜線) 對文件名中包含了很是規字符的文件進行操做。反斜線的做用在於屏蔽其後繼字符的特殊意義。例如,我可使用以下命令建立一個以 *?[ 爲文件名的文件:
touch /*/?/[
(touch 命令建立一個空文件。若是同名文件已存在,則改變該文件最後更新的日期/時間)。