bash에 대한 별칭의 여러 명령
다음 두 개의 명령을 연속적으로 실행하는 별칭을 정의하려고 합니다.
gnome-screensaver
gnome-screensaver-command --lock
지금 제가 덧붙인 것은
alias lock='gnome-screensaver-command --lock'
.bashrc로 이동하지만 워크스테이션을 너무 자주 잠그기 때문에 명령 하나만 입력하는 것이 더 쉬울 것입니다.
시도:
alias lock='gnome-screensaver; gnome-screensaver-command --lock'
또는
lock() {
gnome-screensaver
gnome-screensaver-command --lock
}
.svrc에서
두 번째 솔루션을 사용하면 인수를 사용할 수 있습니다.
다른 답변은 질문에 적절하게 답변하지만, 두 번째 명령은 첫 번째 명령이 성공적으로 종료되는지 여부에 따라 달라집니다.사용자의 별칭에서 단락 평가를 시도할 수 있습니다.
alias lock='gnome-screensaver && gnome-screensaver-command --lock'
이제 두 번째 명령은 첫 번째 명령이 성공하지 않는 한 시도조차 하지 않을 것입니다.단락 평가에 대한 더 나은 설명은 이 SO 질문에 설명되어 있습니다.
별칭은 별칭 명령 이름에 사용됩니다.그 이상의 모든 것은 기능으로 수행되어야 합니다.
alias ll='ls -l' # The ll command is an alias for ls -l
별칭은 여전히 원래 이름과 연결된 이름입니다. ll약간 구체적인 종류일 뿐입니다.ls.
d() {
if exists colordiff; then
colordiff -ur "$@"
elif exists diff; then
diff -ur "$@"
elif exists comm; then
comm -3 "$1" "$2"
fi | less
}
함수는 내부 논리를 가진 새 명령입니다.단순히 다른 명령의 이름을 바꾼 것이 아닙니다.내부 작업을 수행합니다.
기술적으로, Bash 셸 언어의 별칭은 기능이 너무 제한되어 있어서 하나 이상의 명령과 관련된 모든 항목에 매우 적합하지 않습니다.하나의 명령을 작은 크기로 변환하는 데 사용합니다. 그 이상은 아닙니다.
내부적으로 다른 명령에서 해결할 작업을 수행하는 새 명령을 만드는 것이 목적이므로 정답은 여기서 함수를 사용하는 것뿐입니다.
lock() {
gnome-screensaver
gnome-screensaver-command --lock
}
이와 같은 시나리오에서 별칭을 사용하면 많은 문제가 발생합니다.명령으로 실행되는 함수와 달리 별칭이 현재 명령으로 확장되어 이 별칭 "명령"을 다른 명령과 결합할 때 예상치 못한 문제가 발생합니다.스크립트에서도 작동하지 않습니다.
이거 안 되나요?
alias whatever='gnome-screensaver ; gnome-screensaver-command --lock'
이렇게 하면 두 개의 명령이 차례로 실행됩니다.
alias lock='gnome-screensaver ; gnome-screensaver-command --lock'
11년 동안 진행된 토론에 제 2센트를 더하면 다음과 같습니다.
alias lock="gnome-screensaver \gnome-screensaver-command --lock"
이 기능을 에 추가합니다.~/.bashrc터미널을 다시 시작하거나 실행합니다.source ~/.bashrc
function lock() {
gnome-screensaver
gnome-screensaver-command --lock
}
이렇게 하면 다음 두 명령이 입력할 때마다 실행됩니다.lock당신의 터미널에서.
특정한 경우에 다음을 생성합니다.alias효과가 있을지도 모르지만, 저는 그것을 추천하지 않습니다.직관적으로 별칭 값은 단말기에 값을 입력한 것과 동일하게 실행됩니다.그러나 그렇지 않습니다.
별칭의 정의와 사용에 관한 규칙은 다소 혼란스럽습니다.
그리고.
거의 모든 용도에서 셸 기능이 별칭보다 선호됩니다.
그러니 꼭 필요한 경우가 아니라면 가명을 사용하지 마세요.https://ss64.com/bash/alias.html
세미콜론을 사용합니다.
alias lock='gnome-screensaver; gnome-screen-saver-command --lock'
첫 번째 명령에 인수를 제공하려는 경우에는 제대로 작동하지 않습니다.또는 $HOME/bin 디렉토리에 사소한 스크립트를 만듭니다.
function lock() {
gnome-screensaver
gnome-screensaver-command --lock
}
위의 내용은 bash에서 제게 완벽하게 번역되었습니다:
bottom() {
clear
printf '\n%.0s' {1..100}
}
alias c="bottom"
제가 하고 싶었던 것은 화면을 지우는 것이었습니다.c alias) 및 bash 프롬프트가 터미널 창 위쪽이 아닌 아래쪽에 표시되도록 합니다.나는 이것을 오래 전에 해결했습니다.제가 한 일을 잊었습니다). 하지만 이제 저는 .bash_profile에 함수를 넣었고 그것은 레이스로 넘어갔습니다!현재는 새로운 term. 창을 열면 하단에 프롬프트만 뜨도록 하는 기능도 실행하고 있습니다.제안해 주셔서 감사합니다.그냥 이런 걸 놓치는 건지, 돈을 받는 걸 놓치는 건지...아마도 둘 다일 것입니다. :-)
서에창에서, 의Git\etc\bash.bashrc는 ( (으)ㄹ 거예요.
a(){
git add $1
git status
}
그리고 나서 gitbash는 그냥 글을 씁니다.
$ a Config/
언급URL : https://stackoverflow.com/questions/756756/multiple-commands-in-an-alias-for-bash
'programing' 카테고리의 다른 글
| 여러 작업에 비동기/대기 사용 (0) | 2023.05.14 |
|---|---|
| Xcode 중복/삭제 라인 (0) | 2023.05.14 |
| VS Code Azure 계정 확장을 통해 계정을 전환하는 방법 (0) | 2023.05.14 |
| 장고: 작업 오류 해당 테이블 없음 (0) | 2023.05.14 |
| 각도 재료의 기본 정렬 - 머리글 정렬 (0) | 2023.05.14 |