`
jzhua2006
  • 浏览: 304573 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Bash初探之基础知识

阅读更多

1:每个脚本开头均需配置,指向bash的链接
   #!/bin/bash

 

2:FUNCNAME[0]表示当前运行的方法名称。

3:awk
   在文件或字符串中基于指定规则来分解抽取信息,也可以基于指定的规则来输出数据。
   例如:
   awk -F: '{print $2}'
   表示:以':'分割,获取打印出的第2个信息。

   如果后面不带-F,则默认是以空格分隔。

4:exit $?
  
5:字符串比较
   -e file 文件 file 已经存在
   -f file 文件 file 是普通文件
   -s file 文件 file 大小不为零
   -d file 文件 file 是一个目录
   -r file 文件 file 对当前用户可以读取
   -w file 文件 file 对当前用户可以写入
   -x file 文件 file 对当前用户可以执行
   -g file 文件 file 的 GID 标志被设置
   -u file 文件 file 的 UID 标志被设置
   -O file 文件 file 是属于当前用户的
   -G file 文件 file 的组 ID 和当前用户相同

6:两个命令直接使用“ && ”表示并且,即执行前面的命令,同时执行后面的命令

7:定义function时。
   1) 局部变量定义:local
   2) 暂停当前进程多少豪秒:sleep 数字

 

8:shell调用java程序(见如下)

     export CLASSPATH="${javahome}/lib/tools.jar:${javahome}/jre/lib:/usr/local/bin/bin/memcached.jar:"
    local test=$(java com.jzh.operate.OperateMemcached "${memcached_ip}":"${memcached_port}" memcachedtest memcachedtest | awk '{print $1}')    

 

9:Memcached启动时指定IP配置

INADDR_ANY就是指定地址为0.0.0.0的地址,这个地址事实上表示不确定地址,或“所有地址”、“任意地址”。 一般来说,在各个系统中均定义成为0值。

 

10:Linux系统环境变量在/etc/.profile文件中

 

11:BASH shell脚步在读取(properties)配置文件时,最好先进行dos2unix命令,将配置文件中的换行去除。

 

12:su 命令详解

      使用权限:所有使用者 
使用方式:su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]
说明:变更为其他使用者的身份,除 root 外,需要键入该使用者的密码
参数:
-f 或 --fast 不必读启动档(如 csh.cshrc 等),仅用于 csh 或 tcsh
-m -p 或 --preserve-environment 执行 su 时不改变环境变数
-c command 或 --command=command 变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者
-s shell 或 --shell=shell 指定要执行的 shell (bash csh tcsh 等),预设值为 /etc/passwd 内的该使用者(USER) shell
--help 显示说明文件
--version 显示版本资讯
- -l 或 --login 这个参数加了之后,就好像是重新 login 为该使用者一样,大部份环境变数(HOME SHELL USER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定 USER ,内定是 root

 

13:tee命令

      tee能将输入数据流同时双向输出到屏幕和文件
USER 欲变更的使用者帐号
ARG 传入新的 shell 参数

14:typeset

typeset用于设置变量属性,如大小写,宽度,左右对齐等都可以用typeset来控制, 当用typeset改变一个变量的属性时,这种改变是永久的

 

15:touch

更新文件的访问和修改时间。

 

16:1>/dev/null 2>&1

shell中可能经常能看到:>/dev/null 2>&1

命令的结果可以通过%>的形式来定义输出

/dev/null 代表空设备文件
> 代表重定向到哪里,例如:echo "123" > /home/123.txt
1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"
2 表示stderr标准错误
& 表示等同于的意思,2>&1,表示2的输出重定向等同于1

那么本文标题的语句:
1>/dev/null 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。
2>&1 接着,标准错误输出重定向等同于 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件

 

17:if的逻辑表达式

 逻辑非 !                   条件表达式的相反
if [ ! 表达式 ]
if [ ! -d $num ]                        如果不存在目录$num


    逻辑与 –a                    条件表达式的并列
if [ 表达式1  –a  表达式2 ]


    逻辑或 -o                    条件表达式的或
if [ 表达式1  –o 表达式2 ]

18:如何执行多重用户下命令,且得到返回值

如:su - oracle -c "echo \"startup;\" | sqlplus \"/as sysdba\"" | tee /tmp/start_instance.log

即:当前用户为root,切换至oracle用户下,同时执行sqlplus / as sysdba 中的startup命令。

 

19:shell脚本中包含另一个脚本文件的使用,见如下:

. 脚本文件名

 

20:" ' `含义

