Linux命令基本格式(详解版)

293 阅读7分钟

参数是命令的操作对象,一般文件、目录、用户和进程等可以作为参数被命令操作。

本节开始,我们不会再见到图形界面了,因为对服务器来讲,图形界面会占用更多的系统资源,而且会安装更多的服务、开放更多的端口,这对服务器的稳定性和安全性都有负面影响。其实,服务器是一个连显示器都没有的家伙,要图形界面干十么? 说到这里,有很多人会很崩溃。笔者就经常听到抱怨 Linux是落后于时代的老古董,就像笔者的白头发一样!但是,大家要理解,对服务器来讲,稳定性、可靠性、安全性才是最主要的。而简单易用不是服务器需要考虑的事情,所以学习 Linux,这些枯燥的命令是必须学习和记忆的内容。

命令提示符

登录系统后,第一眼看到的内容是:

[root@localhost ~]#

这就是 Linux 系统的命令提示符。那么,这个提示符的含义是什么呢?

  • []:这是提示符的分隔符号,没有特殊含义。
  • root:显示的是当前的登录用户,笔者现在使用的是 root 用户登录。
  • @:分隔符号,没有特殊含义。
  • localhost:当前系统的简写主机名(完整主机名是 localhost.localdomain)。
  • ~:代表用户当前所在的目录,此例中用户当前所在的目录是家目录。
  • #:命令提示符,Linux 用这个符号标识登录的用户权限等级。如果是超级用户,提示符就是 #;如果是普通用户,提示符就是 $。

家目录是什么? Linux 系统是纯字符界面,用户登录后,要有一个初始登录的位置,这个初始登录位置就称为用户的家:

  • 超级用户的家目录:/root/。
  • 普通用户的家目录:/home/用户名/。

用户在自己的家目录中拥有完整权限,所以我们也建议操作实验可以放在家目录中进行。我们切换一下用户所在目录,看看有什么效果。

[root@localhost ~]# cd /usr/local/
[root@localhost local]#

仔细看,如果切换用户所在目录,那么命令提示符中的会变成用户当前所在目录的最后一个目录(不显示完整的所在目录 /usr/ local/,只显示最后一个目录 local)。

命令的基本格式

接下来看看Linux 命令

的基本格式:

[root@localhost ~]# 命令[选项][参数]

命令格式中的 [] 代表可选项,也就是有些命令可以不写选项或参数,也能执行。那么,我们就用 Linux 中最常见的 ls 命令来解释一下命令的格式。如果按照命令的分类,那么 ls 命令应该属于目录操作命令。

[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog

1) 选项的作用

ls 命令之后不加选项和参数也能执行,不过只能执行最基本的功能,即显示当前目录下的文件名。那么加入一个选项,会出现什么结果?

[root@localhost ~]# Is -l
总用量44
-rw-------.1 root root 1207 1 月 14 18:18 anaconda-ks.cfg
-rw-r--r--.1 root root 24772 1 月 14 18:17 install.log
-rw-r--r--.1 root root 7690 1 月 14 18:17 install.log.syslog

如果加一个"-l"选项,则可以看到显示的内容明显增多了。"-l"是长格式(long list)的意思,也就是显示文件的详细信息。至于"-l"选项的具体含义,我们稍后再详细讲解。可以看到选项的作用是调整命令功能。如果没有选项,那么命令只能执行最基本的功能;而一旦有选项,则可以显示更加丰富的数据。

Linux 的选项又分为短格式选项(-l)和长格式选项(--all)。短格式选项是英文的简写,用一个减号调用,例如:

[root@localhost ~]# ls -l

而长格式选项是英文完整单词,一般用两个减号调用,例如:

[root@localhost ~]# ls --all

一般情况下,短格式选项是长格式选项的缩写,也就是一个短格式选项会有对应的长格式选项。当然也有例外,比如 ls 命令的短格式选项 -l 就没有对应的长格式选项。所以具体的命令选项可以通过后面我们要学习的帮助命令来进行査询。

2) 参数的作用

参数是命令的操作对象,一般文件、目录、用户和进程等可以作为参数被命令操作。例如:

[root@localhost ~]# ls -l anaconda-ks.cfg
-rw-------.1 root root 1207 114 18:18 anaconda-ks.cfg

但是为什么一开始 ls 命令可以省略参数?那是因为有默认参数。命令一般都需要加入参数,用于指定命令操作的对象是谁。如果可以省略参数,则一般都有默认参数。例如:

[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog

这个 ls 命令后面没有指定参数,默认参数是当前所在位置,所以会显示当前目录下的文件名。

  1. 指令太长的时候,可以使用反斜线 (\) 来跳脱[Enter]符号,使指令连续到下一行。注意!反斜线后就立刻接特殊字符,才能跳脱!

命令的输入

命令的输入通常指的是命令从哪获取数据。默认情况下,命令从标准输入(stdin)获取数据,这通常是键盘输入。但是,你可以通过重定向将输入来源改为文件或其他命令的输出。

输入重定向

输入重定向是将命令的输入来源从标准输入(stdin)重定向到一个文件。输入重定向使用 < 符号。

基本用法

command < inputfile

示例

  1. 使用 cat 命令读取文件内容
cat < file.txt

这将读取 file.txt 的内容并显示在终端上。

  1. 使用 sort 命令对文件内容进行排序
sort < unsorted.txt

这将读取 unsorted.txt 文件的内容,对其进行排序,并将结果显示在终端上。

命令输入的理解

  1. 标准输入(stdin)
    默认情况下,命令从标准输入获取数据,这通常是键盘输入。例如,使用 cat 命令时,你可以直接在终端输入文本:

    cat
    

    然后你可以输入文本,按 Ctrl+D 结束输入。

  2. 管道输入
    命令的输入可以来自另一个命令的输出,通过管道符 | 实现。例如:

    ls -l | grep "Jan"
    

    这将把 ls -l 的输出作为 grep "Jan" 的输入。

输入重定向示例

  1. 使用 wc 命令统计文件的行数、单词数和字符数

    wc < file.txt
    

    这将读取 file.txt 的内容,并显示文件的行数、单词数和字符数。

  2. 使用 grep 命令从文件中搜索特定模式

    grep "pattern" < file.txt
    

    这将读取 file.txt 的内容,并显示包含 "pattern" 的行。

结合输入和输出重定向

你可以同时使用输入和输出重定向,将命令的输入来源和输出目标重定向到文件。例如:

sort < unsorted.txt > sorted.txt

这将读取 unsorted.txt 文件的内容,对其进行排序,并将结果保存到 sorted.txt 文件中。

总结

  • 命令的输入:指的是命令从哪里获取数据,默认是标准输入(stdin)。
  • 输入重定向:使用 < 符号将命令的输入来源从标准输入重定向到一个文件。
  • 管道输入:使用 | 符号将一个命令的输出作为另一个命令的输入。

通过理解和灵活使用输入重定向和管道,你可以更高效地处理数据和文件内容。在日常的 Linux 操作中,这些技术能够极大地提高你的工作效率。