Linux笔记01

本文介绍了Linux Shell的基础知识,包括常见Shell类型如Bash,查看系统支持的Shell,以及Shell在系统中的位置。重点讲解了变量的定义与引用,包括普通变量和数组的使用方法,如命令执行结果赋值、引用方式及注意事项。还涵盖了变量的扩展与操作,如字符串和数字的处理。此外,提到了一些特殊符号的含义及其在Shell脚本中的作用。
摘要由CSDN通过智能技术生成
02 Shell基础

1. Shell分类
  • shell有很多种,如ksh、csh、bsh,常使用的是bash
  • Bash == Bourne Again shell
2. 查看本机支持的shell
more /etc/shells
#/bin/sh
#/bin/bash
#/sbin/nologin
#/usr/bin/sh
#/usr/bin/bash
#/usr/sbin/nologin
#/usr/bin/tmux
3. shell在操作系统中的位置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hKYULzLN-1619686365239)(D:\学习笔记\linux\img\bash_pos.png)]

4. 登陆linux常用工具
  • Putty
  • Pietty putty
  • SecureCRT
  • Winscp
  • xshell
5. 变量
5.1 普通变量
  • 变量定义

    #定义变量
    var=xxx
    #定义变量包含空格
    var1="my name is xxx"
    #命令执行结果保存变量
    var2=`ls ~`
    #命令执行结果保存变量2
    var3=$(ls)
    

    变量不需要定义,可以直接使用,未定义的变量值是空的

    变量定义是“=”左右不能有空格

    如果定义的变量中有空格必须使用“或‘括起来

    反引号和 ( ) 都 表 示 命 令 的 输 出 作 为 变 量 内 容 , ()都表示命令的输出作为变量内容, ()()的优先级高,并且支持嵌套

    定义的变量可以通过set命令查看

  • 变量引用

    #简单引用
    echo $var    # xxx
    #严谨模式
    echo $varx    #返回空
    echo ${var}x    # xxxx
    

    shell中空格作为命令、参数的分隔符,需要小心使用

    var= 456

    #-bash: 123: command not found

    var = 456

    -bash: var: command not found

    使用空格分开当var命令执行

5.2 数组
  • 定义:使用()定义数组变量

    array=(1 2 3 4);echo ${array[2]};    // 3
    #定义数组,打印第三个元素
    

    数组通过索引访问,索引从0开始

    不加索引直接访问数组变量 a r r a y 等 效 于 array等效于 array{array[0]}

    索引访问时使用大括号括起来,否则变成访问$array,如echo $array[2],打印1[2]

  • 通过命令赋值

    array2=(`ls`)
    for i in ${array2[*]};do echo $i;done
    

    (``)与$() 区别,一个是保存数组,一个字符串

    $(``)命令返回嵌套,先执行``中的命令,输出的结果作为命令执行

  • 引用变量

    #访问单个元素${array[index]}
    ${array[3]}    #返回第4个元素
    #引用整个数组
    ${array[*]}    #放回数值所有变量组成的字符串
    
  • bash中特殊符号

    符号含义
    “”双引号,括起来表示一段字符串,如果里面有特殊字符进行替换,如$var变量,\n转义
    ’‘单引号,也表示其内容是字符串,但是保持原义不进行替换
    ``反引号,表示命令输出,非常有用
    \反斜线,某些情况表示转义
    $()表示命令执行结果,与``类似,不过可以嵌套
    (())双括号,整数扩展,表示把变量当作整数处理((a=1+3))
    $(())对变量进行操作,并返回操作结果,如b= ( ( 2 + 3 ) ) , ((2+3)), ((2+3))((a+b))
    :<<EOFhere document
    {1…10}等价于seq 1 10,{1…10…2},三个数分别是{start…end…step}
    ()命令组,子shell中执行
    {}代码块,当前shell中执行
6. 变量操作
6.1 数字型
  • 通过expr,expr 2 + 3,注意中间用空格隔开,否则输出字符串
  • 使用其他程序,比如awk。i=2;j=3;echo “$i $j” | awk ‘END {print 2+3;print $1+$2}’
  • i=1;((i=i+1));echo $i 推荐方式
  • let x=2+3;echo $x
  • Declare -i
6.2 字符串
  • 使用expr,expr substr ”xxxxx“ 1 3
  • 使用程序处理sed,awk,cut,tr等
  • 变量自身扩展echo ${var:1:3}
6.3 变量定义扩展
语法含义
${value-default},${value:-default}当变量未定义或者值为空时,返回值default,否则返回变量的值
${value:=default}与前者类似,只是若变量未定义或为空,在返回default的同时将default复制给value,此步骤会改变参数的值
${value:?message}若变量已赋值,正常替换,否则将message送到标准错误输出,如果在shell程序中,程序将终止
${value:+word}若变量已赋值,才用word替换,否则不进行任何替换
6.4 变量值操作
语法含义
${value:offset},${value:offset:length}从变量提取字串,这里offset和length可以是算术表达式
${#value},${#array[*]},${#array[@]}变量的字符个数,数组变量的个数
${value#pattern},${value##pattern}掐头,去掉头部匹配的部分一个最短模式,一个最长模式
${value%pattern},${value%%pattern}去尾,去掉尾部匹配的部分一个最短模式,一个最长模式
${value/pattern/string}替换,pattern部分替换为string,替换第一个,支持*和?
${value//pattern/string}全局替换,pattern部分替换为string,替换全部
${value/#pattern/replacement}前缀替换,pattern部分替换为string
${value/%pattern/replacement}后缀替换,pattern部分替换为string
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值