我想创建一个命令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”即可。