查看系统支持的shell

cat /etc/shells
[root@iZwz9almo8p830btq7voo9Z shellLearning]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash

查看系统当前的shell

[root@iZwz9almo8p830btq7voo9Z shellLearning]# echo $SHELL
/bin/bash

Shell脚本文件编写规范

脚本文件后缀名规范

shell脚本文件就是一个文本文件,建议使用.sh结尾

首行格式规范

#!/bin/bash

含义:设置当前shell脚本采用bash解析器运行脚本代码

注释格式

# 单行注释
:<<!
# 多行注释内容
!

脚本文件常用执行的三种方式

  1. sh解析器执行

    sh helloworld.sh
  2. bash解析器执行

    bash helloworld.sh
  3. 仅路径执行

    ./helloworld.sh
    #需要具有可执行权限
    [root@iZwz9almo8p830btq7voo9Z shellLearning]# chmod a+x helloworld.sh
    [root@iZwz9almo8p830btq7voo9Z shellLearning]# ./helloworld.sh
    hello world

    三种方式运行区别

    bash或sh执行是直接通过解析器执行,不需要可执行权限

    通过路径执行需要可执行权限

Shell脚本入门:多命令处理

案例需求

已知目录 /root/shellLearning目录,执行bashch.sh脚本,在目录下创建一个one.txt,在one.txt中写入"hello shell"

步骤分析

  1. 使用mkdir创建/root/shellLearning目录

  2. 创建脚本文件batch.sh

  3. 编辑脚本文件

    1. 创建文件one.txt
    2. 写入hello shell
  4. 执行脚本文件

[root@iZwz9almo8p830btq7voo9Z shellLearning]# bash -v bashch.sh
#!/bin/bash
touch /root/shellLearning/one.txt
echo "hello shell" >> /root/shellLearning/one.txt
[root@iZwz9almo8p830btq7voo9Z shellLearning]# bash bashch.sh

[root@iZwz9almo8p830btq7voo9Z shellLearning]# ls

a.sh a.txt bashch.sh hello.txt helloworld.sh one.txt readme.txt weizhi.sh while.sh

[root@iZwz9almo8p830btq7voo9Z shellLearning]# cat one.txt

hello shell

Shell变量:环境变量

变量类型

  1. 系统环境变量
  2. 自定义变量
  3. 特殊符号变量

系统环境变量

介绍

是系统提供的共享变量,是linux系统加载shell的配置文件中定义的变量共享给所有的shell程序使用

自定义变量

特殊符号变量

