首页 > 系统相关 >【AcWing-Linux】03. Shell

【AcWing-Linux】03. Shell

时间:2023-12-01 13:11:06浏览次数:42  
标签:bin 03 Shell 脚本 sh Linux test bash

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!  # 脚本输出

标签:bin,03,Shell,脚本,sh,Linux,test,bash
From: https://www.cnblogs.com/keyongkang/p/17869466.html

相关文章

  • Windows安装Powershell7.x
    事件起因:由于需要运行一个脚本,但是该脚本是广大网友群众使用Powershell7写的,我自带的是Powershell5,运行过程中总是出现莫名其妙的问题,于是决定将Powershell升级到Powershell7.4.0解决办法:1、首先确认当前系统自带的Powershell的版本:$PsVersionTable.PSVersion......
  • vue报错export 'default' (imported as 'VueRouter') was not found in 'vue-route
    直接使用npminstallvue-router-save安装的路由,运行报错 经排查后发现是安装的vue-router版本太高使用npmuninstallvue-router卸载之前安装的路由使用[email protected]安装低版本的路由问题解决!!! ......
  • Linux进行网络带宽优化
    如何使用Linux进行网络带宽优化网络带宽的优化是提高网络传输速度和质量的关键。在Linux系统中,有许多方法可以帮助我们优化网络带宽调整内核参数调整Linux内核参数可以改善网络性能。a)修改TCP窗口大小TCP窗口大小决定了发送和接收数据的速度。通过增加TCP窗口大小,可以加快网络......
  • Linux下获取CPU温度
    不同架构的CPU,CPU温度所在的系统文件有区别CPU温度相关的系统文件位于cd/sys/class/thermal可以看到文件夹下有很多命名为thermal_zone{n}的文件夹以thermal_zone0文件夹为例cat/sys/class/thermal/thermal_zone0/type可以获取到thermal_zone0设备的类型对x86架构的CPU......
  • 查看linux的磁盘读写io占用情况,需要新装软件
    查看linux的磁盘读写io占用情况 要查看Linux系统上的磁盘读写IO占用情况,您可以使用一些命令和工具来监视磁盘活动。以下是一些常用的方法:iostat命令:iostat是一个系统监视工具,可以显示关于CPU、磁盘、TTY等的统计信息。要查看磁盘IO统计信息,可以使用以下命令:ba......
  • linux系统部署nginx+php-fpm
    一、环境准备1、最小化安装linux操作系统:CentOSLinuxrelease7.9.2009(Core)2、根据需求下载nginx和php源码包nginx:http://nginx.org/en/download.html    php:https://www.php.net/releases/这里使用nginx-1.24.0.tar.gz和php-7.4.20.tar.gz版本......
  • mybatis mysql Data truncation: Incorrect integer value: '' for column 'xxx' at
     com.mysql.jdbc.MysqlDataTruncation:Datatruncation:Incorrectintegervalue:''forcolumn'n_before_group_id'atrow1 mybatisforeach插入时出现这个报错,原因是某字段插入空值时需要插入NULl而不是‘’ 解决办法:<choose><whentest="item.x......
  • [转]Java 读取 FinalShell 已保存的密码
    转自:https://blog.csdn.net/Linkaias/article/details/133805438也可以找一些在线解密网站来查看密码。 FinalShell可用来连接到Linux服务器,官网:https://www.hostbuf.com/?install_fspackageorg.example;importjava.io.ByteArrayOutputStream;importjava.io.DataOu......
  • Linux Mint(Ubuntu)系统VS Code C/C++环境配置include error问题
    1.问题描述安装完成LinuxMint后发现随系统自带了gcc,心里比较开心,以为自己不需要装了。但是在安装完VSCode之后,一直提示#includeerrorsdetected.PleaseupdateyourincludePath.Squigglesaredisabledforthistranslationunitlinux2.解决方案重新通过apt安装gcc......
  • Linux下通过AnySetup配置防火墙
     软件AnySetup主要功能主要功能是对Linux操作系统下的基本配置进行管理、多种服务配置进行管理、安全配置进行管理等。如:操作系统的升级管理,软件包的安装、更新和卸载管理,软件仓库源的管理,系统时间和时区的管理,系统语言环境的管理,网络环境的配置管理,系统服务的启动、关闭、......