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

데이터 유형

전통적인 유닉스 셸 명령은 텍스트 문자열을 사용하여 서로 통신합니다. 한 명령은 표준 출력(종종 stdout으로 축약됨)에 텍스트를 쓰고 다른 명령은 표준 입력(또는 stdin)에서 텍스트를 읽습니다. 이를 통해 여러 명령을 함께 결합하여 "파이프라인"이라고 하는 것을 통해 통신할 수 있습니다.

누셸은 이 접근 방식을 수용하고 문자열 외에 다른 유형의 데이터를 포함하도록 확장합니다.

많은 프로그래밍 언어와 마찬가지로 Nu는 간단하고 구조화된 데이터 유형 집합을 사용하여 데이터를 모델링합니다. 간단한 데이터 유형에는 정수, 부동 소수점, 문자열 및 부울이 포함됩니다. 날짜, 파일 크기 및 시간 기간에 대한 특수 유형도 있습니다.

describe 명령은 데이터 값의 유형을 반환합니다.

42 | describe
# => int

한눈에 보는 유형

유형예시
정수-65535
부동 소수점 (소수)9.9999, Infinity
문자열"hole 18", 'hole 18', `hole 18`, hole18, r#'hole18'#
부울true
날짜2000-01-01
기간2min + 12sec
파일 크기64mb
범위0..4, 0..<5, 0.., ..4
이진0x[FE FF]
목록[0 1 'two' 3]
레코드{name:"Nushell", lang: "Rust"}
테이블[{x:12, y:15}, {x:8, y:9}], [[x, y]; [12, 15], [8, 9]]
클로저{|e| $e + 1 | into string }, { $in.name.0 | path exists }
셀 경로$.name.0
블록if true { print "hello!" }, loop { print "press ctrl-c to exit" }
Null (Nothing)null
Anylet p: any = 5

기본 데이터 유형

정수

설명:소수 부분이 없는 숫자(양수, 음수 및 0)
주석:int
리터럴 구문:소수점이 없는 10진수, 16진수, 8진수 또는 2진수 숫자 값입니다. 예: -100, 0, 50, +50, 0xff (16진수), 0o234 (8진수), 0b10101 (2진수)
참조:언어 참조 - 정수

간단한 예:

10 / 2
# => 5
5 | describe
# => int

부동 소수점/소수

설명:소수 부분이 있는 숫자
주석:float
리터럴 구문:소수점이 포함된 10진수 숫자 값입니다. 예: 1.5, 2.0, -15.333
참조:언어 참조 - 부동 소수점

간단한 예:

2.5 / 5.0
# => 0.5

팁

대부분의 프로그래밍 언어와 마찬가지로 누셸의 소수 값은 근사치입니다.

10.2 * 5.1
# => 52.01999999999999

텍스트/문자열

설명:텍스트를 나타내는 일련의 문자
주석:string
리터럴 구문:문자열 작업 참조
참조:문자열 처리
언어 참조 - 문자열

많은 언어와 마찬가지로 누셸은 문자열 값을 지정하는 여러 가지 방법과 문자열로 작업하기 위한 수많은 명령을 제공합니다.

간단한 (의무적인) 예:

let audience: string = "World"
$"Hello, ($audience)"
# => Hello, World

부울

설명:참 또는 거짓 값
주석:bool
리터럴 구문:리터럴 true 또는 false
참조:언어 참조 - 부울

부울은 일반적으로 비교의 결과입니다. 예시:

let mybool: bool = (2 > 1)
$mybool
# => true
let mybool: bool = ($env.HOME | path exists)
$mybool
# => true

부울 결과는 일반적으로 실행 흐름을 제어하는 데 사용됩니다.

let num = -2
if $num < 0 { print "It's negative" }
# => It's negative

날짜

설명:국제 표준 날짜-시간 설명자를 사용하여 특정 시점을 나타냅니다.
주석:datetime
리터럴 구문:언어 가이드 - 날짜 참조

