zoukankan      html  css  js  c++  java
  • Shell基础

    一.变量

    a=1    b=abc   c="abcd  efg"       给变量赋值的时候等号两边不能有空格,变量值有空格的话需要用引号,双引号支持转义

    echo $a  或 ${a}  或 "$a"      echo使用来输出内容,执行变量,$开头的变量会被自动替换

    echo $((${a}+1))         双括号是算数运算符,花括号是明确被引用的变量,如果变量被写成$a+1,shell会把a+1当成一个变量.

    echo ${#c}           #可以计算出该变量的长度,后面也可以跟数组

    echo $a$b$c                        字符串拼接

    echo ${c:0:4}        截取字符串,取字符串的前4位

    引用未被定义的变量,程序不会报错,返回空.

    预定义变量

    echo $PWD    USER  HOME   PATH   提前设置好的系统变量,,,,HOME 返回根目录,USER返回当前用户等

    数组

    array=(1 2 3 4 5 6) 定义数组使用小括号,数组内的值使用空格隔开;

    echo ${array[0]}     取数组内的第一个值

    witch 1.sh     回去当前环境变量下查找1.sh

    a=`ls`     echo $a   会在当前目录执行ls  并将ls执行结果返回的目录赋值给变量a ,使用``

    a=array(`ls`)   echo ${a[0]}   会在当前目录执行ls, 并将结果保存值数组中,按照空格隔开

    ``反引号   $() 可以执行括号内的操作,与 ``类似, 但是支持嵌套

    -e 执行转义符  否则会讲转义符当作普通的字符串来执行

     (())  数字运算符

    $? 返回程序执行结果,成功返回0  失败返回1

    echo不支持小数,

     awk是内置函数,用来读取管道输入,BEGIN的意义就是,不用读取数据,让程序执行完后面的操作就直接退出就好来(浮点数的计算使用awk)

    -F 用来匹配字符

    字符串操作:掐头#  ##  去尾%  %%  替换/  //   单个符号和双个符号的区别是贪婪匹配,如下显示

    算数运算符:                                              逻辑判断:

    [ 2 -eq 2 ]   等于      ((2=2))                            -a 相当与&&      -o 相当于 || 

    [ 2 -ne 1 ]  不等与     ((2!=1))

    [ 2 -gt 1 ]  大于

    [ 2 -ge 1 ]  大于等于

    [ 2 -lt 3 ]  小于

    [ 2 -le 3 ]  小于等于

     

    字符串比较:

    [ string1 = string2 ] 两个字符串相等则结果返回为真

    [ string1 != string2 ]两个字符串不想等则结果为真

    [ -n string2 ] 字符串不为空,则结果为真

    [ -z string2 ] 字符串为空,则结果为真

    [[ "xxxxx" == x* ]] *表达式中表示0或多个字符

    [[ xxxx == x??? ]] ?表达式中表示一个字符

     

    内置判断:

    -e  file   判断文件是否存在

    -d  file   判断文件是否是目录

    -f  file  判断文件是否是普通文件

    -r  file  如果文件可读

    -s  file  如果文件长度不为0

    -w file  如果文件可写

    -x  file  如果文件可执行

     条件判断

    条件:if  分支  select  case

    循环:for  while  until

    break continue 

     

    也可以使用&&和||来代替if   &&条件成立执行后面的操作 ||条件失败执行后面的操作  $f加“” 防止为空时报错

    循环

    字符串默认会按照空格隔开拆分

     使用vi进入文件, 按i进入编辑模式,编辑完成之后  按esc,  :wq!   w是保存  q是退出  !是强制

    使用touch创建文件,使用mkdir 创建文件目录,使用chmod更改文件操作权限

    chmod abc file    其中啊a b c各代表一个数字,表示User、Group、及Other的权限:

    r=4,w=2,x=1      chmod ug=rwx,o=x file      和     chmod 771 file   user和group权限是7,other权限是可执行

    使用vim进入脚本编辑,按dd可进入可删除状态,或按住a再删除,按i进入编辑啊状态,esc退出编辑状态,

    cat 文件名,可以执行打开文件的操作;  sh file.sh可以执行file.sh脚本,或者进入文件所在目录执行./file.sh

    退出控制:

    return  函数返回

    exit  终止进程脚本

    break  退出当前循环

    continue  跳过失败继续循环

    Linux文件上传

    scp d:/1.txt user@ip:服务器路径

    scp d:/1.txt zhang@192.168.199.198:/home/zhang/test

    Linux文件下载

    # 将1.txt拷贝到 D盘

    scp zhang@192.168.199.198:/home/zhang/test/1.txt d:/

    Linux文件打包压缩

    tar -cvf log.tar 1.log 仅打包,不压缩!

    # 如果加上 z 表示以.tar.gz或tgz来代表gzip压缩过的tar包
    tar -zcvf log.tar.gz 2.log 打包后,以 gzip 压缩

    # 如果加上 j 表示以.tar.bz2来代表bzip2压缩过的tar包
    tar -jcvf log.tar.bz2 3.log 打包后,以 bzip2 压缩

    Linux文件解压

    tar -xvf log.tar

    tar -zxvf log.tar.gz

    tar -jxvf log.tar.bz2

    一、本地文件复制到192.168.13.161服务器的方法(此时你操作的界面是本地的命令窗口)

    命令格式为:sudo   scp    本地目录/filenameA       root@服务器ip:服务器目录/filenameB

    $   sudo    scp /etc/ganglia/gmond.conf    root@192.168.13.161:/etc/ganglia/gmond.conf

    之后需要输入192.168.13.161服务器root用户的密码,如果是其他用户,只需要把出现root的地方换上自己拥有的用户权限的用户名即可。

    二、192.168.13.161服务器上的文件复制到192.168.13.162客户端(此时你操作的界面在192.168.13.161 的命令窗口)

    命令格式为:sudo   scp     本地目录/filenameA       root@客户端ip:客户端目录/filenameB

    $     sudo    scp /etc/ganglia/gmond.conf    root@192.168.13.162:/etc/ganglia/gmond.conf

    阿里云服务上解压zip文件方法

    yum install unzip -y

    unzip 压缩包.zip

  • 相关阅读:
    分享一个关于Cookie做的实验结果
    使用jest进行单元测试
    【转载】为什么单反镜头做不小,镜头越好越重呢?
    【转载】解读手机摄像头
    【转载】2019中国机器视觉产业全景图谱
    【行业】视觉传感器
    图像质量测评
    COM口了解下
    dbus-python的API及示例
    QtDbus的API及示例
  • 原文地址:https://www.cnblogs.com/1026164853qqcom/p/11063969.html
Copyright © 2011-2022 走看看