更改目录 cd 到另一个终端的 cwd

更改目录 cd 到另一个终端的 cwd

我想创建一个命令cd -(让我们称之为cdp),它将从另一个终端窗口将目录更改为最后更改的目录,类似于在前一个窗口/选项卡所在的目录中打开新终端的选项(我在 Mac OS X 终端中看不到该选项)。

为了做到这一点,我想我可以cd用类似的东西来改变alias cd='cd $1;echo $PWD > /tmp/CWD'然后添加

alias cdp='cd  `cat /tmp/CWD`

有人能提供更好的解决方案吗?或者,告诉我一个现有的程序、功能等,请告诉我。在 Mac OS X 10.6 上,使用默认终端。谢谢。

答案1

别名不接受参数。您必须使用函数。您还应该使用command内置函数。

function cd () { command cd "$@"; echo "$PWD" > /tmp/CWD; }

alias cdp='cd "$(</tmp/CWD)"'

这是另一种特定于 OS X 的方法。它是一个脚本,可以启动一个新的终端窗口或选项卡,其当前目录与当前终端窗口或选项卡的目录相同。

答案2

我喜欢的解决方案http://hints.macworld.com/article.php?story=20051231110014263更好的:

在当前终端目录中打开新的 xterm 窗口 作者:TomP,发布于 2006 年 1 月 4 日,晚上 10:05:12

作为一个稍微更灵活的替代方案,我有一个小 shell 脚本(“openterminal.sh”),它将在与调用它的终端会话相同的目录中打开一个新的终端窗口。以下是脚本:

#!/bin/sh
# 
# Open another terminal window for the current directory
#
# Copyright 2004 by Tom Pollard - All rights reserved.
#
#set -x
CWD=`pwd`
osascript<<END
set thePath to "$CWD"
set myPath to (POSIX file thePath as alias)
try
    tell application "Terminal"
        activate
        do script with command "cd \"" & thePath & "\""
    end tell
end try
END

我将其别名为“ot”。因此,当我想让另一个终端窗口打开到与其他终端窗口相同的目录时(不一定是我上次使用或打开的窗口),我只需在该终端会话中说“ot”即可。

相关内容