별명으로 cd ../ ..를 사용할 수 있습니까?


11

Windows와 Ubuntu를 병렬로 사용하고 있으며 둘 다 콘솔 작업을 수행합니다.

Windows에서 나는 할 수 있습니다

C:\Users\Thomas>cd..\..
C:\>

그러나 Linux에서는 백 슬래시 나 슬래시와 함께 작동하지 않습니다.

21:17:10 $ cd../..
bash: cd../..: No such file or directory

나는 종종 그 실수를 저지르기 때문에 .bash_aliases그 상황 에 대한 별칭을 정의하려고 시도했습니다 .

alias cd../..='cd ../..'
alias cd..\..='cd ../..'

새로운 배쉬를 시작하면

21:16:26 $ bash
bash: alias: `cd../..': invalid alias name

어떻게 별칭을 설정합니다 cd..\..cd../..올바르게?

cd..\..이스케이프 문자에 문제가있는 것 같다 :

21:39:43 $ cd..\..
bash: cd....: command not found

에 대한 다른 별칭을 정의해도 작동하지 않습니다 cd.....


2
당신은 할 수 없습니다. 명령, 별명 또는 파일 이름은 /문자를 포함 할 수 없습니다 . 반면에 \ 버전은 잘 작동합니다.
fkraiem

@fkraiem : 백 슬래시 버전에는 이스케이프 문자로 문제가있는 것 같습니다. 질문을 업데이트했습니다.
Thomas Weller

아 참으로 From man bash: 문자 /, $,`및 = 및 위에 나열된 쉘 메타 문자 또는 인용 문자는 별명으로 표시되지 않을 수 있습니다.
fkraiem

제길. 시도했지만 man alias존재하지 않았습니다. 당신이 대답으로 주면, 나는 그것을 받아 들일 것입니다.
Thomas Weller

별명은 하나, 쉘 함수는 또 다른 것입니다. 다시 한번 봐
Alexis

답변:


10

/\배쉬 별명에 표시 할 수없는 문자들입니다. 보낸 사람 man bash:

문자 /,, $`및 =위에 나열된 쉘 메타 문자 또는 인용 문자는 별명에 나타나지 않을 수 있습니다.

이 문제를 해결하기 위해 Zsh로 전환하면 다음 두 가지를 모두 수행 할 수 있습니다.

% grep 'alias.*cd' .zshrc 
alias cd../..='cd ../..'
alias cd..\\..='cd ../..'
% pwd
/Users/firas
% cd../..
% pwd
/ 
% cd
% pwd
/Users/firas
% cd..\..
% pwd
/

12

별칭 이름에는 슬래시를 사용할 수 없습니다. Bash는 그것들을 함수 이름으로 허용하므로, 함수를 만들 수 있습니다 :

cd../.. () { cd ../..; }

별명 또는 함수 이름에는 백 슬래시를 사용할 수 없습니다. 백 슬래시 문자는 다음 문자를 인용하므로 해당 문자열이 명령 이름으로 조회되기 훨씬 전에 cd..\..로 구문 분석됩니다 cd..... 당신이 명령 이름을 호출 할 경우 cd..\.., 당신은 입력 할 필요가 cd..\\.., 'cd..\..'또는 뭔가 상응. 또한 어떤 식 으로든 인용 된 명령 이름은 별칭 조회로 간주되지 않으므로 백 슬래시가 포함 된 별칭 이름을 사용할 수 없습니다. Bash는 함수 이름에 백 슬래시도 허용하지 않습니다. 이후 cd..\..로 구문 분석 cd...., 당신은라는 함수를 정의 할 수 있습니다 cd....(위와 같이)를.

cd명령 을 사용하는 경우 다른 명령과 마찬가지로 그 뒤에 공백을 입력해야합니다. 그러나 입력하지 않아도 입력 내용 cd을 저장할 수 있습니다 . autocd다음 줄을 사용 하여 옵션을 설정하십시오 ~/.bashrc.

shopt -s autocd

그런 다음 명령 행에 디렉토리 이름을 입력하고 해당 디렉토리를 "실행"하면 디렉토리 이름이 변경됩니다.

~/some/sub/directory$ ../..
~/some$ 

내가 할 경우 shopt일을, 나는 아마 :-) 곧 Windows에서 해당 기능을 놓칠
토마스 웰러

음, 사실이 아닙니다. 슬래시는 bash 함수 이름으로 허용됩니다.
Alexis

@alexis Ah, 맞아, bash에서 슬래시를 사용할 수 있습니다. 고마워
Gilles 'SO- 악마 그만해'

@ThomasW. 물론 그렇습니다. autocdbash가없는 zz로 전환 한 이유 중 하나였습니다. Windows를 사용하는 유일한 방법은 zg로 완성 된 Cygwin을 설치하는 것입니다.
Gilles 'SO- 악마 그만'

5

"별명 또는 함수 이름에 슬래시를 사용할 수 없습니다 "? 그게 뉴스 야 Linux 및 OS X bash에서 수년 동안 다음 셸 기능을 사용해 왔으며 아무런 문제가 없었습니다.

function ../.. { cd ../..; echo "$PWD"; }

당연히 cd../..훌륭한 기능 이름입니다. 쉘 함수 이름에 슬래시를 사용할 수 있습니다.

백 슬래시 버전으로, 당신은 별칭 또는 함수 이름을 포함 할 수 없습니다하지만 당신은 필요 없어 : 입력하면 cd..\..결과를 실행 탈출과 시도로, bash는 해석 백 슬래시 cd..... 그래서 그것을 정의하면 당신이했던 모든 것을 할 수 있습니다. 아니에요.

function cd.... { cd ../..; } 

2

별명을 유지하려면 다음과 같이하십시오.

alias   ..='cd ..'
alias  ...='cd ../../' 
alias ....='cd ../../../'

또는, 당신이 갈 필요가있는 경우 방법 등을 :

alias   .3='cd ../../../' 
alias   .4='cd ../../../../'
alias   .5='cd ../../../../../'
# how far back do you need to go on a normal basis..?

Windows 두뇌와 정신적으로 동기화하는 데 얼마나 도움이되는지 모르겠지만 여전히 간단한 방법으로 보입니다. (적어도 우리에게 운이 좋은 사람들에게는 Windows에서 작업이 수행되는 방식에 대해 걱정할 필요가 없습니다.)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.