什么是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. 关于宝塔一个站点绑定多个域名宝塔ssl证书的问题

    目前“宝塔SSL”自动申请绑定一个证书,即根域名和www域名,如果还需要绑定手机端m则需要绑定多个域名如果多域名绑定一个网站数据,需要新建多个站点指向同一文件目录. 用相同的方法,在不新建站点的前提下 ...

  2. UE4 C++中出现的让人手足无措的问题(持续更新)

    最近开始涉入UE4更深层的一面——UE4 C++,由于其中的体系和在课本或者是网课上那么说的C++体系有一些误差(准确说就是遵循的C++标准不同),导致学习与运用起来有些吃力,所以作此总结,为自己的开 ...

  3. vue中webpack的配置理解

    当我们需要和后台分离部署的时候,必须配置config/index.js: 用vue-cli 自动构建的目录里面  (环境变量及其基本变量的配置) var path = require('path') ...

  4. Mysqldump一次备份多个指定数据库

    今天碰到了,就作个记录. mysqldump -u user -p --databases DB1 DB2 --single-transaction --master-data=2 --default ...

  5. 0.Jenkins 介绍

    一.持续集成的概念 continuous  intergaration  (简称CI),持续集成. 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味 ...

  6. 17-numpy笔记-莫烦pandas-5

    代码 import pandas as pd import numpy as np left=pd.DataFrame({'key':['K0','K1','K2','K3'], 'A':['A0', ...

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

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

  8. Cannot resolve reference to bean 'mongoTemplate' while setting bean property 'mongoOperations'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with na

    问题: Springboot 启动时出错,报没法创建bean的错误,看到nested最后是关于mongoTemplate的错误. 过程: 看网上大多说的是修改mongoTemplate的配置,但是sp ...

  9. 实现 Cloneable 需要注意

    产品Product里面包含BaseInfo对象:Product(productName,companyName,baseinfo)如果implement Cloneable  需要实现   注意强转类 ...

  10. pymongo方法详解

    1.连接mongodb ######### 方法一 ########## import pymongo # MongoClient()返回一个mongodb的连接对象client client = p ...