bash命令解释器(shell)

介于操作系统内核和用户之间的一个绝缘层,一种被称为解释性语言或者脚本语言的计算机语言。通过将系统调用、公共程序、工具和编译过的二进制程序”粘合“在一起来建立应用,所有的UNIX命令和工具再加上公共程序,对于shell脚本来说,都是可调用的

????????

???????? .sh 文档里

?????????? #!/bin/bash 确定文件类型(可能被存放在 /sbin 、/usr/local/bin 、/usr/bin 、/usr/sbin 或 /usr/local/sbin 这样的目录下) 用来注释? exit 0 用来结尾 ?echo把字符串输出 ? ? ? ? ? ? ?到标准的输出中

?????????????sh bash source(.)执行脚本 脚本所有者执行权限chmod u+rx xx.sh 再用./xx.sh执行

?重定向 > 覆盖

? ? ? ?使用脚本清除文件 s=路径?? cd $s??? cat /dev/null >wtmp(sudo sh –c ” cat /dev/null >wtmp”) exit(sudo ./xx.h)管理权限

?

??Bash 特殊字符

???????????

???????????;echo hello; echo there同一行写多个命令

??????????? :空命令 while :等价于while true 在if/then占位then :

????????????? 变量扩展和子串替换:>xx.sh(覆盖) >>? 用于注释

??????????? ?在双括号里面三元运算((:))$引用变量的值

????????????

??????????(a=xx;)内部变量是在子shell 脚本本身不能引用

?????????? {}复制 t.txt 的内容到 t.back 中??? cp t.{txt,back}

? ? ? ? ? ? ?[] if语句

? ? ? ? ? ? ?<>重定向 >覆盖(>>) &> est.sh 的 stdout(标准输出)和 stderr(标准错误)到 filename 中? >&2 重定向 test.sh 的 stdout 到stderr 中。

? ? ? ? ? ? ? ? |? ls -l| ./test.sh大写输出#!/bin/bash? tr ‘a-z‘ ‘A-Z‘ exit0

? ? ? ? ? ? ? ? - ??#!/bin/bash

? ? ? ? ? ? ? ? BACKUPFILE=backup-$(date +%m-%d-%Y)

? ? ? ? ? ? ? ?# 在备份文件中嵌入时间.

? ? ? ? ? ? ? ?archive=${1:-$BACKUPFILE}

? ? ? ? ? ? ? ? #? 如果在命令行中没有指定备份文件的文件名,

? ? ? ? ? ? ? ? #+ 那么将默认使用"backup-MM-DD-YYYY.tar.gz".

? ? ? ? ? ? ? ? tar cvf - find . -mtime -1 -type f -print> $archive.tar

? ? ? ? ? ? ? ? gzip $archive.tar

? ? ? ? ? ? ? ? echo "Directory $PWD backed up in archivefile \"$archive.tar.gz\"."

? ? ? ? ? ? ? ? exit 0

变量与参数

????? ??变量

???????????? $variable事实上只是 ${variable}的简写形式引用变量的值n<10括号可以省略{}帮助

??????????? 变量名和等号之间不能有空格。同时,变量名的命名须遵循如下规则:

? ? ? ? ? ? ?首个字符必须为字母(a-z,A-Z)。

? ? ? ? ? ? 中间不能有空格,可以使用下划线(_)。

? ? ? ? ? ? ?不能使用标点符号。

? ? ? ? ? ? ?不能使用bash里的关键字(可用help命令查看保留关键字)。

? ? ? ? ? ? 除了显式地直接赋值,还可以用语句给变量赋值,如:for file in ls /etc

??????????? 只读变量? readonly xx

??????????? 局部变量环境变量

??????????? 位置参数 $1 …. ${10}…

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?$# : 传递到脚本的参数个数

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?$* : 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过 9个

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?$$ : 脚本运行的当前进程 ID号

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?$! : 后台运行的最后一个进程的进程 ID号

? ? ? ? ? ? ? ? ? ? ? ? ? ? [email protected] : 与$#相同,但是使用时加引号,并在引号中返回每个参数

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?$: 显示shell使用的当前选项,与 set命令功能相同

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?$? : 显示最后命令的退出状态。 0表示没有错误,其他任何值表明有错误。

基本运算符

