查看系统支持的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. 【lwip】08-ARP协议一图笔记及源码实现

    目录 前言 8.1 IP地址与MAC地址 8.2 ARP协议简介 8.3 ARP协议报文 8.4 ARP缓存表 8.4.1 ARP缓存表简介 8.4.2 LWIP中的缓存表 8.4.3 ARP缓存表数 ...

  2. 洛谷P5309 Ynoi 2011 初始化 题解

    题面. 我也想过根号分治,但是题目刷得少,数组不敢开,所以还是看题解做的. 这道题目要用到根号分治的思想,可以看看这道题目和我的题解. 题目要求处理一个数组a,支持如下操作. 对一个整数x,对数组长度 ...

  3. springboot中使用mybatis_plus逆向工程

    创建springboot项目,选择图片中所示依赖 mybatis-plus生成的依赖 <!-- mybatis_plus --> <dependency> <groupI ...

  4. 支持 equals 相等的对象(可重复对象)作为 WeakHashMap 的 Key

    原文地址 代码地址 问题 长链接场景下通常有一个类似 Map<String, Set<Long>> 的结构,用来查找一个逻辑组内的哪些用户,String 类型的 Entry.k ...

  5. 基于python的数学建模---机场航线设计

    数据集 拿走: 链接:https://pan.baidu.com/s/1zH5xhpEmx2_u5qO9W4gCkw 提取码:2wl5 数据集来自航空业,有一些关于航线的基本信息.有某段旅程的起始点和 ...

  6. 网络编程:多进程实现TCP服务端并发、互斥锁代码实操、线程理论、创建线程的两种方式、线程的诸多特性、GIL全局解释器锁、验证GIL的存在

    目录 多进程实现TCP服务端并发 互斥锁代码实操 线程理论 创建线程的两种方式 线程的诸多特性 GIL全局解释器锁 验证GIL的存在 GIL与普通互斥锁 python多线程是否有用 死锁现象 多进程实 ...

  7. 关于linux建立u盘legacy启动方式引导

    前言 我一直在用linux,但是我在linux制作pe启动盘无法实现,windows有很多制作pe启动盘的软件,如大白菜,u深度什么的,但是linux没有对应的软件,所以我想写一个类似的工具,那么就有 ...

  8. Windows 下 OpenSSH 安装使用

    OpenSSH 是安全 Shell (SSH) 工具的开放源代码版本,Linux 及其他非 Windows 系统的管理员使用此类工具跨平台管理远程系统. OpenSSH 在 2018 年秋季已添加至 ...

  9. VulnHub靶机渗透实战9-vikings

    ​本次靶机是CTF风格的靶机. 靶场地址:Vikings: 1 ~ VulnHub 网络呢还是桥接模式. Description Back to the Top A CTF machine with ...

  10. Burp Suite安装

    1.Burpsuite简介  Burp Suite是一款集成化的渗透测试工具,包含了很多功能,可以帮助我们高效地完成对Web应用程序的渗透测试和攻击. Burp Suite 由Java语言编写,基于J ...