zoukankan      html  css  js  c++  java
  • 几例实用的Shell脚本

    日常工作中,经常编写一些shell命令或脚本以完成重复性操作,本文分享了最近用到的几例shell实用脚本。

    1 特殊文件名的远程拷贝

    服务器之间拷贝文件经常使用scp命令,其命令格式:

    (1)scp filename [user@]host:dir
    (2)scp [user@]host:dir1/filenamedir2

    格式(1)将本地文件filename拷贝到远程服务器host的dir目录下,格式(2)将远程服务器host的dir1目录下的文件filename,拷贝到本地dir2目录下。

    如果拷贝的文件名包含特殊字符,比如ecs-eos-base:1.0.tar,冒号:属于特殊字符。直接使用格式(1)的命令进行拷贝,命令将ecs-eos-base识别为主机名称而命令运行报错,如下:

    [root@PHY91 docker]# scp ecs-eos-base:1.0.tar root@PHY94:/root/docker/
    ssh: Could not resolve hostname ecs-eos-base: Temporary failure in name resolution

    此时使用./表示当前目录即可解决该报错,命令如下:

    [root@PHY91 docker]# scp ./ecs-eos-base:1.0.tar root@PHY94:/root/docker/
    ecs-eos-base:1.0.tar 100% 84MB 172.7MB/s 00:00

    使用./代表当前目录,scp命令就不会将ecs-eos-base识别为主机名称。

    2 Base64编码和解码

    在Centos或Redhat Linux操作系统中,如果要进行字符串的Base64编码和解码,可以使用base64命令即可简单实现。

    (1)编码

    [root@PHY91 ~]# echo "PHY91" | base64
    UEhZOTEK

    (2)解码

    [root@PHY91 ~]# echo "UEhZOTEK" | base64 -d
    PHY91

    base64既可以编码解码字符串,也可以对文件内容进行编码和解码。-d参数是表示解码。

    对文件编码解码命令如下:

    [root@PHY91 test]# echo "12345" > test.txt

    [root@PHY91 test]# base64 test.txt
    MTIzNDUK

    [root@PHY91 test]# base64 test.txt > test2.txt

    [root@PHY91 test]# more test2.txt
    MTIzNDUK

    [root@PHY91 test]# base64 -d test2.txt
    12345

    3 版本号自增长的实现

    使用docker build进行应用镜像构建时,为便于镜像版本管理,每次构建的镜像版本号会增加1。可以使用脚本实现版本号的自增1,首先创建一个version.txt文件,内容如下:

    [eos@host-132 eos]$ more version.txt
    1.0.0

    获取版本号命令如下:

    version=`cat version.txt`

    版本号赋值给version变量。

    版本号自动增加1,脚本命令如下:

    echo $version | awk -F'.' '{print($1"."$2"."($3+1));}' > version.txt

    命令说明:

    (1)使用awk命令,分隔符为点“.”;

    (2)$1,$2和$3分别是版本号的第1,2,3个数字;

    (3)$3+1表示版本号增加1。

    4 sed配置运行环境

    在动静完全分离的web应用项目中,前端使用nginx部署静态资源即可,项目前端代码的基准URL(baseUrl)需要根据不同运行环境(开发、测试、生产)进行相应的修改,例如baseUrl赋值的js代码如下:

    define(["jquery"], function ($) {
    return {
    //生产是prod.abc.com,测试是test.abc.com,开发是localhost
    baseUrl: "http://localhost/",
    ...
    }

    在部署测试环境和生产环境的静态资源时,需要将baseUrl替换为test.abc.com和prod.abc.com。此时可以使用sed命令进行字符串替换,完整命令如下:

    sed -i 's#"http://localhost/"#"http://prod.abc.com"#g' web-app/src/js/controllers/common.js

    命令说明:

    (1)common.js是定义baseUrl的公共文件;

    (2)此处须使用#代替/,否则会报错(因为替换字符串和目录字符串都包含/字符)。

  • 相关阅读:
    Dispatcher及线程操作
    MVVM中轻松实现Command绑定(三)任意事件的Command
    MVVM Light中的Message
    Prism
    Prism的IEventAggregator事件聚合器, 事件订阅发布, ViewModel之间的通讯
    文件写操作--WriteLog
    【Golang】Debug :decoding dwarf section info at offset 0x0: too short
    【Golang 接口自动化03】 解析接口返回XML
    【Golang 接口自动化02】使用标准库net/http发送Post请求
    【Golang 接口自动化01】使用标准库net/http发送Get请求
  • 原文地址:https://www.cnblogs.com/wangsongbai/p/10302280.html
Copyright © 2011-2022 走看看