Computer >> 컴퓨터 >  >> 문제 해결 >> Linux

Linux에서 별칭 및 셸 함수를 만드는 방법은 무엇입니까?

명령 프롬프트 및 셸 스크립트를 아는 것은 GNU/Linux 시스템을 최대한 활용하고 명령줄에서 더 많이 작동할수록 사용되는 대부분의 명령이 매우 사용 가능한 명령의 작은 하위 집합입니다. 대부분의 작업은 습관적이며 매일 같은 방식으로 실행할 수 있습니다.

Linux에서 별칭 및 셸 함수를 만드는 방법은 무엇입니까?

가장 일반적인 명령 유틸리티의 제작자는 단축된 이름을 사용하여 불필요한 입력을 제거하려고 시도했습니다. 목록 대신 "ls를 입력합니다. " &change-directory 대신 "cd를 입력합니다. ". 또한 많은 Linux 사용자는 하나의 명령을 계속해서 사용해야 하는 경우가 많습니다. 동일한 명령을 반복해서 입력/복사하면 생산성이 떨어지고 사용자가 실제 작업에서 주의를 분산시킵니다.

긴 명령을 입력하는 데 시간을 덜 쓴다면 좋을 것입니다. 명령줄에서 시간을 최소화하는 두 가지 강력한 방법은 쉘 별칭입니다. 및 기능, 이 두 가지를 사용하여 사용자는 반복적인 작업을 길들이고, 긴 프로세스를 단축하고, 사용자가 항상 사용하고 기억하기 어려운 옵션으로 사용자 정의 명령을 구성할 수 있습니다.

특정 요구 사항에 맞게 명령을 정의하고 반복적인 작업의 부담을 줄일 수 있습니다.

별칭과 셸 스크립트, 즉 함수는 같은 종류의 작업을 수행합니다. 이를 통해 Bash 셸 기능 집합을 정의하고 이름을 지정할 수 있으며, 이 기능은 사용자가 지정한 이름으로 호출할 수 있습니다. 사용하고 싶을 때마다 모든 단계나 명령을 입력해야 하는 것보다 이름을 입력하는 것이 더 쉽고 편리합니다.

별칭과 함수의 차이점은 복잡성과 규모입니다. 스크립트는 더 길고 정교한 코드 덩어리를 유지하는 데 더 좋습니다. 별칭은 더 짧고 간결한 명령 집합을 유지하는 데 적합합니다.

쉘 별칭

셸 별칭은 사용자 지정 옵션을 사용하거나 사용하지 않고 실행되는 명령 또는 명령 집합을 참조하는 사용자 지정 바로 가기입니다. 이러한 별칭은 자주 실행해야 하는 긴 명령에 대한 기억하기 쉬운 대체 이름입니다. 명령줄에 입력하면 쉘은 먼저 별칭 목록에 작성한 내용을 찾습니다. 일치하는 항목이 발견되면 해당 텍스트가 있는 별칭으로 대체됩니다. 완료한 후 전체 결과 명령줄을 다시 살펴보고 실행합니다.

이미 별칭을 사용했을 수 있습니다. 대부분의 Linux 배포판은 기본적으로 ".bashrc"에 인기 있는 별칭 중 일부를 추가하므로 Linux 시스템에서 사용자 계정의 파일입니다.

별칭 이상:셸 함수

유사하지만 동일하지 않은 코드의 블록은 별칭으로 대체할 수 없습니다. 오류를 처리하거나 사용자 지정 종료 코드를 반환하거나 흐름 제어를 수행하거나 변수를 사용할 수 없습니다. 이러한 작업을 수행해야 하는 경우 쉘 기능을 사용할 때입니다.

셸 함수는 완전한 하위 스크립트로 구조화된 코드 블록으로, 한 번 작성되고 이를 필요로 하는 모든 스크립트에서 호출됩니다.

별칭 구문:

bash에서 별칭을 만드는 것은 매우 간단합니다. 구문은 다음과 같습니다.

별칭 alias_name="command_to_run"