"":表示字符串。里面如果存在命令也不会执行

''  :同上

``:表示字符串。里面如果存在命令也会执行,且会返回执行结果。

 

21:在文件夹中搜索文件中包含的字符串

grep "字符串" * -R

 

22: usage使用

function usage
{
    echo "Usage:"
    echo "db_instance.sh [create|delete|start|stop]"
    echo "  create        create the instance"
    echo "  delete        delete the instance"
    echo "  start         start the instance"
    echo "  stop          stop the instance"
}

case $1 in
    create)
        create_instance
        exit $?
        ;;
    delete)
        delete_instance
        exit $?
        ;;
    start)
        start_instance
        exitcode=$?
        log INFO db_instance.sh "Start the instance,exit code:${exitcode}"
        exit ${exitcode}
        ;;
    stop)
        stop_instance
        exitcode=$?
        log INFO db_instance.sh "Stop the instance,exit code:${exitcode}"
        exit ${exitcode}
        ;;
    help)
        usage
        exit 0
        ;;
esac

usage

 

23:命令操作文件(sed、ed)

sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。以下介绍的是Gnu版本的Sed 3.02

 

24:指定文件行数插入内容样例

line_no=`grep -n "^[ ]*include[ ]*\"types.cf\"" /etc/main.cf | awk -F: '{print $1}'`
  ((line_no+=1))
  expr_str="include \"OracleTypes.cf\""
  cat << HERE | ed /etc/main.cf 1>/dev/null 2>&1
$line_no
i
$expr_str
.
w
q
HERE

 

25:dos2unix

dos2unix filename : 把dos文件转换成unix文件,可以避免在unix下执行文件时空行报错。

分享到:
评论

