pwd에서 bash 이스케이프 공간을 가질 수 있습니까?


21

현재 디렉토리를 클립 보드에 복사하고 싶습니다 pwd | pbcopy. 그러나 pwd공간을 벗어나지 않으므로 "응용 프로그램 지원"과 같은 항목이 올바르게 복사되지 않습니다. 나는 이것이 항상 사건이라는 것을 기억하지 못하는 것 같아서 무언가를 막을 수 있었다. iTerm2 사용하기.

모든 것을 피하기 위해 bash 설정이 있습니까? Spaces.app 또는에 대해 너무 많은 질문 / 주제를 검색하는 데 문제가 esc있습니다.

흐름:

$ pwd
/Library/Application Support/Google Earth/

선호 :

$ pwd
/Library/Application\ Support/Google\ Earth/

이미 본 게시물 : 현재 디렉토리의 경로를 클립 보드에 복사 하고 이름이 bash에 공백이 포함 된 디렉토리로 cd하는 방법은 무엇입니까? 이 문제를 해결하지 못합니다. 나는 전자에서 의견을 말했을 것이지만, 나는 특권이 없다.


1
복사가 올바른지 의심합니다-붙여 넣기가 공백을 처리하기를 원합니다-붙여 넣는 응용 프로그램은 무엇입니까?
user151019

좋은 질문입니다. 곧 댓글을 달릴 충분한 담당자가 있습니다. 사이트에 오신 것을 환영합니다!
bmike

1
pwd | pbcopy터미널에서 잘 작동합니다. Finder / Edit / Show Clipboard가 정상인지 확인합니다.
lhf

@lhf 예, 터미널에서 체크인 했어야합니다. 그러나 iTerm2에서는 운이 없습니다. 어쩌면 내가 다시 전환해야합니다 ...
greenwar

이것이 실행중인 터미널 에뮬레이터에 어떻게 의존 할 수 있습니까? 방금 pwd | pbcopyiTerm2에서 테스트하고 정상적으로 작동했습니다.
lhf

답변:


13

이 명령은 공백을 올바르게 이스케이프합니다.

printf "%q\n" "$(pwd)" | pbcopy

다른 CWD를cwd 재정의하지 않는 경우 와 같이 내역이있는 것을 사용하여 별칭을 지정할 수 있습니다.

alias cwd='printf "%q\n" "$(pwd)" | pbcopy'

파이프가 pwd처럼 작동하도록하려면 pbcopy에 파이프를 버리고 이스케이프 된 경로를 인쇄하십시오.


맥에서 작동하지 않습니다
Macilias

1
내 Mac에서 작동합니다.
Jason Swett

5
pwd | sed 's/ /\\ /g'

그러나 이것이 궁극적으로 문제를 해결할 것이라고 확신하지 않습니다. pbcopy는 stdin에서 수신 한 내용을 정확하게 복사합니다.


그것은 OP가 예제로 사용한 것처럼 보이지만 거의 충분하지 않은 공간을 벗어날 것입니다.
Old Pro

하지만 글렌에서 적절한 하나가 내 Mac에서 작동하지 않았다 대부분의 경우에서이 작품은 전혀 출력이 없습니다
Macilias

함수를 선언 할 때 별명으로 사용할 수도 있습니다. function escapePWD () {pwd | sed 's / / \\ / g'; } 및 별칭이 사용 별칭 epwd = 'escapePWD'
Macilias

1

pwd출력 이스케이프 된 파일 경로 를 만드는 기본 제공 방법 은 없습니다. 일반적으로 유용하지 않습니다.

복사되는 내용에 백 슬래시를 추가 pwd하거나 pbcopy추가하는 것은 이치에 맞지 않습니다 . 경로를 텍스트 파일 또는 웹 게시물에 복사하려면 백 슬래시를 삽입하지 않으려 고합니다.

아마도 당신이하고 싶은 qwd것은 현재 디렉토리의 따옴표 붙은 형태를 인쇄하거나을 출력하는 것을 피하기 위해 별도의 별칭으로 생성 pbpaste하는 것입니다.

bash-3.2$ pwd
/Users/user
bash-3.2$ cd test\ dir/untitled\ \"folder/
bash-3.2$ pwd
/Users/user/test dir/untitled "folder
bash-3.2$ pwd | pbcopy
bash-3.2$ echo "`pbpaste`"
/Users/user/test dir/untitled "folder
bash-3.2$ cd
bash-3.2$ pwd
/Users/user
bash-3.2$ cd `pbpaste`
bash: cd: /Users/user/test: No such file or directory
bash-3.2$ cd "`pbpaste`"
bash-3.2$ pwd
/Users/user/test dir/untitled "folder

이스케이프가 필요한 공간 만있는 것은 아닙니다. 슬래시, 슬래시, 별표, 물음표, 앰퍼샌드, 세미콜론 및 기타 문자도 이스케이프해야합니다. 가장 안전한 방법은 예제에서와 같이 큰 따옴표를 사용하는 것입니다. 경로에 큰 따옴표가 포함되어 있어도 작동합니다.

당신이 그것에 대해 왜곡하고 싶다면, 당신은 당신을 위해 현재 디렉토리를 인용하는 AppleScript를 만들 수 있습니다 :

bash-3.2$ alias qwd="osascript -e 'return quoted form of POSIX path of (POSIX file \"./\" as alias)'"
bash-3.2$ qwd
'/Users/user/test dir/untitled "folder'

그렇지 않으면 위와 같이 인용 된 양식의 별칭 qwd을 지정하여 정상을 방해하지 않는 것을 제외하고는 대부분 Glenn에 동의합니다 pwd.

alias qwd='printf "%q\n" "$(pwd)"'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.