bashshell和变量

浇、水 浇、水     2022-12-14     226

关键词:

文章目录


1.什么是shell

shell又称命令解释器,它能识别用户输入的各种命令,并传递给操作系统。他的作用类似于windows操作系统的命令行。在Linux中,shell既是用户交互的界面,也是控制系统的脚本语言。
bash shell功能:
history(内存当中的,而不是磁盘当中的)
-c:清空历史命令(内存中的)
-w:将缓存中的历史记录写入磁盘当中
~/.bash_history 存在磁盘当中的命令记录
echo > ~/.bash_history 清空


1.1bash shell 快捷键:


1.2bash shell 通配符

文件通配符:
*——匹配0或多个字符
?——匹配任意单个字符
[0-9]——匹配数字
[abc]——匹配该列表内任意字符
[^abc]——匹配处列表字符以外的字符
不要用[A-Z][a-z]匹配大小写 识别不出来

其他常用通配符:
[:alpha:]:匹配字母(忽略大小写)
[:lower:]:匹配小写字母
[:upper:]:匹配大写字母
[:digit:]:匹配数字
[:space:]:匹配空格
[:alnum:]:匹配任意字母或数字
[:punct:]:除空格和字母、数字以外的任何可打印字符

正则表达式(处理字符串的命令)
bash shell 通配符(用来匹配文件)


1.3bash shell 功能-命令拓展符

~:指向一个用户的家目录
$:$(command):调用命令执行的结果

  • 例:echo “the sys name is $(hostname)”
    ``:同$

:依次匹配括号内的字符串

  • 例: touch /tmp/file1,2,3,4,5或 touch /tmp/file1…5

2.认识变量

变量需要加载到内存当中才会生效

2.1变量

变量名:大写、字母+数字,必须字母或下划线开头,A1 _B1
赋值:变量名=值 注意:=两边不能加空格
调用变量:$变量名 或 $变量名



2.2两大变量

本地变量:仅在当前shell中生效
环境变量:仅在当前shell和子shell中生效
set:在当前shell中生效的所有变量,包含环境变量和本地变量
evc:在当前shell中生效的所有环境变量
unset:取消变量,unset+变量名,包括本地变量和环境变量

2.3常见系统变量

PS1:提示符变量



PATH变量:

PATH是环境变量,可通过env查看
PATH只能找到当前目录,不会往下寻找子目录

3.变量的配置文件

根目录下建立一个文件夹data

将/data加入到PATH变量当中

添加一个hello.sh文件

让他输出“hello word”

改权限执行

直接就能执行

/data下新建一个bin目录

把hello.sh复制到bin目录下起名为hello1.sh并修改权限
可以看到bin目录下的命令是执行不了的

所以PATH变量对子目录中的命令无效

登录shell和非登录shell

登录shell:
/etc/profile
~/.bash_profile
/etc/bashrc
~/.bashrc
非登录shell:
/etc/bashrc
~/.bashrc

登录shell:
图形界面或字符界面登录时
su - 切换用户
四个文件都可以读到

非登录shell:
su 用户 (没有-) 非登录shell
在图形界面打开一个终端(ctrl+shift+t)
执行bash时
执行脚本时
其他情况……
只能读到非登录shell文件

区别:读取环境不一样

3.1/etc/profile

定义系统环境变量的文件
vim打开/etc/profile

由于PATH是环境变量,文件下添加一行PATH=$PATH:/data/bin保证每次打开终端都能直接运行自己的命令
然后需要将文件加载到内存,PATH才真正改变

此时打开新终端依旧没有,仍要手动source,每个shell开启时不会读文件,重启系统

/etc/profile 定义全局环境变量,且对所有用户都生效 source时会读到,切换用户时会读到,重启时会读到

3.2 ~/.bash_profile

定义用户环境变量,针对某个用户,会覆盖/etc/profile

3.3 /etc/bashrc

3.4 ~/.bashrc

bashshell数组使用总结

 本文为原创博文,转发请注明原创链接:https://www.cnblogs.com/dingbj/p/10090583.html  数组的概念就不多说了,大家都懂!shell数组分为普通数组和字典数组,今天只说普通数组。 定义数组像很多脚本语言一样,shell变量... 查看详情

bashshell参数展开(shellparameterexpansion):替换变量(variable)中的字符串(代码片段)

在写bashshell脚本时,如果遇到要替换变量中的字符串,首先想到的就是用sed命令,比如下面的示例将变量str中的数字123替换成UUU:$str=hello,word,123$echo$str|sed-E-e's/[0-9]/U/g'hello,word,UUUU上面的例子中用到echo,sed两个... 查看详情

了解dashshell与zshshell(代码片段)

#其他shell:dashshell,zshshelldashshelldashshell特性尽管bashshell和dashshell都以Bourneshell为样板,由于dash的目标是简洁,因此它的环境变量比bashshell少多了。dash变量和bash变量之间有一个巨大的差异,dashshell不支持数组。一、dash命令行参... 查看详情

