最近在使用Ubuntu系統進行軟體開發時,遇到了一個問題。我創建了Android Studio的圖標,但無法正常使用,出現了「應用程式啟動錯誤」的提示。我在網路上搜尋了很多文章,大多數都說這是因為資料夾路徑中包含空格的原因。然而,我確認我的文件路徑並沒有包含空格,但卻包含了一個連字符“-”,即“android-studio”。為了嘗試解決問題,我決定對資料夾進行重新命名。然而,我又遇到了「bareword not allowed」的錯誤提示。
Linux下對檔案重新命名有兩種指令: mv ,rename
#mv很簡單,move檔移動
mv /dir/file1 /dir2/file1
#兩個參數,第一個是來源文件,第二個是目的地,如果第二個參數檔名不一樣,則會重新命名。當兩個參數不帶目錄,只有檔案名稱時,那就是重新命名了。這是單一文件的重命名。
rename arg1 arg2 arg3
rename才是真正的批次重命名指令。而且他是3個參數,不是2個。
arg1:舊的字串
arg2:新的字串
arg3:符合要重新命名的文件,可以使用3種通配符,*、? 、[char],*表示任意多個字符,?表示單個字符,[char]匹配char單個自定的精確字符,可以填寫任意字符,foo[a]*表示只匹配fooa開頭的文件名,如果一個文件是foobcc.txt,是不會被匹配的。
值的注意的是,此指令在不同的Linux版本也有不同,Debian一系的作業系統別有用法。舉例說明:
例如/home下有兩個檔案 abbcc.txt, addbb.txt , a.txt
我想把a替換為xxx,指令是這樣的 : rename “a” “xxx” *.txt
那麼它會先去匹配有哪些檔案需要修改,這裡凡是.txt後綴的檔案都會被匹配,如果改成? .txt則只會配對到一個文件,那就是a.txt。然後把符合的檔案中的a字元替換為xxx,注意測試時abab.txt這樣的,只會替換第一個a,有待再了解。
說到Debian一系的作業系統,例如Ubuntu,這個指令這樣使用是不對的,報錯,向下面這樣的:
Bareword “a” not allowed while “strict subs” in use at (eval 1) line 1.
經過Google之後發現有這樣的說法:
On Debian-based distros it takes a perl expression and a list of files. you need to would need to use:
rename 's/foo/foox/' *
這裡是一個perl表達式,好理解點說就是綜合了前兩個參數為1個,這樣就只需要2個參數,而非上面所說的3個參數形式。
所以在Ubuntu下執行上面舉例的重新命名時,指令是這樣的:rename 's/a/xxx/' *.txt
修改這個檔案etc/sysconfig/network這個檔案裡的主機名稱.
NETWORKING=yes
HOSTNAME=主機名稱
----------------------------------------------- -------------------------
記得重啟! ! !
----------------------------------------------- -------------------------
完整:
第一步:
#hostname oratest
第二步:
修改/etc/sysconfig/network中的hostname
第三步:
修改/etc/hosts檔案
方法/步驟
以根用戶登錄,或登入後切換到根用戶,然後在提示字元下輸入hostname指令,可以看出目前系統的主機名為localhost.localdomain。
更改/etc/sysconfig下的network文件,在提示字元下輸入vi /etc/sysconfig/network,然後將HOSTNAME後面的值改為想要設定的主機名稱。
更改/etc下的hosts文件,在提示字元下輸入vi /etc/hosts,然後將localhost.localdomain改為想要設定的主機名稱。
在提示字元下輸入reboot命令,重新啟動伺服器。
重啟完成後用hostname指令查詢系統主機名,可以看出系統主機名稱已經變更為mycomputer。 ###
以上是檔案在Linux下如何重新命名的詳細內容。更多資訊請關注PHP中文網其他相關文章!