SHELL —— BASH环境

一 、什么是SHELL

shell一般代表两个层面的意思,一个是命令解释器,比如BASH,另外一个就是shell脚本。本节我们站在命令解释器的角度来阐述shell

二 、命令的优先级

命令分为:

==> alias

  ==> Compound Commands

    ==> function

      ==> build_in

        ==> hash

          ==> $PATH

            ==> error: command not found

alias别名:别名命令是为了简化输出给一个长参数命令的整合,别名的定义方法 alias la=‘ls -al‘ 取消别名 unalias la

buildin内部命令:是BASH自带的命令 功能简单,内部命令的帮助在builtin(1)里

外部命令:是就是一个小程序存在于/bin/ /sbin/ /usr/bin 等地方,源码安装的软件添加环境变量就应该改PATH。

 三、元字符


元字符(是被shell解释的)


``


命令替换 取命令的执行结果


[[email protected] ~]# ls

4.txt anaconda-ks.cfg a.txt B.txt c.txt D.txt nginx-1.10.3
nginx-1.10.3.tar.gz

[[email protected] ~]# res=`ls` #取命令的运行结果,赋值给变量res

[[email protected] ~]# echo $res #查看变量res的值

4.txt anaconda-ks.cfg a.txt B.txt c.txt D.txt nginx-1.10.3
nginx-1.10.3.tar.gz


$


$ 变量取值


[[email protected] ~]# money=10

[[email protected] ~]# echo $money

10

[[email protected] ~]# echo 00000$money

0000010

[[email protected] ~]# echo $money0000

[[email protected] ~]# echo ${money}0000

100000

$[] 整数计算 echo $[2+3] - * /
% 浮点数用 echo "scale=3; 10/3" | bc -l


${}


变量名的范围

 

$()


同`` 
,但它弥补了``的嵌套缺陷


[[email protected] ~]# res=`echo `ls`` #嵌套使用后无法达到预想的效果:取echo 一堆文件名的效果。

[[email protected] ~]# echo $res

ls

[[email protected] ~]# res=$(echo $(ls)) #替代方案

[[email protected] ~]# echo $res

4.txt anaconda-ks.cfg a.txt B.txt c.txt D.txt nginx-1.10.3
nginx-1.10.3.tar.gz


~


家目录


[[email protected] tmp]# cd ~

[[email protected] ~]# pwd

/root


!


取非


[[email protected] ~]# ls /dev/sda

sda sda1 sda2

[[email protected] ~]# ls /dev/sda[0123]

/dev/sda1 /dev/sda2

[[email protected] ~]# ls /dev/sda[!01]

/dev/sda2

 
历史命令调用


[[email protected] ~]# !343

hostname

MiWiFi-R3-srv

 
匹配最近一次历史命令


[[email protected] ~]# !ls

ls /dev/sda[!01]

/dev/sda2

 
! ls 带空格 将命令的返回值取反


[[email protected] ~]# echo ok

ok

[[email protected] ~]# echo $? #上一条命令执行的结果,0代表执行成功,非0代表执行失败

0

[[email protected] ~]# ! echo ok #将结果取反

ok

[[email protected] ~]# echo $?

1

0-255之间,0则为真,非0位假


@


无特殊含义

 

#


# 注释

 

%


杀后台进程 jobs号; 取模

 

^


取非 和 ! 雷同


[[email protected] ~]# ls /dev/sda[^01]

/dev/sda2

[[email protected] ~]# ls /dev/sda[!01]

/dev/sda2

 
替换


[[email protected] ~]# systemctl restart
network

[[email protected] ~]# ^network^sshd^

systemctl restart sshd


&


后台执行

 

&&


逻辑与

 

*


匹配任意长度字符串;计算乘法

 

()


在子进程中执行


[[email protected] ~]# x=1

[[email protected] ~]# (x=666)

[[email protected] ~]# echo $x

1

[[email protected] ~]#

[[email protected] ~]# (x=666;echo $x)

666


-


减号;区间;cd -

 

_


无特殊含义

 

+


加号

 

=


赋值

 

|


管道

 

||


逻辑或

 

\


转译


[[email protected] test]# echo \\

\

[[email protected] test]# echo \‘

[[email protected] test]# echo "‘"


{}


命令列表 ,注意括号内的开头和结尾必须是空格{    ls; cd /;   }

 

[]


字符通配,匹配括号内之一

 


: 空命令 真值


[[email protected] ~]# :

[[email protected] ~]# echo $?

0



可以接多个命令:ls;pwd;echo 123;无论对错,会一直执行到最后一条命令

 

“”


"" 软引,引号中的字符有意义


[[email protected] test]# x=1

[[email protected] test]# echo "$x" #双引号的代表软引用,引号内特殊字符有特殊意义,比如$,``等

1

[[email protected] test]# echo ‘$x‘ #单引号代表硬引用,引号内所有字符都无特殊意义

$x


’‘


‘硬引,引号中的所有字符无特殊含义


<


< 输入重定向

 

>


> 输出重定向

 

>>


>> 追加

 

<<


<< here document

 

>&


>& 合并2和1输出

 

,


, 枚举分隔符

 

. source


. source ; 当前目录

 

/


/ 目录分隔符

 

?


? 单个字符

 
 
? 通配符:任一字符

 

回车


回车 命令执行

 

*


* 通配符:任意字符

 
 
[abc] 列表项之一

 
 
[^abc] 对列表取非
也可以使用范围 [a-z] 代表aAbBcC...,[0-9]代表012345。。。

 

