美文网首页
23. 编写第一个 Shell 脚本

23. 编写第一个 Shell 脚本

作者: 独木舟的木 | 来源:发表于2019-02-05 20:05 被阅读36次

    [TOC]

    什么是 Shell 脚本

    一个 shell 脚本就是一个包含一系列命令的文件。shell 读取这个文件,然后执行文件中的所有命令。

    怎样编写一个 Shell 脚本

    创建和运行 Shell 脚本的步骤:

    1. 使用文本编辑器编写脚本。 Shell 脚本就是普通的文本文件。
    2. 使脚本文件可执行。设置脚本文件的权限来允许其可执行。
    3. 把脚本放置到 shell 能够找到的地方。当没有指定可执行文件明确的路径名时,shell 会自动地搜索某些目录,来查找此可执行文件。为了最大程度的方便,我们会把脚本放到这些目录当中。

    脚本文件格式

    1. 编辑脚本文件:hello_world
    #!/bin/bash
    # This is our first script.
    echo 'Hello World!'
    
    • 第一行的 #! 字符序列是一种特殊的结构叫做 shebang。 这个 shebang 被用来告诉操作系统将执行此脚本所用的解释器的名字。每个 shell 脚本都应该把这一文本行作为它的第一行。
    1. 修改文件权限:
    $ ls -l hello_world
    -rw-r--r-- 1  me    me      63  2009-03-07 10:10 hello_world
    $ chmod 755 hello_world
    $ ls -l hello_world
    -rwxr-xr-x 1  me    me      63  2009-03-07 10:10 hello_world
    

    对于脚本文件,有两个常见的权限设置:

    • 权限为 755 的脚本,则每个人都能执行,
    • 权限为 700 的脚本,只有文件所有者能够执行。

    脚本文件位置

    为了运行脚本,必须指定脚本文件明确的路径。

    $ ./hello_world
    

    如果没有给出可执行程序的明确路径名,那么系统每次都会搜索一系列的目录,来查找此可执行程序。

    $ echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
    

    修改 .bashrc 文件中包含下面一行文本:

    export PATH=~/bin:"$PATH"
    

    使修改后的 .bashrc 文件立即生效:

    $ . .bashrc
    
    # 同上
    $ source .bashrc
    

    注意:在 Ubuntu 系统中,如果存在 ~/bin 目录,当执行用户的 .bashrc 文件时, Ubuntu 会自动地添加这个 ~/bin 目录到 PATH 变量中。所以在 Ubuntu 系统中,如果我们创建 了这个 ~/bin 目录,随后退出,然后再登录,一切会正常运行。

    然后把你的脚本文件放在:/home/YourName/bin 目录下。

    脚本文件应该放在哪里

    • 个人】:~/bin 目录是存放为个人所用脚本的好地方。
    • 所有人】:如果我们编写了一个脚本,系统中的每个用户都可以使用它,那么这个脚本的传统位置是 /usr/local/bin。
    • 系统管理员】:系统管理员使用的脚本经常放到 /usr/local/sbin 目录下。
    • 本地软件】:大多数情况下,本地支持的软件,不管是脚本还是编译过的程序,都应该放到 /usr/local 目录下, 而不是在 /bin 或 /usr/bin 目录下。这些目录都是由 Linux 文件系统层次结构标准指定,只包含由 Linux 发行商 所提供和维护的文件。

    更多的格式技巧

    严肃认真地写脚本的目标——方便维护。
    使脚本容易阅读和理解是一种方便维护的方法。

    1. 长选项名称

    # 1.在命令行中输入选项时,为了减少输入,短选项更受欢迎。
    $ ls -ad
    
    # 2.在脚本文件中,长选项能提供可读性。
    $ ls --all --directory
    

    2. 缩进和行继续符

    当使用长命令时,通过把命令在几个文本行中展开,可以提高命令的可读性。
    使用行继续符(反斜杠 - 回车符序列)和缩进,可以让一个复杂命令的逻辑性更清楚地描述给读者。

    ❎ 不适合的示例:

    $ find playground \( -type f -not -perm 0600 -exec
    chmod 0600 ‘{}’ ‘;’ \) -or \( -type d -not -perm 0711 -exec chmod
    0711 ‘{}’ ‘;’ \)
    

    ✅ 推荐的示例:

    find playground \
        \( \
            -type f \
            -not -perm 0600 \
            -exec chmod 0600 ‘{}’ ‘;’ \
        \) \
        -or \
        \( \
            -type d \
            -not -perm 0711 \
            -exec chmod 0711 ‘{}’ ‘;’ \
        \)
    

    3. 为书写脚本文件配置 vim 编辑器

    • 打开语法高亮:
      :syntax on 或者 :set hlsearch

    • 设置一个 tab 字符所占据的列数。默认是 8 列。把这个值设置为 4(一种常见做法), 从而让长文本行更容易适应屏幕。停止缩进,输入 Ctrl+D。
      :set tabstop=4

    • 打开 "auto indent" 功能。这导致 vim 能对新的文本行缩进与刚输入的文本行相同的列数。
      :set autoindent

    通过把这些命令(没有开头的冒号字符)添加到你的 ~/.vimrc 文件中,这些改动会永久生效。

    相关文章

      网友评论

          本文标题:23. 编写第一个 Shell 脚本

          本文链接:https://www.haomeiwen.com/subject/fqivsqtx.html