【Shell函數(shù)】Windows-Linux路徑轉換

目的:

一個路徑轉換的函數(shù):方便大家在aws 里面進行l(wèi)inux和windows 路徑的轉換虱歪;
(使用上一定注意加上引號cdwin "Z:\bgcrh\build\training_project_1\practice_wh\cp\tools"

參考資料:

https://www.coder.work/article/176623 轉換函數(shù)
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 函數(shù)定義
字符串判斷用[[ ]] || [[]] ; 數(shù)字判斷使用(( ))
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 保存函數(shù)

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. 配置環(huán)境(個人配置) :

step1: 上傳到mobaxterm

image

step2: 加載到Linux環(huán)境里面

  • 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. 配置環(huán)境(服務器共享路徑) :

### 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. 三個函數(shù)使用的例子:

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

Tips:

  • 注意shell腳本里面 不要出現(xiàn)tab;
img
  • [[ ]] 字符串比較用雙中括號朗涩;數(shù)值比較用雙小括號;小數(shù)計算bc
  • 字符串顏色標示 注意加上-e 參數(shù)绑改,但如果path里面存在路徑\t 或者\n寫法可能會識別為特殊符號谢床;

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

  • 如果想把腳本直接加載到環(huán)境變量里面,需要用使用source test.sh而不是bash test.sh

  • exit功能: 退出當前sh或者退出文件執(zhí)行厘线。

歡迎大家評論交流??~

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末萤悴,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子皆的,更是在濱河造成了極大的恐慌覆履,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件费薄,死亡現(xiàn)場離奇詭異硝全,居然都是意外死亡,警方通過查閱死者的電腦和手機楞抡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門伟众,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人召廷,你說我怎么就攤上這事凳厢。” “怎么了竞慢?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵先紫,是天一觀的道長。 經(jīng)常有香客問我筹煮,道長遮精,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮本冲,結果婚禮上准脂,老公的妹妹穿的比我還像新娘。我一直安慰自己檬洞,他們只是感情好狸膏,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著添怔,像睡著了一般湾戳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上澎灸,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機與錄音遮晚,去河邊找鬼性昭。 笑死,一個胖子當著我的面吹牛县遣,可吹牛的內(nèi)容都是我干的糜颠。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼萧求,長吁一口氣:“原來是場噩夢啊……” “哼其兴!你這毒婦竟也來了?” 一聲冷哼從身側響起夸政,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤元旬,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后守问,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體匀归,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年耗帕,在試婚紗的時候發(fā)現(xiàn)自己被綠了穆端。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡仿便,死狀恐怖体啰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嗽仪,我是刑警寧澤荒勇,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站闻坚,受9級特大地震影響枕屉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鲤氢,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一搀擂、第九天 我趴在偏房一處隱蔽的房頂上張望西潘。 院中可真熱鬧,春花似錦哨颂、人聲如沸喷市。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽品姓。三九已至,卻和暖如春箫措,著一層夾襖步出監(jiān)牢的瞬間腹备,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工斤蔓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留植酥,地道東北人。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓弦牡,卻偏偏與公主長得像友驮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子驾锰,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容