09 Linux Shell命令行格式的理解和使用方式

文章类别 in linux

我们或多或少都会接触到命令行,在Linux中,掌握命令是必不可少的,命令行是伴随着我们接下来一直学习到的东西,所以这一篇就来认识一下什么Linux的shell命令行,对shell命令行的语法格式和它的参数以及选项进行一个深入理解,以便接下来的学习研究。

shell命令行长这样:

command [options] [argument]

其中:

  • command : 命令的名字
  • options : 选项,它用来改变命令的执行方式,一般前面会加个“-”符号
  • argument: 参数,指定操作的对象

例如:

ls -l /etc

其中ls就是命令的名字, -l 就是指定要这个命令执行的方式,比如这里是列出目录, /etc就是参数,我们这里是对 /etc的目录进行操作。

所以这句命令行的意思就是 : 使用ls命令列出 /etc 下的所有目录。

shell命令行的用法

命令选项合并使用

比如我们要列出etc目录下的所有文件,包含隐藏文件,那么我们就会这样输入:

ls -a -l /etc

然后选项合并之后可以变成成这样:

ls -al /etc

命令参数通配符的使用

shell命令的通配符的存在是为了我们在使用命令参数的时候对文件目录进行描述,比如我要查询以.sh结尾的所有文件,那么这个时候通配符就会让我们很方便的使用了。

常用的通配符有以下几个:

  • *  一个或任意多个
  • ?  任意单一字符
  • []  包含在[]内的单字符

例如:

列出etc下的 子目录 的所有以 .conf 结尾的文件

ls -al /etc/*/*.conf 

列出当前目录下以a开头,随后一个为随意字母的txt文件:

ls a?.txt

列出当前目录下以a开头,随后三个为随意字母的txt文件:

ls a??.txt

列出当前目录下,以a开头,随后含有1,2,3,4的txt文件:

ls a[1,2,3,4].txt 这里也可以写成 `ls a[1-4].txt`。

shell重定向操作

有时候我们在字符窗口输入命令行的时候,可能输入源不只是我们敲入的命令行,也可能来源于某个文件,在结果输出的时候有时候数据太多,我们可能需要将它的输出定向到指定的文件,然后我们去文件里面看输出结果,还有的就是一些错误信息,我们也可以将它重定向输出,而不仅仅是在屏幕输出。

所以有这三个:

  • 标准输入 对应的重定向操作符为 “<” , “«”;
  • 标准输出 对应的重定向操作符为 “>” , “»”;
  • 标准错误输出 对应的重定向操作符为 “2>” , “2»“。

标准输入

标准输入

我们看到第一个命令: wc < /etc/shadow

这个命令的意思就是:wc是统计命令,来源是/etc/shadow,统计的行数,单词数,字符数输出结果。

第二个命令 :

wc << bb
>...
>...
>...
>bb

这里的 « 就是告诉命令输入源来源于 bb 和 bb之间,这个bb就是内容的分隔符,可以使任意字符,然后我们就统计到我们在bb之间的行数,单词数,字符数。

标准输出

比如我们将结果输出放到 ls.txt 就可以这样:

ls /etc >ls.txt

如果这时候ls.txt文件不存在,那么系统会自动创建一个,如果系统已经存在了ls.txt,那么系统会将ls.txt原有的内容覆盖掉。如果不想被覆盖,那么这时候就可以用到 “»”:

ls /etx >>ls.txt

这个时候将输出的内容追加到ls.txt。

标准错误输出

标准错误输出和标准输出差不多,只不过在输出的时候是 : 2> error.txt;

shell管道

管道,顾名思义,就是将第一个命令的输出当做第二个命令的输入,管道的符号为” “,比如:
ls -l /etc |more

将 /etc 下的目录输出,然后用more的进行分屏显示。

shell的转义

shell的命令有一些特殊的字符是有含义的,我们在使用它们的时候要进行转义才可以使用。比如刚才我们已经知道 是一个通配符,代表一个任意字符, 但是如果我们真的有一个文件叫做 abc?呢,我们就不能把当做通配符来使用,这时候就对它进行转义,让系统知道这是真正文件名。

那么转义字符有: 反斜杠(\) 、双引号(”“)、单引号(’‘)。

比如我要列出abc?这个文件下的所有目录:

ls -l abc/?/*

也可以这样写:

ls -l 'abc?/*'

也可以这样写:

ls -l "abc?/*"

当然了对于一些更特殊的字符即使我们使用了转义字符,它也会保留自己,比如 “$” ,”`” ,”"

比如这里我用 “” 对 ` 进行转义是无效的:

标准输入

好了,我们对命令行已经有了一定的了解,也知道了怎么使用,接下来的篇章会对常用的命令行进行学习,等我们将常用的命令行撸完之后就会对软件的安装管理,解压等进行学习,服务器搭建也紧跟其上O(∩_∩)O~~~~