shell实用合集
下篇 shell入门实战
实用SMB打开远程共享盘
第一次编写shell命令,为了帮女朋友好好的用起我给她的Mac。(她尽然因为嫌弃同事都是用的windows,然后window的文件路径和mac系统的不一样,嫌弃不好用)
window下的路径如下:
1
2
\\102.10.1.2\事业部\设计中心\摄影\食品摄影\★食品详情★\2021.01\3995 全麦吐司\1.22-改
M:\事业部\设计中心\摄影\食品摄影\2020\未确认\3998 虎皮凤爪
对应的Mac如果要用SMB打开的话,就是
1
2
smb://102.10.1.2/公司/事业部/设计中心/摄影/食品摄影/★食品详情★/2021.01/3995551 全麦吐司/1.22-改
smb://102.10.1.2/公司/事业部/设计中心/摄影/食品摄影/2020/未确认/3998 虎皮凤爪
下面直接贴下结果保存为path2.sh文件
1
2
3
4
5
6
7
8
9
10
11
12
#! /bin/bash
WINDOWPATH=$1
MVALUE='M:'
ADDRESS='\\10.246.1.2\公司'
strM=${WINDOWPATH:0:2}
if [ "$strM" = "$MVALUE" ]; then
WINDOWPATH=${ADDRESS}${WINDOWPATH#*:}
fi
MACPATH=${WINDOWPATH//'\'/'/'}
open "smb:${MACPATH}"
然后执行下面命令就可以打开finder的smb
1
➜ ./path2.sh '\\102.10.1.2\事业部\设计中心\摄影\食品摄影\★食品详情★\2021.01\3995 全麦吐司\1.22-改'
2.24更新-mac路径转为window的路径
又需要将mac的path转为window需要的path,所以这里改动了下脚本,通过复制mac本地的路径入参,生成win需要的路径
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#! /bin/bash
ParamPATH=$1
PATH2WIN='/Volumes'
MVALUE='M:'
ADDRESS='\\10.246.1.2\公司'
volStr=${ParamPATH:0:8}
mStr=${ParamPATH:0:2}
if [ "$volStr" = "$PATH2WIN" ]
then
TMP=${ADDRESS}${ParamPATH#*${PATH2WIN}}
WINDOWPATH=${TMP////\\}
echo "${WINDOWPATH}"
elif [ "$mStr" = "$MVALUE" ]
then
TMP=${ADDRESS}${ParamPATH#*:}
RESULT=${TMP//'\'/'/'}
echo "${RESULT}"
open "smb:${RESULT}"
else
RESULT=${ParamPATH//'\'/'/'}
echo "${RESULT}"
open "smb:${RESULT}"
fi
然后
1
2
Documents|⇒ ./path2.sh '/Volumes/事业部/食品组/【文案组】文件/1主图.jpg'
\\102.10.1.2\公司\事业部\食品组\【文案组】文件\1主图.jpg
mac路径获取,可以选中文件command+c,然后在终端command+v即可
学习时间
- = 号的两边不能有空格
- $1 $2 等等对应的就是执行方法对应的第一个第二个参数
- 路径中存在空格如果直接 open smb:${MACPATH}会失败,需要”smb:${MACPATH}”
- 还发现个好玩的东西AppleScript,回头研究下AppleScript 入门:探索 macOS 自动化
- 字符串替换${a/b/c}只替换一个,${a//b/c}替换所有。其中b替换为c,如果是用引号的替换${TMP//’/’/’'} 正斜杆替换反斜杠的话,会不生效,直接 ${TMP////\\},用转义字符的替代就行
- 变量不能为PATH,这个是关键字
本文由作者按照 CC BY 4.0 进行授权