shell 快速目录切换脚本

由于一台服务器上有多个网站,每次修改网站的时候都要先cd进入网站的目录。部署网站的时候目录长了点。每次都要输出很长的目录参数。这里使用一个函数wcd来实现快速切换到网站的目录。

使用的方法

比如网站的位置如下
1. /html/longdir1/longdir2/wsite/www.aaa.com
2. /html/longdir1/longdir2/wsite/www.bbb.com
3. /html/longdir1/longdir2/wsite/www.shelljiaoben.com

修改网的根目录(函数wcd中修改)

base_dir='/html/longdir1/longdir2/wsite'

比如进入目录 /html/longdir1/longdir2/wsite/www.aaa.com , 执行命令 wcd a 或者 wcd aaa 就可以。

原理

  1. 进入网站的根目录
  2. 如果网站的目录名字给函数的第一个参数匹配(通过正则)且只匹配一个,就进入这个目录。

代码示例

#!/bin/bash

function echo_green() { echo -n -e "\033[32m1\033[0m" ;}
function echo_red() { echo -n -e "\033[31m1\033[0m" ; }

function wcd () {
    # 填写自己的网站所在的文件
    base_dir='/html/longdir1/longdir2/wsite'

    cd base_dir;
    nu=`ls -lbase_dir | grep '^d' | awk '{print NF}' | grep1 | wc -l`

    if [ nu -eq 1 ]; then
        end_dir=`ls -lbase_dir | grep '^d' | awk '{print NF}' | grep1`
        cd end_dir/webroot
        echo -n "Now dir is " && echo_green  `pwd`  && echo
    else
        nu=`lsbase_dir | grep 1 | wc -l`
        [nu -eq 0 ] && ls base_dir && echo -n  "没有找到" \
        && echo_red1 && echo -n  "开头的目录 在目录" \
        && echo_red  $base_dir && echo  "下"
    fi
}

发表评论

邮箱地址不会被公开。