별명으로 음영 처리 된 명령을 실행하십시오.


163

bash에 다음과 같은 별칭이 있으며 옵션없이 alias ls='ls --color=auto'일반이라고 부르고 싶습니다 ls. 그렇게하는 유일한 방법은 unalias, 명령을 수행 한 다음 다시 별칭을 사용하는 것입니까? 아니면 멋진 트릭이나 해결 방법이 있습니까?


2
아래의 답변 중 일부에 대한 참고 사항 : "명령"은 이것을 달성하는 유일한 안전한 방법입니다. 예를 들어 "." 또는 "소스"내장이 스크립트 정의 함수로 대체 될 수 있습니다. "명령." 또는 "command source"는 대신 스크립트 정의 함수를 호출하지 않고 소스를 안전하게 실행할 수있는 유일한 방법입니다. 백 슬래시 방법 "\.", 작동을 포함한 다른 대안은 없으며 전체 경로를 지정하여 호출 할 수있는 "/ bin / source"대안은 없습니다.
Dejay Clayton

답변:


209

별명을 사용하지 않도록 백 슬래시를 접 두부로 추가 할 수도 있습니다. \ls

편집 : 동일한 작업을 수행하는 다른 방법은 다음과 같습니다.

Mikel에command ls 따라 "command"를 사용하십시오 .

전체 경로를 사용 /bin/ls에 따라 우서 .

명령을 인용하십시오 : "ls"또는 'ls'Mikel의 의견에 따라.

을 사용하여 해당 터미널 세션에 대한 별칭을 임시로 제거 할 수 있습니다 unalias command_name.


이것이 내 표준 방법입니다.
ncmathsadist

아주 좋고, tcsh 와도 잘 작동합니다
Levon

10
이 방법은 매우 유용합니다. 그것은 단지에서이 다른 점은 어떤 별칭이 아닌 기능을 무시 command하거나 builtin.
Mikel

1
l\s같은 일을하는 것 같습니다 . 이 동작은 버그입니까 아니면 기능입니까?
Niklas B.

4
"기능"입니다. 따옴표없는 별칭 만 확장됩니다. 따라서 따옴표로 묶거나 원하는 곳에서 백 슬래시를 사용할 수 있습니다. 참조 bash는 별칭 참조 .
Mikel

79

그것이 command명령의 목적입니다.

시험

command ls

이것은 쉘에게 별명과 기능을 우회하도록 지시합니다.

이 방법은 bash , zshash / dash 에서 지원됩니다 .


2
가장 좋은 대답은 왜 가장 많이지지되지 않는가? :) +1
0xC0000022L

11
백 슬래시 방법 으로 문자 수의 8 배를 추가하기 때문에
JoelFan

1
@STATUS_ACCESS_DENIED tcsh에서도 작동하지 않으므로 csh에서도 작동하지 않습니다. `\`메소드는
Levon

3
백 슬래시 기능이 안전하지 않습니다. 유사한 이름의 별명에 대해서는 보호 기능을 제공하지만 유사한 이름의 기능에 대해서는 보호 기능을 제공하지 않습니다.
Dejay Clayton

2
@JoelFan 나는 약간의 여분의 문자를 가지고 있고 내 스크립트를 쉽게 따르고 모든 사람을 위해 일하게하고 싶습니다. 직관적이지 않고 놓치기 쉽고 문서화가 잘되어 있지 않으며 기능 우회에는 효과가없는 암호 슬래시가 아닙니다.
Dennis

19

별명은 정의 된 바로 가기입니다. 이 예에서 정의 된 별칭은 문자열 ls이며이 문자열 은 실행 ls --color=auto됩니다. 해당 동작을 원하지 않는 경우 ls절대 경로를 사용하여 이진 을 호출 할 수 있습니다 .

따라서 실행 /bin/ls하면 정의한 별칭이 아니기 때문에 색상없이 출력됩니다.

별명을 다른 것으로 변경하거나 ls색상 매개 변수없이 실행되는 새 별명을 추가 할 수도 있습니다 .


2
명령이 어디에 있는지 알아야합니다. 일부 시스템에서, 분할 사이 /bin/usr/bin임의적이다.
Keith Thompson

@KeithThompson이를 위해 다음 which명령에 사용할 수 있습니다 which ls..
cst1992

@ cst1992 : which(또는 type) 를 사용하려는 경우 $PATH; 를 통해 조회를 수행합니다 . 경로를 지정하는 대신 ls또는 사용하는 \ls것이 좋습니다.
Keith Thompson

10

@uther의 답변을 기반으로하는 또 다른 방법은 $(which ...)또는 `which ...`(backticks 사용 ``) 실행 파일의 경로를 자동으로 찾는 것입니다. 이것은 다음에서 작동합니다 bash:

$(which ls)

`which ls`

의심 할 여지없이 단순히 명령 앞에 접두사를 붙이는 \것이 훨씬 짧습니다.

업데이트 : 별칭 명령에서`which`를 사용하는 방법에 따르면 ? , 이것은 전혀 신뢰할 수없는 것 같습니다.


대괄호는 무엇입니까? `which ls`바이너리를 직접 실행하는 것을 의미한다고 생각합니다 .
amyassin

2
@amyassin : 두 구문이 동일합니다. (BTW, 코드 형식으로 백틱을 어떻게 얻었습니까?)
krlmlr

실제로는 (which ls)나를 위해 일하지 않았다 (Ubuntu 12.04 LTS에서). 거기에 도착하기 위해 많은 편집이 필요했다 :)
amyassin

1
@ user946850 "코드 범위 내에 리터럴 백틱 문자를 포함하려면 여러 백틱을 시작 및 닫는 구분자로 사용할 수 있습니다." 출처 : 마크 다운 참조 .
Mikel

@amyassin : 추가 했습니까 $?
krlmlr

2

개인적으로 명령과 이름이 같은 별칭을 정의하지 않기 때문에 ls항상 실제 명령을 호출합니다. 내가 좋아하는 옵션의 다양한 조합에 대한 별칭 또는 기능을 가지고 l, ll하고 lg. (이것은 내가 필요 의미 unalias ls내에서 .bashrc또는 .cshrc.)

내가 선호하는 옵션에 대한 OS의 가정 ( ls명령 자체 디자이너의 가정을 무시)은 내 자신의 취향과 거의 일치하지 않는다는 것을 알았 습니다. 의 모양이 마음에 들지 ls --color=auto않으며 흑백에서 흰색에서 가독성이 크게 다를 수 있습니다.

YMMV 및 기타 솔루션은 여전히 ​​잘 알고 있습니다.


1

LS왜 그런지 잘 모르겠지만 명령을 대문자로 입력하는 것처럼 작동하는 것 같습니다 .


4
어느 쉘에서 어떤 운영 체제, 어떤 터미널 등에서?
Mikel

@Mikel "sl"을 "ls"로 제공하는 "sl"패키지가 있습니다. bash가 Ubuntu에서 제공하는 팁은 "sl"이 "LS"를 제공한다고 말합니다.
이즈 카타

1
Mac OS X 10.7에서 bash 4 (Fink와 함께 설치됨)입니다. 또한 rm 및 grep과 같은 별칭을 가진 다른 명령에서도 작동합니다.
asmeurer

3
그것은 mn 페이지에서 :) 농담입니다.LS - display animations aimed to correct users who accidentally enter LS instead of ls.
amyassin

7
파일 시스템은 기본적으로 대소 문자를 구분하지 않기 때문에 Mac OS X에서 작동한다고 생각합니다. 다른 유닉스에서는 작동하지 않습니다.
Jander
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.