【Linux Shell】1. Shell 简述

文章目录

  • [【 1. Shell 解释器、Shell语言、Shell脚本 】](#【 1. Shell 解释器、Shell语言、Shell脚本 】)
  • [【 2. Shell 环境 】](#【 2. Shell 环境 】)
  • [【 3. 一个简单的 Shell 脚本 】](#【 3. 一个简单的 Shell 脚本 】)
    • [3.1 Shell 脚本的编写](#3.1 Shell 脚本的编写)
    • [3.2 Shell 脚本的运行](#3.2 Shell 脚本的运行)
      • [3.2.1 作为可执行程序运行 Shell 脚本](#3.2.1 作为可执行程序运行 Shell 脚本)
      • [3.2.2 作为解释器参数运行 Shell 脚本](#3.2.2 作为解释器参数运行 Shell 脚本)

【 1. Shell 解释器、Shell语言、Shell脚本 】

  • Shell 原本是一个应用程序,即 命令行解释器(如下所示),它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用 shell 来启动、挂起、停止甚至是编写一些程序。在 Shell 中可以直接调用Linux系统命令。
  • Shell 脚本是利用利用 Shell 的功能所写的一个程序 ,这个程序是使用纯文本文件,将一些 shell 的语法与指令(含外部指令)写在里面, 搭配正规表示法、管线命令与数据流重导向等功能,以达到我们所想要的处理目的。类似于 批处理文件,一次执行多个指令。不需要编译。
  • Shell 语言是一个利用 C语言编写的程序,用于编写 Shell 脚本。

【 2. Shell 环境 】

  • Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。
  • Linux 的 Shell 种类众多,常见的有: Bourne Shell(/usr/bin/sh或/bin/sh)、 Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell for Root(/sbin/sh)...
  • 而 bash,也就是 Bourne Again Shell,由于易用和免费,Bash 在日常工作中被广泛使用。同时, Bash 也是大多数Linux 系统默认的 Shell 。
  • 在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同样也可以改为 #!/bin/bash。#! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。

【 3. 一个简单的 Shell 脚本 】

3.1 Shell 脚本的编写

  • 打开文本编辑器(可以使用 vi/vim 命令来创建文件),新建一个文件 test.sh,扩展名为 sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果用 php 写 shell 脚本,扩展名就用 php 好了。输入代码如下:
cpp 复制代码
#!/bin/bash
echo "Hello World !"
  • #! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。
  • echo 命令用于向窗口输出文本。

3.2 Shell 脚本的运行

3.2.1 作为可执行程序运行 Shell 脚本

  • 将上面的代码保存为 test.sh,并 cd 到相应目录:
cpp 复制代码
chmod +x ./test.sh  #使脚本具有执行权限
./test.sh  #执行脚本
  • 注意, 一定要写成 ./test.sh,而不是 test.sh,运行其它二进制的程序也一样,直接写 test.sh,linux 系统会去 PATH 里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找。

3.2.2 作为解释器参数运行 Shell 脚本

  • 这种运行方式是,直接运行解释器, 不需要在第一行指定解释器信息,写了也没用,其参数就是 shell 脚本的文件名,如下所示
cpp 复制代码
/bin/sh test.sh
相关推荐
小王努力学编程1 小时前
【Linux系统编程】进程概念,进程状态
linux·运维·服务器·c++
aoxiang_ywj1 小时前
【Linux】内核驱动学习笔记(二)
linux·笔记·学习
liuliu03231 小时前
戴尔笔记本 ubuntu 22.04 开机后进入initramfs界面
linux·运维·ubuntu
熬夜苦读学习2 小时前
Linux进程信号
linux·c++·算法
to future_2 小时前
非阻塞IO,fcntl,多路转接,select,poll,epoll,reactor
linux·网络协议
榆榆欸2 小时前
14.主从Reactor+线程池模式,Connection对象引用计数的深入分析
linux·服务器·网络·c++·tcp/ip
不想学习!!3 小时前
linux之进程控制
java·linux·服务器
良许Linux3 小时前
学电子信息工程时你遇到什么相见恨晚的网站和学习方法?
linux
良许Linux3 小时前
一个人离职前有什么征兆?
linux
神经毒素3 小时前
WEB安全--文件上传漏洞--36C3 CTF includer bypass
linux·安全·web安全