立即輸入您重命名的最後一個目錄
我有一個目錄位於
/var/www/html
. 我將此目錄mv
從example1重命名為to to example2。更改名稱時如何輸入新命名的目錄?
您將如何實現這一目標?可能與
find
,mmin
,0*60
?我的目標是重命名並輸入一個操作,而不是兩個不同的操作。
理想情況下,我的目標是單行解決方案,而不需要在系統中定制任何東西。
您可以將其添加到您的 .bashrc 或 .bash_aliases 文件中(如果您的 shell 不是,則為等效文件
bash
):mvcd () { mv -- "$1" "$2" && cd -P -- "$2" }
然後,重新啟動你的 shell,然後你就可以像這樣使用這個函式了:
mvcd foo bar
假設
$2
它不是一個現有目錄,否則mv
會移入$1
它而不是它(請參閱GNU 的選項以防止這種情況發生)。-T``mv
--
標誌著選項的結束。mv "$1" "$2"
將是mv "$option_or_source" "$option_or_argument_to_first_option_or_destination"
。mv -- "$1" "$2"
保證$1
and$2
不被視為選項,即使它們的名稱以開頭,-
所以它總是被視為mv -- "$source" "$destination"
. 通常,您希望--
在命令被賦予任意參數的任何地方使用。
-P
(用於物理目錄遍歷)是為了防止cd
POSIX shell 的內置預設情況下對..
路徑組件進行特殊處理,以便它處理$2
相同的內容mv
。沒有它, incdmv foo ../bar
可以cd
cd 進入與重命名為的bar
目錄不同的目錄。mv``foo
如果您已設置
$CDPATH
(或者它在 shell 啟動時位於環境中),您還需要為該一次cd
呼叫禁用它:mvcd () { mv -- "$1" "$2" && CDPATH= cd -P -- "$2" }
一些額外的極端情況問題仍然存在:(
-
並且在某些 shell-2
中,+3
)甚至在--
. 如果要重命名foo
為-
,請使用mvcd foo ./-
代替mvcd foo -
。