什么是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. UGUI在两个UI间坐标转换

    在UGUI中,在两个Canvas之间进行坐标转换,从CanvasA下的坐标转换到CanvasB下. 或者在同一个界面下,从不同的节点下,转成相同的坐标. 函数定义 public static bool ...

  2. 2015年第六届蓝桥杯C/C++程序设计本科B组决赛 ——居民集会(编程大题)

    标题:居民集会 蓝桥村的居民都生活在一条公路的边上,公路的长度为L,每户家庭的 位置都用这户家庭到公路的起点的距离来计算,第i户家庭距起点的距 离为di.每年,蓝桥村都要举行一次集会.今年,由于村里的 ...

  3. AE cc 2019 下载链接

    [安装环境]:win7/win8/win10 [64位下载] 百度网盘链接: pan.baidu.com/s/1iZcxpyqsRLXD4QNZoHgzPw   提取码:2u4j

  4. 百度PaddlePaddle:

    百度正式发布PaddlePaddle深度强化学习框架PARL 近日,百度PaddlePaddle正式发布了深度强化学习框架 PARL,同时开源了基于该框架的.在 NeurIPS 2018 强化学习赛事 ...

  5. hdu1495-非常可乐-(倒水问题bfs)

    http://acm.hdu.edu.cn/showproblem.php?pid=1495 题解: 1.最少次数?江湖套路,bfs.2.怎么倒?从一个杯子倒到另一个杯子.3.倒多少?因为没有刻度,所 ...

  6. 爬虫-js

    js的RSA加密 var encrypt = new JSEncrypt(); encrypt.setPublicKey(publickey);  # publickey是已知的 encrypt.en ...

  7. 忍者钩爪 ( ninja) 题解———2019.10.19

    可以到这里测..嘿嘿嘿 题目: [问题 描述 ] 小 Q 是一名酷爱钩爪的忍者, 最喜欢飞檐走壁的感觉, 有一天小 Q 发现一个练习使用钩 爪的好地方,决定在这里大显身手. 场景的天花板可以被描述为一 ...

  8. CF908G New Year and Original Order(DP,数位 DP)

    又一次降智…… (数位 DP 原来可以写这么短,学到了) 问题可以转化为求数位中 $\ge k$ 的有恰好 $j$ 位的数的个数.设为 $c_{j,k}$. 那么答案就是:(考虑把 $k$ 的贡献拆开 ...

  9. Linux性能优化实战学习笔记:第五十四讲

    一.上节回顾 上一节,我带你学习了,如何使用 USE 法来监控系统的性能,先简单回顾一下. 系统监控的核心是资源的使用情况,这既包括 CPU.内存.磁盘.文件系统.网络等硬件资源,也包括文件描述符数. ...

  10. Web协议详解与抓包实战:HTTP1协议-如何用Chrome的Network面板分析HTTP报文(1)

    一.Chrome 抓包:Network 面板 1. Network 面板 • 控制器:控制面板的外观与功能 • 过滤器:过滤请求列表中显示的资源 • 按住 Command (Mac)或 Ctrl (W ...