以下の2つのコードを使用しています。
ls -lap . | grep -v "/$"
ls -lap . | grep -v "/"
場合によっては、2つの異なる結果を提供します。この文脈で$はどういう意味ですか?
答え1
行の終わりを表す正規表現です。このコマンドは、出力からディレクトリを除外するために使用されます。出力に行末を除くすべての位置に条件が含まれるかどうかはわかりませんが、実際にそのような場合であれば、両方のコマンドの出力は次のようになりますls
。同じではありません。/
ls -lap .
/
次の例をご覧ください。
$ ls -lap .
total 12
drwxr-xr-x 3 jesse_b jesse_b 4096 Apr 13 10:00 ./
drwxr-xr-x 12 jesse_b jesse_b 4096 Apr 13 09:59 ../
drwxr-xr-x 2 jesse_b jesse_b 4096 Apr 13 10:00 bar/
-rw-r--r-- 1 jesse_b jesse_b 0 Apr 13 09:59 foo
-rw-r--r-- 1 jesse_b jesse_b 0 Apr 13 10:00 oof
$ ls -lap . | grep -v "/$"
total 12
-rw-r--r-- 1 jesse_b jesse_b 0 Apr 13 09:59 foo
-rw-r--r-- 1 jesse_b jesse_b 0 Apr 13 10:00 oof
$ ls -lap . | grep -v "o$"
total 12
drwxr-xr-x 3 jesse_b jesse_b 4096 Apr 13 10:00 ./
drwxr-xr-x 12 jesse_b jesse_b 4096 Apr 13 09:59 ../
drwxr-xr-x 2 jesse_b jesse_b 4096 Apr 13 10:00 bar/
-rw-r--r-- 1 jesse_b jesse_b 0 Apr 13 10:00 oof
$ ls -lap . | grep -v "o"
drwxr-xr-x 3 jesse_b jesse_b 4096 Apr 13 10:00 ./
drwxr-xr-x 12 jesse_b jesse_b 4096 Apr 13 09:59 ../
drwxr-xr-x 2 jesse_b jesse_b 4096 Apr 13 10:00 bar/