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

  • 相关阅读:
    关于根据索引 删除队
    Vs 2012 编译C 语言
    动态绑定 dgvlist 列
    自定义控件闪烁问题
    程序员都不读书,但你应该读
    对于委托的理解 委托和事件
    ​label 中 文字的位置
    vs2010 折叠C/c++中的if
    关于动态创建控件性能提高 以及 SuspendLayout & ResumeLayout 的使用
    c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)
  • 原文地址:https://www.cnblogs.com/congyinew/p/11986342.html
Copyright © 2011-2022 走看看