Environment-Variables
用於創建目錄的日期標記別名(在 .bashrc 中)
我正在嘗試在 .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
命令行中給出的文件複製到帶有日期戳的文件夾中。如果該文件夾不存在,則創建它。