Shell的配置文件分类

  1. 全局配置文件

    /etc/profile

    /etc/profile.d/*.sh

    /etc/bashrc

  2. 个人配置文件

    当前用户/.bash_profile

    当前用户/.bashrc

环境变量分类

在linux系统中,环境变量按照其作用范围不同大致可以分为系统级环境变量喝用户级环境变量

系统级环境变量:Shell环境加载全部配置文件中的变量共享给所有用户Shell程序使用,全局共享

用户级环境变量:Shell环境加载个人配置文件中的变量共享给当前用户Shell程序使用,登录用户使用

查看当前shell系统环境变量

env

查看Shell变量(系统环境变量+自定义变量+函数)

set

环境变量演示查看

[root@iZwz9almo8p830btq7voo9Z shellLearning]# echo $HOSTTYPE
x86_64

Shell变量:自定义变量

定义在一个脚本文件中的变量,只能在该脚本文件中使用,就是局部变量。

定义语法

var_name=value

变量定义规则

  1. 变量名称可以有字母,数字和下划线,但是不能以数字开头
  2. 等号两侧不能有空格
  3. 在bash环境中,变量的默认类型都是字符串类型,无法直接进行数值运算
  4. 变量如果有空格,必须使用双引号括起来
  5. 不能使用shell的关键字作为变量名称

查询变量语法

#$var_name
#${var_name}
#区别花括号方法适合拼接字符串

变量删除

#unset var_name
[root@iZwz9almo8p830btq7voo9Z shellLearning]# unset age
[root@iZwz9almo8p830btq7voo9Z shellLearning]# echo 我的名字是$name,年龄是$age
我的名字是zhangsan,年龄是

自定义常量

介绍

就是变量设置值以后不可以修改的变量叫常量,也叫只读变量

顶一规则

#readonly var_name
readonly sex=男

自定义全局变量

父子Shell环境介绍

例如:有2个脚本文件a.sh和b.sh

如果在a.sh中执行了b.sh脚本文件,那么a.sh就是父shell环境,b.sh就是子shell环境

自定义全局变量介绍

就是在当前脚本文件中定义了全局变量,这个全局变量可以在当前shell环境与子shell环境中使用

自定义全局变量语法

export var_name1 var_name2

例子

[root@iZwz9almo8p830btq7voo9Z shellLearning]# touch a.sh b.sh
[root@iZwz9almo8p830btq7voo9Z shellLearning]# ls
a.sh a.txt bashch.sh b.sh hello.txt helloworld.sh one.txt readme.txt weizhi.sh while.sh
[root@iZwz9almo8p830btq7voo9Z shellLearning]# vim a.sh
[root@iZwz9almo8p830btq7voo9Z shellLearning]# vim b.sh
[root@iZwz9almo8p830btq7voo9Z shellLearning]# bash a.sh
b.sh中输出a.sh中的变量var4,值为
#修改为全局变量
[root@iZwz9almo8p830btq7voo9Z shellLearning]# bash a.sh
b.sh中输出a.sh中的变量var4,值为wocao

Shell变量:特殊变量

$n

$n用于接收脚本的参数
$0是脚本名称
$1-$9是1-9个参数
10+用${n}

$#

所有输入参数的个数

$*、$@

都是获取输入的所有参数
1.不使用双括号括起来,功能一样
2.使用双引号括起来
"$*"获取所有的参数拼接为一个字符串
"$@"获取以组参数列表对象

循环语法

for var in 列表变量
do
语句
done

$?上一句shell的执行状态码,0成功,非0失败

$$ 用于获取当前的shell的进程id号

shell系统环境变量深入

创建系统环境变量

  1. 编辑/etc/profile全局配置文件

    #增加命令:定义变量VAR1=VAR1 并导出为环境变量
  2. 重载配置文件/etc/profile,因为配置文件修改后需要立刻加载里面的数据

    source /etc/profile
  3. 在shell环境中读取系统级环境变量VAR1

shell基础命令知识持续更新的更多相关文章

  1. 常用linux基础命令(持续更新...)

    删除 空目录 rmdir非空目录 rm -rf 目录名字-r 就是向下递归,不管有多少级目录,一并删除-f 就是直接强行删除,不作任何提示的意思 删除文件命令rm -f 文件名将会强行删除文件,且无提 ...

  2. 【CDN+】 Hbase入门 以及Hbase shell基础命令

    前言 大数据的基础离不开Hbase, 本文就hbase的基础概念,特点,以及框架进行简介, 实际操作种需要注意hbase shell的使用. Hbase  基础 官网:https://hbase.ap ...

  3. 运维02 Shell基础命令(一)

    Shell基础命令(一)   Shell 教程 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应 ...

  4. git常用命令(持续更新中)

    git常用命令(持续更新中) 本地仓库操作git int                                 初始化本地仓库git add .                       ...

  5. 【github&&git】4、git常用命令(持续更新中)

    git常用命令(持续更新中) 本地仓库操作git int                                 初始化本地仓库git add .                       ...

  6. 运维 04 Shell基础命令(二)

    Shell基础命令(二)   查看Linux的发行版 cat /etc/redhat-release cat /etc/os-release 查看系统用户的id信息 id 用户名 id root id ...

  7. Pig基础学习【持续更新中】

    *本文参考了Pig官方文档以及已有的一些博客,并加上了自己的一些知识性的理解.目前正在持续更新中.* Pig作为一种处理大规模数据的高级查询语言,底层是转换成MapReduce实现的,可以作为MapR ...

  8. Linux命令(持续更新ing)

    *.命令语法:  a.在进行参数设定时,通常为“-”号,若为完整参数名称,则输入“--”符号;  b.指令太长的时候,可以使用“\”符号使指令连续到下一行;  c.各种符号的意义:    ''     ...

  9. Linux 服务器命令,持续更新……

    记录一下常用命令给自己备忘备查,会持续更新-- 一.查看和修改Linux的时间 1. 查看时间和日期,命令: date 2.设定时间和日期 例如:将系统日期修改成2020年2月14日12点的命令: d ...

  10. 第二篇:shell基础命令(部分)

    目录 一.shell命令规则 二.基础命令详解(部分) ls :列出目录内容 mkdir : 创建目录 rmdir :删除目录 touch:新建文件 mv:修改文件(目录)名.移动路径 cp:复制文件 ...

随机推荐

  1. $_SERVER['HTTP_USER_AGENT']:在PHP中HTTP_USER_AGENT是用来获取用户的相关信息的,包括用户使用的浏览器,操作系统等信息

    在PHP中HTTP_USER_AGENT是用来获取用户的相关信息的,包括用户使用的浏览器,操作系统等信息. 我机器:操作系统:WIN7旗舰版 64操作系统 以下为各个浏览器下$_SERVER['HTT ...

  2. 关系抽取--Relation Extraction: Perspective from Convolutional Neural Networks

    一种使用CNN来提取特征的模型,通过CNN的filter的大小来获得不同的n-gram的信息,模型的结构如下所示: 输入 输入使用word2vec的50维词向量,加上 position embeddi ...

  3. 本人常用的sed命令用法

    如果使用sed命令修改文件,需要为sed命令指定[-i]选项(i,insert表示插入指令),下面是本人常用到的几种场景: 1. 在文件最后一行的下一行添加配置 如:在配置文件/etc/profile ...

  4. java学习之JSON

    0X00前言 JSON可以说是javascript的一种数据类型,我们学习JSON是为了在客户端的数据给读取出来,官方的解释是:概述:JSON(JavaScript Object Notation, ...

  5. 【题解】CF1715A Crossmarket

    题面传送门 解决思路 首先,我们让 Megan 先走,因为他可以留下传送门.可以得知,不管怎么走,他到达终点所耗费的能量一定是 \(n+m-2\) . 然后,Stanley 走时就可以利用传送门.考虑 ...

  6. 如何正确遵守 Python 代码规范

    前言 无规矩不成方圆,代码亦是如此,本篇文章将会介绍一些自己做项目时遵守的较为常用的 Python 代码规范. 命名 大小写 模块名写法: module_name 包名写法: package_name ...

  7. vulnhub靶场之DEATHNOTE: 1

    准备: 攻击机:虚拟机kali.本机win10. 靶机:DEATHNOTE: 1,网段地址我这里设置的桥接,所以与本机电脑在同一网段,下载地址:https://download.vulnhub.com ...

  8. 广州2022CCPC补题

    I Infection 知识点: 树上背包 第一次写树上背包的题目,没想到就是在区域赛中 神奇的是树上背包的复杂度,看起来是\(O(n^3)\),但是实际计算只有\(O(n^2)\) 学会树上背包后可 ...

  9. Composer 部署国内镜像

    众所周知的原因,原版的镜像下载会比较慢,建议改成阿里的会比较快. 1 备份你的原镜像文件,以免出错后可以恢复.mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum ...

  10. 【Java SE进阶】Day12 函数式接口、函数式编程(Lambda表达式)

    一.函数式接口介绍 1.概念 仅有一个抽象方法的接口 适用于函数式编程(Lambda使用的接口) 语法糖:方便但原理不变,如for-each是Iterator的语法糖 Lambda≈匿名内部类的语法糖 ...