Bash编程基础特性之一
- 格式:pdf
- 大小:92.85 KB
- 文档页数:2
BASH学习笔记⼩结1. Linux 脚本编写基础1.1 语法基本介绍1.1.1 开头程序必须以下⾯的⾏开始(必须⽅在⽂件的第⼀⾏):#!/bin/sh符号#!⽤来告诉系统它后⾯的参数是⽤来执⾏该⽂件的程序。
在这个例⼦中我们使⽤/bin/sh来执⾏程序。
当编辑好脚本时,如果要执⾏该脚本,还必须使其可执⾏。
要使脚本可执⾏:编译 chmod +x filename 这样才能⽤./filename 来运⾏1.1.2 注释在进⾏shell编程时,以#开头的句⼦表⽰注释,直到这⼀⾏的结束。
我们真诚地建议您在程序中使⽤注释。
如果您使⽤了注释,那么即使相当长的时间内没有使⽤该脚本,您也能在很短的时间内明⽩该脚本的作⽤及⼯作原理。
1.1.3 变量在其他编程语⾔中您必须使⽤变量。
在shell编程中,所有的变量都由字符串组成,并且您不需要对变量进⾏声明。
要赋值给⼀个变量,您可以这样写:#!/bin/sh#对变量赋值:注意,等号两边不应有空格a="hello world"# 现在打印变量a的内容:echo "A is:"echo $a有时候变量名很容易与其他⽂字混淆,⽐如:num=2echo "this is the $numnd"这并不会打印出"this is the 2nd",⽽仅仅打印"this is the ",因为shell会去搜索变量numnd的值,但是这个变量时没有值的。
可以使⽤花括号来告诉shell我们要打印的是num变量:num=2echo "this is the ${num}nd"#这将打印: this is the 2nd ,BASH 中变量定义是不需要的,没有 "int i" 这样的定义过程。
如果想⽤⼀个变量,只要他没有在前⾯被定义过,就直接可以⽤,当然你使⽤该变量的第⼀条语句应该是对他赋初值了,如果你不赋初值也没关系,只不过该变量是空(注意:是 NULL,不是 0 )。
bash教程Bash 是一种运行在Unix/Linux系统上的脚本语言,常用于自动化任务、编写脚本程序等。
它是一个功能强大且灵活的命令行工具,可以通过编写简单的脚本来替代繁琐的手动操作,提高工作效率。
本文将介绍Bash的基本语法和常用命令,帮助初学者快速入门。
首先,我们需要了解一些基本概念。
Bash是“Bourne Again SHell”的缩写,它源于Unix的一种Shell语言。
Shell是一个解释性的编程语言,它直接与操作系统的内核进行交互。
Bash是Shell中最常用的一种,它提供了很多常用的命令和脚本操作。
在Bash中,我们可以使用#字符来添加注释,这些注释将被忽略。
接下来,我们将学习一些基本的Bash语法。
首先是变量。
在Bash中,我们可以通过在变量名前加$符号来引用变量。
例如,可以使用以下命令将值“Hello World”分配给变量message:message="Hello World"echo $message上述命令将打印出“Hello World”。
在Bash中,我们还可以进行算术运算。
使用$(( ))将表达式括起来,可以计算其结果。
例如:a=5b=$((a + 3))echo $b上述命令将打印出“8”。
Bash中的条件语句使用if-then-else结构。
例如,我们可以使用以下命令来判断一个数是否大于10:num=12if [ $num -gt 10 ]; thenecho "The number is larger than 10"elseecho "The number is smaller than 10"fi上述命令将打印出“The number is larger than 10”。
除了if语句,Bash还提供了循环语句。
最常见的循环语句是for和while循环。
例如,以下命令将打印出数字1到5:for i in {1..5}; doecho $idonewhile循环也是一种常用的循环结构。
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登陆后的样子。
bash教程Bash是一个常用的命令行shell,适用于Linux和macOS操作系统。
它提供了一种与计算机交互的方法,可以执行命令、编辑文件和处理数据等操作。
下面是一些常用的Bash命令和技巧,供参考:1. 认识BashBash是Bourne Again SHell的缩写,是Unix的一个自由软件,是Linux和macOS默认的shell。
2. 查看当前所在路径使用`pwd`命令可以查看当前所在路径。
比如输入`pwd`后回车,你将看到当前所在路径的完整名称。
3. 列出文件和文件夹使用`ls`命令可以列出当前路径下的文件和文件夹。
比如输入`ls`后回车,你将看到当前路径下的所有文件和文件夹的名称。
4. 切换路径使用`cd`命令可以切换路径。
比如输入`cd /path/to/folder`后回车,你将切换到指定路径。
5. 创建文件夹使用`mkdir`命令可以创建文件夹。
比如输入`mkdir foldername`后回车,你将在当前路径下创建一个名为"foldername"的文件夹。
6. 创建文件使用`touch`命令可以创建文件。
比如输入`touch filename`后回车,你将在当前路径下创建一个名为"filename"的空文件。
7. 复制文件和文件夹使用`cp`命令可以复制文件和文件夹。
比如输入`cp file1file2`后回车,你将复制名为"file1"的文件并将其重命名为"file2"。
8. 移动文件和文件夹使用`mv`命令可以移动文件和文件夹。
比如输入`mv file1 /path/to/destination`后回车,你将把名为"file1"的文件移动到指定路径下。
9. 删除文件和文件夹使用`rm`命令可以删除文件和文件夹。
比如输入`rm file1`后回车,你将删除名为"file1"的文件。
bash 语法bash语法是一种通用的编程语言,它是很多Unix系统上的默认登录shell。
它可用于大量功能,如创建和编辑文本文件,运行应用程序和脚本文件,配置系统环境变量,管理和运行Linux服务器,管理用户权限等等。
bash语法的语法结构基本上被称为命令行式语法,它的结构是通过命令、参数和选项来组织的。
它以带有提示符(bash)的窗口或内部 shell 为基础,并允许用户在终端控制台输入和运行linux系统命令。
bash语法大致分为三类:管道、脚本和shell变量。
管道用于将不同的命令组合在一起,脚本用于开发自定义脚本任务,而shell变量则提供用户可以用来定义变量值的一种方式。
在编写bash脚本时,关键点在于熟悉bash的一些基本概念,包括函数、变量、条件和循环等语句。
其中,函数是bash特有的特性,允许把它们组装成复杂的任务。
变量在bash编程中是必不可少的,它允许用户保存和访问各种类型的数据;条件语句允许根据某些情况运行或继续运行程序;循环语句让用户能够按照特定的规则重复执行程序的一部分。
最后,bash有很多内置命令,这些内置命令让开发者在一定程度上能够简化任务。
有了这些命令,用户就不必自己编写程序,就可以实现所需的某些功能,而不需要考虑底层实现细节。
另外,bash也提供了一些基于命令行的编辑器,使开发者能够以更加高效的方式编辑文件,并可以实现撤销与重做等类似功能。
总而言之,bash语法是一种非常有用的编程语言,它允许用户以高效、简单的方式实现对Unix系统功能和接口的管理和控制。
它让开发者可以比编写代码更快地实现功能,这使得它受到了很多技术人员的欢迎和应用。
bash shell语法Bash是一种Unix和Linux系统下的shell,也是类Unix系统中最常用的shell之一。
Bash shell语法是bash编程的基础。
它提供了一些操作符和语法规则,帮助你有效地编写shell脚本。
在这篇文章中,我们将介绍一些基本的Bash shell语法。
1.变量定义在Bash里,你可以使用变量来存储数据,变量名必须以字母或下划线开头,不能以数字开头。
变量赋值时,等号两边不能有空格。
例如:name="John"echo $name输出结果为:John2.条件语句在Bash中,你可以使用条件语句来判断表达式是否为真。
if语句是最常用的条件语句。
例如:if [ $name == "John" ]thenecho "Hello John"fi输出结果为:Hello John3.循环语句循环语句是Bash中另一个重要的语法结构。
while和for循环都是Bash中常用的循环语句。
例如:#while循环count=1while [ $count -le 10 ]doecho "Count is: $count"count=$((count+1))done#for循环for i in {1..5}doecho "The value of i is: $i"done以上循环语句会输出以下结果:Count is: 1Count is: 2Count is: 3Count is: 4Count is: 5Count is: 6Count is: 7Count is: 8Count is: 9Count is: 10The value of i is: 1The value of i is: 2The value of i is: 3The value of i is: 4The value of i is: 54.函数定义Bash中的函数和其他编程语言中的函数一样,它们可以接收参数并返回值。
bash脚本语法bash脚本语言(Bash Script Language)是Unix和Linux的命令行处理器的编程语言,可用来编写高级别的shell脚本程序。
它最初由Brian Fox开发,基于Stephen R. Bourne的另一个shell——sh。
随着系统的演进,bash和其他进程的发展,它的发展壮大,Bash现在被大多数Unix和Linux系统用作缺省的shell,也是系统管理员和程序员用来自动化复杂任务或可扩展功能的首选语言。
一、简介Bash是Linux集成式开发环境下最流行的一门脚本语言,它多用于 Linux系统管理来帮助进行系统管理和自动化。
它可实现系统命令的高级封装,以及实现shell脚本编程,采用sh语法,执行更加方便,可以实现循环操作和流程控制等功能。
另外,它还可以解析更复杂的字符串处理,支持常用函数,可以大大减少开发程序的时间。
二、特点1.支持复杂的脚本代码:由于它能够处理复杂的字符串,因此可以用来实现脚本编程,且有更多的控制结构和函数,支持复杂的脚本代码;2.功能完善:支持系统排程和信号处理,可以调用多个存储库函数; 3.灵活性高:支持程序运行状态的指定来提升效率;4.扩展性好:支持多平台及脚本扩展,可以通过指定shell名称来使用;5.安全性强:它可用于安全程序开发,如安全shell脚本程序;三、应用场景1.系统管理文件:Bash可以用来管理系统文件,比如备份、检查文件;2.自动化安装程序:可以利用Bash来制作安装脚本,从而自动执行安装程序;3.脚本测试:利用Bash可以用来自动化测试脚本,比如检查函数的正确性;4.实现新的操作:可以利用它实现需求新的编程操作,比如实现一些简单的自动化操作;5.Pipeline工具:Bash可以用于Pipeline工具来实现脚本的一键部署;四、编程1.编写脚本:使用任何文本编辑器(建议使用vim 或emacs)编辑脚本;2.保存脚本:将编写好的脚本保存为文件,比如;3.脚本授权:执行chmod +x来授予脚本可执行权限;4.编译程序:可以通过source来生成程序;5.执行程序:可以使用ba来执行程序;五、总结Bash是一门非常强大的脚本语言,它能够有效的简化复杂的系统任务,支持多平台的操作,增加系统的可维护性和可扩展性。
Bash脚本编程入门指南第一章:介绍Bash脚本编程Bash脚本编程是一种广泛应用于Linux和Unix系统中的命令行脚本语言。
它提供了一种编写可以自动化任务和批处理操作的方式。
本章将介绍Bash脚本编程的基本概念和用途,以及必要的准备工作。
Bash是什么?Bash(Bourne Again Shell)是一种Unix Shell和命令语言,它是许多Unix系统中默认的Shell。
它被设计为与Bourne Shell兼容,并增加了一些额外的功能。
为什么使用Bash脚本编程?Bash脚本编程可以大大提高生产效率,尤其是对于繁琐重复的任务。
通过编写Bash脚本,我们可以将一系列命令和操作组织在一起,以便快速自动化执行。
第二章:入门准备在开始编写Bash脚本之前,我们需要进行一些准备工作。
本章将介绍如何安装Bash,以及Bash脚本编程的基本工具和环境设置。
安装BashBash通常是Linux和Unix系统的默认Shell,因此无需额外安装。
但如果你使用的是其他操作系统(如Windows),可以通过安装Cygwin或通过Linux虚拟机来获取Bash。
编写和执行脚本在Bash脚本编程中,我们使用文本编辑器来编写脚本文件。
文件的扩展名通常是.sh。
编写完脚本后,我们可以通过在终端中执行脚本来运行它。
第三章:基本语法和结构Bash脚本采用了一种类似于其他编程语言的结构和语法。
本章将介绍Bash脚本的基本语法、变量、操作符、条件语句和循环语句等。
变量在Bash脚本中,可以使用变量来存储和操作数据。
变量的命名规则与其他编程语言类似,以字母或下划线开头,不能以数字开头。
变量赋值使用等号,但等号两边不能有空格。
操作符Bash脚本支持各种数学和逻辑运算符,如加减乘除、比较运算符和逻辑运算符等。
这些运算符可以用于计算和判断。
条件语句条件语句用于根据条件的真假来执行不同的操作。
Bash脚本支持if-else、case等条件语句,可以根据不同的条件执行相应的代码块。
Bash 编程基础一.Bash特殊字符1.通配符:*:匹配任何字符串?:匹配任何单个字符集合运算符:用一些单个字、一个连续范围或断续的字符集合作为通配符[set]:用字符集合作通配符匹配单个字符,如:[aeiou],[a-o],[a-h, w-z][!set]:除了集合外的所有字符组成的集合作通配符2.花括号展开式(可以嵌套):格式:[前导字符串]{字符串1[{嵌套字符串1…}] [, 字符传2…]}[后继字符串]如:c{a{r, t, n}, b{r, t, n}}s 就等于cars cats cans cbrs cbts cbns3.其它特殊字符:< :输入重定向>; :输出重定向(没有文件则创建,有则覆盖)>;>; :输出重定向(没有则创建,有则追加到文件尾部)( :子shell开始,子shell继承父shell部分环境变量) :子shell结束{ :命令块开始,由当前shell执行,保留所有环境变量} :命令块结束| :管道\ :引用后面的单个字符… :强引用字符串,不解释特殊字符“ :弱引用字符串,解释所有特殊字符~ :根目录` :命令替换; :命令分隔符(命令终止符),运行在一行里执行多条命令# :行注释$ :变量表达式& :在后台执行命令* :字符串通配符? :单个字符通配符二.Bash变量1.自定义变量用户自定义的变量由字母、数字和下划线组成,并且变量名的第一个字符不能为数字,且变量名大小写敏感。
varname=value 注意bash不能在等号两侧留空格shell语言是非类型的解释型语言,给一个变量赋值实际上就是定义了变量,而且可以赋不同类型的值。
引用变量有两种方式,$varname和${varname},为防止变量在字符串中产生歧义建议使用第二种方式,引用未定义的变量其值为空。
为一个变量赋值一个串,需要用到引号,注意`、‟、”的不同,``相当于$()为了使变量可以在其它进程中使用,需要将变量导出:export varname2.环境变量可以用set命令给变量赋值或查看环境变量值,使用unset命令清除变量值,使用export导出变量将可以使其它进程访问到该环境变量。
bash 编程 if 语句 [[一、前言在Shell编程中,if语句是非常基础的语句之一,用于进行条件判断和分支选择。
本文主要介绍了if语句的常用写法和语法规则,以及一些常见的应用实例。
二、if语句语法在Shell脚本中,if语句可以用两种形式表达:1. 一般形式if conditionsthencommandfi首先判断一个或者多个条件,如果条件成立,则执行后面的命令。
如果条件不成立,则跳过if语句块,继续执行下一条语句。
2. 简略形式这种形式下也是判断条件后执行相应操作,但是使用较少。
以下示例是if语句的应用场景,主要包括判断字符串、数字和文件等情况。
语法描述和代码演示如下:1. 判断字符串s1="abc"s2="def"if [[ $s1 = "abc" ]]; thenecho "\$s1 is equal to \"abc\""fi上面的代码是判断字符串是否相等,如果相等,输出$s1 is equal to "abc",否则输出$s2 is not equal to "abc"。
n1=11n2=103. 判断文件上面的代码是判断文件是否存在、是否是常规文件和是否是目录。
如果条件成立,则输出对应的提示信息。
四、if语句中的逻辑运算在if语句中可以使用多个条件,也可以使用逻辑运算符,例如:1. 逻辑与上面的代码中使用了逻辑与运算符“&&”,判断两个变量是否同时满足条件,如果都满足,则输出Both are true.。
五、if语句中的匹配表达式在if语句中可以使用表达式匹配来实现更加复杂的条件判断,例如:1. 匹配单个字符上面的代码中使用了通配符“?”表示匹配单个字符,判断变量$s1是否等于“a?c”,如果成立,则输出Match.。
六、if语句的嵌套七、总结。
bash的使⽤bash的⼯作特殊之命令执⾏状态返回值和命令展开所涉及的内容及其⽰例什么是Bash 什么是Shell Bash 是 GNU Bourne-Again SHell,是⽬前⼤多数Linux发⾏版采⽤的Shell。
Shell 是 *nix提供给⽤户使⽤的界⾯。
⼀个操作系统的底层是独⽴运⾏的,⽤户界⾯和底层分开,可以最⼤限度的保证系统稳定。
Shell就是⼀个特殊的程序,负责接受⽤户的命令,并把系统的响应返回给⽤户。
Bash Shell⼀般不需要⾃⼰安装,在安装发⾏版的同时都会安装好。
Shell的存在是和登陆相关的,从⽤户名密码验证通过以后,Shell就启动了,知道你退出,Shell就结束了运⾏。
除了Bash Shell之外,还有很多其他的Shell。
1、bash基本语法下⾯看⼀个简单的shell⽂件():#!/bin/bash#This is an exampleecho Hello World(1)“#!”是说明这个⽂件类型的,Linux系统根据“#!”及其后⾯的字符串确定该⽂件的类型,/bin/bash表名该⽂件是⼀个bash程序,需要由/bin⽬录下的bash程序来解释执⾏。
bash程序⼀般放在/Bin⽬录下,可以⽤命令“locate bash”,“whereis bash”,“find / -name bash >/dev/null”来找出bash安装位置。
(2)“#”是bash⽂件的注释,表⽰以#开头的⼀⾏是注释信息;echo是回显命令,将其后的内容输出到标准输出。
Bash 程序中绝⼤部分语句结束时没有分号。
(3)执⾏bash程序:sh 或者./HelloWorld.sh(需要有可执⾏权限)2. bash变量bash中的变量是不能含有保留字,不能含有“-”等保留字符,也不能含有空格。
在bash中,变量是不需要提前定义的,只要前⾯没有被定义过,就可以直接使⽤。
⼀般使⽤变量的第⼀条语句是赋初值,若不赋初值,默认为NULL。
BashShell脚本编程基础特性知识-电脑资料Bash Shell的基础特性:命令历史:history:shell内建命令环境变量HISTFILE定义用户退出命令历史列表的存储位置#echo $HISTFILE/root/.bash_history# echo $HISTFILESIZE HISTFILE指向的文件持久留存的历史命令条目# echo $HISTSIZE 当前bash进程所留存的历史命令条目数# history -d 删除历史列表中的第条命令# history -c 清空历史命令# history 显示最近的条命令# history -a 追加当前bash进程的新历史命令至命令历史文件中echo $HISTFILESIZEhistoryhistory -dhistoryhistory# ! 调用历史列表中的命令echo$HISTFILESIZE# !! 再次执行上一条命令echo$HISTFILESIZE# !lsb 快速调用历史命令中执行的命令lsb_releaseLSBVersion: :base- 4.0 -amd64:base- 4.0 -noarch:core- 4.0 -amd64:core- 4.0 -noarch:graphics- 4.0 -amd64:graphics- 4.0 -noarch:printing- 4.0 -amd64:printing- 4.0 -noarch# ls/etc/passwd/etc/passwd# cat 这里按esc键,然后按.就会调用/etc/passwd#!$/etc/passwd-bash:/etc/passwd: Permission denied控制命令历史记录的方式:环境变量:HISTCONTROL# echo $HISTCONTROL 忽略重复的命令(连续且相同)ignoredupsignorespace 忽略以空格开头的命令#export HISTCONTROL=ignorespace#echo $HISTCONTROLignoredupsignoreboth:上面两个功能同时生效使用方法:exportHISTCONTROL=参数撤销HISTCONTROL的控制:unsetHISTCONTROL命令补全:bash可以根据内建命令或外部命令的查找方式查找以用户指定的字符串开头的命令并直接予以补充完整的机制,。
Bash编程基础特性之一01、Bash特性之内置变量PWD : 显示当前工作OLDPWD:上一次的工作目录~ :用户家目录– :使用cd – 的命令可以在上一次工作目录和当前工作目录中来回切换HISTSIZE :显示shell中历史命令保留数量HISTFILE:显示历史命令文件存放路径HISTFILESIZE : 显示历史命令文件存放命令数量HISTCONTROL : 显示历史命令记录方式!# : 代表执行历史记录中#条命令!!: 执行上一次历史命令ESC ,. :提取上一次命令最后一个参数!$ : 提取上一次命令最后一个参数PATH:环境变量$? : 上一次命令的执行状态结果SHELL :当前ShellHOME : 家目录路径UID : 用户的UIDGID : 用户的GIDUSER :用户名$0 :脚本名称$1..$9 : 位置参数$# : 位置参数的个数$* : 所有的位置参数(作为单个字符串)$@ : 所有的位置参数(每个都作为独立的字符串)$$ : 脚本的进程IDLANG:当前系统语言设置变量RANDOM: 可取出随机数02、Bash特性之引用1. 转义:用反斜杠”\”在需要转义的字符前,表示这个字符需要看作一个普通字符2. 强引用:使用”`”把所有内容都引起来,“号中的所有内容都看作为普通字符,除了引号自身,所以不要在“号内再加“号3. 弱引用:使用 ” ” 把内容都引起来,除了引号自身,把大部分字符都看作普通字符,例外的有\,$ , ` ,三个特殊字符03、Bash特性之命令行展开1. ~ :自动展开为用户家目录2. {} : 中间以多个“,”为分隔,依次展开为多个数量04、Bash特性之执行状态结果1. 成功: 02. 失败: 1-25505、Bash特性之命令引用1. `Command`2. $(Command)。
bash的特性总结什么是bash:shell作为用户与计算机内核交互的接口,是用户与计算机沟通的桥梁,而bash(borne again shell)是众多shell里面最为流行一种,bash作为众多shell 里面的一种有着众多的特性,掌握bash的众多特性将会是我们今后学习linux必经之路。
首先介绍一下bash的特性之一命令历史:这个特性是将用户之前执行过的命令保存到缓存当中,通过上下键以及history命令的特殊选项来方便用过顺利完成操作系统功能。
键入不带任何选项的:history,bash会把你使用过的命令全部显示出来,那有人就问来,这些命令是存到哪里的,注销后这些命令还有吗?别着急,我们一一来回答,首次登陆系统后用户所键入的命令都是缓存到内存当中的,当该用户注销,这些命令会保存到家目录下的/.bash.history当中。
下面就让我们来看看history的用法:history [n]:表示是要列出最近的n 条命令行内容;history -c:清空所有命令历史;history -a:将目前新增的history 命令新增入histfiles 中,若没有加histfiles ,则默认写入~/.bash_history历史命令使用的窍门!!:重复前一个命令!char(字符):重复前一个以“字符”开头的命令!num :按照history命令输出中的序号来重复对应命令!?abc :重复前一个包含abc的命令!-n:重复n个命令之前的那个命令按键组合1:使用up和down键来上下浏览之前执行的命令2:键入ctr+r 来在命令历史中搜索命令3:要重新调用前一个命令中的参数:Esc + .(点击Esc键,然后点击.键)bash重要特性之二命令行补全以及路径补全:首先看什么是命令行补全,根据内部命令或外部命令各自查找方式,查找以用户指定字符开头命令如果用户指定开头的字符串能唯一标识命令,则按TAB键可以直接补全此命令,否则,按两次TAB键可以显示所有以指定字符串开头的命令;看到这样的解释是不是头都蒙来,别着急,打个比方:就好比有一天老师没拿花名册点名字,突然忘记某个人的全名来,只知道姓什么,只点了一个姓,而刚刚班里就一个人是这个姓,那这个人就直接答到,如果班上有好几个都是这个姓的,那这几个人会同时站出来让你选择你要点的是那个。
bash的基本特性1、命令历史作⽤:查之前使⽤的命令关于命令历史的⽂件每个⽤户家⽬录下⾯的 .bash_history在关机的时候,会⾃动写⼊⼀次 (history -a 将内存中的命令历史写⼊⽂件)关于命令历史的变量(环境变量)env //查看环境变量set //常看更详细的环境变量参数HISTSIZE=1000 数量HISTCONTROL=ignoredupsIgnoredups 忽略重复的历史命令 -- 连续且相同,才叫重复Ignorespace 忽略空⽩开头的历史命令,“键⼊空格开头则不会被记录”Ignoreboth 两者都⽣效HISTFILE=/root/.bash_historyHISTFILESIZE=1000history 的常见操作查看命令历史!# #表⽰数值,执⾏#⾏的命令!string 匹配最近⼀次的字符串!! 上⼀条命令*!$* 上⼀条命令的最后的⼀个参数ls /etcls !$ESC+.常见的选项:-a-d-chistory # 显⽰最近 # ⾏的命令2、命令补全tab1、提⽰2、⾃动补全扩展:制表符 \t 四个空格键3、⽬录补全tab1、提⽰2、⾃动补全4、命令展开—date命令{ ,}Linux的⽬录需要遵循什么规则? -- FHS⽬录规则属性1 属性2a 1b 2mkdir -pv /var/{a,b}-{1,2}date 基于date命令来创建⽬录%F CCYY-mm-dd%T hh:MM:ss%D mm/dd/YY%H hh%M MM%S ss%Y CCYY练习:通过for语句循环创建⼀个⽉的⽇志⽂件;.log 2019-08-6.http.logtouch `date +%F`.http.logfor i in {1..30};dotouch `date +%Y-%m-$i`.http.logdonetar压缩⼯具 1234lfjkfoajf3o2u34o2jlr lwjro32rlf1234e1234=ax【压缩只能对⽂件进⾏操作,⽽不能对⽬录进⾏操作】gzipbzip2xzzcat //查看压缩⽂件且不解压tar的常见参数:tar 归档⼯具【可以对⽬录进⾏操作】-j bzip2-J xz-z gzip-c create-x extract //可以不⽤指定解压的⼯具-f 指定⽂件名-v 显⽰详细信息 verbose-t 不解压查看内容和 zcat ⼀样tar cjvf 2018-08.http.log.bz2 2018-08-*.http.logtar xvf 2018-08.http.log.bz2 -C abc练习:编写脚本,每天02:20 备份/etc/⽬录中所有⽂件,名称为当天⽇期;且保存⽂件为压缩⽂件;crontab -e -- 20 2 * * * /root/xxx.shvim xxx.sh#!/bin/bash#tar cJvf /var/`date +%F`.xz /etc/chmod +x xxx.sh补充:clock / hwclock 常看硬件时钟(如果同步系统时钟与硬件时钟)cal ⽇历5、命令的执⾏状态在Linux中,每⼀条命令执⾏后都会有两个结果:命令本⾝放回的内容其次,命令执⾏的结果状态$? 变量,就是⽤来存放命令执⾏状态的变量;0 表⽰成功状态(和Python正好相反)1-255 表⽰失败状态[ $? -eq 0 ] && exit 0 || exit 16、命令的快捷键ctrl + lctrl + cctrl + u //删除光标前的字符ctrl + k //删除光标后的字符ctrl + actrl + ectrl + w //以空格为分隔符,去删除⽂件ctrl + r //进⼊⼀个交互界⾯,搜索最近⼀次使⽤的命令(要输⼊string)7、alias别名系统启动时读取⼀些特殊⽂件的顺序;aliasalias cdnet="cd /etc/sysconfig/network-scriptes" //这种⽅式定义alias只能在当前shell⽣效;/etc/profile : 定义环境变量(所有⽤户) -- EXPORT HISTCONTROL=XXX/etc/bashrc :定义本地变量--alias(所有⽤户)~/.bash_profile :定义环境变量(指定⽤户)~/.bashrc :定义本地变量--alias(指定⽤户)sources /etc/profile 或者 . /etc/profile8、⽂件通配符 -- globbing【⽂件通配符不是正则表达式】任意单个字符* 任意长度的任意字符[] 指定范围内的任意⼀个字符[^] 指定范围以外的任意⼀个字符[0-9A-Za-z][0-9] [a-z] [A-Z] [a-zA-Z]指定字符类:[:alnum:], [:alpha:], [:cntrl:], [:digit:], [:graph:], [:lower:], [:print:],[:punct:], [:space:], [:upper:], and [:xdigit:]^[[:space:]]*$ //有空格键的空⾏(正则表达式)9、练习1、显⽰/var⽬录下所有以1开头,以⼀个⼩写字母结尾,且中间出现⾄少⼀位数字的⽂件或⽬录;ls /var/1*[0-9]*[a-z]2、显⽰/etc⽬录下,以任意⼀位数字开头,且以⾮数字结尾的⽂件或⽬录ls /etc/[0-9]*[^0-9]3、显⽰/etc⽬录下,以⾮字母开头,后⾯跟了⼀个字母及其它任意长度任意字符的⽂件或⽬录ls /etc/[^[:alpha:]][[:alpha:]]*4、复制/etc⽬录下,所有以m开头,以⾮数字结尾的⽂件或⽬录⾄/tmp/test⽬录中;cp -a /etc/m*[^0-9] /tmp/test5、复制/etc⽬录下,所有以.d结尾的⽂件或⽬录⾄/tmp/⽬录中cp -a /etc/*.d$ /tmp/6、复制/etc⽬录下,所有.conf结尾,且以m n r p开头的⽂件或⽬录⾄/tmp/⽬录中cp -a /etc/[mnrp]*.conf /tmp/。
bash脚本语言(转)最简单的例子—— Hello World!几乎所有的讲解编程的书给读者的第一个例子都是Hello World 程序,那么我们今天也就从这个例子出发,来逐步了解BASH。
用vi 编辑器编辑一个hello 文件如下:#!/bin/bash# This is a very simple exampleecho Hello World这样最简单的一个BASH 程序就编写完了。
这里有几个问题需要说明一下:一,第一行的#! 是什么意思二,第一行的/bin/bash 又是什么意思三,第二行是注释吗四,echo 语句五,如何执行该程序#! 是说明hello 这个文件的类型的,有点类似于Windows 系统下用不同文件后缀来表示不同文件类型的意思(但不相同)。
linux 系统根据"#!" 及该字串后面的信息确定该文件的类型,关于这一问题同学们回去以后可以通过"man magic"命令及/usr/share/magic 文件来了解这方面的更多内容。
在BASH 中第一行的"#!" 及后面的"/bin/bash" 就表明该文件是一个BASH 程序,需要由/bin 目录下的bash 程序来解释执行。
BASH 这个程序一般是存放在/bin 目录下,如果你的Linux 系统比较特别,bash 也有可能被存放在/sbin 、/usr/local/bin 、/usr/bin 、/usr/sbin 或/usr/local/sbin 这样的目录下;如果还找不到,你可以用"locate bash" "find / -name bash 2> /dev/null" 或"whereis bash" 这三个命令找出bash 所在的位置;如果仍然找不到,那你可能需要自己动手安装一个BASH 软件包了。
Bash编程基础特性之一
01、Bash特性之内置变量
PWD : 显示当前工作OLDPWD:上一次的工作目录
~ :用户家目录
– :使用cd – 的命令可以在上一次工作目录和当前工作目录中来回切换HISTSIZE :显示shell中历史命令保留数量
HISTFILE:显示历史命令文件存放路径
HISTFILESIZE : 显示历史命令文件存放命令数量HISTCONTROL : 显示历史命令记录方式
!# : 代表执行历史记录中#条命令
!!: 执行上一次历史命令
ESC ,. :提取上一次命令最后一个参数
!$ : 提取上一次命令最后一个参数
PATH:环境变量
$? : 上一次命令的执行状态结果
SHELL :当前Shell
HOME : 家目录路径
UID : 用户的UID
GID : 用户的GID
USER :用户名
$0 :脚本名称
$1..$9 : 位置参数
$# : 位置参数的个数
$* : 所有的位置参数(作为单个字符串)
$@ : 所有的位置参数(每个都作为独立的字符串)
$$ : 脚本的进程ID
LANG:当前系统语言设置变量
RANDOM: 可取出随机数
02、Bash特性之引用
1. 转义:用反斜杠”\”在需要转义的字符前,表示这个字符需要看作一个普通字符
2. 强引用:使用”`”把所有内容都引起来,“号中的所有内容都看作为普通字符,除了引号自身,所以不要在“号内再加“号
3. 弱引用:使用 ” ” 把内容都引起来,除了引号自身,把大部分字符都看作普通字符,例外的有\,$ , ` ,三个特殊字符
03、Bash特性之命令行展开
1. ~ :自动展开为用户家目录
2. {} : 中间以多个“,”为分隔,依次展开为多个数量
04、Bash特性之执行状态结果
1. 成功: 0
2. 失败: 1-255
05、Bash特性之命令引用
1. `Command`
2. $(Command)。