Nushell
문서
쿡북
블로그
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
  • 한국어
GitHub
문서
쿡북
블로그
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
  • 한국어
GitHub
  • 소개
  • 설치하기
    • 기본 셸
  • 시작하기
    • 빠른 둘러보기
    • 시스템 이동
    • 누셸 방식으로 생각하기
    • 누셸 치트 시트
  • Nu 기본
    • 데이터 유형
    • 데이터 로드
    • 파이프라인
    • 문자열 작업
    • 목록 작업
    • 레코드 작업
    • 테이블 작업
    • 구조화된 데이터 탐색 및 액세스
    • 특수 변수
  • Nu에서 프로그래밍하기
    • 사용자 지정 명령
    • 별칭
    • 연산자
    • 변수
    • 제어 흐름
    • 스크립트
    • 모듈
      • 모듈 사용하기
      • 모듈 만들기
    • 오버레이
    • 정렬
    • 누셸 코드 테스트
    • 모범 사례
  • 셸로서의 Nu
    • 구성
    • 환경
    • 표준 출력, 표준 오류 및 종료 코드
    • 시스템(외부) 명령 실행
    • 타사 프롬프트 구성 방법
    • 디렉터리 스택
    • Reedline, Nu의 줄 편집기
    • 사용자 지정 완성
    • 외부 명령
    • Nu의 색상 지정 및 테마 설정
    • 후크
    • 백그라운드 작업
  • Nu로 전환하기
    • Bash에서 오신 분들을 위해
    • CMD.EXE에서 오신 분들을 위해
    • 다른 셸 및 도메인 특정 언어의 Nu 맵
    • 명령형 언어의 Nu 맵
    • 함수형 언어의 Nu 맵
    • 누셸 연산자 맵
  • 디자인 노트
    • 누셸 코드가 실행되는 방법
  • (약간)고급 사용법
    • 표준 라이브러리 (미리보기)
    • 데이터프레임
    • 메타데이터
    • 나만의 오류 만들기
    • 병렬 처리
    • 플러그인
    • explore

외부 명령

외부 명령(바이너리 또는 응용 프로그램이라고도 함)을 사용하는 것은 모든 셸의 기본 기능입니다. 누셸은 사용자 지정 명령이 다음과 같은 많은 기능을 활용할 수 있도록 합니다.

  • 구문 분석 시 형식 검사
  • 완성
  • 구문 강조

이러한 기능에 대한 지원은 extern 키워드를 사용하여 제공되며, 이를 통해 외부 명령에 대한 전체 서명을 정의할 수 있습니다.

다음은 ssh 명령에 대한 간단한 예입니다.

module "ssh extern" {
  def complete_none [] { [] }

  def complete_ssh_identity [] {
    ls ~/.ssh/id_*
    | where {|f|
        ($f.name | path parse | get extension) != "pub"
      }
    | get name
  }

  export extern ssh [
    destination?: string@complete_none  # 대상 호스트
    -p: int                             # 대상 포트
    -i: string@complete_ssh_identity    # ID 파일
  ]
}
use "ssh extern" ssh

여기서 구문은 사용자 지정 명령을 정의할 때 def 키워드의 구문과 유사합니다. 플래그, 위치 매개변수, 형식, 완성기 등을 설명할 수 있습니다.

이 구현은 다음을 수행합니다.

  • ssh -에 대한 가능한 완성으로 -p 및 -i(설명 포함)를 제공합니다.

  • 구문 분석 시 형식 검사를 수행합니다. 포트 번호에 대해 int가 아닌 값을 사용하려고 하면 오류가 발생합니다(오류 조건 구문 강조 표시).

  • 인수 모양을 기반으로 구문 분석 시 구문 강조를 제공합니다.

  • -i(ID) 옵션에 대한 완성 값으로 ~/.ssh의 모든 개인 키 파일을 제공합니다.

  • 대상 호스트에 대한 완성을 제공하지 않습니다. 빈 목록을 반환하는 완성기가 없으면 누셸은 기본 "파일" 완성기를 사용하려고 시도합니다.

    SSH 구성 파일에서 호스트를 검색하는 구현은 Nu_scripts 저장소를 참조하십시오.

참고

인수 문서화 목적으로 동일한 줄에 계속되는 누셸 주석은 # 파운드 기호 앞에 공백이 필요합니다.

형식 지정자

위치 매개변수는 ?를 사용하여 선택적으로 만들 수 있습니다(위에서 본 것과 같이). 나머지(rest) 매개변수는 매개변수 이름 앞에 ...를 사용하여 일치시킬 수 있습니다. 예시:

export extern "git add" [
  ...pathspecs: path
  # …
]

제한 사항

현재 extern 구문에는 몇 가지 제한 사항이 있습니다. 누셸에서 플래그와 위치 인수는 매우 유연합니다. 플래그는 위치 인수 앞에 올 수 있고, 플래그는 위치 인수에 혼합될 수 있으며, 플래그는 위치 인수 뒤에 올 수 있습니다. 많은 외부 명령은 이렇게 유연하지 않습니다. 외부에서 요구하는 스타일에 맞게 플래그와 위치 인수의 특정 순서를 요구하는 방법은 아직 없습니다.

두 번째 제한 사항은 일부 외부 명령은 플래그와 값을 구분하기 위해 =를 사용하여 플래그를 전달해야 한다는 것입니다. 누셸에서 =는 편리한 선택적 구문이며 현재 사용을 요구하는 방법은 없습니다.

또한 캐럿 기호(예: ^ssh)를 통해 호출된 외부 명령은 extern에서 인식되지 않습니다.

마지막으로 일부 외부 명령은 단일 선행 하이픈을 사용하여 -long 인수를 지원합니다. 누셸 extern 구문은 아직 이러한 인수를 나타낼 수 없습니다.

GitHub에서 수정하기
Contributors: Taeyoon Kim, ImgBotApp, google-labs-jules[bot], deepthought
Prev
사용자 지정 완성
Next
Nu의 색상 지정 및 테마 설정