Ini diuji di El Capitan dan di High Sierra rekan, di Terminal standar (bash).
user@hostname ~ $ man ls | grep "BU"
BUGS
user@hostname ~ $ man ls | grep "BUG"
user@hostname ~ $
user@hostname ~ $ man ls | grep "IEEE"
files in order to be compatible with the IEEE Std 1003.2 (``POSIX.2'')
The ls utility conforms to IEEE Std 1003.1-2001 (``POSIX.1'').
Untuk memperjelas: "BUGS" adalah judul bagian di halaman manual (dan berbagai lainnya). Untuk judul bagian, grepping tampaknya hanya berfungsi untuk 2 karakter pertama; ini konsisten di beberapa judul bagian yang berbeda yang kami coba. Untuk sisa konten, grep
sepertinya berfungsi seperti yang diharapkan.
Saya ssh'd ke kotak Linux rasa non-BSD (Amazon Linux) dan tampaknya tidak menunjukkan perilaku yang sama.
Apa yang terjadi di sini?
macos
terminal
command-line
open-source
man
Jonathan Merklin
sumber
sumber
man foo | grep bar
, saya mendapatkan pipa non-responsif (dan mungkin terminal kacau untuk boot). : / mandb man , yang biasanya Anda lihat di Linux, lebih masuk akal.Jawaban:
Anda dapat melihat apa yang terjadi jika Anda melihat kode mentah di dalam halaman manual. Salah satu cara untuk melakukan ini adalah dengan mengekspor halaman manual ke file dan memeriksa isinya secara langsung:
Kata "BUGS" sebenarnya terlihat seperti ini di file:
Anda akan melihat bahwa tajuk berisi karakter pemformatan, sehingga seluruh kata "BUGS" tidak ada.
Jika Anda ingin mengakses konten plaintext dari halaman manual, Anda dapat menggunakan perintah
The
-P
pilihan menetapkan pager pada unix lain dancat
akan mengabaikan informasi format, memberikan output plaintext. Namun, ini tampaknya tidak berfungsi pada macOS, jadi output membutuhkancol -b
langkah manual di dalam pipa:sumber
man ls | col -b | grep "BUGS"
) saya bisa mendapatkan apa yang saya inginkan.nroff
perintah untuk menerjemahkan itu jika Anda perlugrep
- apakah Anda keberatan jika saya memperluas ini dengan cara meneruskan perintah yang benargroff
melaluiman
?man -P cat ls | grep BUGS
bekerja identik denganman ls | grep BUGS
, keduanya tidak menghasilkan apa-apa.grotty
menghentikannya memancarkan sekuens kontrol TTY-37 atau ECMA48.