????????????

????????????? A=expr $a + $b expr表达式计算工具(awk)

? ? ? ? ? ? ?表达式和运算符之间有空格 ?判断在[] ?==与变量有空格

?关系运算符

????????????

逻辑运算符

????????????

字符串运算符

? ? ? ? ? ??

文件测试运算符

????????????

流程控制

? ? If-else

? ? then没内容事加:

? ?if [ condition ]
? ? ? ?then?
? ? ? ? ? ? ? if [ condition ]
? ? ? ? ? ? ?then?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? commands1
? ? ? ? ? ? ?else?? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?commands2
? ? ? ? ? ? ? fi
? ? ?else
? ? ? ? ? ? ?commands3
? ? ? ?fi

?

? ? ??方式二

? ? ? ? ?a=10

? ? ? ? ?b=20

? ? ? ? ?if [ $a == $b ]

? ? ? ? ? ? ?then

? ? ? ? ? ? ? ? ? ?echo "a == b"

? ? ? ? ? ? elif [ $a -gt $b ]

? ? ? ? ? ? ? ? ? ? then

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? echo "a > b"

? ? ? ? ? ? ? ? ? ?elif [ $a -lt $b ]

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?then

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? echo "a < b"

? ? ? ? ? ? ?else

? ? ? ? ? ? ? ? ? ? ? ? echo "Ineligible" fi

?

? ? ? ?多条件表示:

? ? ? 逻辑与

? ? ? ? ? ? ? if [ condition1 -a condition2 ]?

? ? ? ? ? ?或?? if [ condition1 ]&& [ condition2 ]

? ? ? 逻辑或

? ? ? ? ? ? ? ?if [ condition1 -o condition2 ]?

? ? ? ? ? 或?? if [ condition1 ] || [condition2 ]

? ? ?逻辑非(取反)

? ? ? ? ? ? ? ? !? ?

? ? ? ?For循环

? ? ? ? for loop in 1 2 3 4 5

? ? ? ?do

? ? ? ? ? ? ? ?echo "The value is: $loop"

? ? ? ? done

? ? ? ? 输出结果:

? ? ? ? ? ? ? ?The value is: 1

? ? ? ? ? ? ? ?The value is: 2

? ? ? ? ? ? ? ?The value is: 3

? ? ? ? ? ? ? ?The value is: 4

? ? ? ? ? ? ? ?The value is: 5

?

? ? ? While

? ? ? ? ? while(( $int<=5 ))

? ? ? ? ? do

? ? ? ? ? ? ? ? ? echo $int

? ? ? ? ? ? ? ? ? let "int++" //减少$添加

? ? ? ? ? done

? ? ? ? ? while循环可用于读取键盘信息。下面的例子中,输入信息被设置为变量MAN,按结束循环。

? ? ? ? ? ? ? echo ‘press <CTRL-D> exit‘

? ? ? ? ? ? ? echo -n ‘Who do you think is the most handsome:‘

? ? ? ? ? ? ? ?while read MAN

? ? ? ? ? ? ? do

? ? ? ? ? ? ? ? ? ? ? ?echo "Yes!$MAN is really handsome"

? ? ? ? ? ? ? ?done

? ?无限循环

? ? ?while:

? ? ? ?do

? ? ? ? ? ? ?command

? ? ? done

? ? ?或者

? ? ?while true

? ? ?do

? ? ? ? ? ? ? command

? ? ? done

? ? ? 或者

? ? ? for (( ; ; ))

until循环? until condition

? ? ? ? ? ? ? ? ? do

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?command

? ? ? ? ? ? ? ? ? done

case选择

? ? ? ? ? ? ??echo‘Enter a number between 1 and 4:‘

? ? ? ? ? ? ? echo ‘The number you entered is:‘

? ? ? ? ? ? ? ? ? readaNum

? ? ? ? ? ? ? ?case $aNum in

? ? ? ? ? ? ? ?1) echo‘You have chosen 1‘ 变量和常数 支持逻辑符号

? ? ? ? ? ? ? ? ? ? ?;;

? ? ? ? ? ? ? ? 2) echo ‘You have chosen 2‘

? ? ? ? ? ? ? ? ? ? ?;;

? ? ? ? ? ? ? ? 3) echo‘You have chosen 3‘

