터미널에서 사용할 수 있는 모든 명령을 어떻게 탐색해야 합니까? 현재 명령에 기록된 모든 명령/문서를 찾아보고 싶습니다 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
(약간 두 줄로 형식화됨) :
]# 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 광팬도 있습니다... 많은 bog 표준 Unix 명령(grep, more/less), sed)는 vi와 거의 동일한 검색 메커니즘을 사용하므로 사용 방법을 배우는 것이 현명한 투자입니다(언젠가 익숙하지 않은 Unix 시스템에 갇히게 된다면 vi를 사용할 수 있게 될 것입니다). 많은 명령이 호출기를 통해 (다소) 많은 양의 출력을 전송합니다. 텍스트 파일을 처리하는 명령(cat, cut, Join, sort, Split, head, tail)이 있습니다.
보다 전문적인 작업을 위해서는 무엇이 사용 가능한지 확인하고(먼저 apropos
일부 매뉴얼 페이지에 검색어가 언급되어 있고 관련성이 있는지 확인해야 합니다), 웹에서 배포판의 작업을 검색하고, 절박한 경우에는 여기에서 물어보세요. 일반적으로 주어진 작업에 대해 어지러울 정도로 다양한 프로그램이 있으며... 선택은 개인적이어야 합니다(선호도, 가용성, 표준 여부, 사용 용이성...).
답변3
GMP가 설치되어 있지 않지만 패키지에 이에 대한 매뉴얼 페이지가 포함되어 있지 않은 것 같습니다.
분명히 액세스할 수 있는 인터넷을 사용하지 않고 매뉴얼 페이지가 필요한 이유가 나에게는 명확하지 않습니다. GMP 프로젝트 파일은 다음 위치에 있습니다.
https://gmplib.org/manual
다음 위치에 150페이지 분량의 PDF가 있습니다.
gmplib.org/gmp-man-6.2.0.pdf