web-dev-qa-db-ja.com

ディレクトリを変更するエイリアスを作成し、そのディレクトリを新しいターミナルタブの現在の作業ディレクトリにする

ディレクトリを変更して、そのディレクトリでノードサーバーを起動する便利なエイリアスを作成しようとしています。ほとんどの部分で機能していますが、理解できない小さな問題が1つだけあります。

~/.bashrcファイル内のディレクトリを変更するだけのエイリアスを設定すると、期待どおりの動作が得られます。

alias ta='cd /Users/scotty/Develop/Meteor/task-assist' 

予想される動作とは、ターミナルで$ taを実行すると、ディレクトリが変更されるだけでなく、ターミナルで新しいタブを開くことができ、そのディレクトリが新しいタブに引き継がれるということです。

しかし、何らかの理由でそのエイリアスに追加のコマンドを追加してノードサーバーを起動すると、$ taを再度実行した後、現在のディレクトリが新しいターミナルタブに引き継がれません(新しいタブはルートで開くだけです)。ディレクトリが変更されてサーバーが起動しますが、変更されたディレクトリが実際にはターミナルに設定されていないようです。サーバーctrl +cを強制終了すると、ターミナルでディレクトリが更新されます。これを機能させるためにエイリアスと関数の両方を試しましたが、成功しませんでした:

### meteor is the command that starts the server
alias ta='cd /Users/scotty/Develop/Meteor/task-assist && meteor'

### Also tried a function
ta(){
  cd /Users/scotty/Develop/Meteor/task-assist
  meteor
}

新しいターミナルタブを現在の作業ディレクトリで開くには、ディレクトリの変更と流星の実行が2つの別々のコマンドである必要があるかのようです。繰り返しますが、さらに明確にするために、ターミナルで$taを実行し、次にcmd + tを押して新しいタブを開くと、新しいタブの現在のディレクトリを/Users/scotty/Develop/Meteor/task-assist

これをエイリアスで実現する方法についてのアイデアはありますか?

6
Scott

あなたは別の道を行かなければなりません。 _.bashrc_の最後に、前のbashインスタンスがCWD(現在の作業ディレクトリ)として持っていた最後のディレクトリのディレクトリを変更する行を追加します。

このような行は私のために働きました:

_cd $(readlink  "/proc/$(echo -n $(ps -u $(whoami) -eo stat,pid,cmd | awk '$3 == "'$(which bash)'" && $1 ~ /\+/{print $2}' | sort | head -1))/cwd")
_

説明

  • cd $(...):以下で決定されたものにディレクトリを変更します
  • readlink /proc/$(...)/cwd:_/proc/pid/cwd_が指すリンクを読み取ります(現在の作業ディレクトリ)
  • echo -n $(...):末尾の改行を削除します
  • ps -u $(whoami) -eo stat,pid,cmd:プロセスを単純な形式で表示します
  • awk '$3 == "'$(which bash)'" && $1 ~ /\+/{print $2}'bashであり、bashがフォアグラウンドプロセスグループにある場合(statフィールドの_+_で示される)、次にpidを出力する
  • _sort | head -1_最も低いpidのみが必要

編集:

あなたの場合、これはより良い解決策かもしれません:

_cd $(readlink /proc/$(pgrep -n meteor)/cwd)
_

meteorの最新のインスタンスのpidを特定し、この現在の作業ディレクトリに変更します。

2
chaos

これらのエイリアスを作成しました(私はbashを使用しています)

christian@fujiu1404:~$ alias ta='cd tmp ; date'
christian@fujiu1404:~$ ta
Wed Sep 17 14:47:16 BST 2014
christian@fujiu1404:~/tmp$ alias ta='cd tmp && date'
christian@fujiu1404:~/tmp$ cd ..
christian@fujiu1404:~$ ta
Wed Sep 17 14:48:28 BST 2014
christian@fujiu1404:~/tmp$ 

そして彼らは働きます!

0
X Tian