首页 > 系统相关 >Shell的基本使用方法

Shell的基本使用方法

时间:2023-05-04 22:32:42浏览次数:30  
标签:基本 脚本 shell bin sh Shell test 方法

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。

一、Shell 脚本

Shell 脚本(shell script),是一种为 shell 编写的脚本程序。

业界所说的 shell 通常都是指 shell 脚本,但读者朋友要知道,shell 和 shell script 是两个不同的概念。

由于习惯的原因,简洁起见,本文出现的 "shell编程" 都是指 shell 脚本编程,不是指开发 shell 自身。

二、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)

三、第一个shell脚本

打开文本编辑器(可以使用 vi/vim 命令来创建文件),新建一个文件 test.sh,扩展名为 sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用 php 写 shell 脚本,扩展名就用 php 好了。

输入一些代码,第一行一般是这样:

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

Shell的基本使用方法_Shell

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

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

运行 Shell 脚本有两种方法:

1、作为可执行程序

将上面的代码保存为 test.sh,并 cd 到相应目录:

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 告诉系统说,就在当前目录找。

2、作为解释器参数

这种运行方式是,直接运行解释器,其参数就是 shell 脚本的文件名,如:

/bin/sh test.sh
/bin/php test.php

这种方式运行的脚本,不需要在第一行指定解释器信息,写了也没用。

ubuntu(linux)下 source、sh、bash、./ 执行脚本的区别是什么?

1. source命令用法:

source FileName

作用:在当前 bash 环境下读取并执行 FileName 中的命令。该 filename 文件可以无 "执行权限"。

注:该命令通常用命令 . 来替代。

2. sh、bash的命令用法:

sh FileName
或
bash FileName

作用:打开一个子 shell 来读取并执行 FileName 中命令。该 filename 文件可以无 "执行权限"。

注:运行一个shell脚本时会启动另一个命令解释器。

3、./的命令用法:

./FileName

作用: 打开一个子 shell 来读取并执行 FileName 中命令,该 filename 文件需要 "执行权限"。

注:运行一个 shell 脚本时会启动另一个命令解释器。

标签:基本,脚本,shell,bin,sh,Shell,test,方法
From: https://blog.51cto.com/u_15641375/6244630

相关文章

  • DDD领域设计基本概念
    什么是DDDDDD(领域驱动设计)是一种处理高度复杂领域的设计思想,是一种架构设计方法论,是一种设计模式。以高内聚低耦合为目的,把一个复杂的软件应用系统中各个部分进行一个很好的拆解和封装,对软件系统进行模块化的一种思想。DDD不仅可以用于微服务设计,还可以很好地应用于企业中台的设......
  • win10家庭版没有Hyper-v的解决方法
    pushd"%~dp0"dir/b%SystemRoot%\servicing\Packages\*Hyper-V*.mum>hyper-v.txtfor/f%%iin('findstr/i.hyper-v.txt2^>nul')dodism/online/norestart/add-package:"%SystemRoot%\servicing\Packages\%%i"delh......
  • 对于Object中一些方法的疑惑与理解
    getClass这是生成字节码文件对象的三种方式之一,由任意对象调用getClass(Object中定义的方法)可以返回该类的字节码文件对象,一般一般用于反射getName该方法是,Class类中定义的一个方法,用于返回字节码文件对象所表示的实体(类或者接口)的全类名2023.5.4对于向上转型和任何类型都可以......
  • Linux配置添加自定义shell脚本需要的PATH
    Linux添加自定义shell脚本记录下,便于之后复习使用。1.确定一个目录e.g.#到达用户目录cd~#创建一个bin文件夹来放脚本文件mkdirbincd./binpwd得到的是/root/bin2.把这个路径放到PATH中cd~#可以用ls-a看一看有没有.branrc文件vim~/.bashrc#编辑最后加入......
  • requests基本介绍
    1.requests的基本使用:  2.实例:请求丁香园疫情首页: ......
  • 为啥this和super关键字在构造方法中只能写在第一行
    首先对于super:super关键字会在子类的构造方法中使用,用来对父类属性进行初始化,而super必须放在第一行,因为子类有可能使用父类属性,就必须在使用之前先对父类属性完成初始化。对于this关键字: 如上代码:this关键字必须写在构造方法的第一行,因为如果在this关键字之前的代码用到了C0......
  • android中修改progressbar的两种方法
    1.创建自定义进度条样式在res/values/styles.xml文件中创建一个自定义样式来指定进度条的颜色。例如,以下样式设置进度的前景色为蓝色,背景色为灰色:<stylename="CustomProgressBar"parent="@android:style/Widget.ProgressBar.Horizontal"><itemname="android:progressDr......
  • 练习——简单的TcpCS了解基本概念
    packagecom.net;importjava.io.IOException;importjava.io.OutputStream;importjava.net.*;//客户端@SuppressWarnings({"all"})publicclassTCPClient_{publicstaticvoidmain(String[]args){Socketsocket=null;OutputS......
  • shell
    1、编写shell脚本的格式```bash#!/bin/bash#指定解析器#注释1、编写一个脚本,实现创建100个txt文件#!/bin/bashtouch{1..100}.txt```2、运行脚本的几种方式```bash方式一:绝对路径(运行的脚本必须有可执行权限)方式二:相对路径(运行的脚本必须有可执行权限)方式三:解释器+文......
  • JAVA中字符串的常用方法
    JAVA中字符串的常用方法字符串不能改变,创建后就无法更改了创建字符串的两种方式直接赋值new的方式获取一个字符串对象 构造方法构造方法说明publicString()创建空白字符串,不包含任何内容publicString(StringOriginal)根据传入的字符串,创建字符串对象......