{}


{} 循环列表


[[email protected] test]# touch
{1..3}{a..d}.txt

[[email protected] test]# ls

1a.txt 1b.txt 1c.txt 1d.txt 2a.txt 2b.txt 2c.txt 2d.txt 3a.txt 3b.txt 3c.txt
3d.txt

 
控制变量名的范围 echo ${AB}C

 
时间: 2024-11-10 14:52:33

SHELL —— BASH环境的相关文章

Bash shell使用环境的终端的环境设置:stty

Bash shell使用环境的终端的环境设置:stty stty -a 将当前所有的stty参数列出来 intr:给正在运行的程序发送中断信号 quit:给正在运行的程序发送退出信号 erase:向前删除字符 kill:删除命令行上的文字 eof:文件结束,输入结束 start:重启暂停的输出 stop:停止当前的输出 susp:给正在运行的程序发送一个终端停止信号 rprnt:输入命令时提示使用过的历史命令 werase:删除命令行的最后一个字 ^可以理解为Ctrl键,所以intr的快捷键就是

Bash shell用户环境

介绍 了解Linux的启动顺序,也有助于本内容的理解,加载用户环境是Linux启动的最后一步.不同的shell 会使用不同的配置文件: bash (.profile), ksh (.profile), csh (.login). bash shell 被设计成兼容sh, ksh,  它会在用户主目录依次检查.bash_profile,.bash_login,.profile是否存在,并加载找到的第一个文件.无论文件名字如何,加载用户环境的原理一样,只设定一个配置文件即可.但若有兼容bash,ks

Vim编辑器,find命令及bash环境配置

1.总结文本编辑工具vim的使用方法: 全屏幕的编辑器:VIM vi: visual interface sed:行编辑器 vi, vi iMproved vim: 模式化: 编辑模式:命令模式 输入模式: 末行模式: 编辑模式 --> 输入模式: i: insert, a:append, o:new line, I: 行首 A:行尾 O:上方新建行 输入模式 --> 编辑模式: ESC 编辑模式 --> 末行模式: : 末行模式 --> 编辑模式 ESC 打开vim: # vim

shell bash ksh

shell 是一个交互性命令解释器.shell独立于操作系统,这种设计让用户可以灵活选择适合自己的shell.shell让你在命令行键入命令,经过shell解释后传送给操作系统(内核)执行.     shell是一个命令处理器(command processor)——是一个读入并解释你输入的命令的程序.除了是一个命令中断器以外,shell还是一个程序设计语言.你可以编写shell可以解释的程序(被称为源程序),这些源程序可以包含shell程序设计命令等等.shell除了解释命令以外,还有其他工作

Linux 20150830学习整理 VIM、FIND、bash环境、特殊权限

第一部分  VIM 文本编辑器只针对ASCII码,字处理器 1.种类: 简单编辑器  nano:是全屏模式 vi:visual interface 全屏文本编辑器,模式化的编辑器 VIM是vi的增强版本有高量.语法着色显示等功能 2.VI工作模式 编辑模式:VI默认工作模式(也称为命令模式) 输入模式:输入字符内容 末行模式:在屏幕最后一行,可以编辑文件和其它额外操作.内嵌命令行接口 以 冒号" : "可输入命令 工作模式切换 编辑模式----> 输入模式用以下快捷键 小写i  

bash环境下自动安装并初始化oh-my-zsh & autojump zsh

Linux和Mac系统默认的shell 都是bash,但是真正强大的shell应属于zsh,而且完全监控bash,是shell中的终极杀手,有很多bash所没有的功能,但是zsh的初期配置太过繁琐,流行率一直不高,直到有个叫Robby Russell的家伙在github上开发了oh-my-zsh项目,使大家使用zsh的便捷性大大提高. 由于在公司的电脑是windows,就折腾了下cygwin,并且安装了zsh,这样做起维护方便很多了,而且我把autojump项目也集成一起,最后写了一个自动安装的

bash环境变量

bash环境配置:         配置文件,生效范围划分,存在两类:         全局配置:             /etc/profile, /etc/profile.d/*.sh             /etc/bashrc         个人配置:             ~/.bash_profile             ~/.bashrc 按功能划分,存在两类:         profile类:为交互式登录的shell提供配置             /etc/pro

bash 环境配置及脚本

bash是 Bourne Again Shell简称 ,从unix系统的sh发展而来 查看当前shellecho $SHELL查看系统支持的shellcat /etc/shells cd /binls -la *sh 一. bash shell的配置变量可分为自定义变量和环境变量他们作用范围不同set 可以查看所有变量set|more 查看 enter一行一行查看set|less enter换行 pagedown换页 q退出 env只能查看环境变量 bash shell的设置方式1.通过自定义变

[Shell&amp;Mac&amp;Environment variables]自己常用的Mac(或者说Linux)Shell命令小结,含Mac使用zsh shell的环境变量的有关配置方法

今天在使用tomcat的配置的时候,我用的mac,要是用到一些命令去配置tomcat. 问题来了: 我每次要去启动tomcat服务特别麻烦,因为我要先进入tomcat所在的文件目录,或者不进入使用~/,但是因为我把tomcat放到了一个比较“深“的文件夹里,所以命令显得又丑又长. 问题解决方案: 1.使用环境变量(修改.bashrc的方法) a.先查看自己的Mac目前正在用的是什么shell echo $SHELL 返回结果类似如下图 这里我是zsh,,也许你是bash,不过没关系,配置环境变量