Linux 终端操作命令
也称Shell命令,是用户与操作系统内核进行交互的命令解释器,它接收用户输入的命令并将其传递给操作系统进行执行,可分为内部命令和外部命令。内部命令是Shell程序的一部分,而外部命令是独立于Shell的可执行程序。
内部命令
内部命令,实际上是shell程序的一部分,由shell程序识别并在shell程序内部完成运行,通常在Linux系统加载运行时shell就被加载并驻留在系统内存中。内部命令是写在bash源码里面的,因为解析内部命令shell不需要创建子进程,其执行速度比外部命令快。比如:alias, break, cd, echo, exit, pwd 等。
外部命令
外部命令是bash shell之外的程序,也并不是shell的一部分。外部命令位于/bin,/sbin, /usr/bin 或 /usr/sbin 等系统目录中。外部命令是Linux系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调用内存。通常外部命令的实体并不包含在shell中,但是其命令执行过程是由shell程序控制的。比如: awk, grep, ping,tar, vi 等。 除Linux系统自带的外部命令,通常需要安装对应的程序包才能使用,内部命令之外的所有可执行程序都可以被认作为外部命令。
内外部命令区别
内部命令在系统启动时就调入内存,是常驻内存的,所以执行效率高。
外部命令是系统的软件功能,用户需要时才从硬盘中读入内存,执行速度比内部命令慢。
内部命令列表
help命令可以列出所有内部命令:
hann@HannYang:~$ help
GNU bash, version 5.0.17(1)-release (x86_64-pc-linux-gnu)
These shell commands are defined internally. Type help' to see this list. Type
help name' to find out more about the function name'. Use
info bash' to find out more about the shell in general.
Use man -k' or
info' to find out more about commands not in this list.
A star (*) next to a name means that the command is disabled.
job_spec [&] history [-c] [-d offset] [n] or history -anrw [filename]>
(( expression )) if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMAN>
. filename [arguments] jobs [-lnprs] [jobspec ...] or jobs -x command [args]
: kill [-s sigspec | -n signum | -sigspec] pid | jobspec .>
[ arg... ] let arg [arg ...]
[[ expression ]] local [option] name[=value] ...
alias [-p] [name[=value] ... ] logout [n]
bg [job_spec ...] mapfile [-d delim] [-n count] [-O origin] [-s count] [-t>
bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u > popd [-n] [+N | -N]
break [n] printf [-v var] format [arguments]
builtin [shell-builtin [arg ...]] pushd [-n] [+N | -N | dir]
caller [expr] pwd [-LP]
case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esa> read [-ers] [-a array] [-d delim] [-i text] [-n nchars] >
cd [-L|[-P [-e]] [-@]] [dir] readarray [-d delim] [-n count] [-O origin] [-s count] [>
command [-pVv] command [arg ...] readonly [-aAf] [name[=value] ...] or readonly -p
compgen [-abcdefgjksuv] [-o option] [-A action] [-G globp> return [n]
complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A act> select NAME [in WORDS ... ;] do COMMANDS; done
compopt [-o|+o option] [-DEI] [name ...] set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
continue [n] shift [n]
coproc [NAME] command [redirections] shopt [-pqsu] [-o] [optname ...]
declare [-aAfFgilnrtux] [-p] [name[=value] ...] source filename [arguments]
dirs [-clpv] [+N] [-N] suspend [-f]
disown [-h] [-ar] [jobspec ... | pid ...] test [expr]
echo [-neE] [arg ...] time [-p] pipeline
enable [-a] [-dnps] [-f filename] [name ...] times
eval [arg ...] trap [-lp] [[arg] signal_spec ...]
exec [-cl] [-a name] [command [arguments ...]] [redirecti> true
exit [n] type [-afptP] name [name ...]
export [-fn] [name[=value] ...] or export -p typeset [-aAfFgilnrtux] [-p] name[=value] ...
false ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]
fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [c> umask [-p] [-S] [mode]
fg [job_spec] unalias [-a] name [name ...]
for NAME [in WORDS ... ] ; do COMMANDS; done unset [-f] [-v] [-n] [name ...]
for (( exp1; exp2; exp3 )); do COMMANDS; done until COMMANDS; do COMMANDS; done
function name { COMMANDS ; } or name () { COMMANDS ; } variables - Names and meanings of some shell variables
getopts optstring name [arg] wait [-fn] [id ...]
hash [-lr] [-p pathname] [-dt] [name ...] while COMMANDS; do COMMANDS; done
help [-dms] [pattern ...] { COMMANDS ; }
通过整理以上内容,得到 68 个命令、函数、变量以及控制指令:
1aliasalias [-p] [name[=value] ... ]2bgbg [job_spec ...]3bindbind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u >4breakbreak [n]5builtinbuiltin [shell-builtin [arg ...]]6callercaller [expr]7casecase WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esa>8cdcd [-L|[-P [-e]] [-@]] [dir]9commandcommand [-pVv] command [arg ...]10compgencompgen [-abcdefgjksuv] [-o option] [-A action] [-G globp>11completecomplete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A act>12compoptcompopt [-o|+o option] [-DEI] [name ...]13continuecontinue [n]14coproccoproc [NAME] command [redirections]15declaredeclare [-aAfFgilnrtux] [-p] [name[=value] ...]16dirsdirs [-clpv] [+N] [-N]17disowndisown [-h] [-ar] [jobspec ... | pid ...]18echoecho [-neE] [arg ...]19enableenable [-a] [-dnps] [-f filename] [name ...]20evaleval [arg ...]21execexec [-cl] [-a name] [command [arguments ...]] [redirecti>22exitexit [n]23exportexport [-fn] [name[=value] ...] or export -p24falsefalse25fcfc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [c>26fgfg [job_spec]27for
for NAME [in WORDS ... ] ; do COMMANDS; done
for (( exp1; exp2; exp3 )); do COMMANDS; done
28functionfunction name { COMMANDS ; } or name () { COMMANDS ; }29getoptsgetopts optstring name [arg]30hashhash [-lr] [-p pathname] [-dt] [name ...]31helphelp [-dms] [pattern ...]32historyhistory [-c] [-d offset] [n] or history -anrw [filename]>33ifif COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMAN>34jobsjobs [-lnprs] [jobspec ...] or jobs -x command [args]35killkill [-s sigspec | -n signum | -sigspec] pid | jobspec .>36letlet arg [arg ...]37locallocal [option] name[=value] ...38logoutlogout [n]39mapfilemapfile [-d delim] [-n count] [-O origin] [-s count] [-t>40popdpopd [-n] [+N | -N]41printfprintf [-v var] format [arguments]42pushdpushd [-n] [+N | -N | dir]43pwdpwd [-LP]44readread [-ers] [-a array] [-d delim] [-i text] [-n nchars] >45readarrayreadarray [-d delim] [-n count] [-O origin] [-s count] [>46readonlyreadonly [-aAf] [name[=value] ...] or readonly -p47returnreturn [n]48selectselect NAME [in WORDS ... ;] do COMMANDS; done49setset [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]50shiftshift [n]51shoptshopt [-pqsu] [-o] [optname ...]52sourcesource filename [arguments]53suspendsuspend [-f]54testtest [expr]55timetime [-p] pipeline56timestimes57traptrap [-lp] [[arg] signal_spec ...]58truetrue59typetype [-afptP] name [name ...]60typesettypeset [-aAfFgilnrtux] [-p] name[=value] ...61ulimitulimit [-SHabcdefiklmnpqrstuvxPT] [limit]62umaskumask [-p] [-S] [mode]63unaliasunalias [-a] name [name ...]64unsetunset [-f] [-v] [-n] [name ...]65untiluntil COMMANDS; do COMMANDS; done66variablesvariables - Names and meanings of some shell variables67waitwait [-fn] [id ...]68whilewhile COMMANDS; do COMMANDS; done
注意,有些命令格式比较长的都被截短了,如bind, case 等命令最后显示的是 > 字符。
要想个办法,做一个比较完整的内部命令列表:
1. 把上表第2列,写入一个文本文件,比如 list.txt
2. 用vi编写一段shell代码,如 lists.sh
hann@HannYang:~$ cat lists.sh
#!/bin/bash
# 指定文本文件路径
file_path="list.txt"
# 打开文本文件并遍历每一行
while IFS= read -r line; do
# 获取帮助信息并输出
help -s "$line" >> commands.txt
done < "$file_path"
echo "done!"
3. 执行,遍历list.txt列出完整命令格式,写入列表文件 commands.txt
hann@HannYang:~$ bash lists.sh
4. 列出所有命令格式
hann@HannYang:~$ cat -n commands.txt
1 alias: alias [-p] [name[=value] ... ]
2 bg: bg [job_spec ...]
3 bind: bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]
4 break: break [n]
5 builtin: builtin [shell-builtin [arg ...]]
6 caller: caller [expr]
7 case: case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac
8 cd: cd [-L|[-P [-e]] [-@]] [dir]
9 command: command [-pVv] command [arg ...]
10 compgen: compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]
11 complete: complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]
12 compopt: compopt [-o|+o option] [-DEI] [name ...]
13 continue: continue [n]
14 coproc: coproc [NAME] command [redirections]
15 declare: declare [-aAfFgilnrtux] [-p] [name[=value] ...]
16 dirs: dirs [-clpv] [+N] [-N]
17 disown: disown [-h] [-ar] [jobspec ... | pid ...]
18 echo: echo [-neE] [arg ...]
19 enable: enable [-a] [-dnps] [-f filename] [name ...]
20 eval: eval [arg ...]
21 exec: exec [-cl] [-a name] [command [arguments ...]] [redirection ...]
22 exit: exit [n]
23 export: export [-fn] [name[=value] ...] or export -p
24 false: false
25 fc: fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]
26 fg: fg [job_spec]
27 for: for NAME [in WORDS ... ] ; do COMMANDS; done
28 function: function name { COMMANDS ; } or name () { COMMANDS ; }
29 getopts: getopts optstring name [arg]
30 hash: hash [-lr] [-p pathname] [-dt] [name ...]
31 help: help [-dms] [pattern ...]
32 history: history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]
33 if: if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi
34 jobs: jobs [-lnprs] [jobspec ...] or jobs -x command [args]
35 kill: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
36 let: let arg [arg ...]
37 local: local [option] name[=value] ...
38 logout: logout [n]
39 mapfile: mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]
40 popd: popd [-n] [+N | -N]
41 printf: printf [-v var] format [arguments]
42 pushd: pushd [-n] [+N | -N | dir]
43 pwd: pwd [-LP]
44 read: read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
45 readarray: readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]
46 readonly: readonly [-aAf] [name[=value] ...] or readonly -p
47 return: return [n]
48 select: select NAME [in WORDS ... ;] do COMMANDS; done
49 set: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
50 shift: shift [n]
51 shopt: shopt [-pqsu] [-o] [optname ...]
52 source: source filename [arguments]
53 suspend: suspend [-f]
54 test: test [expr]
55 time: time [-p] pipeline
56 times: times
57 trap: trap [-lp] [[arg] signal_spec ...]
58 true: true
59 type: type [-afptP] name [name ...]
60 typeset: typeset [-aAfFgilnrtux] [-p] name[=value] ...
61 ulimit: ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]
62 umask: umask [-p] [-S] [mode]
63 unalias: unalias [-a] name [name ...]
64 unset: unset [-f] [-v] [-n] [name ...]
65 until: until COMMANDS; do COMMANDS; done
66 variables: variables - Names and meanings of some shell variables
67 wait: wait [-fn] [id ...]
68 while: while COMMANDS; do COMMANDS; done
同样,代码中help的参数换成-d 就能得到命令的功能简介。
hann@HannYang:~$ cat lists.sh
#!/bin/bash
# 指定文本文件路径
file_path="list.txt"
rm commands.txt
# 打开文本文件并遍历每一行
while IFS= read -r line; do
# 获取帮助信息并输出
help -d "$line" >> commands.txt
done < "$file_path"
echo "done!"
5. 列出所有命令简介
hann@HannYang:~$ cat -n commands.txt
1 alias - Define or display aliases.
2 bg - Move jobs to the background.
3 bind - Set Readline key bindings and variables.
4 break - Exit for, while, or until loops.
5 builtin - Execute shell builtins.
6 caller - Return the context of the current subroutine call.
7 case - Execute commands based on pattern matching.
8 cd - Change the shell working directory.
9 command - Execute a simple command or display information about commands.
10 compgen - Display possible completions depending on the options.
11 complete - Specify how arguments are to be completed by Readline.
12 compopt - Modify or display completion options.
13 continue - Resume for, while, or until loops.
14 coproc - Create a coprocess named NAME.
15 declare - Set variable values and attributes.
16 dirs - Display directory stack.
17 disown - Remove jobs from current shell.
18 echo - Write arguments to the standard output.
19 enable - Enable and disable shell builtins.
20 eval - Execute arguments as a shell command.
21 exec - Replace the shell with the given command.
22 exit - Exit the shell.
23 export - Set export attribute for shell variables.
24 false - Return an unsuccessful result.
25 fc - Display or execute commands from the history list.
26 fg - Move job to the foreground.
27 for - Execute commands for each member in a list.
28 function - Define shell function.
29 getopts - Parse option arguments.
30 hash - Remember or display program locations.
31 help - Display information about builtin commands.
32 history - Display or manipulate the history list.
33 if - Execute commands based on conditional.
34 jobs - Display status of jobs.
35 kill - Send a signal to a job.
36 let - Evaluate arithmetic expressions.
37 local - Define local variables.
38 logout - Exit a login shell.
39 mapfile - Read lines from the standard input into an indexed array variable.
40 popd - Remove directories from stack.
41 printf - Formats and prints ARGUMENTS under control of the FORMAT.
42 pushd - Add directories to stack.
43 pwd - Print the name of the current working directory.
44 read - Read a line from the standard input and split it into fields.
45 readarray - Read lines from a file into an array variable.
46 readonly - Mark shell variables as unchangeable.
47 return - Return from a shell function.
48 select - Select words from a list and execute commands.
49 set - Set or unset values of shell options and positional parameters.
50 shift - Shift positional parameters.
51 shopt - Set and unset shell options.
52 source - Execute commands from a file in the current shell.
53 suspend - Suspend shell execution.
54 test - Evaluate conditional expression.
55 time - Report time consumed by pipeline's execution.
56 times - Display process times.
57 trap - Trap signals and other events.
58 true - Return a successful result.
59 type - Display information about command type.
60 typeset - Set variable values and attributes.
61 ulimit - Modify shell resource limits.
62 umask - Display or set file mode mask.
63 unalias - Remove each NAME from the list of defined aliases.
64 unset - Unset values and attributes of shell variables and functions.
65 until - Execute commands as long as a test does not succeed.
66 variables - Common shell variable names and usage.
67 wait - Wait for job completion and return exit status.
68 while - Execute commands as long as a test succeeds.
简单翻译:
1 alias-定义或显示别名。
2 bg-将作业移到后台。
3 bind-设置Readline键绑定和变量。
4 break-退出循环、while或直到循环。
5 builtin-执行shell内建。
6 caller-返回当前子例程调用的上下文。
7 case-基于模式匹配执行命令。
8 cd-更改shell工作目录。
9 command-执行一个简单的命令或显示有关命令的信息。
10 compgen-根据选项显示可能的完成情况。
11 complete-指定Readline如何完成参数。
12 compopt-修改或显示完成选项。
13 continue-继续循环、while或直到循环。
14 coproc-创建一个名为NAME的协处理器。
15 declare-设置变量值和属性。
16 dirs-显示目录堆栈。
17 disown-从当前shell中删除作业。
18 echo-将参数写入标准输出。
19 enable-启用和禁用shell内置。
20 eval-将参数作为shell命令执行。
21 exec-用给定的命令替换shell。
22 exit-退出外壳。
23 export-为shell变量设置导出属性。
24 false-返回不成功的结果。
25 fc-显示或执行历史列表中的命令。
26 fg-将作业移到前台。
27 for-为列表中的每个成员执行命令。
28 function-定义外壳函数。
29 getopts-分析选项参数。
30 hash-记住或显示程序位置。
31 help-显示有关内置命令的信息。
32 history-显示或操作历史记录列表。
33 if-根据条件执行命令。
34 jobs-显示作业的状态。
35 kill-向工作发出信号。
36 let-评估算术表达式。
37 local-定义局部变量。
38 logout-退出登录shell。
39 mapfile-将标准输入中的行读取到索引数组变量中。
40 popd-从堆栈中删除目录。
41 printf-在FORMAT的控制下格式化和打印参数。
42 pushd-将目录添加到堆栈。
43 pwd-打印当前工作目录的名称。
44 read-从标准输入中读取一行,并将其拆分为字段。
45 readarray-将文件中的行读取到数组变量中。
46 readonly-将shell变量标记为不可更改。
47 return-从shell函数返回。
48 select-从列表中选择单词并执行命令。
49 set-设置或取消设置外壳选项和位置参数的值。
50 shift-移位位置参数。
51 shopt-设置和取消设置外壳选项。
52 source-从当前shell中的文件执行命令。
53 suspend-挂起shell执行。
54 test-评估条件表达式。
55 time-报告管道执行所消耗的时间。
56 times-显示处理时间。
57 trap-陷阱信号和其他事件。
58 true-返回成功的结果。
59 type-显示有关命令类型的信息。
60 typeset-设置变量值和属性。
61 ulimit-修改shell资源限制。
62 umask-显示或设置文件模式掩码。
63 unalias-从定义的别名列表中删除别名。
64 unset-取消设置shell变量和函数的值和属性。
65 until-只要测试不成功,就执行命令。
66 variables-常见的shell变量名称和用法。
67 wait-等待作业完成并返回退出状态。
68 while-循环结构,只要测试为真就执行命令。
完
版权归原作者 Hann Yang 所有, 如有侵权,请联系我们删除。