Environment-Variables

用於創建目錄的日期標記別名(在 .bashrc 中)

  • May 13, 2017

我正在嘗試在 .bashrc 中創建一個別名來為目錄添加時間戳。顯然,這對我來說效果不太好。例如:

.bashrc 下

alias testit="export testor=$(date +%d);mkdir ~/Desktop/$testor"

結果:

~> testit
mkdir: cannot create directory ‘/home/SJL/Desktop/’: File exists

現在,如果我改為執行命令

~> export testor=$(date +%d)
~> mkdir ~/Desktop/$testor

創建目錄,沒問題。

現在,如果我改為執行:

~> export testor=$(date +%d);mkdir ~/Desktop/$testor

再次,沒問題。

回到使用 .bashrc 中聲明的別名它不起作用。

這真的很好奇,因為我已經做了很多很多次類似的事情,但似乎日期格式出現了問題/錯誤。

我非常感謝您的意見。

當您創建別名時,$testor沒有值,因此別名將是

export testor=13;mkdir ~/Desktop/

您可以看到別名擴展為alias aliasname.

要解決此問題,請使用單引號而不是雙引號。這會延遲變數的擴展和命令替換,直到您實際呼叫別名。

如果您不需要$testor其他任何東西,只需使用

alias tester='mkdir "$HOME/Desktop/$(date '+%d')"'

閱讀您的評論,這也可以:

alias makedir='mkdir "$HOME/Desktop/$(date '+%d')"'
alias copyfile='cp somefile "$HOME/Desktop/$(date '+%d')"

或者,一個更複雜的 shell 函式允許將任何文件複製到文件夾(你永遠無法使用別名來做到這一點)。

copyfile () {
   destfolder="$HOME/Desktop/$(date '+%d')"
   if [ -d "$destfolder" ]; then
       mkdir "$destfolder"
   fi
   cp "$1" "$destfolder"
}

這定義了一個函式copyfile,用於將cp命令行中給出的文件複製到帶有日期戳的文件夾中。如果該文件夾不存在,則創建它。

引用自:https://unix.stackexchange.com/questions/364805