相关推荐

    bash_shell笔记_1_脚本基础知识

    ### bash_shell笔记_1_脚本基础知识 #### 一、Shell基本概念与使用 Shell是Linux操作系统中的一个重要组成部分,它充当用户与系统内核之间的接口。通过Shell,用户可以执行命令、运行程序以及进行各种系统管理操作...

    bash脚本基础实例

    **Bash脚本基础实例详解** Bash,全称Bourne-Again SHell,是Linux和类Unix系统中的默认...记住,Bash的强大之处在于其灵活性和与其他Linux命令的集成,所以随着你对系统的熟悉,你的脚本也将变得更加高效和强大。

    Bash脚本编程基础共58页.pdf.zip

    【标题】"Bash脚本编程基础共58页.pdf.zip" 涉及到的是Linux环境下的一种重要脚本语言——Bash shell脚本的基础知识。Bash是Bourne-Again SHell的缩写,它是Unix和类Unix系统如Linux、macOS中的默认命令解释器,用于...

    Bash脚本编程基础.pdf

    ### Bash脚本编程基础知识点详解 #### 一、Bash脚本编程概述 **Bash**(Bourne Again SHell)是一种广泛使用的Unix shell,它不仅是一个强大的命令行解释器,同时也是一种功能丰富的编程语言。Bash脚本编程允许...

    Bash参考手册.pdf

    Bash参考手册.pdf是Bash shell的官方参考手册,涵盖了Bash shell的所有方面,包括基本语法、变量、命令、函数、文件处理、流程控制、输入输出、错误处理等。 1. Bash简介 Bash是GNU项目的一部分,是自由软件基金会...

    bash高级编程 advanced bash script

    1. **Bash基础知识**:理解Bash环境,包括Shell变量、命令替换、流程控制结构(如if语句、for循环、while循环)以及函数的创建和使用。 2. **输入/输出重定向**:学习如何改变程序的默认输入和输出,包括重定向到...

    Bash 脚本编程基础,shell 脚本学习

    ### Bash 脚本编程基础知识点 #### 一、Shell 概述与分类 - **定义**:Shell 是一种命令行解释器,同时也是 Linux 和 Unix 操作系统的用户界面。它接收用户的输入,并将这些命令传递给操作系统进行处理。 - **语言...

    Bash使用 文档.doc

    下面是 bash 的一些重要知识点: 一、什么是 shell shell 是 Linux 系统中,用户和内核之间的交互程序。它翻译用户输入的命令,并将其传递给内核执行。shell 是 Linux 系统的一个核心组件,但它不是系统内核的一...

    Linux基础知识(7-10)-Bash.pdf

    Linux操作系统的基础知识中,Bash Shell扮演着至关重要的角色。Bash,全称为Bourne-Again SHell,是GNU项目中的一个Unix shell,它允许用户通过命令行与操作系统进行交互,请求内核提供各种服务。Bash拥有丰富的特性...

    详细的Bash介绍

    **Bash 概述** Bash,全称是 Bourne-Again SHell,是Linux操作系统中最常用的命令行解释器,...掌握Bash的基础知识,能让你更高效地与Linux系统交互。通过实践和学习,你可以深入理解其内在机制,进一步提升工作效率。

    bash.acp&bash.stx

    在这个场景中,我们关注的是与Bash shell相关的配置文件——"bash.acp"和"bash.stx",这些文件是专门为EditPlus定制的,目的是增强在编辑Bash脚本时的用户体验。 `bash.acp` 文件是EditPlus的语法规则配置文件,...

    我觉得最好的Bash Script

    本文档是关于 Bash Script 的详细指南,旨在为读者提供从基础到高级的 Shell 编程技术。作者 Mendel Cooper 和译者杨春敏、黄毅通过这本书,想要提供一个系统化的学习 Bash Script 的方法,让读者能够快速掌握 Shell...

    bash官方手册/Bash Reference Manual

    "bash 官方手册/Bash Reference Manual" bash 官方手册是 GNU 项目的一部分,由 Chet Ramey 和 Brian Fox 编写,提供了 Bash shell 的详细参考手册。该手册涵盖了 Bash shell 的所有方面,包括基本语法、shell ...

    BASH入门基础教程

    比较基础的关于BASH介绍,很不错的一部入门教程,打印版。

    bash.tar.gz

    总结一下,"bash.tar.gz" 文件可能包含一个 Bash 脚本或文档,涵盖了 Bash shell 的基础知识,如命令行操作、脚本编写和流程控制。同时,由于涉及到 Python,这个压缩包可能还探讨了 Bash 与 Python 的集成,以及在...

    linux learning the bash shell

    它不仅覆盖了Bash Shell的基础知识,还深入探讨了如何通过Shell脚本来解决实际问题,适合初学者到进阶用户的不同需求。 - **核心章节概览**: - **第1章:介绍**:介绍了Shell的历史背景、Bash的发展历程及其在现代...

    GNU Bash Reference Manual

    综上所述,《GNU Bash 参考手册》是一部全面而深入的指南,不仅适合初学者了解Bash的基础知识,也适合有经验的用户进一步探索Bash的高级功能。通过学习本手册,用户将能够更高效地使用Bash,编写出更加复杂和功能...

    bash programming

    本文详细介绍了Bash编程的基础知识和高级技巧,从为什么学习Bash编程到具体的语法细节都有所涵盖。学习这些知识不仅可以帮助你更好地理解Bash脚本的工作原理,还能让你具备编写高效、可靠的脚本的能力。随着实践的...

Global site tag (gtag.js) - Google Analytics