Zsh:ディレクトリの逆順

Zsh:ディレクトリの逆順

私はこれがどのように機能するのか少し混乱していますdirs。文書には次のように記載されています。

目次

引数がない場合は、ディレクトリスタックの内容を印刷します。コマンドを使用してこのスタックにディレクトリを追加するか、pushdコマンドcdpopd使用してディレクトリを削除します。

Q1.私はpopdNorを使用しませんが、私が訪問したディレクトリを追跡しているpushdことがわかりました。dirscd 次へ追加、スタックのディレクトリを削除しない)

質問2長いセッションでは、通常は長いディレクトリのリストがcd印刷dirsされますが、このリストは最後のディレクトリを最初に印刷し、最後のディレクトリで終わります。したがって、長いリストがあると、画面がスクロールして最新のディレクトリのリストを簡単に見ることができません。ディレクトリ(通常私が最も興味を持っているディレクトリ)。

ディレクトリリストを逆順に印刷するには?

試しましたが、dirs | sort -rアイテムが正しくソートされていません。たとえば、次のようになります。

20 /foo20/bar
2  /foo2/bar
19 ...
18
...
16
11
10
1
0

ソートされていないソースは次のとおりです。

1 /foo/bar
2 /foo2/bar
3  ...
..  
9
10
11
..
20
21
..
30

答え1

sortデフォルトでは、ソートはASCII値に基づいているため、数値が異なる数値は正しくソートされません。この-nオプションを使用して、先行数値を基準にソートするように指示できます。

dirs -v | sort -nr

または の出力がdirsすでにソートされているが逆順に変更したい場合は、次のtacコマンド (reverse cat) を使用できます。

dirs -p | tac

答え2

これを行い、[表示]cd +Tabクリックして最近訪問したディレクトリのリストに移動します。最新のディレクトリが一番上に表示されます。

答え3

A1

活性化しましたAUTO_PUSHDか?

setopt autopushdまたはを使用して有効にすることができますset -N

これがcdディレクトリスタックに追加される理由です。

A2

走っているようですがdirs -v、そうですかdirs? (-v1行に1つずつ一覧表示する必要があるようです。)

なぜできないのですdirs -v | headか?またはdirs -v | less? (またはdirs | tacqqxが提案したように)

答え4

sort -r行を降順に並べ替える場合は、最初の文字から始めて各行の終わりに移動します。 「アルファベット順」のソートが必要な場合は、ソートキーを2番目のフィールドに制限する必要があります。

dirs | sort -rk2,2

これは、(r)逆順を指定して、(k)eyをフィールド2(2)からフィールド(2)にソートします。デフォルトでは、フィールドはスペースで区切られます。それ以外の場合は、指定された区切り文字を使用できます-t

一方、数字で並べ替えるには、次のようにします。

dirs | sort -rkn1,1

関連情報