2017-03-06 5 views
1
cd = 'cd !* ;set prompt="! $host `dirs` % "' 

이 별칭은 일반적으로 사용하는 Red Hat Enterprise Linux 서버에 있으며, 어떤 용도인지는 알 수 없습니다. 어떤 아이디어?Red Hat Linux에서이 별칭은 무엇을합니까?

+4

내게 배쉬처럼 보이지 않습니다. –

+0

cd 명령이 bash 쉘 내에서 작동하지 않습니까? – user2602925

+1

예, Bash *는 내장 된'cd'를 가지고 있지만 여기에 공백이 있으며 배쉬에서 사용하는 것과는 다른 방식으로'set'을 사용합니다. –

답변

0

나는 디렉토리를 변경하고 프롬프트에서 이전 디렉토리를 표시하기위한 것이라고 생각합니다. !*은 첫 번째 단어가없는 이전 명령을 의미하는 bash 히스토리 확장입니다. 예 : 이전 명령이 cd project이면 !*project입니다. 기록 확장 섹션에서 man bash, 더 구체적으로는 here을 참조하십시오.

dirs은 단순히 디렉토리 스택을 표시하며 bash 내장입니다 (자세한 내용은 링크 참조).

그러나, 표준 bash는 대신 set prompt=export PS1=...를 사용하는 것, 그래서 아마도 별칭의 저자는, 예를 들어 csh보다는 bash에 사용되는 의미 here을 참조하십시오. 히스토리 확장 !*은 동일한 의미론을 갖는다. tcsh에 대해서는 here을 참조하십시오.

+0

정상적인 cd 명령과 다르게 실행되는 것 같지 않습니다. 적어도 알 수있는 한은 말입니다. – user2602925

+0

RHEL 호스트에 액세스 할 수 없지만 표준 bash에서는'set prompt = '대신'export PS1 = ...'을 사용합니다. 어쩌면 당신이 변화를 보지 못하는 이유 일 수 있습니다. – dimid

+2

별칭의 작성자는 'bash'대신 'csh'에서 사용되는 것을 의미한다고 생각합니다. [here] (http://superuser.com/questions/399047/customizing-csh-prompt)를 참조하십시오. – dimid

0

csh 앨리어싱에서 !*은 명령이받은 입력입니다.
alias + emacs \!* &이고 실행중인 사람은 + somefile입니다. 이맥스를 사용하여 somefile을 열고 배경으로 옮깁니다.
당신의 줄에 - 당신이 무엇을 줄까 (! *) 디렉토리를 변경하고 호스트 이름, 경로 (pwd) 및 %

으로 프롬프트를 설정합니다.

내 별칭 행의 \에주의하십시오. 별칭의 특수 문자를 이스케이프 처리하고주의해야합니다. this