很久很久以前,在觀看 sorrycc 的視頻時,發現他使用了一個非常巧妙的命令:cdtmp
,執行該命令後,shell 將跳轉到 /tmp/sorrycc-xxxxxx
文件夾下,覺得非常好用。
自己也使用了相當長的時間,真的非常好用,有很多場景都需要使用:
想要寫一個驗證想法的小案例,或者驗證一下某個函數的用途,或者克隆一下某個倉庫查看相關內容。直接使用 cdtmp
打開一個臨時文件夾,在裡面直接做你想做的事情,而且完全不需要擔心這些文件後續的清理問題,對於 Windows 來說,使用清理軟件清理垃圾時一般都會刪除臨時文件,Linux 下也有相應的清除 tmp 目錄的邏輯和方法。
簡單介紹一下這個命令,給出 zsh 中的實現以及一個 Windows 下 PowerShell
中具有相同功能的函數。
命令的作用就是:在系統的臨時目錄創建一個文件夾然後跳轉過去。
zsh#
sorrycc 提到的 cdtmp
:
cdtmp,進入到一個隨機創建的臨時目錄,簡單好用,http://frantic.im/cdtmp
-- https://github.com/sorrycc/zaobao/issues/2
原文 中給出了 zsh 中的實現的鏈接。
將下面這行代碼添加到你的 .zshrc
文件即可:
alias cdtmp='cd `mktemp -d /tmp/artin-XXXXXX`'
這條命令會在系統臨時目錄下創建一個名為 artin-XXXXXX
的文件夾,然後跳轉過去。
PowerShell#
我使用的是 PowerShell Core 7,如果你無法使用的話可以自己改改。
在 PowerShell 中單靠 Set-Alias
就無法實現這樣的效果了(或者實現比較複雜),但可以寫成一個函數,也非常簡單,可以直接在 PowerShell 中執行。
不過 PowerShell
只有 New-TemporaryFile
這個方法,不能直接通過一個命令創建文件夾。
所以我們要使用常規一點的方法來實現,也就是拼接要創建的 temp 文件夾名,然後跳轉過去。
function cdtmp {
$parent = [System.IO.Path]::GetTempPath()
$name = 'artin-' + $([System.IO.Path]::GetRandomFileName()).Split(".")[0]
New-Item -ItemType Directory -Path (Join-Path $parent $name)
cd (Join-Path $parent $name)
}
直接將這段代碼放入 $PROFILE
文件中就好了。