zoukankan      html  css  js  c++  java
  • shell基础命令记录.

    为了方便自己随时查看练习做的记录

    技巧记录:ctrl + r 可以搜索之前输入过的命令

    1. 变量赋值

    a=1
    b="this is a string"
    echo $a
    echo $b
    

    2. 变量引用

    使用$符号,直接引用单个变量

    echo $a 输出变量a的值

    在字符串中插入变量的值(必须双引号)

    echo "number is $a" 输出"number is 1",引用变量a的值
    注意变量引用时可能出现的歧义
    如想输出变量a的值加"_1",即"1_1"
    echo "this is $a_1" 输出"this is ",此时shell会把$a_1中的a_1当成是变量名,没有定义的变量输出空

    在字符串中插入$a(非引用变量a的值)(单引号)

    echo 'number is $a' 输出"number is $a",使用单引号会输出字符本身而不会把$a的值打印出来

    3.预定义变量

    $PWD 当前的home目录
    $USER 当前用户名
    $HOME 当前用户的home目录
    $PATH 环境变量

    4.反引号的作用

    (``)反引号包括的内容会被当成命令执行

    a=`ls`
    echo $a   输出ls的内容(列出文件夹内文件)
    

    5.ls的用法

    ls -l 显示文件的详细信息
    ls -al 列出包括隐藏文件的所有文件

    6.查看程序安装路径

    which python 输出python的安装路径

    7.数组

    定义数组

    array=(1 2 3 4)

    数组的引用

    echo ${array[@]}  #返回数组全部元素,1234  --"${array[@]}"带双引号引用时还是返回一个数组
    echo ${array[*]}  #返回数组全部元素,1234  --"${array[*]}"带双引号引用时会把数组转为字符串后返回如1 2 3 4
    echo ${array[1]}  #返回数组第1个元素,2
    

    数组长度

    echo ${#array[@]} 输出5,"#"可以返回数组的长度

    命令赋给数组

    arr=(`ls`)
    echo ${arr[@]}
    

    因为括号()的存在,这种形式下,arr为一个数组,包含元素为ls命令的返回值

    8.特殊符号

    1.反斜杠():转义 echo -e "a b" -e表示开启转义模式,如输入时 换行,表示删除前一个字符,a表示发出一个警告音
    2.$(()) :对变量进行操作
    3.(()):整数扩展,里面的变量当作整数处理,a=1;b=3;echo $((a+b)) 输出4
    4.({1..10}):等价于 seq1 10。返回1到10.
    5.反引号(` `):表示命令的输出
    6.$(ls):表示执行ls之后的结果
    7.$? :返回前一句语句的逻辑判断结果,True or False

    9.变量类型

    1.字符串
    2.数值
    3.布尔值 :0为True,非0为False

    10.数值运算

    1.自增等 a++ a--

    11.字符串操作

    a="this is a string"
    echo ${a:6}  # 输出is a string
    echo ${a:6:7}   # 输出is a st"
    echo ${a#this}   #输出"is a string"
    echo "${a#this}"  #输出" is a string" (不去掉空格)
    echo "${a#*s}"   #输出" is a string",*为通配符
    echo "${a##*s}"   # 输出"tring" ,从开头匹配最后一个s,并切片输出
    echo "${a%string}"  #输出"this is a ",去尾,
    echo "${a%%*s}"   # 输出"thi" ,从结尾开始匹配最后一个s,并切片输出
    echo ${a/a/two}   #输出 "this is two string",替换字符串
    echo ${a//i/q}  #输出"thqs qs a strqng",所有匹配到的字符串均会被替换
    

    12.判断的类型

    算术判断

    1.[ 2 -eq 2 ] 相等
    2.[ 2 -ne 3 ] 不等
    3.[ 3 -gt 1 ] 大于
    4.[ 3 -ge 3 ] 大于等于
    5.[ 3 -lt 4 ] 小于
    6.[ 3 -le 3 ] 小于等于
    7.((3>20))

    字符串比较

    1.[ str1 = str2 ]
    2.[ str2 != str1 ]
    3.[ -n str1 ] 字符串不为空,返回True
    4.[ -z str ] 字符串为空,返回True
    5.[[ "xxx" == x* ]] 通配符*,0个以上任意字符
    6.[[ xxx == x??] 通配符??,1个任意字符

    逻辑判断

    1.[ 2 -ge 1 -a 3 -ge 4 ];echo $? 与运算-a,
    2.[ 2 -ge 1 && 3 -ge 4 ];echo $? 与运算&&
    3.[ 2 -ge 1 -o 3 -ge 4 ];echo $? 或运算-o
    4.[ 2 -ge 1 || 3 -ge 4 ];echo $? 或运算||
    5.[ ! 2 -ge 1 ];echo $? 非!

    内置判断

    1.[ -e file ] 文件存在返回真
    2.[ -d file ] 文件为子目录,返回真
    3.[ -f file ] 文件为普通文件,返回真
    4.[ -r file ] 文件可读,返回真
    5.[ -s flie ] 文件长度不为0,返回真
    6.[ -w file ] 文件可写,返回真
    7.[ -x file ] 文件可执行,返回真

    逻辑控制

    1.if
    if [ -e test ];then echo exit;else echo false;fi
    2.case
    3.for while until select
    4.&& ||
    5.break continue

  • 相关阅读:
    shell进行mysql统计
    java I/O总结
    Hbase源码分析:Hbase UI中Requests Per Second的具体含义
    ASP.NET Session State Overview
    What is an ISAPI Extension?
    innerxml and outerxml
    postman
    FileZilla文件下载的目录
    how to use webpart container in kentico
    Consider using EXISTS instead of IN
  • 原文地址:https://www.cnblogs.com/congyinew/p/11986342.html
Copyright © 2011-2022 走看看