什么是shell

shell就是我们常说的命令行程序,它是一个作为用户与Linux系统间接口的程序,它允许用户向操作系统输入要执行的命令。在Linux中安装多个shell是可行的,一般系统有默认的shell,linux中默认的为Bash

查看系统所有shell及当前起作用shell

[liangc@ip-10-30-20-114 ~]$ cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash 查看当前shell,通过shell变量查看
[liangc@ip-10-30-20-114 ~]$ echo $SHELL
/bin/bash

如何编写shell

使用文本编辑工具,将命令组合到一个文件中即可,在linux中,扩展名无特别意义,它只是为了更清楚标识这个文件而已,所以你的shell脚本文件可以无扩展名。但是一般都会加上.sh作标识

vi first

敲入如下命令

#!/bin/sh
echo "hello world"
exit 0

以上是一个简单的shell脚本

第一行#!是一种特殊注释,后面的/bin/sh表示这个脚本将使用此shell来解析执行,需使用绝对路径

exit的使用确保脚本返回一个有意义的状态码,如果其它脚本需要调用这个脚本程序,那么返回一个有意义的状态码是很有必要的。但建议时,即使这个程序不会被其它程序调用,还是返回一个状态码吧。一般用0表示成功。

运行shell

两种运行方式

1 调用shell,把脚本名当成一个参数

/bin/sh first

2 使用chmod赋予可执行权限

chmd +x first
./first

shell语法

变量,在shell里,变量可以不先声明,只是通过使用它们(比如赋初值时)来创建它们。所有变量被看作字符串并以字符串存储,即使值为数字时也如此。linux区分大小写,所以Hello和hello是不同的哦。

在变量面前加上“$"可访问该变量。

hello="hello world"
echo $hello
echo "$hello"
echo '$hello'
echo \$hello
输出
hello world
$hello
$hello

注意,如果字符串里面包含空格,必须用引号把它们括起来。此外,等号两边不能有空格

使用单引号和反斜线不会进行变量的替换

环境变量

环境变量 说明
$HOME 当前用户家目录
$PATH 以冒号分隔的用来搜索命令的目录列表
$0 shell脚本的名字
$# 传递级脚本的参数个数
$$ shell脚本的进程号,脚本通常用它来生成一个唯一的临时文件,如/tmp/tmpfile_$$

参数变量

参数变量 说明
$1 ,$2.... 脚本程序的参数
$* 在一个变量中列出所有参数,各参数之间用环境变量IFS中第一个字符分隔开
$@ 是$*的变体,它不使用IFS变量,即使IFS为空,参数也不会挤在一起

linux系统shell基础知识入门的更多相关文章

  1. linux系统shell基础知识入门二

    条件判断语句 test或[],这两是等价的.但用[]这种可能看起来更简洁 必须在[符号和检查条件之间留出空格,而test命令之后也总是应该有一个空格 如果要把test 和then 放一行上,那么必须在 ...

  2. 【Linux教程】Linux系统零基础编程入门,想当大神?这些你都要学

    ✍ 文件和文件系统 文件是Linux系统中最重要的抽象,大多数情况下你可以把linux系统中的任何东西都理解为文件,很多的交互操作其实都是通过文件的读写来实现的. 文件描述符 在Linux内核中,文件 ...

  3. Linux系统网络基础知识及配置

    一:DNS(domain name system)简介 DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而 ...

  4. Linux基础知识入门

    [Linux基础]Linux基础知识入门及常见命令.   前言:最近刚安装了Linux系统, 所以学了一些最基本的操作, 在这里把自己总结的笔记记录在这里. 1,V8:192.168.40.10V1: ...

  5. Linux shell基础知识(上)

    Linux shell基础知识(上) 目录 一.shell介绍 二.命令历史 三.命令补全和别名 四.通配符 五.输入输出重定向 六.管道符和作业控制 七.shell变量 八.环境变量配置文件 九.b ...

  6. Linux Shell 基础知识(一)

    1. 本文知识结构 2. shell 基础知识 2.1 shell 简单介绍 ​ GNU bash shell 能提供对 Linux 系统的交互式访问,一般来说,使用快捷键 Ctrl + Alt + ...

  7. linux运维基础知识

    linux运维基础知识大全 一,序言 每一个微不足道的知识,也是未来的铺垫.每一份工作的薪资职位,也是曾经努力的结果. 二,服务器 1,运维人员工作职责: 1)保证数据不丢失:2)保证服务器24小时运 ...

  8. Linux学习之六-Linux系统的基础优化

    Linux系统的基础优化 何谓'优化'.顾名思义,优化就是采取某些措施使某个东西或者某事物变得更加优异,出色.对于Linux而言,在初期安装好系统之后,也需要对其进行一定的基础优化,可分为安全上的优化 ...

  9. Hibernate入门1. Hibernate基础知识入门

    Hibernate入门1. Hibernate基础知识入门 20131127 前言: 之前学习过Spring框架的知识,但是不要以为自己就可以说掌握了Spring框架了.这样一个庞大的Spring架构 ...

随机推荐

  1. Python从零开始——字符串String

    一:Python字符串有哪些内容 二:Python字符串操作符 三:Python字符串格式化——占位符格式化 四:Python字符串格式化——format()函数 五:Python字符串常用操作函数

  2. kolla部署openstack allinone,报错 ImportError: cannot import name decorate

    使用 kolla-ansible 部署 opnenstack:stein,最后无法导入变量脚本,报错信息如下: [root@kolla ~]# . /etc/kolla/admin-openrc.sh ...

  3. pytest_前置后置

    今天总结下pytest,pytest简直就是python自动化中的高富帅,各种操作,哈哈 这次总结主要涉及到了以下几点: 1.unittest中的setUp.tearDown.setUpClass.t ...

  4. Unity检视面板的继承方法研究 (二)

    之前做了普通对象的可继承的检视面板类, 现在想要实现对Unity自带的检视面板的继承的话, 要怎样写呢? 万变不离其宗,  仍然是围绕UnityEditor.Editor.CreateEditor 这 ...

  5. HTML与CSS学习笔记(2)

    1.CSS背景样式? background-color 背景色 background-image 背景图 url(背景地址) 默认:会水平垂直铺满背景图 background-repeat 平铺方式 ...

  6. echars 饼状图 轮循 水平翻转

    code: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  7. 四则运算————javaweb版

    1.设计思路: 定义一个类arithmetic,在该类中的定义相关成员,随机产生的题目以及答案用数组承接,在第一个jsp里面用户输入题目数量以及设置做题时间,将这两个数传到第二个jsp页面,在此页面定 ...

  8. MySQL实战45讲学习笔记:第十七讲

    一 .引子 我在上一篇文章,为你讲解完 order by 语句的几种执行模式后,就想到了之前一个做英语学习 App 的朋友碰到过的一个性能问题.今天这篇文章,我就从这个性能问题说起,和你说说 MySQ ...

  9. JaCoCo覆盖率计数器

    覆盖率计数器 JaCoCo使用一组不同的计数器来计算覆盖率指标.所有这些计数器都是从Java类文件里获取信息,这些类文件包含Java 字节码指令和调试信息.即使没有可用源代码情况下,这种方法可以实时有 ...

  10. Exceptionless in Docker on Linux 搭建及部署疑难杂症

    https://github.com/exceptionless/Exceptionless https://github.com/exceptionless/Exceptionless.UI 项目拉 ...