Linux 终端操作命令(2)内部命令

本文涉及的产品
简介: Linux 终端操作命令(2)内部命令

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-循环结构,只要测试为真就执行命令。

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
7天前
|
Web App开发 Linux 网络安全
工作中常用到的Linux命令
工作中常用到的Linux命令
|
7天前
|
Web App开发 Java Linux
Linux之Shell基本命令篇
Linux之Shell基本命令篇
Linux之Shell基本命令篇
|
20天前
|
算法 数据可视化 Linux
Linux内核编译:深入理解`make menuconfig`命令
Linux内核编译:深入理解`make menuconfig`命令
32 0
|
14天前
|
Ubuntu 架构师 Java
Linux系统常用命令非常详细建议收藏
Linux系统常用命令非常详细建议收藏
46 0
|
4天前
|
NoSQL Linux Shell
常用的 Linux 命令
常用的 Linux 命令
25 9
|
3天前
|
缓存 运维 监控
Linux系统监控利器:探索常用命令及数据保存技巧
Linux系统监控利器:探索常用命令及数据保存技巧
23 4
Linux系统监控利器:探索常用命令及数据保存技巧
|
6天前
|
Linux 索引
linux 文件查找 和文件管理常用命令
linux 文件查找 和文件管理常用命令
15 0
|
6天前
|
安全 Unix Linux
一、linux 常用命令之 linux版本信息 系统管理与设置 持续更新******
一、linux 常用命令之 linux版本信息 系统管理与设置 持续更新******
13 0
|
8天前
|
Prometheus 监控 Cloud Native
【Linux】查看系统内存命令(详细讲解)
【Linux】查看系统内存命令(详细讲解)
|
8天前
|
监控 Linux