Shell脚本 命令格式

进入 Shell 以后,我们就可以输入命令来使用 Linux 的各种功能了。

 

1. Shell命令的基本格式

command [选项] [参数]

[]表示可选的,也就是可有可无。有些命令不写选项和参数也能执行,有些命令在必要的时候可以附带选项和参数。

ls 是常用的一个命令,它属于目录操作命令,用来列出当前目录下的文件和文件夹。ls 可以附带选项,也可以不带,不带选项的写法为:

[mozhiyan@localhost ~]$ cd demo
[mozhiyan@localhost demo]$ ls
abc          demo.sh    a.out         demo.txt
getsum       main.sh    readme.txt    a.sh
module.sh    log.txt    test.sh       main.c

先执行cd demo命令进入 demo 目录,这是我在自己的主目录下创建的文件夹,用来保存教学使用的各种代码和数据。

接着执行 ls 命令,它列出了 demo 目录下的所有文件,并且进行了格式对齐。

 

2. Shell命令的选项

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

[mozhiyan@localhost demo]$ ls -l
总用量 140
-rwxrwxr-x. 1 mozhiyan mozhiyan 8675 4月   2 15:01 a.out
-rwxr-xr-x. 1 mozhiyan mozhiyan  116 4月   3 09:24 a.sh
-rw-rw-r--. 1 mozhiyan mozhiyan   44 4月   2 16:41 check.sh
-rw-r--r--. 1 mozhiyan mozhiyan  399 3月  11 17:12 demo.sh
-rw-rw-r--. 1 mozhiyan mozhiyan    4 4月   8 17:56 demo.txt
-rw-rw-r--. 1 mozhiyan mozhiyan    0 4月  15 17:26 log.txt
-rw-rw-r--. 1 mozhiyan mozhiyan  650 4月  10 11:06 main.c
-rwxrwxr-x. 1 mozhiyan mozhiyan   69 3月  26 10:13 main.sh
-rw-rw-r--. 1 mozhiyan mozhiyan  111 3月  26 09:56 module.sh
-rw-rw-r--. 1 mozhiyan mozhiyan  352 3月  22 17:40 out.log
-rw-rw-r--. 1 mozhiyan mozhiyan   61 4月  16 11:19 output.txt
-rw-r--r--. 1 mozhiyan mozhiyan    5 4月  11 15:16 readme.txt
-rwxr-xr-x. 1 mozhiyan mozhiyan   88 4月  15 17:23 test.sh

如果加一个-l选项,则可以看到显示的内容明显增多了。-l是长格式(long list)的意思,也就是显示文件的详细信息。

可以看到,选项的作用是调整命令功能。如果没有选项,那么命令只能执行最基本的功能;而一旦有选项,则能执行更多功能,或者显示更加丰富的数据。

短格式选项和长格式选项

Linux 的选项又分为短格式选项和长格式选项。

  • 短格式选项是长格式选项的简写,用一个减号-和一个字母表示,例如ls -l。
  • 长格式选项是完整的英文单词,用两个减号--和一个单词表示,例如ls --all。

一般情况下,短格式选项是长格式选项的缩写,也就是一个短格式选项会有对应的长格式选项。当然也有例外,比如 ls 命令的短格式选项-l就没有对应的长格式选项,所以具体的命令选项还需要通过帮助手册来查询。

 

3. Shell命令的使用参数

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

[mozhiyan@localhost demo]$ ls -l main.c
-rw-rw-r--. 1 mozhiyan mozhiyan 650 4月  10 11:06 main.c

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

[mozhiyan@localhost ~]$ cd demo
[mozhiyan@localhost demo]$ ls
abc          demo.sh    a.out         demo.txt
getsum       main.sh    readme.txt    a.sh
module.sh    log.txt     test.sh      main.c

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

1)选项和参数一起使用

Shell 命令可以同时附带选项和参数,例如:

[mozhiyan@localhost ~]$ echo "http://www.codebaoku.com/shell/"
http://www.codebaoku.com/shell/
[mozhiyan@localhost ~]$ echo -n "http://www.codebaoku.com/shell/"
http://www.codebaoku.com/shell/[mozhiyan@localhost ~]$

-n是 echo 命令的选项,"http://www.codebaoku.com/shell/"是 echo 命令的参数,它们被同时用于 echo 命令。

echo 命令用来输出一个字符串,默认输出完成后会换行;给它增加-n选项,就不会换行了。

2)选项附带的参数

有些命令的选项后面也可以附带参数,这些参数用来补全选项,或者调整选项的功能细节。

例如,read 命令用来读取用户输入的数据,并把读取到的数据赋值给一个变量,它通常的用法为:

read str

str 为变量名。

如果我们只是想读取固定长度的字符串,那么可以给 read 命令增加-n选项。比如读取一个字符作为性别的标志,那么可以这样写:

read -n 1 sex

1是-n选项的参数,sex是 read 命令的参数。

-n选项表示读取固定长度的字符串,那么它后面必然要跟一个数字用来指明长度,否则选项是不完整的。

创建 Shell脚本,所有编程语言的教程都是从使用著名的“Hello World”开始。打开文本编辑器,新建一个文本文件,并命名为 test.sh。Shell脚本基本结构:指定解释器、注释、程序的主体。