👨‍💻

日付入りディレクトリ作成と同時に cd でディレクトリ移動させたい

2022/08/14に公開

TL; DR(概要)

やりたいこと

私ですが、「Desktop/Temp」ディレクトリ配下に、毎日、日付が入った作業ディレクトリを切ってそこに移動。作業用ディレクトリとしつつ、日報として作業内容を振り返るのに利用しています。

が、history使って毎回同じコマンドでやりたいので色々と調べてみました。

結論

以下コマンドを叩くと、ディレクトリ作成と同時にカレントディレクトリ移動できます。

mkdir ~/Desktop/Temp/`date +%Y-%m-%d` && cd  "$_"
Detail
mkdir ~/Desktop/Temp/`date +%Y-%m-%d` && cd  "$_"

/Users/hotaka-noda/Desktop/Temp/2022-08-14

pwd

/Users/hotaka-noda/Desktop/Temp/2022-08-14

cd ..
ls

2022-08-14

ScreenShot

解説

今行っている作業を分解する

作業を分解すると以下となります
(1)「Desktop/Temp」に移動して
(2) 今日は何日なのかを考えて
(3) (2)で考えた、ディレクトリを作成して
(4) 作成したディレクトリへ移動する

やりたいこと

どこのディレクトリであっても、history使って毎回同じコマンドでやりたい

注意事項

dateコマンドのOS差異

MacOSはBSD Unixベースであり、GUN Linuxとコマンドの挙動が若干異なり、dateコマンドはオプション指定方法が若干異なります。
そのため、サーバレスアーキテクチャ(AWS Lambda , Google Cloud Cloud Functions)に移植する際は注意が必要です。

今回は表示させてフォーマットに入れる動作となります、差異がないため問題ないです。
時刻計算する際は差異があります。
(過去にハマりました。)

補足

「~」とは?

ホームディレクトリのパスを参照します。

Detail
cd ~ && pwd

/Users/hotaka-noda

※「/Users/ユーザー名」を返します。

特殊変数「$_」とは?

利用している特殊変数「$_」は、直前に利用していたコマンドの最後の引数を参照します。

Detail
ls | grep 2022

2022-08-11
2022-08-12
2022-08-13
2022-08-14

echo $_

2022

利用環境

sw_vers

ProductName: macOS
ProductVersion: 12.5
BuildVersion: 21G72

参考

https://zenn.dev/captain_blue/articles/using-the-date-on-mac-and-linux

Discussion