次のファイルにこのテキストがありますtemp
。
-rw-r--r-- 1 root root 15776 Oct 15 2010 dnd-copy
-rw-r--r-- 1 root root 15776 Oct 15 2010 dnd-link
-rw-r--r-- 1 root root 15776 Oct 15 2010 dnd-move
-rw-r--r-- 1 root root 15776 Oct 15 2010 dnd-none
-rw-r--r-- 1 root root 15776 Oct 15 2010 dotbox
lrwxrwxrwx 1 root root 5 Oct 8 2012 cross_reverse -> cross
lrwxrwxrwx 1 root root 5 Oct 8 2012 diamond_cross -> cross
lrwxrwxrwx 1 root root 6 Oct 8 2012 dot_box_mask -> dotbox
lrwxrwxrwx 1 root root 17 Oct 8 2012 double_arrow -> sb_v_double_arrow
lrwxrwxrwx 1 root root 9 Oct 8 2012 draft_large -> right_ptr
を実行すると、egrep -v 'lrwx' temp
最後の5行が削除されます。
私はrunningを実行した後、egrep -v '->' temp
同じ5行を削除し、lrwx
同じ->
行に表示されると予想しました。
ただし、次のエラーが発生します。
[09:43 PM] ~/Desktop $ egrep -v '->' temp
egrep: invalid option -- '>'
Usage: egrep [OPTION]... PATTERN [FILE]...
Try 'egrep --help' for more information.
何の役にも立ちませんでしたegrep -v '-\>' temp
。
[09:46 PM] ~/Desktop $ egrep -v '-\>' temp
egrep: invalid option -- '\'
Usage: egrep [OPTION]... PATTERN [FILE]...
Try 'egrep --help' for more information.
egrep
(またはを使用しても同じ結果が得られますgrep -E
。)
答え1
->
grep
は先行によりオプションとして解釈されます-
。 2つの方法があります。
grep -- '->' # Explicitly declare end of arguments using --
grep '\->' # Escape -, which still evaluates to -.
記録によると、lsを解析することはシンボリックリンクを見つけるための悪い方法です。 (bashでは)次のような方が良いでしょう:
shopt -s nullglob
for file in *; do
[[ -h $file ]] || continue
printf '%s -> %s\n' "$file" "$(readlink "$file")"
done