C ++プロジェクトのヘッダーを準備していて、他のfind
ヘッダーファイルをインポートするためにインクルードオプションを使用することにしました。正しいパスを一覧表示するには、次のように使用する必要がありますcd
。
cd 'PATH/TO/HEADER/FILE'
find ../../../
これで、ヘッダーファイルに貼り付けをコピーするヘッダーディレクトリのリストを取得できます。その後、次のことを行う必要があります。
cd 'PATH/TO/MY/PROJECT'
プロジェクトパスに戻ります。
頻繁に使用するのは不便ですが、そのディレクトリに自動的に「ジャンプ」して検索するようにコマンドをcd
発行できますか?find
マニュアルページを読みましたが、わかりません。
find PATH/TO/HEADER/FILE
意図的にパス名が../../../
。
答え1
サブシェルで実行できますcd
。find
(cd 'PATH/TO/HEADER/FILE' && find ../../..)
このようにして、サブシェルの現在の作業ディレクトリのみが影響を受けます。
関数またはスクリプトで作成できます。ここではGNUが使用されますrealpath
。
findfrom() (
dir=${1?}; shift
reldir=$(realpath --relative-to="$dir" .) || exit
cd -- "$dir" && find "$reldir" "$@"
)
最新バージョンのGNUには、コマンドを実行する前に作業ディレクトリを変更するオプションenv
もあります。-C
--chdir
env -C PATH/TO/HEADER/FILE find ../../..
cd -
また、最後の成功以前にあったディレクトリにいつでも戻ることができますcd
。
cshやKornなどのシェルは作業ディレクトリスタックもサポートしています。では、オプションを使用してスタックを自動的に使用し、...を使用してスタックをナビゲートしたり、配列またはpushd
チルダを使用したりできますpopd
。アクセスするには拡張機能を使用してください。cd
zsh
cd
autopushd
cd +2
cd -2
$dirstack
~2
~+2
~-2