好久好久之前、sorrycc のビデオを見ている時、彼がとてもトリッキーなコマンド「cdtmp」を使っているのを発見しました。このコマンドを実行すると、シェルは /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
というメソッドしかなく、直接フォルダを作成することはできません。
そのため、一般的な方法を使用して作成する必要があります。つまり、作成する一時フォルダの名前を結合し、そこに移動する必要があります。
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
ファイルに直接追加してください。