? ? ? ? ? ? ? ? ? ? ? ;;

? ? ? ? ? ? ? ? ?4) echo ‘You have chosen 4‘

? ? ? ? ? ? ? ? ? ? ? ?;;

? ? ? ? ? ? ? ? ? *) echo‘You did not enter a number between 1 and 4‘ ;;

? ? ? ? ? ? ? ? ? Esac

跳出循环? break continue

?

?

函数

? ? ? ? ? ?[ function ] funname [()]

? ? ? ? ? {

? ? ? ? ? ? ? ? ?action;?????????? 返回数值0-255

? ? ? ? ? ? ? ? ?[return int;]???:return返回 或返回最后一条指令运行结果

? ? ? ? ? }

? ? ? ? ?例如#!/bin/bash

? ? ? ? ? ? ? ? ?funWithReturn(){

? ? ? ? ? ? ? ? ? ? echo "This function will add the twonumbers of the input..."

? ? ? ? ? ? ? ? ? ? echo "Enter the first number: "

? ? ? ? ? ? ? ? ? ? read aNum

? ? ? ? ? ? ? ? ? ? echo "Enter the second number: "

? ? ? ? ? ? ? ? ? ? read anotherNum

? ? ? ? ? ? ? ? ? ? echo "The two numbers are $ aNum and $anotherNum !"

? ? ? ? ? ? ? ? ? ? return $(($aNum+$anotherNum))

? ? ? ? ? ? ? ?}

? ? ? ? ? ? ? ?funWithReturn

? ? ? ? ? ? ? ? ? ? ? ? ? echo "The sum of the two numbers enteredis $? !"

?

?? ? ? 函数参数? 小于10不加{}

? ? ? ? ??#!/bin/bash

? ? ? ? ? funWithParam(){

? ? ? ? ? ? ? ? echo "The first parameter is $1!"

? ? ? ? ? ? ? ? echo "The second parameter is $2!"

? ? ? ? ? ? ? ? echo "The tenth parameter is $10!"

? ? ? ? ? ? ? ? echo "The tenth parameter is ${10}!"

? ? ? ? ? ? ? ?echo "The eleventh parameter is ${11}!"

? ? ? ? ? ? ? ?echo "The total number of parametersis $# !"

? ? ? ? ? ? ? ?echo "Outputs all parameters as astring $* !"

? ? ? ? ?}

? ? ? ? funWithParam1 2 3 4 5 6 7 8 9 34 73

? ? ? ?输出结果:

? ? ? ?The firstparameter is 1 !

? ? ? ?The secondparameter is 2 !

? ? ? ?The tenthparameter is 10 !

? ? ? ?The tenthparameter is 34 !

? ? ? ?The eleventhparameter is 73 !

? ? ? ?The totalnumber of parameters is 11 !

? ? ? ?Outputs allparameters as a string 1 2 3 4 5 6 7 8 9 34 73 !
小编整理了一些java进阶学习资料和面试题,需要资料的请加JAVA高阶学习Q群:701136382 这是小编创建的java高阶学习交流群,加群一起交流学习深造。群里也有小编整理的2019年最新最全的java高阶学习资料!

原文地址:http://blog.51cto.com/14180251/2344244

时间: 2024-10-14 20:34:26

bash命令解释器(shell)的相关文章

Linux学习笔记——bash命令及shell变量简介

bash 及其特性 shell  外壳 GUI :Gnome  KDE  xface CLI :shell  csh  ksh  bash 程序,进程 进程:每个进程看来,当前主机上只存在内核和当前进程 进程是程序的副本,进程是程序执行实例 用户的工作环境: bash: #   root用户 $   普通用户 shell  ,子shell bash : 1.命令历史 2.管道,重定向 3.命令行编辑 4.命令别名 5.命令行展开 6.文件名通配 7.变量 8.编程 命令行使用技巧: Ctrl +

Mac上的终端bash命令 Bourne-Again Shell简介

mac上的终端使用的是Bourne-Again Shell命令,简称bash Bourne-Again Shell简介 一 bash是GNU组织开发和推广的一个项目,是对Bourne shell的扩展 Bourne shell是 UNIX 最初使用的 Shell,作者Steven Bourne bash是许多Linux平台的内定Shell,传统UNIX上还有许多Shell,包括tcsh.csh.ash.bsh.ksh Shell Script大致都类同,一个Shell Script通常可以在很多

