【AcWing-Linux】03. Shell

发布时间 2023-12-01 13:07:33作者: Ac_c0mpany丶

Shell

一、Shell简介

shell是我们通过命令行与操作系统沟通的语言

shell是一种脚本语言,通过对应的脚本解释器解释执行,一般作为内置于操作系统的应用程序向用户提供访问操作系统内核的服务。

shell脚本(shell script)可以直接在命令行中执行,也可以将一套逻辑组织成一个文件,方便复用

二、Shell环境

Shell编程跟JavaScript、Python编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。

Linux中常见的shell种类众多,常见的有:

  • Bourne Shell(/usr/bin/sh或/bin/sh)
  • Bourne Again Shell(/bin/bash)
  • C Shell(/usr/bin/csh)
  • K Shell(/usr/bin/ksh)
  • zsh
  • ....

Linux系统中一般默认使用bash,所以接下来讲解bash中的语法。

文件开头需要写#! /bin/bash,指明bash为脚本解释器。

#! 告诉系统其后路径所指定的程序即是解释此脚本文件的Shell程序。

三、第一个Shell脚本

打开文本编辑器(可以使用vi/vim来创建文件),新建一个test.sh,扩展名为.sh(扩展名不会影响脚本执行,见名之意即可)。

新建一个test.sh文件,内容如下:

#! /bin/bash
echo "Hello World!"

#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell。

echo命令用于向窗口输出文本。

运行方式:

  1. 作为可执行文件
acs@9e0ebfcd82d7:~$ chmod +x test.sh  # 使脚本具有可执行权限

acs@9e0ebfcd82d7:~$ ./test.sh  # 当前路径下执行
Hello World!  # 脚本输出

acs@9e0ebfcd82d7:~$ /home/acs/test.sh  # 绝对路径下执行
Hello World!  # 脚本输出

acs@9e0ebfcd82d7:~$ ~/test.sh  # 家目录路径下执行
Hello World!  # 脚本输出

注意:一定要写成 ./test.sh,而不是 test.sh,运行其它二进制的程序也一样,直接写test.sh,linux系统会去PATH里寻找有没有叫test.sh的,而只有/bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找。

  1. 作为解释器参数
acs@9e0ebfcd82d7:~$ bash test.sh
Hello World!  # 脚本输出