현재 세션에서 새 bash 별칭을 만들려면

  1. '별칭 입력 "
  2. 별칭 이름을 선언합니다.
  3. 등호 다음에
  4. 별칭이 호출될 때 실행할 명령입니다.

명령은 등호 주위에 공백 없이 &따옴표로 묶어야 합니다. 여기에 공백이 있으면 명령이 중단됩니다. 각 별칭은 새 줄에 선언되어야 합니다.

예제를 통해 명확히 해보자. Linux 명령줄에서 가장 많이 사용되는 명령 중 하나는 "ls ". 대부분 'ls' 명령어는 'la " 긴 목록 형식으로 숨겨진 파일이 있는 모든 파일 및 디렉토리를 나열하는 스위치입니다. 이제 간단한 bash 별칭 "ll을 만듭니다. '는 ls -la의 바로 가기가 됩니다.   명령.

  1. 터미널 창 열기
  2. 유형:
    alias ll="ls -la"

    Enter 키를 누릅니다.

    Linux에서 별칭 및 셸 함수를 만드는 방법은 무엇입니까?
  3. 이제 콘솔에서 "ll "를 누르고 Enter 키를 누릅니다. Linux에서 별칭 및 셸 함수를 만드는 방법은 무엇입니까?
  4. 출력은 ls -la를 입력하는 것과 동일합니다.

위에서 정의한 별칭 "ll'은 현재 셸 세션에서만 사용할 수 있습니다. 세션을 닫거나 다른 터미널에서 시작된 새 세션 창을 닫으면 위에서 정의한 별칭 "ll"을 사용할 수 없습니다.

Linux에서 별칭 및 셸 함수를 만드는 방법은 무엇입니까?

별칭을 영구적으로 만드는 방법에 대해서는 나중에 논의할 것입니다. 여기에 있는 예제는 bash 셸에 대한 것이지만 모든 개념과 대부분의 코드는 다른 셸에도 유효합니다.

사전 정의된 별칭

일부 별칭은 미리 정의되어 있습니다. 시스템에 정의된 모든 별칭 목록을 알기 위해 매개변수 없이 "alias" 명령을 사용합니다.

alias

이것은 이 기사가 연구된 Ubuntu 테스트 머신의 별칭입니다. 또한 모든 사용자 정의 별칭도 이 목록에 표시됩니다.

ls 명령어에는 다양한 별칭이 있으며 grep 명령어 제품군에 색상 출력을 제공하는 별칭 그룹이 있습니다. 다음을 입력할 때마다 위와 같이 정의된 별칭으로:

grep

다음과 같이 해석됩니다.

grep --color=auto

이것은 별칭으로 중요한 점을 보여줍니다. 기존 명령과 동일한 이름을 가질 수 있습니다. 내부에 원래 명령을 포함할 수도 있습니다.

다음은 grep 별칭의 정의입니다.

alias grep='grep --color=auto'
  1. 별칭 명령은 별칭을 정의하는 데 사용됩니다.
  2. 별칭의 이름이 다음에 제공됩니다. 이 예에서는 'grep'입니다.
  3. 등호는 별칭 이름을 본문에 연결합니다. 별칭의. 매우 단순한 별칭을 제외한 모든 별칭의 경우 별칭 본문은 작은따옴표 '로 묶습니다.
  4. 별칭의 본문은 명령줄에서 별칭을 사용할 때 실행되는 섹션입니다.
  5. 이 별칭의 본문은 단순히 grep 명령을  -color=auto 옵션과 함께 호출합니다.

경고 별칭

목록 상단에 alert라는 복잡한 모양의 별칭이 있습니다. . 잠시 제쳐두고 어떤 기능을 하는지 알 수 있도록 경고 별칭을 사용하여 명령이 완료되었을 때 알려줍니다. 또한 명령이 성공적으로 완료되었는지 여부를 나타냅니다. 화면 상단에 그래픽 시스템 경고를 제공합니다.

