【shell】短命令:shortpath,swd和sync-profiles

shortpath

将当前路径简化为变量,比如,假如定义了GOPATH=~/gopath, W=$GOPATH/src/github.com/me/work,下面的代码定制PS1展示缩短的变量

shortpath () { 
    p=${PWD/#'/Users/me'/'~'}
    p=${p/#'~/gopath'/'$GOPATH'}
    p=${p/#'$GOPATH/src/github.com/me/work'/'$W'}
    echo "$p"
}

parse_git_branch() {
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}

PS1='\[\e[33m\]$(shortpath)\[\033[32m\]$(parse_git_branch)\[\033[00m\] \t \n '

swd

swd, ssh+working directory, 如果本地机器和远程机器都使用shortpath来简化路径表示,那么即使HOME路径不相同,也可以直接登录到远程机器的当前目录下

function swd {
	local cur
	cur=$(shortpath)
	# -t: force terminal allocation 
	# slow
	# ssh -t $D "exec bash --login -i -c 'cd $cur;exec bash --login -i'"
	echo "cd $cur"|cat - /dev/tty|script -q /dev/null ssh $D
}

脚本的功能:获取短路径,然后ssh登录到远程机器($D)并切换到这个短路径

Update: swd 有参数时执行命令

function swd {
	local cur
	cur=$(shortpath)
	if [[ $# -gt 0 ]];then
		# -q: quiet
		ssh -q -t $D "exec bash --login -i -c 'cd $cur;$*'"
		return
	fi
	# -t: force terminal allocation
	# slow
	ssh -t $D "echo Login shell...;exec bash --login -i -c 'echo Welcome,last login \$(last -1|head -n1);cd $cur;exec bash --login -i'"
	# echo "cd $cur"|cat - /dev/tty|script -q /dev/null ssh $D
}

sync-profiles

基于mutagen-sync-projects.sh创建文件同步,再也不怕机器私有文件无法同步了

#!/usr/bin/env bash
files=(~/.bash* ~/.ssh ~/.mutagen.toml ~/.mutagen.yml)

dir=$(dirname "$(realpath "$0")")
targetDir=${dir/#'/Users/home/me'/'~'}
for f in "${files[@]}";do
	target=${f##'/Users/home/me'}
	name=${target//'.'/'-'}
	# remove prefix -
	name=${name##'-'}
	name=${name}-sync
	mutagen-sync-projects.sh  "$name" "$f" "$D:$targetDir/$target"
done
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值