-1

UNIX シェル (特に Ubuntu) でディレクトリを ls コマンドから出力された x 番目のディレクトリに変更する方法はありますか? 複数の方法でディレクトリをソートできることは知っていますが、ls からの出力を使用して x 番目のディレクトリを取得しますか?

シェルの例:

$ ls
$ first_dir second_dir third_really_long_and_complex_dir

ここで、3 (または適切な配列形式の 2) を渡して third_really_long_and_complex_dir に移動します。単純にコピーして貼り付けることができることはわかっていますが、既にキーボードを使用している場合は、「cdls 2」などのインデックスを知っていれば、そのようなものを入力する方が簡単です。

4

1 に答える 1

0

対話型セッションでの主な問題はcd、通常、コマンド プロンプトを処理しているシェルの現在のディレクトリを変更する必要があることです。これは、サブシェル (スクリプトなど) を起動しても役に立たないことを意味しますcd。呼び出しは親シェルに影響を与えないためです。

ただし、使用しているシェルによっては、これを行う関数を定義できる場合があります。たとえば、bash の場合:

function cdls() {
    # Save the current state of the nullglob option
    SHOPT=`shopt -p nullglob`

    # Make sure that */ expands to nothing when no directories are present
    shopt -s nullglob

    # Get a list of directories
    DIRS=(*/)

    # Restore the nullblob option state
    $SHOPT

    # cd using a zero-based index
    cd "${DIRS[$1]}"
}

この例では、いくつかの理由からls、出力の解析を絶対に拒否していることに注意してください。代わりに、シェル自体にディレクトリのリスト (またはディレクトリへのリンク) を取得させます...

とは言っても、この関数 (またはこの効果に関連するもの) を使用rmすることは、間違ったディレクトリに変更した後に使用するなど、非常に混乱するように自分自身を設定するための非常に良い方法であると思います。ファイル名の自動補完は、数えることを強制しなくても、すでに十分に危険です...

于 2012-11-09T16:12:10.650 に答える