변경 디렉터리의 별칭을 만들고 해당 디렉터리를 새 터미널 탭에서 현재 작업 디렉터리로 만듭니다.

변경 디렉터리의 별칭을 만들고 해당 디렉터리를 새 터미널 탭에서 현재 작업 디렉터리로 만듭니다.

디렉터리를 변경한 다음 해당 디렉터리에서 노드 서버를 시작하는 편리한 별칭을 만들려고 합니다. 저는 대부분 잘 작동하고 있는데, 해결할 수 없는 작은 문제가 하나 있습니다.

파일 내의 디렉터리만 변경하도록 별칭을 설정하면 ~/.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
}

현재 작업 디렉터리로 새 터미널 탭을 열려면 디렉터리를 변경하고 meteor를 실행하는 두 개의 별도 명령이 필요한 것과 거의 같습니다. 다시 한번 더 명확하게 설명하자면, 터미널에서 실행한 $ta다음 키를 눌러 cmd + t새 탭을 열 때 새 탭의 현재 디렉터리는 다음과 같습니다 /Users/scotty/Develop/Meteor/task-assist.

별칭을 사용하여 이를 달성하는 방법에 대한 아이디어가 있습니까?

답변1

다른 길로 가야 합니다. .bashrcbash 인스턴스의 마지막 디렉터리 (현재 작업 디렉터리) 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있는 경우 pid를 인쇄합니다.bash+stat
  • sort | head -1우리는 가장 낮은 PID를 원합니다

편집하다:

귀하의 경우에는 이것이 더 나은 해결책이 될 수 있습니다.

cd $(readlink /proc/$(pgrep -n meteor)/cwd)

최신 인스턴스의 pid를 결정하고 meteor현재 작업 디렉터리로 변경합니다.

답변2

방금 이 별칭을 만들었습니다(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$ 

그들은 일 했어!

관련 정보