[Linux教程 李明 沈超 兄弟连]10.4.3 Shell基础-Bash变量-位置参数变量
- 格式:ppt
- 大小:596.50 KB
- 文档页数:9
1 什么是Bash 什么是ShellBash 是GNU Bourne-Again SHell,是目前大多数Linux发行版采用的Shell。
Shell 是*nix提供给用户使用的界面。
一个操作系统的底层是独立运行的,用户界面和底层分开,可以最大限度的保证系统稳定。
Shell就是一个特殊的程序,负责接受用户的命令,并把系统的响应返回给用户。
Bash Shell一般不需要自己安装,在安装发行版的同时都会安装好。
Shell的存在是和登陆相关的,从用户名密码验证通过以后,Shell就启动了,知道你退出,Shell就结束了运行。
除了Bash Shell之外,还有很多其他的Shell。
2 Linux的文件、目录、程序Linux的文件、目录、程序是使用bash操作的主要对象。
有必要事先了解一下文件、目录和程序的概念文件Linux中一切都是文件、普通的文件、设备文件、管道也是文件的形式。
一切操作都是文件为基础的。
DOS操作系统早期也是模拟这种方式,不过有很多漏洞(比如C:concon会蓝屏)文件是有属性的,有一个属性表示这个文件是不是目录,有3个属性表示这个文件的访问权限,还有一些表示从这个文件派生出的文件属性。
目录目录是管理文件的手段,不同的文件要分门别类才容易找到。
严格的说,目录也是一种文件,是具有目录属性的文件。
文件和目录都有所有者和所有组。
叫UID和GID,对应的,有3个属性表示相应的权限。
后面写到ls和chmod有详细地说明。
程序程序是可以执行的代码,有些是直接交给内核或者CPU执行的,有些是通过其他程序执行的(解释脚本),可以运行的程序都有一个可执行的属性。
3 简单的命令ls cp mv mkdir rm chown chmod前面说了一些枯燥的概念,现在趁着看官还没有烦躁,开始实际操作的例子。
QUOTE:Last login: Mon Aug 14 21:52:47 2006 from 61.149.202.143[root@CERNET ~]#这就是bash登陆后的样子。
Linux运维之shell脚本基础知识1、bash中的算术运算let运算符[root@:vg_adn_tidbCkhsTest~/tidb-bench/sysbench]#let i=1+2[root@:vg_adn_tidbCkhsTest ~/tidb-bench/sysbench]#echo $i3[root@:vg_adn_tidbCkhsTest ~/tidb-bench/sysbench]#let i1=10[root@:vg_adn_tidbCkhsTest ~/tidb-bench/sysbench]#let i2=20[root@:vg_adn_tidbCkhsTest ~/tidb-bench/sysbench]#let i3=$i1+$i2[root@:vg_adn_tidbCkhsTest ~/tidb-bench/sysbench]#echo $i330$[expression][root@:vg_adn_tidbCkhsTest ~/tidb-bench/sysbench]#i1=$[11+22][root@:vg_adn_tidbCkhsTest ~/tidb-bench/sysbench]#echo $i133$((experssion))[root@:vg_adn_tidbCkhsTest ~/tidb-bench/sysbench]#i=$((22+33))[root@:vg_adn_tidbCkhsTest ~/tidb-bench/sysbench]#echo $i55expr arg1 操作符 arg2[root@:vg_adn_tidbCkhsTest ~/tidb-bench/sysbench]#i=`expr 11 \*10`;echo $i110⼀般情况下使⽤expr运算符都要⽤反引号2、判断某个⽤户是否存在,如果不存在,则创建此⽤户#!/bin/bashid hadop &>/dev/null|| useradd hadoop3、计算passwd⽂件中第10个⽤户和第20个⽤户的UID之和#!/bin/bashuid1=$(id -u `cat /etc/passwd |head | tail -1|cut -d':'-f1`)uid2=$(id -u `cat /etc/passwd |head -20| tail -1|cut -d':'-f1`)sum=$[$uid1+$uid2]echo "10and20user's uuid is $sum"4、统计某个⽂件的空⽩⾏[root@:vg_adn_tidbCkhsTest /tmp]#cat /etc/init.d/functions | grep '^$'| wc -l905、判断返回值状态[root@:vg_adn_tidbCkhsTest /tmp]#cat /etc/fstab &>/dev/null[root@:vg_adn_tidbCkhsTest /tmp]#echo $?[root@:vg_adn_tidbCkhsTest /tmp]#cat /etc/fstabhaha &>/dev/null #查看⼀个不存在的⽂件[root@:vg_adn_tidbCkhsTest /tmp]#echo $?16、条件测试判断某需求是否满⾜,需要由测试机制来实现: 如何编写测试表达式以实现所需的测试(1)执⾏命令,并利⽤命令状态返回值来判断 0:成功 1:失败(2)测试表达式 test EXPRESSION [ EXPRESSION ] 单中括号多见于数值⽐较 [[ EXPRESSION ]] 双中括号多见于字符串⽐较 注意:EXPRESSION两段必须有空⽩字符,否则为语法错误bash的测试类型数值测试:-eq:是否等于-ne:是否不等于-gt:是否⼤于-ge:是否⼤于等于-lt:是否⼩于-le:是否⼩于等于[root@:vg_adn_tidbCkhsTest /tmp]#[ 11 -eq 21 ][root@:vg_adn_tidbCkhsTest /tmp]#echo $?1[root@:vg_adn_tidbCkhsTest /tmp]#[ 11 -eq 11 ][root@:vg_adn_tidbCkhsTest /tmp]#echo $?字符串测试==:是否等于>:是否⼤于<:是否⼩于!=:是否不等于=~:左侧字符串能否被右侧的PATTERN所匹配。
bash shell 基础语法Bash shell 是一种常见的 Unix shell 和命令语言,它被广泛用于 Linux 和 macOS 等操作系统。
它提供了一种与操作系统交互的方式,允许用户执行命令、编写脚本和自动化任务。
Bash shell 的基础语法包括以下几个方面:1. 命令行操作,在 Bash shell 中,用户可以直接输入命令来执行各种操作,比如 ls(列出目录内容)、cd(切换目录)、mkdir(创建目录)等。
这些命令可以带有参数和选项,用来控制命令的行为。
2. 变量,在 Bash shell 中,可以使用变量来存储数据,并在脚本中进行引用和操作。
变量的赋值使用等号(=),而在使用变量时需要在变量名前加上美元符号($)。
3. 条件语句,Bash shell 支持条件语句,比如 if-then-else 结构,可以根据条件执行不同的代码块。
4. 循环,Bash shell 提供了多种循环结构,比如 for 循环和while 循环,用于重复执行一段代码。
5. 函数,用户可以在 Bash shell 中定义和调用函数,以便重复使用一段代码逻辑。
6. 输入输出重定向,Bash shell 允许用户将命令的输入和输出重定向到文件或者其他命令,以实现更灵活的操作。
7. 管道,Bash shell 支持管道操作,可以将一个命令的输出作为另一个命令的输入,实现多个命令的组合操作。
总的来说,Bash shell 的基础语法涵盖了命令行操作、变量、条件语句、循环、函数、输入输出重定向和管道等多个方面。
掌握这些基础语法对于编写 Shell 脚本和进行系统管理操作都非常重要。
希望这些信息对你有所帮助。
linux的基本操作(shell脚本的基础知识)shell 脚本的基础知识⽇常的linux系统管理⼯作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算⼀个合格的管理员。
⽬前很多单位在招聘linux 系统管理员时,shell脚本的编写是必考的项⽬。
有的单位甚⾄⽤shell脚本的编写能⼒来衡量这个linux系统管理员的经验是否丰富。
笔者讲这些的⽬的只有⼀个,那就是让你认真对待shell脚本,从⼀开始就要把基础知识掌握牢固,然后要不断的练习,只要你shell脚本写的好,相信你的linux求职路就会轻松的多。
笔者在这⼀章中并不会多么详细的介绍shell脚本,⽽只是带你进⼊shell脚本的世界,如果你很感兴趣那么请到⽹上下载相关的资料或者到书店购买相关书籍吧。
在学习shell 脚本之前,需要你了解很多关于shell的知识,这些知识是编写shell脚本的基础,所以希望你能够熟练的掌握。
【什么是shell】简单点理解,就是系统跟交互时使⽤的中间介质,它只是系统的⼀个⼯具。
实际上,在shell和之间还有⼀层东西那就是系统内核了。
打个⽐⽅,如果把⽐作⼀个⼈的躯体,⽽系统内核则是⼈的⼤脑,⾄于shell,把它⽐作⼈的五官似乎更加贴切些。
回到计算机上来,⽤户直接⾯对的不是⽽是shell,⽤户把指令告诉shell,然后shell再传输给系统内核,接着内核再去⽀配计算机硬件去执⾏各种操作。
笔者接触的linux发布版本(Redhat/CentOS)系统默认安装的shell叫做bash,即Bourne Again Shell,它是sh(Bourne Shell)的增强版本。
Bourn Shell 是最早⾏起来的⼀个shell,创始⼈叫Steven Bourne,为了纪念他所以叫做Bourn Shell,检称sh。
那么这个bash有什么特点呢?1)记录命令历史我们敲过的命令,linux是会有记录的,预设可以记录1000条历史命令。
Linux bash shell脚本语法入门.基础#!/bin/bash //bash脚本第一句都是这个,他会让系统指定以bash来解释这个脚本# //shell脚本注释符号2.变量和使用HOME="/home" //注意赋值不要有空格a=123HOME_LIST=$(ls /home) //把命令的执行结果赋值给变量ehco $HOME //$ 符号是获得变量HOME的值a=a+1系统变量:$0 这个程序的执行名字$n 这个程序的第n个参数值,n=1 (9)$* 这个程序的所有参数$# 这个程序的参数个数$$ 这个程序的PID$! 执行上一个背景指令的PID$? 上一个指令的返回值3.if语句if [ "22" -lt "33" ] then //注意空格echo "22 less than 33"elseecho "no"fi//if语句的结束4.case语句echo "enter a number"read ans //读取一个变量readcase $ans in1)echo "you numer is $ans";;//注意符号是两个 ;2)echo "you number is 2";;[3-9])echo "you number is $ans";;*)//*通配符echo "others"esac5.比较运算符运算符描述示例文件比较运算符-e filename 如果 filename 存在,则为真 [ -e /var/log/syslog ] -d filename 如果 filename 为目录,则为真 [ -d /tmp/mydir ]-f filename 如果 filename 为常规文件,则为真 [ -f /usr/bin/grep ]-L filename 如果 filename 为符号链接,则为真 [ -L /usr/bin/grep ]-r filename 如果 filename 可读,则为真 [ -r /var/log/syslog ] -w filename 如果 filename 可写,则为真 [ -w /var/mytmp.txt ] -x filename 如果 filename 可执行,则为真 [ -L /usr/bin/grep ]。
Linux基础-Bashshell简介及基础⽬录bash shell 介绍bash shell 是GNU 开发的⼀种命令解释器bash shell 能做什么⽂件管理⽤户管理磁盘管理⽬录管理权限管理⽹络管理服务管理等等等等执⾏⽅式命令执⾏处理简单事物脚本执⾏ script 处理复杂事物命令⾏介绍[root@Zhang-linux ~]#[test@Zhang-linux ~]$root 表⽰当前⽤户是超级管理员, root 的位置是当前⽤户@ 分隔符Zhang-linux 表⽰当前主机名~ 表⽰当前⽤户的家⽬录, 位置表⽰当前所在⽬录位置表⽰超级管理员提⽰符$ 表⽰普通⽤户提⽰符命令⾏结构[root@qls ~]# ls -l /root #命令+选项+参数total 4-rw-------. 1 root root 1271 Oct 23 12:20 anaconda-ks.cfg命令[选项][参数/路径]中括号中的可以省略命令的报错信息command not found找不到命令没有此命令, 或者此系统没有安装此命令解决, 检查是否输⼊错误, 安装命令No such file or directory 没有这个⽂件或⽬录没有此⽂件没有此⽬录⽂件所在⽬录错误解决, 检查⽬录或者⽂件路径选项短横杠 - 指定单⼀的功能,多个短横杠,可以写成 -abc -a -b -c长横岗 -- ⼀个完整字符串例如 --all --helpbash 特性tab 补全在输⼊命令⾸部⼏个字母时,按tab键可以⾃动补全⽬录,按⼀次tab 没有反应时 ,有以下两种情况没有此命令有以此⾸部⼏个字母开头的命令有多个, 再次按tab键会显⽰所有以此开头的命令.选项补全[root@qls ~]# yum install -y bash-completion bash-completion-extra[root@qls ~]# systemctl resrescue reset-failed restart系统默认不⽀持,需要安装软件参数补全可以⾃动补全路径.命令别名[root@qls ~]# aliasalias cp='cp -i'alias egrep='egrep --color=auto'alias fgrep='fgrep --color=auto'alias grep='grep --color=auto'alias l.='ls -d .* --color=auto'alias ll='ls -l --color=auto'alias ls='ls --color=auto'alias mv='mv -i'alias rm='rm -i'alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'⾃定义别名利⽤alias命令可以⾃定义别名[root@qls ~]# alias wang='ping '[root@qls ~]# wangPING (39.156.69.79) 56(84) bytes of data.64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=1 ttl=128 time=30.0 ms64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=2 ttl=128 time=28.0 ms别名和环境变量配置个⼈[root@qls ~]# ll -a .bash*-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile -rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc这两个隐藏⽂件是配置别名和环境变量的全局[root@Zhang-linux ~]# ll /etc/profile-rw-r--r--. 1 root root 1922 Oct 24 11:38 /etc/profile [root@Zhang-linux ~]# ll /etc/profile.d/*.sh[root@Zhang-linux ~]# ll /etc/bashrc-rw-r--r--. 1 root root 2853 Oct 31 2018 /etc/bashrc 删除别名命令 unalias + 别名命令历史输⼊命令 history 查看所有操作命令历史删除命令记录 history -d + 编号讲命令记录写⼊⽂件 history -w。
Shell 编程基础shell 是用于用户和内核之间相互通信的应用程序。
bash 是一种解释器,用于解释shell命令Shell 种类适用系统特点bash X86,linux系统默认shell 功能强大ash embedded 嵌入式系统体积小功能小巧用于嵌入式产品csh 网络常用于网络管理注:如没有特殊要求,shell的脚本文件扩展名应为xx.sh例:vi text.sh---------------------------------------------1 #!/bin/bash (指定对脚本解释的shell程序)2 #program (‘#’用于解释)3 # Use ....4 #history5 #2009.5.16 night mzy6 echo "Please input score"--------------------------------------------------------Shell脚本执行方法:1)直接运行:vi text.shchmod a+x test.sh./text.sh特点:重新启动一个文件制定的shell程序,用此shell对脚本进行解释执行。
2)指定shell 执行shell命令text.sh(bash,ash,csh)(空格)text.sh特点:同上3)当前shell运行source text.sh4)当前shell运行.(空格)text.sh3和4的特点:用当前shell对脚本解释执行。
Shell 变量注: 在shell中变量无数据类型Shell中需要用变量来储存程序的数据。
Shell 中的变量可分为三种:变量名命名规范:字母要大写,多个单词间以下划线分割。
变量赋值变量名=值(等号两端不能有空格,不加引号值也不能有空格) 单引号赋值A=‘hello everyone’单引号不支持特殊字符双引号赋值B=“hello everyone \!”双引号支持特殊字符变量引用$变量名变量释放unset 变量名·局部变量:用户在当前的进程和程序中有效的变量。
进入Shell环境打开终端窗口程序进入虚拟控制台启动时直接进入字符界面命令环境bash和tcsh提示符root用户:# 普通用户:$login、logout、exit命令:注销当前的登录,启动新的登录过程reboot命令:重新启动计算机shutdown –h now:立即关机shutdown –r now:立即重新启动同reboot shutdown –h +5:5分钟以后关机shutdown –h 12:05:12:05时刻关机shutdown -c:取消关机和重启动6章gcc命令用于编译链接C语言源程序,g++用于编译链接C++语言源程序。
默认情况下,gcc/g++命令生成的可执行文件名为“a.out”,通过参数“-o 文件名”可以指定其它的可执行文件名。
用gcc编译链接源程序:gcc 源程序文件名[选项] 运行程序:./可执行文件名-c 参数的使用:只编译,不连接由输入的.c文件生成.o文件,编译不包含主程序的子程序查询帮助man命令“man 2 函数名”查询系统调用“man 3 函数名”查询C库函数的帮助。
7章例:显示欢迎界面#!/bin/bash #用来告诉系统执行该文件的程序(shell程序)。
#filename:welcom #开头的句子表示注释。
#!除外。
first(){echo “hello!” }second() { echo “*”将消息参数显示在用户终端-n 禁止换行-e 解释反斜杠为转义字符} first second second first运行脚本程序主要有三种办法:1、bash(或sh)程序名2、./程序名3、点(.)程序名1.算术运算结果输出expr int op int :注意:必须是整数运算。
$expr 4 \* 5此处\起消除元字符的特殊含义。
即其后的任何字符按字符的字面解释2.字符串比较运算符-n:测试字符串的长度是否大于零。
-z:测试字符串的长度是否等于零。