다음은 간단한 예입니다. 절전 명령은 5초 동안 절전 모드로 전환됩니다. 그런 다음 경고 별칭이 호출됩니다. 별칭은 이전 명령의 응답을 확인합니다. 히스토리 파일에서 마지막 명령을 추출합니다. 명령이 성공적으로 완료되었는지 여부를 판별합니다. 그런 다음 시스템 경고에 결과를 표시합니다.

명령이 예상대로 완료되면 시스템 경고의 아이콘은 작은 터미널 창입니다. 명령이 오류 코드를 반환한 경우 시스템 경고의 아이콘은 빨간색 오류 아이콘입니다.

sleep 5; alert
Linux에서 별칭 및 셸 함수를 만드는 방법은 무엇입니까?

5초 후 다음과 같은 시스템 경고가 표시됩니다.

Linux에서 별칭 및 셸 함수를 만드는 방법은 무엇입니까?

아이콘은 모든 것이 잘 진행되었음을 의미하는 작은 터미널 창입니다. 실패할 것으로 예상되는 명령으로 다시 시도해 보겠습니다.

DoomedToFail; alert
Linux에서 별칭 및 셸 함수를 만드는 방법은 무엇입니까?

이제 시스템 알림에 오류 아이콘이 있습니다.

Linux에서 별칭 및 셸 함수를 만드는 방법은 무엇입니까?

사소한 별칭 정의

앞에서 본 것처럼 별칭을 정의하기 위해 별칭 명령을 사용합니다.

clear 명령의 가명을 만들 것입니다. 별칭은 cls라고 하고 clear 명령을 호출합니다.

별칭 정의는 너무 간단해서 작은따옴표로 묶을 필요가 없습니다. 별칭의 본문이 이보다 복잡하거나 공백이 포함된 경우 작은따옴표로 묶습니다. 별칭을 정의하고 ls를 사용하여 터미널 창에 일부 출력을 넣은 다음 새 별칭 cl을 사용하여 화면을 지웁니다.

alias cls=clear

ls -l

cls
Linux에서 별칭 및 셸 함수를 만드는 방법은 무엇입니까?

화면이 지워집니다. 비록 단기간이기는 하지만 성공. 별칭은 이 터미널 창이 열려 있는 동안에만 유지됩니다. 창이 닫히면 별칭이 사라집니다.

".bashrc" 파일을 사용하여 별칭을 영구적으로 만들려면

미리 패키지된 별칭이 정의된 위치가 궁금할 수 있습니다. 홈 폴더의 ".bashrc" 파일에 있습니다. 이 파일을 읽고 대화식 쉘을 시작할 때마다 그 안의 명령이 실행됩니다. 터미널 창을 열 때입니다.

홈 폴더에 다음 명령을 입력하면 구문 강조 표시가 있는 ".bashrc" 파일의 내용을 볼 수 있습니다.

gedit .bashrc
Linux에서 별칭 및 셸 함수를 만드는 방법은 무엇입니까?

그러면 gedit 가 실행됩니다. ".bashrc" 파일이 로드된 편집기.

Linux에서 별칭 및 셸 함수를 만드는 방법은 무엇입니까?

강조 표시된 영역은 별칭이 정의된 두 영역을 보여줍니다.

문서를 스크롤하면 별칭과 관련된 두 개의 다른 섹션이 표시됩니다.

Linux에서 별칭 및 셸 함수를 만드는 방법은 무엇입니까?

첫 번째는 경고 별칭의 정의입니다. 두 번째는 if 문입니다. ".bash_aliases 파일이 "가 있으면 읽어보세요."

정의하려는 별칭이 몇 개뿐인 경우 ".bashrc" 파일에 넣을 수 있습니다. ls 별칭이 포함된 섹션 아래에 넣습니다.

많은 별칭을 만들거나 별칭을 자체 파일에 캡슐화하는 아이디어가 마음에 들면 ".bash_aliases" 파일에서 별칭을 정의할 수 있습니다. ".bash_aliases" 파일에 생성할 때의 한 가지 이점은 ".bashrc" 파일의 설정을 실수로 변경할 수 없다는 것입니다. 또 다른 장점은 별칭이 ".bashrc" 파일과 분리되어 있기 때문에 새 시스템에 쉽게 복사할 수 있다는 것입니다.

