こんにちは、山田ハヤオです。以前 緊急でこんな記事を出しました。ごめんなさい。
さて、Linuxerの方ならほぼ必ずターミナルを使うと思います。
ターミナルを使う上で必ずといってもいいほど使うコマンドがcdコマンドです。
「cd」って「current directory」かと思ったら「change directory」なんですね
cdコマンドを使ってると間違って違うディレクトリに移動してしまうことがたまにあります。
そんなときの簡単な対処方法とシェルスクリプトでの応用方法です。
前のディレクトリに戻る
cd -
これだけです()そうすると前にいたディレクトリ名が表示されて戻ることができます。
ターミナルで自分で作業するだけならこれで十分ですね
シェルスクリプトで使うには
シェルスクリプトでも上と同じように戻ることができます。
しかし、前にいたディレクトリのパスが表示されてしまうので、その表示を破棄します。
cd - > /dev/null
一気に面倒になりました()
シェルスクリプトで簡単に使うには
実は前にいたディレクトリのパスというのはOLDPWD
という変数に格納されています。
現在いるパスはPWD
変数か、pwd
コマンドで確認することができます。
この環境変数を利用しましょう。
cd "${OLDPWD}"
シェルスクリプトではこっちを利用したほうがきれいです。
シェルスクリプトでcdコマンドを多用したくない
シェルスクリプトでcdコマンドを利用すると、自分が今どこにいるのかを常に意識して書かないといけません。(移植性も下がってしまいますし行数も増えてしまいます。)
そんなときは別のプロセスでディレクトリを移動して処理をすると一時的に移動することができます。
()の中にコマンドを記述すると別で処理をしてくれます。
#!/usr/bin/env bash
echo "ホームディレクトリに移動"
cd "${HOME}"
printf "現在のディレクトリ: %s\n" "$(pwd)"
(
echo "別のプロセスでcdを実行"
cd "/usr"
printf "現在のディレクトリ: %s\n" "$(pwd)"
)
echo "元に戻ってくる"
printf "現在のディレクトリ: %s\n" "$(pwd)"
()
内でディレクトリの移動を行っても影響されないことが解ると思います。
この手法はAlter Linuxのソースコードでもちょこちょこ出てきます()
Alter Linuxのソースコード↓
最後に
間違ってる部分があったらコメントで教えてください。正直自分でも不安です。
The post シェルで前にいたディレクトリに戻る first appeared on FascodeNetwork Blog.