.bash_profile和.bashrc(代码片段)

...目录的配置文件中搜集shell的设置./etc/bashrc:为每一个运行bashshell的用户执行此文件.当bashshell被打开时,该文件被读取.~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情... 查看详情

环境变量加载顺序

...录的配置文件中搜索shell的设置/etc/bashrc:为每一个运行bashshell的用户执行文件,当bashshell被打开时,该文件被读取局部变量:~/.bashrc~/.bash_profile~/.bash_logout作用:~/.bashrc:该文件包含专用于你的bashshell的bash信息,当登陆时以及... 查看详情

怎么给bashshell当中的变量获取awk行处理后得到的值

...ld”现在我为了获得ttl后面的那个3600的值并且把它赋值给bashshell里面的变量ttl我是这么写的awk'/ttl/$ttl=$2'auto.lxdns.com.hostsecho$ttl可是变脸ttl得不到值,是什么原因参考技术A用下面的语句赋值ttl=`sedqa.txt|awk'print$2'`echo$ttl... 查看详情

bashshell:bash脚本示例(代码片段)

示例1:函数、local局部变量的使用#!/bin/bashfoo1=hellofoo2=worldecho"$foo1"//双引号里的变量转义,输出helloecho\'$foo1\'//单引号里的变量不会被转义,直接输出$foo1mcd()echo-n"$0"//-n不换行echo-n"$1"echo"$2"//$0脚本名,$1第一个参数,以此类推mkdir"$1"cd"$... 查看详情

为啥c语言用execl执行bashshell脚本会出现execformaterror

进行linux测试编写脚本必少Shell脚本名称随便定义要缀名例写abcsmartzip类名称运行要键入./smartzip能运行脚本每行命令处用空格行第1部.Linux脚本编写基础1.1语基本介绍1.1.1程序必须面行始(必须文件第行):#!/bin/sh  符号#!用告诉... 查看详情

bashshell相关特性(代码片段)

bash基础特性之:命令历史命令历史:shell进程会在会话中保存此前用户提交执行过的命令;查看历史命令:~]#history定制history的功能,可通过环境变量来实现;HISISIZE:shell进程可保留的命令历史条数;HISIFILE:持久保存命令历史... 查看详情

linux系统环境变量加载过程

...配置文件中搜集shell的设置。(2)/etc/bashrc:为每一个运行bashshell的用户执行此文件.当bashshell被打开时,该文件被读取。(3)~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!... 查看详情

linux学习笔记基本的bashshell命令

...默认的工作目录:用户默认的shell程序 默认情况下,bashshell启动时会自动处理用户主目录下.bashrc文件中的命令。它经常设置各种应用程序中用到的环境变量。 “~”是主目录的缩略表示 PS1:控制默认命令行提示... 查看详情

bashshellexport是啥意思

bashshellexport是什么意思exportnameexportname=valueexport把变量输出到环境中。简单介绍一下export的作用:当Bashshell执行一个程序时,将首先为该程序建立一个新的执行环境,称为子shell。在BashShell中变量都是局部的,它们只在创建它们的子Shel... 查看详情

linux的ifs

...部字段分隔符(internalfieldseparator)。IFS环境变量定义了bashshell用户字段分隔符的一系列字符。默认情况下,bashshell会将下面的字符当做字段分隔符:空格、制表符、换行符。Bashshell会将上面的三个字符当做列表中新字段的开始... 查看详情

mac环境变量配置

...后面的文件。~/.bashrc没有上述规则,他始终加载,他是在bashshell打开的时候载入的。添加对应环境变量,如一般重启shell设置就会生效,如果想立刻生效,则可执行下面的语句:.bash_login .profile .bashrc同上在安装了ohmyzsh后... 查看详情

基本bashshell命令

以下列举一些常用的bashshell命令,在使用时方便查找。访问Linux系统上的手册:man命令。例:manps   手册是由分页程序来显示的,可以通过点击空格,回车,向上和向下箭头进行翻页查看。浏览文件系统:附一张常见Li... 查看详情

linuxbashshell中变量的5个易错点(代码片段)

Linux中的Bash脚本支持对变量的操作,下面咸鱼将介绍LinuxBashShell中关于变量的5个易错点 因为编程习惯,这类现象往往发生在大多数使用过其他流行编程语言的程序员身上 变量赋值对于许多编程语言(例如Python),变量赋... 查看详情

[linux]基础bashshell命令(代码片段)

[Linux]基础操作命令参考书本《Linux命令行与shell脚本大全》复习和查询用,别的用到了在慢慢补充遍历目录目录路径绝对路径cd/usr/bin相对路径cdDocuments返回主目录cd其他实用命令显示当前目录pwd当前目录的父目录…单点表示当前目... 查看详情

bashshell终端字符颜色显示

终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关,shell,python,perl等均可以调用。  转义序列是以ESC开头,可以用 查看详情