간단한 예:

date now
# => Mon, 12 Aug 2024 13:59:22 -0400 (now)
# 유닉스 에포크로 포맷
date now | format date '%s'
# => 1723485562

기간

설명:시간의 경과 단위를 나타냅니다.
주석:duration
리터럴 구문:언어 참조 - 기간

기간은 소수 값과 계산을 지원합니다.

간단한 예:

3.14day
# => 3day 3hr 21min
30day / 1sec  # 30일은 몇 초입니까?
# => 2592000

파일 크기

설명:파일 크기 또는 바이트 수를 나타내는 특수 숫자 유형
주석:filesize
리터럴 구문:언어 참조 - 파일 크기

누셸에는 파일 크기에 대한 특수 유형도 있습니다.

기간과 마찬가지로 누셸은 소수 파일 크기와 계산을 지원합니다.

0.5kB
# => 500 B
1GiB / 1B
# => 1073741824
(1GiB / 1B) == 2 ** 30
# => true

단위 및 자세한 내용의 전체 목록은 언어 참조를 참조하십시오.

범위

설명:시작 값에서 끝 값까지의 값 범위를 선택적 보폭으로 설명합니다.
주석:range
리터럴 구문:<start_value>..<end_value>. 예: 1..10.
<start_value>..<second_value>..<end_value>. 예: 2..4..20
참조:언어 가이드 - 범위

간단한 예:

1..5
# => ╭───┬───╮
# => │ 0 │ 1 │
# => │ 1 │ 2 │
# => │ 2 │ 3 │
# => │ 3 │ 4 │
# => │ 4 │ 5 │
# => ╰───┴───╯

팁

seq char 명령과 seq date 명령을 사용하여 범위와 유사한 형식으로 문자 목록을 쉽게 만들 수도 있습니다.

셀 경로

설명:구조화된 값의 내부 값으로 이동하는 데 사용되는 표현식입니다.
주석:cell-path
리터럴 구문:점으로 구분된 행(정수) 및 열(문자열) ID 목록입니다. 예: name.4.5.
선택적으로 변수에 셀 경로를 할당하는 경우와 같이 명확성을 위해 선행 $.를 사용합니다.
참조:언어 참조 - 셀 경로
구조화된 데이터 탐색 및 액세스 장.

간단한 예:

let cp = $.2
# 인덱스 2의 목록 항목 반환
[ foo bar goo glue ] | get $cp
# => goo

클로저

설명:익명 함수, 종종 람다 함수라고 하며, 매개변수를 받고 범위 외부의 변수를 닫습니다(즉, 사용합니다).
주석:closure
리터럴 구문:{|args| expressions }
참조:언어 참조 - 클로저

간단한 예:

이 클로저는 비교의 부울 결과를 반환한 다음 where 명령에서 사용하여 5보다 큰 모든 값을 반환합니다.

let compare_closure = {|a| $a > 5 }
let original_list = [ 40 -4 0 8 12 16 -16 ]
$original_list | where $compare_closure
# => ╭───┬────╮
# => │ 0 │ 40 │
# => │ 1 │  8 │
# => │ 2 │ 12 │
# => │ 3 │ 16 │
# => ╰───┴────╯

클로저는 필터를 통해 각 데이터 행에서 실행될 수 있는 코드를 나타내는 유용한 방법입니다.

이진 데이터

설명:이진 데이터를 나타냅니다.
주석:binary
리터럴 구문:0x[ffffffff] - 16진수 기반 이진 표현
0o[1234567] - 8진수 기반 이진 표현
0b[10101010101] - 2진수 기반 이진 표현
참조:언어 가이드 - 이진

이미지 파일의 데이터와 같은 이진 데이터는 원시 바이트 그룹입니다.

간단한 예 - JPEG 파일이 올바른 식별자로 시작하는지 확인합니다.

