JShell: 3. 명령
이 문서는 Java9의 오라클 공식 문서 중 JShell 사용자 가이드의 한글화 문서입니다. 원문 정보는 다음과 같습니다.
- 원문: https://docs.oracle.com/javase/9/jshell/commands.htm
- 제목: Java Platform, Standard Edition Java Shell User’s Guide: 3 Commands
- 문서번호: E87478-01
- 배포: 2017년 09월
- 라이센스: 원본 문서 라이센스를 준수합니다.
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
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” 문자로 시작합니다. 약어가 확실하지 않은 경우, 탭 완성을 사용하여 옵션을 확인할 수 있습니다.