01. Shell基础和使用技巧(工具+常用bash命令加速操作)

Shell脚本介绍和常用工具 Shell脚本 Shell脚本:实际就是windows里的批处理脚本,多条可一次执行的Shell命令集合.Linux上的脚本可以用很多种语言实现,bash shell是比较简单的一种,更高阶的可以用其他脚本语言,比如Python. Shell脚本对系统的管理能力非常强大,甚至可以使用Shell结合php实现Web管理Linux系统功能:可以自己写一个Web页面(示例:基于Php),对系统进行管理,包括查看删除用户,配置网络,发送邮件,重启系统,一键备份,一键搭建服务

bash命令/文件管理-bash命令

命令解释器,我们可以SHELL实现对Linux系统的管理例如: 1. 文件管理 2. 用户管理 3. 权限管理 4. 磁盘管理 5. 软件管理 6. 网络管理 ...... 内容提要: bash shell提示符 shell 语法 bash 特性 Linux获得帮助 一.bash shell提示符: =================== [[email protected] ~]# date 2012年 10月 24日 星期三 09:38:54 CST [[email protected] ~

Linux 下五个顶级的开源命令行 Shell

这个世界上有两种 Linux 用户:敢于冒险的和态度谨慎的. 其中一类用户总是本能的去尝试任何能够戳中其痛点的新选择.他们尝试过不计其数的窗口管理器.系统发行版和几乎所有能找到的桌面插件. 另一类用户找到他们喜欢的东西后,会一直使用下去.他们往往喜欢所使用的系统发行版的默认配置.最先熟练掌握的文本编辑器会成为他们最钟爱的那一个. 作为一个使用桌面版和服务器版十五年之久的 Linux 用户,比起第一类来,我无疑属于第二类用户.我更倾向于使用现成的东西,如此一来,很多时候我就可以通过文档和示例方便地

Linux基础:Linux(BASH)命令执行和搜索机制

程序是如何被执行的? 当操作系统启动之后,就会等待用户操作.那么用户是如何与操作系统沟通呢?如何触发程序执行呢? 通常,与操作系统交互,有两种实现方式:CLI(command line interface); CUI(graphic user interface). 比如,当我们启动 windows系统,我们想看电影,听音乐,那么我们必须去触发程序的快捷方式,以启动程序. 同理,Linux要与kernel交互,必须通过一个shell的程序.Linux命令的执行必须依赖于Shell命令解释器.Sh

bash配置与shell脚本编程

写在前面: 博客书写牢记5W1H法则:What,Why,When,Where,Who,How. 本篇主要内容: ● bash特征之多命令执行 ● 逻辑运算(与或非) ● 编程语言简介 ● shell脚本格式与特点 ● bash配置,定制bash工作特征 ● 扩展 intall mktemp 本篇涉及配置文件: ◎ /etc/profile ◎ /etc/profile.d/*.sh ◎ /etc/bashrc ◎ ~/.bash_profile ◎ ~/.bashrc ◎ ~/.bash_log

shell介绍,date命令,shell变量

Shell shell是什么? shell是一种脚本语言可以使用逻辑判断.循环判断等语句:可以自定义函数:shell是系统命令的集合,比如Windows的批处理命令:shell脚本可以实现自动化运维,能打打增加我们的运维效益: shell脚本结构 开头必须加#!/bin/bash也就是调用/bin/bash的内核运行脚本的名字以.sh结尾,用来区分是一个shell脚本: 执行方法有两种: 1.作为可执行程序 chmod +x 1.sh //是脚本具有执行权限 ./1.sh //执行脚本 2.作为

bash特性以及shell脚本简介

bash的特性之多命令执行的逻辑关系:1.命令替换COMMAND1 $(COMMAND2)2.管道COMMAND1 | COMMAND2 | COMMAND3 ...3.顺序执行结构COMMAND1 ; COMMAND2 ; COMMAND3 ...4.选择执行结构:如果...那么...要么...要么...逻辑运算:与:逻辑乘法,1--真,0--假,&&,双目操作符1 && 1 = 11 && 0 = 00 && 1 = 00 &&a