《许三多》
Linux有三多
一是命令和子命令多
二是命令选项多
三是拥有的相关(帮助)文档多
所以,我严重怀疑Linux
姓许不姓李
一、命令多
linux上大概有多少个命令呢?我们来统计一下:
~]# compgen -c | wc -l
2949
哦,大概有三四千个
【1】命令多
>>> 三问
~]# whoami <<< 我是谁
~]# who
~]# w
~]# pwd <<< 我在哪
~]# ls
~]# date <<< 现在是什么时间
>>> 开关机
CentOS6
~]# shutdown -h now
~]# shutdown -r now
~]# halt
~]# poweroff
~]# reboot
>>> 帮助
~]# enable
~]# enable -n
~]# echo $PATH
~]# echo $SHELL
~]# echo $LANG
~]# locale -a
~]# env
~]# declare -x
~]# export
~]# type CMD
~]# help CMD
~]# hash
~]# man CMD
~]# info CMD
~]# CMD --help
>>> 常用命令
~]# tty
~]# ls
~]# alias
~]# vim /etc/profile
~]# reset
~]# init 6
~]# clear
~]# history
~]# runlevel
~]# service xxx restart
~]# chkconfig --list xxx
>>> bash特性
~]# history
~]# !num
~]# !str..
~]# alias cdnet='cd /etc/sysconfig/network-scripts/'
~]# unalias cdnet
~]# hash -r
~]# ctrl-e, ctrl-a, ctrl-l, ctrl-u, ctrl-k
~]#
>>> 文件目录
~]# pwd
~]# cd /path/to/somewhere
~]# cd ~
~]# cd -
~]# cd
~]# ls
~]# ls -lh
~]# ls -dh
~]# dirs
~]# mkdir -pv /x/y/z
~]# rmdir /to/some/dir
~]# touch a.txt
~]# file <FILE>
~]# cp [-r] SRC DIST
~]# mv SRC DIST
~]# rm [-fr] /path/to/
~]# stat <FILE>
~]# vi/vim [+num]<FILE>
~]# nano <FILE>
>>> 查看
~]# cat/tac [-n] <FILE>
~]# more/less <FILE>
~]# head/tail <FILE>
>>> 用户与组
~]# useradd uNAME
~]# adduser uNAME
~]# passwd uNAME
~]# usermod [option] uNAME
~]# echo "PASSWORD" | passwd --stdin uNAME
~]# userdel uNAME
~]# groupadd gNAME
~]# groupmod [option] gNAME
~]# groupdel gNAME
~]# gpasswd
~]# id uNAME
~]# su -l uNAME
~]# groups
~]# chage
~]# chsh
~]# ...
>>> 权限
~]# chmod u/g/o+|-r/w/x <FILE>
~]# umask
~]# umask xxxx
~]# chmod -m u+|-s <FILE>
~]# chmod -m g+|-s <FILE>
~]# chmod -t o+|-t <FILE>
~]# getfacl <FILE>
~]# setfack <FILE>
>>> 管道,重定向,文本处理
~]# CMD1 | CMD2 | ...
~]# >, >>
~]# <, <<
~]# tee
~]# tr
~]# wc -l <FILE>
~]# cut
~]# sort
~]# unique
~]# diff
~]# patch
~]#
>>> 磁盘
~]# fdisk
~]# mkfs
~]# tune2fs
~]# blkid
~]# ln
~]# mount
~]# umount
~]# vim /etc/fstab
~]#
~]# swapon
~]# swapoff
>>> 网络
CentOS
~]# ifconfig
~]# ifup
~]# ifdown
~]# route
~]# service network start|stop|restart|status
~]# netstat -tunlp
~]# dig -t A www.baidu.com
~]# ping -c 4 www.baidu.com
~]# ip addr list
~]# ss -tunlp
~]# setup
~]# nmcli
~]#
>>> 解压缩
~]# tar zxvf xxx.gz
~]# dd
>>> 任务计划
~]# mail
~]# at
~]# crontab
>>> 包管理
~]# rpm -q xxx
~]# rpm -qa xxx*
~]# rpm -qa | grep xxx
~]# rpm -qi xxx
~]# rpm -qc xxx
~]# yum instal xxx -y
~]# yum clean all
~]# yum makecache
~]# yum list installed | grep xxx
~]# yum provides
~]# yum update
~]# yum repolist
~]# ./configure --prefix=xxx ...
~]# make & make install
>>> 进程
~]# pstree
~]# ps -ef | grep xxx
~]# ps aux
~]# top
~]# htop
~]# vmstat
~]# free -h
~]# ping
~]# nice
~]# renice
~]# kill -l
~]# killall
~]# pkill
~]# jobs
~]# fg
~]# bg
~]#
>>> 系统
~]# init
~]# grub
~]# lsmod
~]# modprobe
~]# insmod
~]# rmmod
~]# ldd
>>> SELinux
~]# getenforce
~]# setenforce
>>> openssl & ssl/tls
~]# openssl
>>> OpenSSH
~]# ssh USERNAME@IP
~]# ssh-keygen -t rsa
~]# ssh-copy-id
【2】子命令多
以例yum命令为例
command is one of:
* install package1 [package2] [...]
* update [package1] [package2] [...]
* update-to [package1] [package2] [...]
* check-update
* upgrade [package1] [package2] [...]
* upgrade-to [package1] [package2] [...]
* distribution-synchronization [package1] [package2] [...]
* remove | erase package1 [package2] [...]
* list [...]
* info [...]
* provides | whatprovides feature1 [feature2] [...]
* clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
* makecache
* groupinstall group1 [group2] [...]
* groupupdate group1 [group2] [...]
* grouplist [hidden] [groupwildcard] [...]
* groupremove group1 [group2] [...]
* groupinfo group1 [...]
* search string1 [string2] [...]
* shell [filename]
* resolvedep dep1 [dep2] [...]
* localinstall rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use install)
* localupdate rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use update)
* reinstall package1 [package2] [...]
* downgrade package1 [package2] [...]
* deplist package1 [package2] [...]
* repolist [all|enabled|disabled]
* version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]
* history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
* load-transaction [txfile]
* check
* help [command]
一个yum命令,就这么多子命
还有像什么ip命令,docker命令子类的,都是一大堆子命令
二、选项多
事实上,通常linux命令都有一大堆选项,这不是个例或个别现象,而几乎是普遍事实。
当然,像rpm这样的重量级的命令,自然选项就非常多了。
Usage: rpm [OPTION...]
--quiet
Query/Verify package selection options:
-a, --all query/verify all packages
-f, --file query/verify package(s) owning file
-g, --group query/verify package(s) in group
-p, --package query/verify a package file
-W, --ftswalk query/verify package(s) from TOP file tree
walk
--pkgid query/verify package(s) with package
identifier
--hdrid query/verify package(s) with header
identifier
--fileid query/verify package(s) with file identifier
--specfile query a spec file
--triggeredby query the package(s) triggered by the
package
--whatrequires query/verify the package(s) which require a
dependency
--whatprovides query/verify the package(s) which provide a
dependency
--nomanifest do not process non-package files as
manifests
Query options (with -q or --query):
-c, --configfiles list all configuration files
-d, --docfiles list all documentation files
--dump dump basic file information
-l, --list list files in package
--queryformat=QUERYFORMAT use the following query format
-s, --state display the states of the listed files
Verify options (with -V or --verify):
--nofiledigest don't verify digest of files
--nomd5 don't verify digest of files
--nofiles don't verify files in package
--nodeps don't verify package dependencies
--noscript don't execute verify script(s)
File tree walk options (with --ftswalk):
--comfollow follow command line symlinks
--logical logical walk
--nochdir don't change directories
--nostat don't get stat info
--physical physical walk
--seedot return dot and dot-dot
--xdev don't cross devices
--whiteout return whiteout information
Signature options:
--addsign sign package(s) (identical to --resign)
-K, --checksig verify package signature(s)
--delsign delete package signatures
--import import an armored public key
--resign sign package(s) (identical to --addsign)
--nodigest don't verify package digest(s)
--nosignature don't verify package signature(s)
Database options:
--initdb initialize database
--rebuilddb rebuild database inverted lists from
installed package headers
Install/Upgrade/Erase options:
--aid add suggested packages to transaction
--allfiles install all files, even configurations
which might otherwise be skipped
--allmatches remove all packages which match <package>
(normally an error is generated if
<package> specified multiple packages)
--badreloc relocate files in non-relocatable package
-e, --erase=<package>+ erase (uninstall) package
--excludedocs do not install documentation
--excludepath=<path> skip files with leading component <path>
--fileconflicts detect file conflicts between packages
--force short hand for --replacepkgs --replacefiles
-F, --freshen=<packagefile>+ upgrade package(s) if already installed
-h, --hash print hash marks as package installs (good
with -v)
--ignorearch don't verify package architecture
--ignoreos don't verify package operating system
--ignoresize don't check disk space before installing
-i, --install install package(s)
--justdb update the database, but do not modify the
filesystem
--nodeps do not verify package dependencies
--nofiledigest don't verify digest of files
--nomd5 don't verify digest of files (obsolete)
--nocontexts don't install file security contexts
--noorder do not reorder package installation to
satisfy dependencies
--nosuggest do not suggest missing dependency
resolution(s)
--noscripts do not execute package scriptlet(s)
--notriggers do not execute any scriptlet(s) triggered
by this package
--oldpackage upgrade to an old version of the package
(--force on upgrades does this
automatically)
--percent print percentages as package installs
--prefix=<dir> relocate the package to <dir>, if
relocatable
--relocate=<old>=<new> relocate files from path <old> to <new>
--replacefiles ignore file conflicts between packages
--replacepkgs reinstall if the package is already present
--test don't install, but tell if it would work or
not
-U, --upgrade=<packagefile>+ upgrade package(s)
Common options for all rpm modes and executables:
-D, --define='MACRO EXPR' define MACRO with value EXPR
-E, --eval='EXPR' print macro expansion of EXPR
--macros=<FILE:...> read <FILE:...> instead of default file(s)
--nodigest don't verify package digest(s)
--nosignature don't verify package signature(s)
--rcfile=<FILE:...> read <FILE:...> instead of default file(s)
-r, --root=ROOT use ROOT as top level directory (default:
"/")
--querytags display known query tags
--showrc display final rpmrc and macro configuration
--quiet provide less detailed output
-v, --verbose provide more detailed output
--version print the version of rpm being used
Options implemented via popt alias/exec:
--scripts list install/erase scriptlets from
package(s)
--setperms set permissions of files in a package
--setugids set user/group ownership of files in a
package
--conflicts list capabilities this package conflicts
with
--obsoletes list other packages removed by installing
this package
--provides list capabilities that this package provides
-v, --verbose provide more detailed output
--version print the version of rpm being used
Options implemented via popt alias/exec:
--scripts list install/erase scriptlets from
package(s)
--setperms set permissions of files in a package
--setugids set user/group ownership of files in a
package
--conflicts list capabilities this package conflicts
with
--obsoletes list other packages removed by installing
this package
--provides list capabilities that this package provides
--requires list capabilities required by package(s)
--info list descriptive information from package(s)
--changelog list change logs for this package
--xml list metadata in xml
--triggers list trigger scriptlets from package(s)
--last list package(s) by install time, most
recent first
--dupes list duplicated packages
--filesbypkg list all files from each package
--fileclass list file names with classes
--filecolor list file names with colors
--fscontext list file names with security context from
file system
--fileprovide list file names with provides
--filerequire list file names with requires
--filecaps list file names with POSIX1.e capabilities
Help options:
-?, --help Show this help message
--usage Display brief usage message
。。。我的天呐,这就叫命令很简单,选项超复杂
如果不作常用或重用项的提取和简化,简单不可想像
事实上,这些选项都只作了极简的说明,因为我们使用的是rpm --help的这个--help选项查看的,
如果要看详细的,我们可以使用man rpm,如果要看更详细的,我们可以使用info rpm命令
都说 候门一入深如海,从此萧朗是路人,linux命令比侯门还侯门,深得很,像大海,也像矿山
三、相关文档多
我们学linux,入门一个man bash命令,出来的文档就有上百页
我们学习ftp,我们可以看一下vsftpd提供了多少文档
~]# rpm -ql vsftpd | less
...
/usr/share/doc/vsftpd-2.2.2
/usr/share/doc/vsftpd-2.2.2/AUDIT
/usr/share/doc/vsftpd-2.2.2/BENCHMARKS
/usr/share/doc/vsftpd-2.2.2/BUGS
/usr/share/doc/vsftpd-2.2.2/COPYING
/usr/share/doc/vsftpd-2.2.2/Changelog
/usr/share/doc/vsftpd-2.2.2/EXAMPLE
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/INTERNET_SITE
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/INTERNET_SITE/README
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/INTERNET_SITE/README.configuration
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/INTERNET_SITE/vsftpd.conf
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/INTERNET_SITE/vsftpd.xinetd
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/INTERNET_SITE_NOINETD
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/INTERNET_SITE_NOINETD/README
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/INTERNET_SITE_NOINETD/README.configuration
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/INTERNET_SITE_NOINETD/vsftpd.conf
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/PER_IP_CONFIG
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/PER_IP_CONFIG/README
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/PER_IP_CONFIG/README.configuration
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/PER_IP_CONFIG/hosts.allow
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/README
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_HOSTS
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_HOSTS/README
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS/README
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/PER_IP_CONFIG/README
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/PER_IP_CONFIG/README.configuration
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/PER_IP_CONFIG/hosts.allow
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/README
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_HOSTS
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_HOSTS/README
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS/README
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS/README.configuration
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS/logins.txt
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS/vsftpd.conf
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS/vsftpd.pam
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS_2
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS_2/README
/usr/share/doc/vsftpd-2.2.2/FAQ
/usr/share/doc/vsftpd-2.2.2/INSTALL
/usr/share/doc/vsftpd-2.2.2/LICENSE
/usr/share/doc/vsftpd-2.2.2/README
/usr/share/doc/vsftpd-2.2.2/README.security
/usr/share/doc/vsftpd-2.2.2/REWARD
/usr/share/doc/vsftpd-2.2.2/SECURITY
/usr/share/doc/vsftpd-2.2.2/SECURITY/DESIGN
/usr/share/doc/vsftpd-2.2.2/SECURITY/IMPLEMENTATION
/usr/share/doc/vsftpd-2.2.2/SECURITY/OVERVIEW
/usr/share/doc/vsftpd-2.2.2/SECURITY/TRUST
/usr/share/doc/vsftpd-2.2.2/SIZE
/usr/share/doc/vsftpd-2.2.2/SPEED
/usr/share/doc/vsftpd-2.2.2/TODO
/usr/share/doc/vsftpd-2.2.2/TUNING
/usr/share/doc/vsftpd-2.2.2/vsftpd.xinetd
/usr/share/man/man5/vsftpd.conf.5.gz
/usr/share/man/man8/vsftpd.8.gz
真要看吗 真心看不完啊
|