文章

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-改'

2021-01-23

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. $1 $2 等等对应的就是执行方法对应的第一个第二个参数
  3. 路径中存在空格如果直接 open smb:${MACPATH}会失败,需要”smb:${MACPATH}”
  4. 还发现个好玩的东西AppleScript,回头研究下AppleScript 入门:探索 macOS 自动化
  5. 字符串替换${a/b/c}只替换一个,${a//b/c}替换所有。其中b替换为c,如果是用引号的替换${TMP//’/’/’'} 正斜杆替换反斜杠的话,会不生效,直接 ${TMP////\\},用转义字符的替代就行
  6. 变量不能为PATH,这个是关键字

使用终端连接smb

Shell中字符串的切割、拼接、比较、替换

linux shell 字符串替换

Shell字符串比较相等、不相等方法小结

Shell编程

菜鸟Shell 教程

本文由作者按照 CC BY 4.0 进行授权