【Shell函数】Windows-Linux路径转换

目的:

一个路径转换的函数:方便大家在aws 里面进行linux和windows 路径的转换;
(使用上一定注意加上引号cdwin "Z:\bgcrh\build\training_project_1\practice_wh\cp\tools"

参考资料:

https://www.coder.work/article/176623 转换函数
https://www.cnblogs.com/zyh9900010/p/11748179.html sed 基本用法: 包括# 用法;
https://blog.csdn.net/Jcggnice/article/details/108897392 sh脚本添加帮助文档;
https://www.cnblogs.com/struggle-1216/p/13174266.html 函数定义
字符串判断用[[ ]] || [[]] ; 数字判断使用(( ))
https://cloud.tencent.com/developer/article/1414363 零度断言
https://www.cnblogs.com/garyzhuang/p/10136852.html 脚本模板
https://www.tutorialspoint.com/how-to-output-colored-text-to-a-linux-terminal 颜色编码
echo -e "\033[1;31mThis is bold red text\033[0m\n"
https://unix.stackexchange.com/questions/404586/how-to-save-a-function-in-bash-for-later-use 保存函数

img

测试

1. 输入例子

  • Windows: Z:\bgcrh\build\training_project_1\practice_wh\cp\tools
  • Linux: /usrfiles/bgcrh/build/training_project_1/practice_wh/cp/tools

2. 源码

#!/bin/bash
#####################################################################
#  Program: cdwin win2linux linux2win
#  Programmer: Kai Cao
#  Date: 10Sep2021
#  Study: all study
#  Version: 1.0 
#  Input :  Linux or Win Path 
#
#  Description & Uasge: 
#        1.cdwin     --> change directory by win path
#            cdwin "Z:\bgcrh\build\training_project_1\practice_wh\cp\tools"
#
#        2.win2linux --> convert win path to linux Path
#            win2linux  "Z:\bgcrh\build\training_project_1\practice_wh\cp\tools"
#
#        3.linux2win --> convert linux path to win Path
#            linux2win "/usrfiles/bgcrh/build/training_project_1/practice_wh/cp/tools"
# 
#                
###################################################################
#  MODIFICATIONS:
#  Programmer:
#  Date:
#  Reason:
#
###################################################################/


#######################################  cdwin  ##########################################
# cdwin "Z:\bgcrh\build\training_project_1\practice_wh\cp\tools"

function cdwin(){
    if [[ $1 = "--help" ]] || [[ $1 = "-h" ]] || [[ ! $1 ]]; then
        echo "Usage: "
        echo 'cdwin "Z:\bgcrh\build\training_project_1\practice_wh\cp\tools"'
        echo "Input the win path     --> $1"
    elif [[ $1 =~  Z:.* ]]; then
        line=$(echo $1 | sed -e 's#^Z:#/usrfiles#' -e 's#\\#/#g')
        cd "$line"
    else                                                          
        echo -e "***Input a valid win path***\n"
        echo "Usage: "
        echo 'cdwin "Z:\bgcrh\build\training_project_1\practice_wh\cp\tools"'
    fi
}



#######################################  win2linux  ##########################################
# win2linux  "Z:\bgcrh\build\training_project_1\practice_wh\cp\tools"

function win2linux(){
    if [[ $1 = "--help" ]] || [[ $1 = "-h" ]] || [[ ! $1 ]]; then
        echo "Usage: "
        echo 'win2linux  "Z:\bgcrh\build\training_project_1\practice_wh\cp\tools"'
    elif [[ $1 =~  Z:.* ]]; then
        echo -e '\033[1;33mInput the win path\033[0m     -->  \c'
        echo $1
        line=$(echo $1 | sed -e 's#^Z:#/usrfiles#' -e 's#\\#/#g')
        echo -e "\033[1;33mOutput the linux path\033[0m  -->  \c"
        echo $line
    else                                                          
        echo -e "***Input a valid win path***\n"
        echo "Usage: "
        echo 'win2linux  "Z:\bgcrh\build\training_project_1\practice_wh\cp\tools"'
    fi
}




#######################################  linux2win  ##########################################
# linux2win "/usrfiles/bgcrh/build/training_project_1/practice_wh/cp/tools"

function linux2win(){
    if [[ $1 = "--help" ]] || [[ $1 = "-h" ]] || [[ ! $1 ]]; then
        echo "Usage: "
        echo 'linux2win "/usrfiles/bgcrh/build/training_project_1/practice_wh/cp/tools"'
    elif [[ $1 =~  /usrfiles.* ]]; then                                                          # match Z 
        echo -e '\033[1;33mInput the linux path\033[0m    -->  \c'
        echo $1
        line=$(echo $1 | sed -e 's#^/usrfiles#Z:#' -e 's#/#\\#g')
        echo -e "\033[1;33mOutput the win path\033[0m     -->  \c"
        echo $line
    else 
        echo -e "***Input a valid win path***\n"
        echo "Usage: "
        echo 'linux2win "/usrfiles/bgcrh/build/training_project_1/practice_wh/cp/tools"'
    fi
}

3. 配置环境(个人配置) :

step1: 上传到mobaxterm

image

step2: 加载到Linux环境里面

  • step2.1:如果是临时使用,直接source脚本
kai.cao@beigenecorp.net@sas94p ~$ mkdir software
kai.cao@beigenecorp.net@sas94p ~$ source ~/path_convert.sh 
  • step2.2: step2.2: 如果想永久的使用,添加到配置文件~/.bashrc里面
    vi ~/.bashrc 进入,使用vim 添加下面两个打勾部分代码,任意一个就行。
image

4. 配置环境(服务器共享路径) :

### add into ~/.bashrc
$ source /usrfiles/bgcrh/build/training_project_1/practice_wh/exercise/dev/pgm/learning/kai_cao/software/path_convert.sh


$ win2linux "Z:\bgcrh\build\training_project_1\practice_wh\exercise\dev\pgm\learning\kai_cao\software"
          Input the win path     -->  Z:\bgcrh\build\training_project_1\practice_wh\exercise\dev\pgm\learning\kai_cao\software
          Output the linux path  -->  /usrfiles/bgcrh/build/training_project_1/practice_wh/exercise/dev/pgm/learning/kai_cao/software


$ cdwin "Z:\bgcrh\build\training_project_1\practice_wh\exercise\dev\pgm\learning\kai_cao\software"

5. 三个函数使用的例子:

  • cdwin 用法:
image
  • linux2win 用法 :
image
  • win2linux 用法:
image
image.png

Tips:

  • 注意shell脚本里面 不要出现tab;
img
  • [[ ]] 字符串比较用双中括号;数值比较用双小括号;小数计算bc
  • 字符串颜色标示 注意加上-e 参数,但如果path里面存在路径\t 或者\n写法可能会识别为特殊符号;

echo -e "\033[1;31mThis is bold red text\033[0m\n $path"

  • 如果想把脚本直接加载到环境变量里面,需要用使用source test.sh而不是bash test.sh

  • exit功能: 退出当前sh或者退出文件执行。

欢迎大家评论交流😊~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容