`

Bash札记(一)

阅读更多
1、变量的扩展操作:
${varname:-word}如果变量存在非空,返回其值,否则返回默认值word
filename=${1:-/dev/tty},如果位置参数为空,则返回/dev/tty
${varname:=word}如果变量存在非空,返回其值,否则赋值为word并返回其值
${varname:?message}如果变量存在非空,返回其值,否则打印varname:message,并
退出该命令或者脚本
${varname:+word}如果varname存在且非空,返回word,否则返回null,
可以用来测试变量是否存在$(count:+1}
2、模式匹配操作:
比如:path=/home/tolstoy/mem/long.file.name
${variable#pattern},如果pattern匹配变量开始,删除最短匹配,并返回剩余部分
${path#/*/}返回tolstoy/mem/long.file.name
${variable##pattern}如果pattern匹配变量开始,删除最长匹配,并返回剩余部分
${path##/*/返回long.file.name
${variable%pattern,如果pattern匹配变量结尾,删除最短匹配,并返回剩余部分
${path%.*}返回/home/tolstoy/mem/long.file
${variable%%pattern}如果pattern匹配变量结尾,删除最长匹配,并返回剩余部分
${pattern%%.*}返回/home/tolstoy/mem/long
返回字符串长度:
x=supercalifragilisticexpialidocious
echo ${#x}
3、特殊变量:
# 代表参数的个数
@ 命令行参数,"$@"扩展为原来单独的多个参数,要将原来的参数传递给另一个函数使用"$@"
* 命令行参数,"$*"扩展为一个参数
? 前一个命令的退出状态
$ shell进程的id
0 shell进程的名字
! 最后一个后台运行命令的进程id,可以使用它来保存该进程id,以便wait操作。
IFS 内部文本域的分割,通常为空格,tab或者换行
PS1 主命令行提示符,默认为$
PS2 行延续的提示符,默认为>
PS4 使用set -x提示符,默认为+
PWD 当前的工作目录
4、使用退出状态的if-else-fi
if grep "abc" file > /dev/null 
then
    echo "find abc in file"
else
    echo "not find abc in file"
fi

如果执行成功 exit状态为0,执行if,否则执行else
可以使用&
grep "abc" file >/dev/null &{
  echo "find abc in file"
}

5、break,continue可以带数字参数表示退出层数
while condition1                 Outer loop
do  ...
    while condition2             Inner loop
    do  ...
        break 2                  Break out of outer loop
    done
done

6、sed
1)执行多个替换
 sed 's;/home/tolstoy/;/home/lt/;'

s后面可以指定分割:
比如:
sed 's/\/usr\/local\/bin/\/common\/bin/' <old >new

可以通过指定|分割,把上面的命令变得更整洁:
sed 's|/usr/local/bin|/common/bin|' <old >new

2)使用&
我们想在单词的两边加上括号
    echo "hello 123" | sed 's/[a-z]*/(&)/' <old >new

可以使用多次
    echo "hello 123" | sed 's/[a-z]*/(&)(&)/' <old >new

3)使用行数指定范围:
sed '1,100 s/A/a/'
sed '100,$ s/A/a/'

4)使用d删除
sed -e 's/#.*//' -e '/^$/ d' 

上面代码用来删除空行和注释
5)使用p达到grep的功能
sed -n '/pattern/ p' #打印匹配行
sed -n '/pattern/ !p' </tmp/b #打印不匹配行

6)使用 {}来group多个操作:
删除begin,end之间的空行和注释:
sed -n '
	/begin/,/end/ {
	     s/#.*//
	     s/[ ^I]*$//
	     /^$/ d
	     p
	}
'

7)使用w来写入文件
比如把文件file中偶数找到,并放在even文件中:
sed -n 's/^[0-9]*[02468] /&/w even' <file 

sed参考http://www.grymoire.com/Unix/Sed.html

分享到:
评论

相关推荐

    Bash参考手册.pdf

    Bash是GNU项目的一部分,是自由软件基金会(Free Software Foundation)维护的一个 Unix shell。Bash是Unix shell的免费实现,兼容 Unix shell的所有功能,并且添加了一些新的功能。 2. Shell是什么? Shell是一个...

    实现一个简单的bash

    在Linux和Unix系统中,Bash(Bourne-Again SHell)是一种广泛使用的命令行解释器,也是系统的默认shell。它提供了用户与操作系统交互的界面,并允许编写脚本执行一系列命令。本教程将深入讲解如何实现一个简单的Bash...

    bash官方手册/Bash Reference Manual

    bash 官方手册是 GNU 项目的一部分,由 Chet Ramey 和 Brian Fox 编写,提供了 Bash shell 的详细参考手册。该手册涵盖了 Bash shell 的所有方面,包括基本语法、shell 操作、变量、命令、函数、流程控制、文件描述...

    Bash使用 文档.doc

    bash 是一种广泛使用的 shellcript 语言,主要应用于 Linux 操作系统中。下面是 bash 的一些重要知识点: 一、什么是 shell shell 是 Linux 系统中,用户和内核之间的交互程序。它翻译用户输入的命令,并将其...

    bash.acp&bash.stx

    在IT行业中,文本编辑器是开发者和系统管理员的得力工具,它们提供了高效编写和管理代码的功能。...这对于那些频繁使用Bash进行系统管理和自动化任务的IT专业人士来说,无疑是一个非常有价值的工具。

    bash-4.4版本升级手册带安装包

    Bash 4.4是其一个重要版本,带来了多项改进和新功能。在旧版本中,特别是低版本的Bash,存在一个名为“Shellshock”的安全漏洞,这个漏洞允许攻击者通过精心构造的环境变量来执行任意代码,对系统安全构成威胁。因此...

    AIX 6.1 bash包及安装

    在AIX 6.1中,bash-4.2-1.aix6.1.ppc是一个重要的更新,因为Bash的版本升级通常会带来性能提升、新特性和安全性改进。PPC代表PowerPC,这是IBM AIX操作系统支持的一种处理器架构。安装这个包意味着你可以享受到Bash ...

    bash v203- bash的windows本地实现

    “bash v203- bash的windows本地实现” 指的是一个在Windows操作系统上运行的Bash shell版本2.03,它不再依赖于像CygWin这样的模拟Unix环境。这意味着用户可以在Windows系统下直接使用Bash命令行工具,体验与Linux或...

    Python-BashInfinity是bash的一个现代的样板框架标准库

    为了解决这个问题,"Python-BashInfinity"应运而生,它是一个现代的Bash样板/框架/标准库,旨在提供更高效、可维护的Bash脚本解决方案。 **1. Bash Infinity的核心理念** Bash Infinity的出现是为了弥补Bash脚本在...

    Bash Reference Manual.pdf --- Bash手册

    Bash 参考手册是学习和掌握 Bash 的必备资料,为用户提供了一个详尽的指南,涵盖了 Bash 的各种特性和用法。 二、什么是 Bash? Bash 是一个命令语言解释器,同时也是一种脚本编程语言,它允许用户与操作系统进行...

    GitBash windows 64位版本

    GitBash是一款在Windows操作系统上运行的命令行工具,它为用户提供了类Unix shell环境,以便于使用Git进行版本控制。GitBash包含了Git的所有功能,并且还包含了其他Unix工具,如bash shell、grep、sed、awk等,使得...

    ch8 Bash编程1

    它利用Bourne-Again SHell (Bash) —— Linux默认的Shell,来编写一系列可执行的命令,形成一个可执行文件。Shell脚本能够帮助用户简化重复性的任务,提高工作效率。 **壳变量** Shell变量是Bash编程中的关键概念...

    bash高级编程 advanced bash script

    **Bash高级编程详解** Bash(Bourne-Again SHell)是Unix/Linux系统中最常用的命令行解释器,也是脚本编程的强大工具...因此,无论你是初学者还是经验丰富的开发者,深入学习Bash都是一个值得投入的时间和精力的投资。

    详细的Bash介绍

    Bash shell脚本可以用于执行一系列命令、进行文件操作、处理文本数据,甚至是实现复杂的逻辑流程控制。 **Bash 程序基础** 1. **Hello World 程序** 初步接触Bash,我们会从经典的Hello World程序开始。创建一个...

    高级bash shell手册

    高级Bash Shell手册是一本深入讲解Bash特性和用法的权威指南,对于想要提升Bash编程技能的用户来说,这是一份极具价值的资源。 **1. Bash基本概念** Bash不仅用于接收和执行用户在终端输入的命令,还支持脚本编写,...

    bash脚本基础实例

    /bin/bash` 是一个称为“shebang”的行,告诉系统使用哪个解释器来执行脚本。`echo` 命令则用来打印后面的字符串。 ### 实例二:变量与运算 Bash支持变量存储和基本运算。例如,我们可以定义一个变量并进行加法...

    我觉得最好的Bash Script

    作者 Mendel Cooper 和译者杨春敏、黄毅通过这本书,想要提供一个系统化的学习 Bash Script 的方法,让读者能够快速掌握 Shell 编程的技巧和知识。 标题解释 "我觉得最好的Bash Script",这本书的标题表明了作者对...

    bash超酷脚本实例

    《Bash超酷脚本实例》是一本专为Linux、Mac OS X以及Unix系统爱好者准备的bash编程指南。这本书以其独特的实例吸引着读者,即便是英文版,也因其实用性和趣味性而深受bash编程爱好者的喜爱。通过阅读这本书,你可以...

    mingw跨平台bash环境

    标题“mingw跨平台bash环境”指出,我们将在Windows系统中搭建一个基于MingW的Bash shell环境,它允许用户使用与Linux相似的命令行界面和脚本语言。这不仅对那些习惯于Linux工作流的开发者有极大帮助,同时也为在...

Global site tag (gtag.js) - Google Analytics