JShell: 3. 명령

JShell: 3. 명령

이 문서는 Java9의 오라클 공식 문서 중 JShell 사용자 가이드의 한글화 문서입니다. 원문 정보는 다음과 같습니다.

JShell 사용자 가이드의 한글화 문서는 다음과 같이 구성됩니다.


JShell 사용자 가이드: 3. 명령


JShell 명령은 JShell 세션에 입력되며, 환경을 제어하고 정보를 출력하는 기능을 제공합니다.

  • 문서 구성
    • JShell 명령 소개
    • JShell 명령의 텝 자동완성
    • 명령어 약어

JShell 명령 소개

JShell 명령은 환경을 제어하고, JShell 세션의 정보를 출력합니다.

JShell 명령은 슬래쉬(/)로 시작하기 때문에 스니펫과 명확하게 구분됩니다. “/var”, “/methods” 그리고 “/types” 명령을 사용하여 현재 세션에 정의된 변수, 메서드 및 타입 정보를 확인할 수 있습니다. “/list” 명령을 사용하면 입력된 스니펫 목록을 확인할 수 있습니다. 다음 예제는 이런 명령의 사용 방법과 출력 결과를 설명합니다.

jshell> /vars
|    int x = 45
|    int $3 = 4
|    String $5 = "OceanOcean"

jshell> /methods
|    twice (String)String

jshell> /list

   1 : System.out.println("Hi");
   2 : int x = 45;
   3 : 2 + 2
   4 : String twice(String s) {
         return s + s;
       }
   5 : twice("Ocean")

변수의 유형과 값 및 메소드의 타입 시그니처(Signature)가 출력됩니다.

JShell에는 JShell이 시작할 때, 기본 시작 스크립트(Default Startup Script)가 자동으로 실행됩니다. 사용자는 별도 부가적인 작업없이 바로 코드 작업을 할 수 있습니다. 시작 스크립트의 실행 항목은 “/list -start” 또는 “/list -all” 명령을 사용하여 확인할 수 있습니다.

jshell> /list -all

  s1 : import java.util.*;
  s2 : import java.io.*;
  s3 : import java.math.*;
  s4 : import java.net.*;
  s5 : import java.util.concurrent.*;
  s6 : import java.util.prefs.*;
  s7 : import java.util.regex.*;
   1 : System.out.println("Hi");
   2 : int x = 45;
   3 : 2 + 2
   4 : String twice(String s) {
         return s + s;
       }
   5 : twice("Ocean")

기본 시작 스크립트는 기본 import 문으로 구성됩니다. “/set start” 명령을 이용하여 시작 항목의 개인화 설정을 할 수 있습니다. 이 명령에 대한 자세한 정보는 “/help /set start” 명령으로 확인 가능합니다. “/save -start” 명령은 현재 시작 스크립트를 자신의 시작 스크립트의 시작점으로 저장합니다.

다른 중요한 명령으로는 JShell을 종료하는 “/exit”, 스니펫을 저장하는 “/save“ 그리고 파일에서 스니펫을 가져오는 “/open“이 있습니다.

JShell 명령 목록은 “/help” 명령으로 확인 가능합니다.

JShell 명령의 텝 자동완성

스니펫을 작성할 때와 마찬가지로, 명령과 명령 옵션을 입력할 때, 텝 키를 사용하여 명령과 명령 옵션의 자동 완성 기능을 사용할 수 있습니다. 현재까지 입력으로 명령과 명령의 옵션의 자동 완성을 결정할 수 없는 상황에서는 가능한 선택 사항을 모두 제공합니다.

다음 예제는 명령 슬래시(/) 다음에 텝 키를 눌렀을 때의 피드백 결과입니다.

jshell> /<Tab>
/!          /?          /drop       /edit       /env        /exit       /help
/history    /imports    /list       /methods    /open       /reload     /reset
/save       /set        /types      /vars

<press tab again to see synopsis>

jshell> /

명령 및 명령 옵션의 자동 완성이 가능한 상황에서는 그 자리에서 완료됩니다. 예를 들어서, /l을 입력하고 Tab(텝 키)을 누르면 그 입력줄에 “/list“이 출력됩니다.

