
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 个命令、函数、变量以及控制指令:
| 1 | alias | alias [-p] [name[=value] ... ] | 
| 2 | bg | bg [job_spec ...] | 
| 3 | bind | bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u > | 
| 4 | break | break [n] | 
| 5 | builtin | builtin [shell-builtin [arg ...]] | 
| 6 | caller | caller [expr] | 
| 7 | case | case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esa> | 
| 8 | cd | cd [-L|[-P [-e]] [-@]] [dir] | 
| 9 | command | command [-pVv] command [arg ...] | 
| 10 | compgen | compgen [-abcdefgjksuv] [-o option] [-A action] [-G globp> | 
| 11 | complete | complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A act> | 
| 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 ...]] [redirecti> | 
| 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] [c> | 
| 26 | fg | fg [job_spec] | 
| 27 | for | for NAME [in WORDS ... ] ; do COMMANDS; done for (( exp1; exp2; exp3 )); 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]> | 
| 33 | if | if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMAN> | 
| 34 | jobs | jobs [-lnprs] [jobspec ...] or jobs -x command [args] | 
| 35 | kill | kill [-s sigspec | -n signum | -sigspec] pid | jobspec .> | 
| 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> | 
| 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] > | 
| 45 | readarray | readarray [-d delim] [-n count] [-O origin] [-s count] [> | 
| 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 | 
注意,有些命令格式比较长的都被截短了,如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-循环结构,只要测试为真就执行命令。
完