検索コマンドを特定の場所に移動して検索するにはどうすればよいですか? [コピー]

検索コマンドを特定の場所に移動して検索するにはどうすればよいですか? [コピー]

C ++プロジェクトのヘッダーを準備していて、他のfindヘッダーファイルをインポートするためにインクルードオプションを使用することにしました。正しいパスを一覧表示するには、次のように使用する必要がありますcd

cd 'PATH/TO/HEADER/FILE'
find ../../../

これで、ヘッダーファイルに貼り付けをコピーするヘッダーディレクトリのリストを取得できます。その後、次のことを行う必要があります。

cd 'PATH/TO/MY/PROJECT'

プロジェクトパスに戻ります。

頻繁に使用するのは不便ですが、そのディレクトリに自動的に「ジャンプ」して検索するようにコマンドをcd発行できますか?findマニュアルページを読みましたが、わかりません。

find PATH/TO/HEADER/FILE意図的にパス名が../../../

ベストアンサー1

サブシェルで実行できますcdfind

(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。アクセスするには拡張機能を使用してください。cdzshcdautopushdcd +2cd -2$dirstack~2~+2~-2

おすすめ記事