별칭은 기억하기 쉬운 방식으로 이름을 지정해야 합니다. 나중에 참조할 수 있도록 댓글을 추가하는 것도 좋습니다.

.bash_aliases 파일에 별칭 저장

".bash_aliases" 파일은 기본적으로 존재하지 않으므로 생성해야 합니다. 다음 명령으로 파일을 생성할 수 있습니다.

touch .bash_aliases
Linux에서 별칭 및 셸 함수를 만드는 방법은 무엇입니까?

파일을 편집하고 몇 가지 별칭을 추가해 보겠습니다. 이 명령어는 gedit 편집기에서 '.bash_aliases' 파일을 엽니다.

gedit .bash_aliases
Linux에서 별칭 및 셸 함수를 만드는 방법은 무엇입니까?

3개의 별칭을 추가했습니다. 첫 번째는 우리의 cl 입니다. 이전에 사용한 별칭입니다. 다음은 h.라고 합니다. 기록 명령을 호출하는 약식 방법입니다.

세 번째 별칭은 ftc입니다. . 이것은 "파일 유형 수"를 나타냅니다.

이 별칭은 더 복잡하므로 작은따옴표로 묶습니다. 파이프로 연결된 일련의 명령을 사용합니다. 각 목록 항목에 대한 개수와 함께 다양한 파일 확장명 및 디렉토리 이름의 정렬된 목록을 생성합니다.

".bash_aliases" 파일을 저장하면 별칭이 활성화되고 액세스할 수 있을 것으로 예상할 수 있습니다. 그렇지 않습니다. 별칭 정의가 활성화되기 전에 파일을 Bash 셸에서 읽어야 합니다. 이것은 대화형 쉘이 열릴 때마다 수행됩니다.

내장된 Bash 셸을 사용할 수도 있습니다. 파일에서 명령을 읽고 실행합니다. ".bashrc"가 처리될 때 ".bash_alias" 파일을 읽어오기 때문에 ".bashrc"를 호출하여 테스트를 수행해야 합니다. 그렇게 하면 ".bash_alias" 파일이 ".bashrc"에서 호출되고 별칭이 잘 살아 있는지 확인할 수 있습니다.

우리가 사용한 명령은 다음과 같습니다:

gedit .bash_aliases

".bash_aliases" 파일을 편집하려면.

. .bashrc

이것은 ".bash_aliases"를 호출할 ".bashrc" 내의 명령을 읽고 실행합니다.

ftc

이렇게 하면 ftc 별칭이 호출됩니다.

Linux에서 별칭 및 셸 함수를 만드는 방법은 무엇입니까?

우리의 별칭은 Bash가 ".bashrc"와 ".bash_aliases"를 모두 읽었음을 의미하며 새로운 별칭이 이제 활성화되었음을 의미합니다.

이제 ".bash_aliases" 파일이 발생하면 새 별칭을 추가할 수 있습니다. 한 두 번 이상 작업을 수행하는 경우 별칭을 만드는 것이 좋습니다.

별칭 제거

Bash가 별칭을 인식하거나 응답하지 않도록 별칭을 제거하는 명령이 있습니다. 신선하고 솔직한 명령은 unalias라고 합니다. .

그것을 사용하려면 Bash가 잊어버리게 하려는 별칭의 이름을 지정하십시오. Bash가 ftc 별칭을 잊게 하려면 unalias를 사용하세요. 이전에 사용된 "ll " 명령:

unalias ll
Linux에서 별칭 및 셸 함수를 만드는 방법은 무엇입니까?

별칭을 사용하여 정의한 별칭과 사전 정의된 별칭을 제거할 수 있습니다.

시스템에서 모든 별칭을 제거하려면 -a(all) 옵션을 사용하세요.

unalias -a