open nushell_logo.jpg
| into binary
| first 2
| $in == 0x[ff d8]
# => true

구조화된 데이터 유형

누셸은 위의 기본 유형을 포함할 수 있는 구조화된 데이터 유형 모음을 포함합니다. 예를 들어, 단일 float 대신 구조화된 데이터는 동일한 값에 온도 측정값의 list와 같이 여러 float 값을 나타내는 방법을 제공합니다. 누셸은 다음 구조화된 데이터 유형을 지원합니다.

목록

설명:모든 유형의 0개 이상의 값의 순서 있는 시퀀스
주석:list
리터럴 구문:언어 가이드 - 목록
참조:목록 작업
구조화된 데이터 탐색 및 액세스

간단한 예:

[Sam Fred George]
# => ╭───┬────────╮
# => │ 0 │ Sam    │
# => │ 1 │ Fred   │
# => │ 2 │ George │
# => ╰───┴────────╯

레코드

설명:문자열 키를 다양한 데이터 값과 연결하는 키-값 쌍을 보유합니다.
주석:record
리터럴 구문:언어 가이드 - 레코드
참조:레코드 작업
구조화된 데이터 탐색 및 액세스

간단한 예:

let my_record = {
  name: "Kylian"
  rank: 99
}
$my_record
# => ╭───────┬────────────╮
# => │ name  │ Kylian     │
# => │ rank  │ 99         │
# => ╰───────┴────────────╯

$my_record | get name
# =>  Kylian

테이블

설명:각 셀이 모든 기본 또는 구조화된 데이터 유형을 보유할 수 있는 열과 행이 모두 있는 2차원 컨테이너
주석:table
참조:테이블 작업
구조화된 데이터 탐색 및 액세스
언어 가이드 - 테이블

테이블은 누셸의 핵심 데이터 구조입니다. 명령을 실행하면 많은 명령이 출력으로 테이블을 반환하는 것을 볼 수 있습니다. 테이블에는 행과 열이 모두 있습니다.

팁

내부적으로 테이블은 단순히 레코드 목록입니다. 즉, 테이블의 특정 행을 추출하거나 격리하는 모든 명령은 레코드를 생성합니다. 예를 들어, 목록에서 사용될 때 get 0은 첫 번째 값을 추출합니다. 그러나 테이블(레코드 목록)에서 사용될 때 레코드를 추출합니다.

[{x:12, y:5}, {x:3, y:6}] | get 0
# => ╭───┬────╮
# => │ x │ 12 │
# => │ y │ 5  │
# => ╰───┴────╯

기타 데이터 유형

Any

설명:유형 주석 또는 서명에서 사용될 때 모든 유형과 일치합니다. 즉, 다른 유형의 "상위 집합"입니다.
주석:any
리터럴 구문:해당 없음 - 모든 리터럴 값을 any 유형에 할당할 수 있습니다.
참조:언어 참조 - Any

블록

설명:일부 누셸 키워드(예: if 및 for)에서 사용하는 구문 형식
주석:해당 없음
리터럴 구문:해당 없음
참조:언어 참조 - 블록

간단한 예:

if true { print "It's true" }

위의 { print "It's true" } 부분은 블록입니다.

Nothing (Null)

설명:nothing 유형은 다른 값이 없음을 나타내는 데 사용됩니다.
주석:nothing
리터럴 구문:null
참조:언어 참조 - Nothing

간단한 예

선택적 연산자 ?를 사용하면 요청된 셀 경로가 없는 경우 null을 반환합니다.

let simple_record = { a: 5, b: 10 }
$simple_record.a?
# => 5
$simple_record.c?
# => 아무것도 출력되지 않음
$simple_record.c? | describe
# => nothing
$simple_record.c? == null
# => true
GitHub에서 수정하기
Contributors: Taeyoon Kim, ImgBotApp, google-labs-jules[bot], deepthought
Prev
누셸 기본 사항
Next
데이터 로드