端末で利用可能なすべてのコマンドをどのようにナビゲートする必要がありますか?現在のコマンドに記録されているすべてのコマンド/文書を参照したいと思いますman
。どうすればいいですか?
答え1
4000のマンページをリストしました。
それが問題の半分です。 OPは次のものより多くが欲しい:
]# apropos -s1
apropos what?
]# apropos -s1 -w \*
簡単なコマンドの素晴らしいリストを提供します。しかし、組み込み機能、coreutils、sbinはどうですか?
彼は単なる命令以上のものを望んでいた。
「すべてのコマンド/文書」
多くの重要な情報は、4、5、7、または8の異なるセクションにあります。
出発点はありません。コマンドのリストを含む「ユーザーマニュアル」はありません。手動はいコマンドリストとコマンドは単なるコンポーネントです。echo
そしてgcc
隣に多くの説明があります。しかし、初心者にとっては、自分の目的を理解するのはそれほど簡単ではありません。 (私の初心者の役割モデルは興味のある13歳の男の子または女の子です。)
Linuxディストリビューションの作成方法バッグ基本構造名でなければなりません。自然にいくつかのコマンドを一緒にグループ化します。そしてパッケージには常に良い説明があります。
以下は、「systemd-」で始まらないsystemdのいくつかの手動ファイルです。
systemd /usr/share/man/man5/udev.conf.5.gz
systemd /usr/share/man/man5/[email protected]
systemd /usr/share/man/man5/user.conf.d.5.gz
systemd /usr/share/man/man5/[email protected]
systemd /usr/share/man/man5/vconsole.conf.5.gz
systemd /usr/share/man/man7/
systemd /usr/share/man/man7/bootup.7.gz
systemd /usr/share/man/man7/daemon.7.gz
systemd /usr/share/man/man7/file-hierarchy.7.gz
systemd /usr/share/man/man7/hwdb.7.gz
systemd /usr/share/man/man7/kernel-command-line.7.gz
systemd /usr/share/man/man7/sd-boot.7.gz
systemd /usr/share/man/man7/udev.7.gz
systemd /usr/share/man/man8/
systemd /usr/share/man/man8/kernel-install.8.gz
そしてman1部分:
systemd /usr/share/man/man1/
systemd /usr/share/man/man1/bootctl.1.gz
systemd /usr/share/man/man1/busctl.1.gz
systemd /usr/share/man/man1/coredumpctl.1.gz
systemd /usr/share/man/man1/hostnamectl.1.gz
systemd /usr/share/man/man1/init.1.gz
systemd /usr/share/man/man1/journalctl.1.gz
systemd /usr/share/man/man1/localectl.1.gz
systemd /usr/share/man/man1/loginctl.1.gz
systemd /usr/share/man/man1/machinectl.1.gz
systemd /usr/share/man/man1/networkctl.1.gz
systemd /usr/share/man/man1/portablectl.1.gz
systemd /usr/share/man/man1/resolvectl.1.gz
systemd /usr/share/man/man1/systemctl.1.gz
systemd /usr/share/man/man1/timedatectl.1.gz
これは内容に関係なく簡単な概要です。
他の重要なソフトウェアパッケージには、coreutils、util-linux、shell、およびeditorが含まれます。
これに関連する他のコマンドについて知りたい場合は、ps
そのパッケージの他のコマンドを見てください(抜粋):
procps-ng /usr/share/man/man1/ps.1.gz
procps-ng /usr/share/man/man1/pwdx.1.gz
procps-ng /usr/share/man/man1/slabtop.1.gz
procps-ng /usr/share/man/man1/tload.1.gz
procps-ng /usr/share/man/man1/top.1.gz
説明は、「システムとそのプロセスを監視するユーティリティ」で、チーム全体に意味のあるタイトルを与えます。
平均して、それぞれ20個のマンページを持つ20個のパッケージは、4000個のマンページよりはるかに優れています。全体的な。
...そしてシステムコール
私は私が見つけたシステムコール定義と同様のことをしました(find / grepを使用)。
find -exec grep
(少し2行にフォーマットされています):
]# dlist='kernel mm fs block net ipc security'
]# find $dlist -name '*.c' -exec grep '^SYSCALL_DEFINE[0-6]' {} +
これは$dlist
オプションですが、drivers/
初めてフルギガビット(!)を使用すると、SSDは数秒間振ります。
そしてリダイレクトファイルに追加すると、> /tmp/SYSC_06
ディレクトリ、ファイル名、およびパラメータの数に基づいてgrep、ソート、およびグループ化できるリストが生成されます。いくつかの簡単な例は次のとおりです。
]# grep '(.*write.*,' SYSC_06
mm/process_vm_access.c:SYSCALL_DEFINE6(process_vm_writev, pid_t, pid,
fs/read_write.c:SYSCALL_DEFINE3(write, unsigned int, fd, const char __user *, buf,
fs/read_write.c:SYSCALL_DEFINE4(pwrite64, unsigned int, fd, const char __user *, buf,
fs/read_write.c:SYSCALL_DEFINE3(writev, unsigned long, fd, const struct iovec __user *, vec,
fs/read_write.c:SYSCALL_DEFINE5(pwritev, unsigned long, fd, const struct iovec __user *, vec,
fs/read_write.c:SYSCALL_DEFINE6(pwritev2, unsigned long, fd, const struct iovec __user *, vec,
]# grep sync SYSC_06
mm/msync.c:SYSCALL_DEFINE3(msync, unsigned long, start, size_t, len, int, flags)
fs/sync.c:SYSCALL_DEFINE0(sync)
fs/sync.c:SYSCALL_DEFINE1(syncfs, int, fd)
fs/sync.c:SYSCALL_DEFINE1(fsync, unsigned int, fd)
fs/sync.c:SYSCALL_DEFINE1(fdatasync, unsigned int, fd)
fs/sync.c:SYSCALL_DEFINE4(sync_file_range, int, fd, loff_t, offset, loff_t, nbytes,
fs/sync.c:SYSCALL_DEFINE4(sync_file_range2, int, fd, unsigned int, flags,
これはより一般的です。
fs/sync.c: sync()
fs/sync.c: syncfs(fd)
「また表示」は便利ですが、論理グループ内の「すべて表示」が必要です。
man futex
持っている:
参照: get_robust_list(2), restart_syscall(2), ...
しかし、私は次のようになります。
]# grep futex SYSC_06
kernel/futex.c:SYSCALL_DEFINE2(set_robust_list, struct robust_list_head __user *, head,
kernel/futex.c:SYSCALL_DEFINE3(get_robust_list, int, pid,
kernel/futex.c:SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val,
(行が不完全です...しかし上記を参照してください...検索も不正確です。)
restart_syscall()
「内部用」のみ - かなり誤った手がかりです。
または、最小化された形式の6つのパラメータを持つすべてのシステムコール:
]# grep FINE6 SYSC_06 |sed -n 's/(/\t\t/p'
kernel/futex.c:SYSCALL_DEFINE6 futex, u32 __user *, uaddr, int, op, u32, val,
kernel/fork.c:SYSCALL_DEFINE6 clone, unsigned long, clone_flags, unsigned long, newsp,
mm/nommu.c:SYSCALL_DEFINE6 mmap_pgoff, unsigned long, addr, unsigned long, len,
mm/mempolicy.c:SYSCALL_DEFINE6 mbind, unsigned long, start, unsigned long, len,
mm/mmap.c:SYSCALL_DEFINE6 mmap_pgoff, unsigned long, addr, unsigned long, len,
mm/process_vm_access.c:SYSCALL_DEFINE6 process_vm_readv, pid_t, pid, const struct iovec __user *, lvec,
mm/process_vm_access.c:SYSCALL_DEFINE6 process_vm_writev, pid_t, pid,
mm/migrate.c:SYSCALL_DEFINE6 move_pages, pid_t, pid, unsigned long, nr_pages,
fs/eventpoll.c:SYSCALL_DEFINE6 epoll_pwait, int, epfd, struct epoll_event __user *, events,
fs/read_write.c:SYSCALL_DEFINE6 preadv2, unsigned long, fd, const struct iovec __user *, vec,
fs/read_write.c:SYSCALL_DEFINE6 pwritev2, unsigned long, fd, const struct iovec __user *, vec,
fs/read_write.c:SYSCALL_DEFINE6 copy_file_range, int, fd_in, loff_t __user *, off_in,
fs/splice.c:SYSCALL_DEFINE6 splice, int, fd_in, loff_t __user *, off_in,
fs/select.c:SYSCALL_DEFINE6 pselect6, int, n, fd_set __user *, inp, fd_set __user *, outp,
fs/aio.c:SYSCALL_DEFINE6 io_pgetevents,
net/socket.c:SYSCALL_DEFINE6 sendto, int, fd, void __user *, buff, size_t, len,
net/socket.c:SYSCALL_DEFINE6 recvfrom, int, fd, void __user *, ubuf, size_t, size,
ipc/syscall.c:SYSCALL_DEFINE6 ipc, unsigned int, call, int, first, unsigned long, second,
答え2
なぜ「すべてのマニュアルページ」を見たいのですか?他の人が言ったように、一般的なデスクトップインストールには文字通り何千ものものがあります。マニュアルのセクション1で「ユーザーコマンド」を見ることができます(場合によってはローカルの追加/追加の公式コマンドのセクションl)、これらのコマンドは少なくとも数百です(ここには4365があります!)。
コマンドラインを効果的に使用する方法を学びたいですか?シェル(おそらくbash)のチュートリアルを確認してください。コマンドラインの使い方についてはたくさんあります。Unixコマンドラインチートシート基本コマンドの場合。シェルには基本的なプログラミング機能があり、多くの問題があります。〜するある日、もっと野心的な台本を書くと、大きな打撃を受けるでしょう。ワンタイムコマンド(*.pdfという名前のすべてのファイルを繰り返すなど)を使用するプログラミングツールで、スクリプトが頻繁に増えたり頻繁に使用される場合は、合理的なスクリプト言語(Pythonなど)で書き直すことをお勧めします。 「コマンドライン」テキストエディタをうまく使用する方法を学びます。標準はvi(Linuxでは一般的にvim、拡張バージョン)ですが、emacs光ファンもあります。それは賢明な投資です(いつか慣れていないUnixシステムに閉じ込められたら、viを使用できるようになります)。多くのコマンドはポケットベルを介して(多少)大量の出力を送信します。テキストファイルを処理するコマンド(cat、cut、Join、sort、Split、head、tail)があります。
よりプロフェッショナルな作業を行うには、何が利用可能であるかを確認し(まず、apropos
一部のマニュアルページに検索語が記載されており、関連性があるかどうかを確認する必要があります)、Web上のディストリビューションのタスクを検索し、切迫した場合はここで尋ねてください。一般に、特定のタスクに対してめまいがするほどさまざまなプログラムがあります。
答え3
GMPはインストールされていませんが、パッケージにはこれに関するマニュアルページが含まれていないようです。
明らかにアクセスできるインターネットを使用せずにマニュアルページが必要な理由は私にとっては明確ではありません。 GMPプロジェクトファイルは次の場所にあります。
https://gmplib.org/manual
次の場所に150ページのPDFがあります。
gmplib.org/gmp-man-6.2.0.pdf