jshell> /l<Tab>

jshell> /list

텝 자동 완성 기능은 명령 옵션도 지원합니다. 다음은 “/list” 명령의 옵션을 출력하기 위해서 텝 키를 사용하는 예제입니다.

jshell> /list -<Tab>
-all       -history   -start     

<press tab again to see synopsis>

jshell> /list -

위 예제서 “명령의 간단한 설명을 출력하려면 텝 키를 다시 입력“과 같은 메세지를 주목하시기 바랍니다. 텝 키를 입력하면 명령에 대한 간단한 설명이 출력됩니다. 텝 키를 3번 입력하면 명령이 도움말 문서가 출력됩니다. 다음 예제는 텝 키를 두 번과 세 번 눌렀을 때의 결과입니다.

jshell> /list -<Tab>
list the source you have typed

<press tab again to see full documentation>

jshell> /list -<Tab>
Show the source of snippets, prefaced with the snippet id.

/list
    List the currently active snippets of code that you typed or read with /open

/list -start
    List the automatically evaluated start-up snippets

/list -all
    List all snippets including failed, overwritten, dropped, and start-up

/list <name>
    List snippets with the specified name (preference for active snippets)

/list <id>
    List the snippet with the specified snippet id

jshell> /list -

고유한 인수의 완성은 제자리에서 수행됩니다. 예를 들어 “/list -a “을 입력하면 -all 옵션이 자동으로 표시됩니다.

jshell> /list -a<Tab>

jshell> /list -all

스니펫 이름도 Tab을 사용하여 완성할 수 있습니다. 예를 들어 JShell 세션에서 이전에 volume 메서드를 정의해다면, 메서드 이름을 일부 입력한 후 Tab 키를 누르면 전체 메서드 이름이 표시됩니다.

jshell> /ed v<Tab>

jshell> /ed volume

명령에 파일명을 인수로 입력해야 하는 위치에서 텝 키를 사용하면 현재 사용 가능한 파일이 표시됩니다.

jshell> /open <Tab>
myfile1      myfile2    definitions.jsh

<press tab again to see synopsis>

jshell> /open

고유한 파일 이름 완성은 제자리에서 수행됩니다.

jshell> /open d<Tab>

jshell> /open definitions.jsh

명령 약어

약어를 사용하여 타이핑 양을 줄일 수 있습니다. 명령, /set subcommand, 명령 인수 및 명령 옵션은 약어가 고유한 경우 모두 축약될 수 있습니다.

/l“로 시작하는 유일한 명령은 “/list“입니다. “/list” 명령 옵션 중에서 “-a“로 시작하는 옵션은 “-all“입니다. 따라서 “/list -all” 명령은 다음 약어로 실행할 수 있습니다.

jshell> /l -a

또한 /se로 시작하는 유일한 명령은 /set이고, fe로 시작하는 유일한 /set 서브 명령은 feedback입니다. 그리고 v로 시작하는 유일한 피드백 모드는 verbose 입니다. (전제 조건: “v”로 시작하는 사용자 정의 피드백 모드가 없는 상황) 따라서 verbose를 피드백 모드로 설정하는 명령은 다음과 같은 약어로 처리할 수 있습니다.

jshell> /se fe v

주의할 점은 s는 약어로 사용할 수 없다는 것입니다. set 명령과 save 명령은 모두 “s” 문자로 시작합니다. 약어가 확실하지 않은 경우, 탭 완성을 사용하여 옵션을 확인할 수 있습니다.

작성자: 김태완
김태완 avatar
작성자: 김태완
1999년 부터 Java, Framework, Middleware, SOA, DB Replication, Cache, CEP, NoSQL, Big Data, Cloud를 키워드로 살아왔습니다. 현재는 한국오라클 빅데이터 팀 소속으로 빅데이터와 Machine Learning을 중점에 두고 있습니다. 최근에는 Deep Learning을 열공 중입니다.
E-mail: taewanme@gmail.com