网站搜索

了解 Shell 命令的不同分类及其在 Linux 中的用法


当谈到获得对 Linux 系统的绝对控制时,没有什么比命令行界面 (CLI) 更接近的了。为了成为一名 Linux 高级用户,必须了解不同类型的 shell 命令以及从终端使用它们的适当方法。

Linux 中有多种命令,对于 Linux 新用户来说,了解不同命令的含义可以高效、准确地使用。因此,在本文中,我们将介绍 Linux 中 shell 命令的各种分类。

建议阅读: Linux 中的 5 个有趣的命令行提示和技巧 – 第 1 部分

需要注意的一件重要事情是,命令行界面与 shell 不同,它仅提供一种访问 shell 的方法。 shell 也是可编程的,因此可以使用命令与内核进行通信。

Linux命令的不同分类分为以下几类:

1. 程序可执行文件(文件系统命令)

当您运行命令时,Linux 从左到右搜索存储在 ` PATH 环境变量中的目录,以查找该特定命令的可执行文件。

您可以查看` PATH中的目录,如下所示:

echo $PATH

/home/aaronkilik/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

按照上面的顺序,首先会搜索 /home/aaronkilik/bin 目录,然后是 /usr/local/sbin 等等,搜索顺序很重要过程。

/usr/bin 目录中的文件系统命令示例:

ll /bin/
样本输出
total 16284
drwxr-xr-x  2 root root    4096 Jul 31 16:30 ./
drwxr-xr-x 23 root root    4096 Jul 31 16:29 ../
-rwxr-xr-x  1 root root    6456 Apr 14 18:53 archdetect*
-rwxr-xr-x  1 root root 1037440 May 17 16:15 bash*
-rwxr-xr-x  1 root root  520992 Jan 20  2016 btrfs*
-rwxr-xr-x  1 root root  249464 Jan 20  2016 btrfs-calc-size*
lrwxrwxrwx  1 root root       5 Jul 31 16:19 btrfsck -> btrfs*
-rwxr-xr-x  1 root root  278376 Jan 20  2016 btrfs-convert*
-rwxr-xr-x  1 root root  249464 Jan 20  2016 btrfs-debug-tree*
-rwxr-xr-x  1 root root  245368 Jan 20  2016 btrfs-find-root*
-rwxr-xr-x  1 root root  270136 Jan 20  2016 btrfs-image*
-rwxr-xr-x  1 root root  249464 Jan 20  2016 btrfs-map-logical*
-rwxr-xr-x  1 root root  245368 Jan 20  2016 btrfs-select-super*
-rwxr-xr-x  1 root root  253816 Jan 20  2016 btrfs-show-super*
-rwxr-xr-x  1 root root  249464 Jan 20  2016 btrfstune*
-rwxr-xr-x  1 root root  245368 Jan 20  2016 btrfs-zero-log*
-rwxr-xr-x  1 root root   31288 May 20  2015 bunzip2*
-rwxr-xr-x  1 root root 1964536 Aug 19  2015 busybox*
-rwxr-xr-x  1 root root   31288 May 20  2015 bzcat*
lrwxrwxrwx  1 root root       6 Jul 31 16:19 bzcmp -> bzdiff*
-rwxr-xr-x  1 root root    2140 May 20  2015 bzdiff*
lrwxrwxrwx  1 root root       6 Jul 31 16:19 bzegrep -> bzgrep*
-rwxr-xr-x  1 root root    4877 May 20  2015 bzexe*
lrwxrwxrwx  1 root root       6 Jul 31 16:19 bzfgrep -> bzgrep*
-rwxr-xr-x  1 root root    3642 May 20  2015 bzgrep*

2.Linux 别名

这些是用户定义的命令,它们是使用 alias shell 内置命令创建的,并包含其他 shell 命令以及一些选项和参数。这个想法基本上是为冗长的命令使用新的短名称。

建议阅读: Linux 命令中 (!) 符号或运算符的 10 个令人惊奇和神秘的用法

创建别名的语法如下:

alias newcommand='command -options'

要列出系统上的所有别名,请发出以下命令:

alias -p

alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'

要在 Linux 中创建新别名,请查看以下示例。

alias update='sudo apt update'
alias upgrade='sudo apt dist-upgrade'
alias -p | grep 'up'

但是,我们上面创建的别名只是暂时起作用,当系统重新启动时,它们在下次启动后将不再起作用。您可以在 .bashrc 文件中设置永久别名,如下所示。

添加后,运行以下命令来激活。

source ~/.bashrc

3.Linux Shell 保留字

在 shell 编程中,诸如 ifthenfiforwhile 等单词>、caseesacelseuntil 以及许多其他都是 shell 保留字。正如描述所暗示的,它们对于 shell 具有特殊的含义。

您可以使用 type 命令列出所有 Linux shell 关键字,如下所示:

type if then fi for while case esac else until
if is a shell keyword
then is a shell keyword
fi is a shell keyword
for is a shell keyword
while is a shell keyword
case is a shell keyword
esac is a shell keyword
else is a shell keyword
until is a shell keyword

建议阅读: 10 个有用的 Linux 链接运算符及其实际示例

4.Linux Shell 函数

shell 函数是在当前 shell 中集体执行的一组命令。函数有助于在 shell 脚本中执行特定任务。在脚本中编写 shell 函数的常规形式是:

function_name() {
command1
command2
…….
}

或者,

function function_name {
command1
command2
…….
}

我们来看看如何在名为 shell_functions.sh 的脚本中编写 shell 函数。

#!/bin/bash 

#write a shell function to update and upgrade installed packages 
upgrade_system(){
        sudo apt update;
        sudo apt dist-upgrade;
}

#execute function
upgrade_system

我们没有从命令行执行两个命令:sudo apt updatesudo apt dist-upgrade,而是编写了一个简单的 shell 函数来将这两个命令作为单个命令执行命令,脚本中的upgrade_system

建议阅读: Linux 新手学习 Shell 编程的 5 个 Shell 脚本

保存文件,然后使脚本可执行。最后运行如下:

chmod +x shell_functions.sh
./shell_functions.sh

5.Linux Shell 内置命令

这些是内置于 shell 中的 Linux 命令,因此您无法在文件系统中找到它们。它们包括pwdcdbg别名历史记录类型来源读取退出等等。

您可以使用 type 命令列出或检查 Linux 内置命令,如下所示:

type pwd
pwd is a shell builtin
$ type cd
cd is a shell builtin
$ type bg
bg is a shell builtin
$ type alias
alias is a shell builtin
$ type history
history is a shell builtin

了解一些 Linux 内置命令的用法:

  1. Linux 中的 15 个“pwd”命令示例
  2. Linux 中的 15 个“cd”命令示例
  3. 了解 Linux ‘history’ 命令的威力

结论

作为 Linux 用户,了解您正在运行的命令类型始终很重要。相信通过上面精确、通俗易懂的解释,再加上一些相关的图解,你应该对Linux命令的各类分类有了一个很好的了解。

您也可以通过下面的评论部分提出您想向我们提供的任何问题或补充想法。