私はこれがどのように機能するのか少し混乱していますdirs
。文書には次のように記載されています。
目次
引数がない場合は、ディレクトリスタックの内容を印刷します。コマンドを使用してこのスタックにディレクトリを追加するか、
pushd
コマンドcd
をpopd
使用してディレクトリを削除します。
Q1.私はpopd
Norを使用しませんが、私が訪問したディレクトリを追跡しているpushd
ことがわかりました。dirs
cd
次へ追加、スタックのディレクトリを削除しない)
質問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
? (-v
1行に1つずつ一覧表示する必要があるようです。)
なぜできないのですdirs -v | head
か?またはdirs -v | less
? (またはdirs | tac
qqxが提案したように)
答え4
sort -r
行を降順に並べ替える場合は、最初の文字から始めて各行の終わりに移動します。 「アルファベット順」のソートが必要な場合は、ソートキーを2番目のフィールドに制限する必要があります。
dirs | sort -rk2,2
これは、(r)逆順を指定して、(k)eyをフィールド2(2)からフィールド(2)にソートします。デフォルトでは、フィールドはスペースで区切られます。それ以外の場合は、指定された区切り文字を使用できます-t
。
一方、数字で並べ替えるには、次のようにします。
dirs | sort -rkn1,1