그러나 Bash의 메모리 손실은 영구적이지 않습니다. 다음에 터미널 창을 열면 "잊어버린" 별칭이 다시 나타납니다. 진정으로 지우려면 ".bashrc" 및 ".bash_alias" 파일에서 제거해야 합니다.

다시 갖고 싶다고 생각되면 ".bashrc" 파일에서 삭제하지 마십시오. 대신 각 별칭 줄의 시작 부분에 해시 번호를 추가하여 주석 처리합니다. ".bash_alias" 파일을 무효화하려면 이름을 바꿉니다. ".bashrc" 파일이 파일을 볼 수 없으면 읽지 않습니다. 별칭을 복원하기 위해 이 단계를 역순으로 수행하는 것은 간단한 문제입니다.

별칭을 일시적으로 우회하려면(예:별칭을 ls -a로 지정) 다음을 입력하면 됩니다.

\ls

결과적으로 별칭 버전이 아닌 일반 명령이 호출됩니다.

Linux에서 별칭 및 셸 함수를 만드는 방법은 무엇입니까?

별칭 명령에 대한 도움말:

  • –도움말 옵션 :도움말 정보를 표시합니다.

구문:

alias --help
Linux에서 별칭 및 셸 함수를 만드는 방법은 무엇입니까?

쉘 함수

때로는 하나 이상의 인수를 허용할 수 있는 별칭이 필요합니다. 즉, bash 함수를 사용할 때입니다.

구문

bash 함수를 만드는 것은 그리 어렵지 않습니다. 다음 두 가지 형식 중 하나로 선언할 수 있습니다.

function_name () {

  [commands]

}

또는

function function_name {

  [commands]

}

이 두 번째 형식을 한 줄로 압축하고 명령을 세미콜론으로 구분할 수 있습니다. 세미콜론은 반드시 마지막 명령 뒤에도 옵니다:

function_name () { command1; command2; }

별칭과 같이 Bash 셸 함수는 ".bashrc" 파일 내에서 정의할 수 있지만 종종 자체 정의 파일에 넣는 것이 더 깔끔합니다. ".bash_aliases" 파일에 사용된 규칙에 따라 ".bash_functions"라고 부를 것입니다.

이는 ".bashrc" 파일이 정의에서 읽도록 지시해야 함을 의미합니다. ".bash_aliases" 파일에서 읽는 코드 조각을 복사하고 수정할 수 있습니다. 다음 명령어로 gedit를 실행하고 '.bashrc' 파일을 로드합니다.

gedit .bashrc
Linux에서 별칭 및 셸 함수를 만드는 방법은 무엇입니까?

아래 표시된 강조 표시된 섹션을 추가해야 합니다.

별칭 섹션을 강조표시하고 Ctrl+C를 누른 다음 새 섹션을 원하는 위치로 이동하고 Ctrl+V를 눌러 텍스트 사본을 붙여넣을 수 있습니다. 그런 다음 ".bash_aliases"라고 표시된 두 곳을 ".bash_functions"로 변경하기만 하면 됩니다.

Linux에서 별칭 및 셸 함수를 만드는 방법은 무엇입니까?

변경 사항을 저장하고 gedit를 닫을 수 있습니다.

이제 ".bash_functions" 파일을 생성 및 편집하고 그 안에 함수 정의를 넣을 것입니다.

touch .bash_functions

gedit .bash_functions
Linux에서 별칭 및 셸 함수를 만드는 방법은 무엇입니까?

이렇게 하면 gedit에서 빈 '.bash_functions' 파일이 열립니다.

호출되는 간단한 기능을 추가할 것입니다. up은 숫자인 단일 명령줄 매개변수를 사용합니다. 그런 다음 up은 cd ..를 해당 횟수만큼 호출합니다. 따라서 명령을 사용한 경우

up 2

up은 cd ..를 두 번 호출하고 디렉토리 트리에서 두 단계 위로 이동합니다.

함수를 정의하는 다양한 방법이 있습니다. 여기 하나가 있습니다:

function up() {

기능이라는 단어는 선택사항입니다. 전통주의자라면 사용하고, 입력하기 귀찮으면 생략하세요.

다음은 gedit의 전체 기능입니다.

Linux에서 별칭 및 셸 함수를 만드는 방법은 무엇입니까?
function up() {

이것은 함수 정의의 시작을 표시하고 함수의 이름을 위로 지정합니다.

levels=$1

그러면 수준이라는 변수가 생성됩니다. 첫 번째 매개변수의 값으로 설정합니다. 이 매개변수는 사용자가 함수를 호출할 때 제공한 숫자가 됩니다. $1은 '첫 번째 명령줄 매개변수'를 의미합니다.

while [ "$levels" -gt "0" ]; do

그런 다음 " "/"레벨 " 양수이거나 0보다 크면 루프 본문에 포함된 작업을 수행합니다."

루프 본문에는 두 개의 명령이 있습니다. 그들은:

cd ..

디렉토리 트리에서 한 단계 위로 이동합니다.

levels=$(($levels - 1))

현재 값보다 하나 작은 새 값으로 수준을 설정합니다.

그런 다음 루프의 맨 위로 돌아가서 수준 값과 0 값을 다시 한 번 비교합니다. "levels"가 0보다 크면 루프 본문이 다시 실행됩니다. 양수가 아니거나 0보다 크면 루프가 종료되고 done 문으로 이동하고 함수가 종료됩니다.

저장 이러한 변경 사항을 확인하고 gedit를 닫습니다. .

".bash_functions" 파일에서 명령을 읽고 실행해야 하는 ".bashrc"에서 명령을 읽고 실행할 것입니다.

. .bashrc
Linux에서 별칭 및 셸 함수를 만드는 방법은 무엇입니까?

디렉토리 트리의 특정 위치로 이동하고 up을 사용하여 디렉토리 트리의 '더 높은' 지점으로 다시 이동하여 기능을 테스트할 수 있습니다.

cd ./work/backup/

up 2
Linux에서 별칭 및 셸 함수를 만드는 방법은 무엇입니까?

기능이 작동합니다. 트리에서 디렉터리 수준을 두 단계 위로 이동했습니다.

유형 추적

별칭 모음과 함수 라이브러리를 구축할 때 특정 명령이 별칭인지 함수인지 기억하기 어려워질 수 있습니다. "유형"을 사용할 수 있습니다. 알림을 표시합니다. 여기서 멋진 점은 정의도 볼 수 있다는 것입니다.

ftc 에서 type을 사용해 보겠습니다. 별칭 및 up 함수

type ftc

type up
입력 Linux에서 별칭 및 셸 함수를 만드는 방법은 무엇입니까?

각각의 명령이 정의와 함께 어떤 유형인지 알려주는 매우 유용한 정보를 얻을 수 있습니다.

수집 시작

별칭과 함수는 명령줄 사용 속도를 크게 높일 수 있습니다. 명령 시퀀스를 단축할 수 있으며 표준 명령과 함께 항상 사용하는 옵션을 베이크인할 수 있습니다. 멋진 한 줄짜리 또는 유용한 기능을 볼 때마다 이를 조정하고 개인화한 다음 ".bash_aliases" 또는 ".bash_functions" 파일에 추가할 수 있습니다. 이를 광범위하게 사용하면 쉘에서의 시간을 더 즐겁고 덜 복잡하게 만들 수 있습니다.

잠재적으로 파괴적인 동작으로 기존 명령을 재정의하지 않도록 주의하십시오. 반대를 수행하고 명령을 더 안전한 변형으로 별칭 지정하는 경우(예를 들어, 재귀적으로 삭제하기 전에 항상 확인을 요청함) 일단 의존하게 되면 시스템이 없는 시스템을 처음 사용할 때 다시 물어뜯을 수 있습니다. . 별칭을 만들 수 있는 후보를 찾으려면 가장 일반적으로 사용되는 명령에 대한 기록을 검색하는 것이 좋습니다.