`

shell知识一

 
阅读更多

1.输出变量的值: echo $变量名 或 echo ${变量名}

 

2.删除变量:unset 变量名

 

3.变量赋值:变量名=值

  3.1 如果值中存在空格需要使用双引号或单引号括起来

  3.2 $lang="the lan is $Lang", 双引号中的$保留原有的作用

  3.3 变量值中如果存在需要执行的命令,使用`命令`或者$(命令)的方式,例如:thePwd=`pwd` 或者 thePwd=$(pwd)

 

  3.4 export 变量名: 该变量成为环境变量,能用于子shell中,但是如果在子shell中unset该变量,它并不会真正unset掉父shell中的该变量值

      例如:name=ajia

            export name

   bash #进入子shell的命令

   echo $name

 

  3.5 env或export:查看所有的环境变量,set:查看所有的的变量

  3.6 echo $$:查看当前shell的pid

  3.7 echo $?:查看上一个执行命令的结果回传码,0表示上一次执行的命令成功,非零则是错误码

  3.8 read 变量名:以输入值为变量的值,例如 read -p "input your name:" -t 10 name

 

  3.9 declare -aixr 变量名 声明变量

              -a 表示声明为array类型

     -i 表示声明为int类型

     -x 表示声明为环境变量

     -r 表示声明为只读类型 (尽量少用,一旦定义除非重新启动系统,否则既不能unset,又不能declare)

     -p 查看变量的声明情况

  

  3.10 arr[0]="hello" arr[1]="world" 数组变量的赋值, echo ${arr[0]}:数组的key为0的元素输出,${arr[*]} 或 ${arr[*]}表示输出该数组所有元素,${arr}表示输出数组第一个元素, 

       ${#arr[@]}或者${#arr[*]}数组的总数, ${#arr[下标]}:某个元素的长度

  3.11 字符串长度:${#变量名}

 

4.ulimit 设置文件系统和程序的限制

  ulimit -a 查看当前系统所有的限制额度,其中“file size”表示可创建的单一文件的大小,“open files”表示可同时打开的文件数量

 

5.type -a 命令名称  :查看该命令被定义的情况

 

6.shell中命令的执行顺序:

  1.首先会根据相对或绝对路径来执行命令,例如 /data/test.sh 或 ./test.sh

  2.由alias找到该命令来执行

  3.由bash内置的命令来执行

  4.通过$PATH环境变量的顺序找到第一个命令来执行

 

7.[^abc]表示不以a或b或c开头的一个字母

 

8.数据流重定向:

  1. 输出重定向:>:以覆盖的方式将输出重定向到文件或设备, >>:以追加的方式重定向, 这是针对命令执行正确的情况,如果是错误命令产生的输出,需要使用下面的命令来重定向

  2. 错误输出重定向: 2>或2>>

  3. 需要同时进行正确和错误重定向,使用2>&1,例如 ls -al me >demo.txt 2>&1,  不必用2>>&1的方式,错误信息是会追加到&1的文件末尾

  3. 如果是重定向到文件,会判断该文件是否已经存在,如果不存在则创建,>的方式会先将文件内容清空后写入,而>>则追加到文件内容尾巴

 

Command > filename把标准输出重定向到一个新文件中

Command >> filename把标准输出重定向到一个文件中(追加)

Command > filename 2>&1把标准输出和错误一起重定向到一个文件中

Command 2 > filename把标准错误重定向到一个文件中

Command 2 >> filename把标准输出重定向到一个文件中(追加)

Command >> filename2>&1把标准输出和错误一起重定向到一个文件(追加)

 

  4. /dev/null:垃圾箱,可以将不显示的内容重定向到该路径下

  5. 多行命令同时顺序执行,使用分号隔开, 例如:mkdir demo; flag=$?; echo ${flag} 

  6. cmd1 && cmd2 如果cmd1成功执行,cmd2才会被执行,与的关系

  7. cnd1 || cnd2 如果cmd1成功执行,cmd2则不会被执行了

   

9.选取命令

  cut -d "分隔的字符" -f 需要获取的第个数据,

  例如:echo $PATH -d ':' -f 3,5 输出$PAHT按:分隔后的第3和第5个数据

        echo $PATH -d ':' -f 2-4 输出第2到第4的数据

   

  grep -v '过滤的条件':反向选择出那些除了过滤条件的内容

 

 

10. 检查变量是否存在被赋值了,没有则给予默认值,例如检查变量filename是否赋值,没有则值为defaultName

    filename=${filename:-"defaultName"}

 

11. date时间命令

    date +%Y%m%d 显示当前日期

    date +%Y%m%d -d "-1 day" 或者 date +%Y%m%d --date="-1 day"  显示昨天的日期

 

12. test命令

    检查文件名是否存在:test -e 文件名

    检查文件名是否存在且为文件: test -f 文件名

    检查文件名是否存在且为目录: test -d 文件名

    检查文件存在且具有读的权限: test -r 文件名

    文件1的修改时间是否早于文件2,也就是文件1是否比文件2旧: test 文件1 -ot 文件2

                                                        新: test 文件1 -nt 文件2

    检查文件是否为空 test -z 文件名

 

    多个条件的与:-a

    test -e 文件名 -a -x 文件名:  文件是否存在 且 是否具有x的权限

 

    多个条件的或:-o 

    test -e 文件名 -o -x 文件名:  文件是否存在 或 者是否具有x的权限

 

    反向状态

    test ! -w 文件名:如果文件不具有w的权限则为真

 

 

13. 判断符号[],其他用法与test类似

    []的开头和结尾需要有空格

    []的元素都应该以“空格键”来隔开

    []的变量和常量都应该用双引号括起来

    

 

14. sh或bash 脚本 的方式:其实在子shell中执行

    source 脚本 或 ./脚本: 其在父shell

 

15. 脚本中默认的参数变量:

    $0:表示脚本本身

    $1-$n:表示第1个到第n个传递给脚本的参数

    $#:表示参数的总个数

    $@:表示所有的参数,但是这些参数是独立的,使用循环语句可以依次输出

    $*:表示所有的参数,但是这些参数是一体的

 

16. if语句

    1.条件与或的多种写法:单个[]和多个[]

    if [ $cho == 'Y' -o $cho == "y" ]   等于 if [ $cho == 'Y' ] || [ $cho == 'y' ]

 

    2.多条件的写法:

    if [ 条件1 ]; then

执行1

    elif [ 条件2 ]; then

执行2

    else

        执行3

    fi

 

    3.另一种条件语句

    case $变量名 in

    "值1")

执行1

;;

    

    "值2")

        执行2

;;

   

    *)

        默认执行

;;

    esac

 

 

17. function功能

    1. 在脚本的最前定义function的内容:

       function 函数名(){

//函数具体作用,其中$0表示函数本身,$1-$n表示传递给函数的变量,与传递给脚本的参数没有任何关系

//例如:echo $(($1+$2));

       }

 

    2. 在脚本中调用函数: 函数名 参数  

 

18. 循环语句

    1. while语句表示当条件成立时"开始执行"

    while [ 条件 ]

    do

执行

    done

 

    2.until语句表示当条件成立时候"终止执行"

    until [ 条件 ]

    do

执行

    done

 

    3. for语句

    for i in 值1 值2 值3

    do

每次执行变量i的值都依次等于值1、值2···

    done

 

    举例:可用于循环数组

    arr[0]=1

    arr[1]=2

    arr[2]=3

    

    #${arr[*]}表示数组的所有元素

    for i in ${arr[*]}

    do 

echo $i

    done

 

    或者

 

    #${#arr[*]}表示数组的长度

    for (( i=0; i<${#arr[*]}; i=i+1 ))

    do

echo ${arr[$i]}

    done

 

 

19. lx=$(seq 1 10)   获取1到10的连续数值

 

20. sed工具

    sed -模式 'n1,n2function'  #必须要有单引号

    举例:

    以行为单位的新增或删除

    cat -n /etc/passwd | sed '2,4d'   #删除etc/passwd中的第2到第4行后显示出来

    cat -n /etc/passwd | sed '3,$d'   #删除第三行开始到最后一行的数据后显示

 

    cat -n /etc/passwd | sed '2a add new con'    #在第2行新增一行新内容

    cat -n /etc/passwd | sed '2,4a add new con'  #在第2行到第4行都新增一行新内容

 

    cat -n /etc/passwd | sed '2,3c cancel that line' #将第2到第3行的内容替换成cancel that line

 

21. 正则

$:匹配行尾:以$之前的字符为结尾

^:匹配行首,以^之后的字符为开头,例如:^bi:表示以bi开头的

*:匹配*前一个字符的0-n次的字符,例如:b*i:可以匹配bi、bbi、bbbbbi等

.:匹配任意一个字符,例如:b.i:可以匹配bai、b i(空格也可以被.匹配)

        表示空行的正则:^$   表示非空行:^[^$]

+:匹配+前一个字符的1-n次的字符

?:匹配?前一个字符的0到1次字符

 

[]:匹配字符的集合,例如[0-9]、[a-c]等

   ^如果放在[]中则表示取反,[^a-c]:匹配非abc的字符

 

22. grep 过滤

    1. 形式 grep -选项 过滤条件(可以是字符串或者正则)例如:grep -i todo test.sh   #将test.sh文件中含有todo不分大小写的“行”内容提出出来

    2. grep -选项 过滤条件 文件1 文件2  #多个文件中过滤获取内容

    

     

 

     

  • 大小: 60 KB
分享到:
评论

相关推荐

    吴天雄--shell知识点总结.doc

    【Shell 知识点详解】 Shell 是 Linux 操作系统中的一种命令解释器,它作为用户与操作系统内核之间的桥梁,允许用户通过命令行接口执行各种操作。Shell 不仅仅是一种命令语言,同时也是一种程序设计语言,使得用户...

    Shell知识结构图

    Shell 是一种命令行解释器,是 Linux 系统中用户与内核交互的桥梁。通过 Shell,用户可以执行程序、管理文件、控制进程等。Linux 系统中有多种 Shell,常见的有 Bash、Csh、Tcsh 等,其中 Bash 是默认的 Shell。...

    shell讲解基础知识

    shell基础 umask chomod 权限更改 定时任务 解压缩

    Linux Shell编程基础完整知识

    ### Linux Shell编程基础完整知识详解 #### 一、Shell脚本的基本构成与执行 Linux Shell编程是操作系统管理和自动化任务的核心技能之一。Shell脚本能够帮助用户执行一系列预定义的命令,实现复杂的操作流程自动化...

    CShell基础知识详解

    ### CShell基础知识详解 #### 一、引言 在之前的讨论中,我们已经涉及了许多Cshell的功能,例如命令别名、作业控制等。此外,任何一系列Cshell命令都可以存储在一个文件中,并通过调用Cshell来执行这些命令。这样...

    Linux&SHELL;基本知识笔试试卷

    - **知识点**:在 Linux 中,通过 `sh` 命令执行脚本会在一个新的子 shell 中运行,这实际上创建了一个子线程。因此,选项 A:sh 是正确的。 #### 正则表达式 - **知识点**:在 SHELL 中,正则表达式的常见元字符...

    shell扫盲篇:Shell常见知识

    ### Shell扫盲篇:Shell常见知识 #### 一、用户登录进入系统后的系统环境变量 在用户登录到系统后,会有一些预设的环境变量,这些变量定义了用户的默认环境和行为。以下是一些常见的环境变量及其含义: - **$HOME...

    shell基础知识

    最近在学习shell,找了很多资料,这个是其中不错的shell基础知识讲解,虽然比较基础,但是很容易懂~

    linux shell知识集锦

    在深入探讨“Linux Shell知识集锦”之前,我们先来了解一下Shell的基础知识。 1. **Shell类型**:Linux有多种Shell,如Bash(Bourne Again SHell)、Sh、Csh、Ksh、Zsh等。Bash是最常用的一种,它是GNU项目的一部分...

    shell课件编程知识

    Shell编程是Linux/Unix系统中的命令...记得实践是检验真理的唯一标准,理论知识结合实际操作,会让你的Shell技能更加炉火纯青。在学习过程中,不断尝试、调试和优化,你会发现Shell编程的世界既富有挑战又充满乐趣。

    shell shell练习 shell入门

    Shell是Linux和Unix系统中的命令解释器,它提供了一个用户与操作系统内核交互的界面,允许用户通过命令行执行各种操作。本篇文章将深入探讨Shell的基础知识,包括其概念、重要性、基本语法以及如何进行Shell编程练习...

    Bourne Shell及shell编程

    shell 基础知识 Shell 是一个命令行接口,允许用户与操作系统进行交互。shell 提供了许多基础功能,例如文件操作、目录管理、进程管理等。 环境变量是 shell 中的一种重要概念。环境变量可以存储一些常用的变量...

    给shell初学者的入门知识.pdf

    ### 给Shell初学者的入门知识详解 #### 一、Shell程序基础 ##### 1.1 Shell程序概念 - **定义**: Shell程序本质上是一个包含了多条Shell或Linux命令的文件。 - **创建**: 使用文本编辑器(如VI)来编写Shell程序...

    shell编程知识汇总

    Shell编程是一种在Linux和Unix操作系统中广泛使用的命令行解释器,它允许用户通过文本界面与操作系统内核交互,执行各种任务。...掌握这些知识后,就能编写出实用的Shell脚本来优化日常的系统管理和自动化任务。

    shell基础知识介绍

    shell基础知识介绍

    Shell编程中文手册.pdf

    本手册涵盖了 Shell 编程的基础知识,包括 Shell 概述、Shell 解析器、Shell 脚本入门、Shell 中的变量等。 Shell 概述 Shell 是一种命令行接口,允许用户与操作系统进行交互。学习 Shell 编程可以让开发者更好地...

    shell脚本知识点思维导图

    详细的shell脚本编程的知识思维导图,适合初学者共同学习~

    Shell编程知识了解

    本文将详细介绍Shell编程的基础知识,包括其概念、作用、Bash shell的特点,以及Shell编程的基本语法和输入输出重定向。 首先,Shell是一个由C语言编写的程序,它的主要角色是作为用户与Linux内核之间的接口。它...

Global site tag (gtag.js) - Google Analytics