pwd 결과를 "~"로 표시하시겠습니까?

pwd 결과를 "~"로 표시하시겠습니까?

pwd나에게주세요

/data/users/me/some/random/folder

쉽게 구할 수 있는 방법이 있나요

~/some/random/folder

에서 pwd?

답변1

Bash를 사용하는 경우 dirs내장 함수가 원하는 동작을 수행합니다.

dirs +0
~/some/random/folder

(노트+0, 아니요-0.)

그리고 zsh:

dirs
~/some/random/folder

정확하게 말하면 먼저 디렉터리 스택을 지워야 합니다. 그렇지 않으면 dirs모든 내용이 인쇄됩니다.

dirs -c; dirs

또는 내장된 zsh기능을 사용하세요:print

print -rD $PWD

또는

print -P %~

(그 차례급속한 확장존재하다. %~in 은 다음으로 대체하여 $PS1현재 디렉터리로 확장 하지만 다른 디렉터리도 처리합니다.$HOME~이름 디렉터리다른 사용자의 홈 디렉토리와 같거나이름 디렉터리귀하가 정의함).

답변2

Bash 변수 하위 문자열 대체 함수를 사용할 수 있습니다.

$ pwd
/home/vagrant/foo/bar
$ echo ${PWD/#$HOME/'~'}
~/foo/bar

답변3

사용 sed:

pwd | sed "s|^$HOME|~|"

sed홈 디렉터리 경로에 나타날 가능성이 없는 모든 문자를 정규식의 구분 기호 로 사용하는 것이 아이디어입니다 . 위의 예에서는 |.

이 기술의 장점은 사실상 쉘 독립적이라는 것입니다.

또한 별칭을 사용하여 사용할 수 있는 다른 스크립트에서 이 동작을 얻을 수도 pwd있습니다 ./bin/pwd | sed "s|$HOME|~|"pwd

답변4

원하지 않는 부품을 다음으로 교체해 볼 수 있습니다 sed.

pwd | sed 's,^/data/users/me,~,'

또는 더 나은 방법은 다음과 같습니다.

pwd | sed "s,^$HOME,~,"

관련 정보