16.9. 콘솔 사용
16.9.1. 사용 가능한 명령 링크 복사링크가 클립보드에 복사되었습니다!
콘솔에서 사용 가능한 명령 목록을 보려면 도움말 을 사용할 수 있습니다.
간단한 설명과 함께 모든 명령 목록이 있습니다.
tab 키를 사용하여 모든 명령의 빠른 목록을 가져올 수 있습니다.
karaf@root()> Display all 294 possibilities? (y or n) ...
karaf@root()> Display all 294 possibilities? (y or n)
...
16.9.2. 하위 쉘 및 완료 모드 링크 복사링크가 클립보드에 복사되었습니다!
명령에는 범위와 이름이 있습니다. 예를 들어, 명령 에는 범위가 있으며 feature:listlist as name이 있습니다.
카프는 범위별로 명령을 "그룹"으로 합니다. 각 범위는 하위 쉘을 형성합니다.
정규화된 이름(scope:name)을 사용하여 명령을 직접 실행할 수 있습니다.
karaf@root()> feature:list ...
karaf@root()> feature:list
...
또는 하위 쉘을 입력하고 명령 컨텍스트를 하위 쉘로 입력합니다.
karaf@root()> feature karaf@root(feature)> list
karaf@root()> feature
karaf@root(feature)> list
하위 쉘 이름(여기 기능)을 입력하여 직접 하위 쉘을 입력할 수 있습니다. 하위 쉘에서 다른 쉘로 직접 "switch"할 수 있습니다.
karaf@root()> feature karaf@root(feature)> bundle karaf@root(bundle)>
karaf@root()> feature
karaf@root(feature)> bundle
karaf@root(bundle)>
프롬프트에 () 사이의 현재 하위 쉘이 표시됩니다.
exit 명령은 상위 하위 쉘로 이동합니다.
karaf@root()> feature karaf@root(feature)> exit karaf@root()>
karaf@root()> feature
karaf@root(feature)> exit
karaf@root()>
완료 모드는 tab 키의 동작과 help 명령을 정의합니다.
다음 세 가지 모드를 사용할 수 있습니다.
- GLOBAL
- FIRST
- 하위 쉘
etc/org.apache.karaf.shell.cfg 파일의 completionMode 속성을 사용하여 기본 완료 모드를 정의할 수 있습니다. 기본적으로 다음을 수행할 수 있습니다.
completionMode = GLOBAL
completionMode = GLOBAL
shell:completion 명령을 사용하여 "오전기 중에"(카운트 쉘 콘솔을 사용하는 동안) 완료 모드를 변경할 수도 있습니다.
karaf@root()> shell:completion GLOBAL karaf@root()> shell:completion FIRST karaf@root()> shell:completion FIRST
karaf@root()> shell:completion
GLOBAL
karaf@root()> shell:completion FIRST
karaf@root()> shell:completion
FIRST
shell:completion 은 사용된 현재 완료 모드에 대해 알려줍니다. 원하는 새 완료 모드를 제공할 수도 있습니다.
GLOBAL 완료 모드는 Karaf 4.0.0 (대부분의 전환 목적으로)의 기본 완료 모드입니다.
GLOBAL 모드는 실제로 하위 쉘을 사용하지 않습니다. 이전 Karaf 버전과 동일한 동작입니다.
tab 키를 입력하면 하위 쉘이 무엇이든 완료 시 모든 명령 및 모든 별칭이 표시됩니다.
첫 번째 완료 모드는 GLOBAL 완료 모드의 대안입니다.
루트 수준 하위 쉘에 tab 키를 입력하면 완료 시 모든 하위 쉘의 명령과 별칭(GLOBAL 모드)이 표시됩니다. 그러나 하위 쉘에 있는 경우 tab 키를 입력하면 완료에 현재 하위 쉘의 명령만 표시됩니다.
SUBSHELL 완료 모드는 실제 하위 쉘 모드입니다.
루트 수준에서 Tab 키를 입력하면 완료에 하위 쉘 명령(하위 쉘로 이동)과 글로벌 별칭이 표시됩니다. 하위 쉘에 있으면 TAB 키를 입력하면 완료에 현재 하위 쉘의 명령이 표시됩니다.
16.9.3. UNIX와 같은 환경 링크 복사링크가 클립보드에 복사되었습니다!
Karaf 콘솔은 환경과 같은 전체 Unix를 제공합니다.
16.9.3.1. 도움말 또는 사람 링크 복사링크가 클립보드에 복사되었습니다!
이미 사용 가능한 모든 명령을 표시하는 help 명령의 사용법을 살펴보았습니다.
그러나 help 명령을 사용하여 명령 또는 help 명령의 별칭인 man 명령에 대한 세부 정보를 가져올 수도 있습니다. 명령에 --help 옵션을 사용하여 다른 양식을 사용하여 명령 도움말을 가져올 수도 있습니다.
따라서 이러한 명령
karaf@root()> help feature:list karaf@root()> man feature:list karaf@root()> feature:list --help
karaf@root()> help feature:list
karaf@root()> man feature:list
karaf@root()> feature:list --help
모두 동일한 도움말 출력을 생성합니다.
16.9.3.2. 완료 링크 복사링크가 클립보드에 복사되었습니다!
Tab 키를 입력하면 Karaf가 완료하려고 합니다.
- subshell
- 명령
- 별칭
- 명령 인수
- 명령 옵션
16.9.3.3. 별칭 링크 복사링크가 클립보드에 복사되었습니다!
별칭은 지정된 명령과 연결된 다른 이름입니다.
shell:alias 명령은 새 별칭을 생성합니다. 예를 들어 실제 feature:list -i 명령에 대한 list- installed-features 별칭을 생성하려면 다음을 수행할 수 있습니다.
로그인 시 Apache Karaf 콘솔은 별칭을 생성할 수 있는 etc/shell.init.script 파일을 읽습니다. Unix의 bashrc 또는 프로필 파일과 유사합니다.
여기에서는 기본적으로 사용 가능한 별칭을 확인할 수 있습니다.
-
LD는로그를 표시하는 짧은 양식입니다(log:display명령). -
LDE는 예외를 표시하는 짧은 양식입니다(log:exception-display명령). -
La는 모든 번들을 나열하는 짧은 양식입니다(bundle:list -t 0명령) -
LS는 모든 서비스를 나열하는 짧은 양식입니다(service:list명령). -
CL은 모든 구성을 나열하는 짧은 양식입니다(config:list명령). -
halt는 Apache Karaf를 종료하는 간단한 양식입니다(system:shutdown -h -f명령). -
도움말은 도움말을 표시하는 간단한 양식입니다(
*:명령까지)help -
man은 도움말과 동일합니다(helpcommand) -
log:list는 모든 로거 및 수준 (log:get ALL명령)을 표시합니다.
etc/shell.init.script 파일에서 고유한 별칭을 생성할 수 있습니다.
16.9.3.4. 키 바인딩 링크 복사링크가 클립보드에 복사되었습니다!
대부분의 Unix 환경에서와 마찬가지로 Karaf 콘솔은 몇 가지 주요 바인딩을 지원합니다.
- 명령 기록에서 탐색할 화살표 키
- CTRL-D to logout/shutdown Karaf
- CTRL-R: 이전에 실행된 명령을 검색
- CTRL-U를 사용하여 현재 행을 제거합니다.
16.9.3.5. Pipe 링크 복사링크가 클립보드에 복사되었습니다!
한 명령의 출력을 입력으로 다른 명령에 파이프할 수 있습니다. | 문자를 사용하는 파이프입니다.
karaf@root()> feature:list |grep -i war pax-war | 4.1.4 | | Uninstalled | org.ops4j.pax.web-4.1.4 | Provide support of a full WebContainer pax-war-tomcat | 4.1.4 | | Uninstalled | org.ops4j.pax.web-4.1.4 | war | 4.0.0 | | Uninstalled | standard-4.0.0 | Turn Karaf as a full WebContainer blueprint-web | 4.0.0 | | Uninstalled | standard-4.0.0 | Provides an OSGI-aware Servlet ContextListener fo
karaf@root()> feature:list |grep -i war
pax-war | 4.1.4 | | Uninstalled | org.ops4j.pax.web-4.1.4 | Provide support of a full WebContainer
pax-war-tomcat | 4.1.4 | | Uninstalled | org.ops4j.pax.web-4.1.4 |
war | 4.0.0 | | Uninstalled | standard-4.0.0 | Turn Karaf as a full WebContainer
blueprint-web | 4.0.0 | | Uninstalled | standard-4.0.0 | Provides an OSGI-aware Servlet ContextListener fo
16.9.3.6. grep, more, find, … 링크 복사링크가 클립보드에 복사되었습니다!
Karaf 콘솔은 Unix 환경과 유사한 몇 가지 핵심 명령을 제공합니다.
-
shell:alias는 기존 명령에 대한 별칭을 생성 -
shell:cat은 파일 또는 URL의 내용을 표시합니다. -
shell:clear현재 콘솔 디스플레이를 지웁니다. -
shell:completion이 표시되거나 현재 완료 모드를 변경합니다. -
shell:date는 현재 날짜를 표시합니다 (선택적으로 형식을 사용) -
shell:each는 인수 목록에서 호출을 실행합니다. -
shell:echoechoes 및 print arguments to stdout -
shell:edit는 현재 파일 또는 URL에서 텍스트 편집기를 호출합니다. -
shell:env가 쉘 세션 변수 값을 표시하거나 설정합니다. -
shell:exec가 시스템 명령을 실행합니다. -
shell:grep은 지정된 패턴과 일치하는 행을 출력합니다. -
shell:head는 입력의 첫 번째 행을 표시합니다. -
shell:history는 명령 기록을 출력합니다. -
shell:if를 사용하여 스크립트에서 조건(if, then, else blocks)을 사용할 수 있습니다. -
shell:info는 현재 Karaf 인스턴스에 대한 다양한 정보를 출력합니다. -
shell:java는 Java 애플리케이션을 실행합니다. -
shell:lessfile pager -
shell:logout의 현재 세션과 쉘의 연결을 끊습니다. -
shell:more는 파일 페이지입니다. -
shell:new에서 새 Java 오브젝트 생성 -
shell:arguments 형식 및 출력 -
shell:sleeps for a bit then wakes up -
shell:sort쓰기는 모든 파일의 연결을 stdout에 정렬 -
shell:source는 스크립트에 포함된 명령을 실행합니다. -
shell:stack-traces-print는 명령 실행 시 예외가 발생할 때 콘솔의 전체 스택 추적을 출력합니다. -
shell:tac은 STDIN을 캡처하고 문자열로 반환합니다. -
shell:tail이 입력의 마지막 행을 표시합니다. -
shell:threads현재 스레드를 출력합니다. -
shell:watch는 주기적으로 명령을 실행하고 출력을 새로 고칩니다. -
shell:wc는 각 파일에 대한 줄 바꿈, 단어 및 바이트 수를 출력합니다. -
shell: condition이 True인 동안loop
정규화된 명령 이름을 사용할 필요는 없으며 고유 한 명령 이름을 직접 사용할 수 있습니다. 따라서 'shell:head' 대신 'head'를 사용할 수 있습니다.
또한 help 명령 또는 -- 옵션을 사용하여 이러한 명령의 세부 정보와 모든 옵션을 찾을 수 있습니다.
help
16.9.3.7. 스크립팅 링크 복사링크가 클립보드에 복사되었습니다!
Apache Karaf Console은 Unix의 bash 또는 csh와 유사한 전체 스크립팅 언어를 지원합니다.
각 (shell:each) 명령은 목록에서 반복할 수 있습니다.
karaf@root()> list = [1 2 3]; each ($list) { echo $it }
1
2
3
karaf@root()> list = [1 2 3]; each ($list) { echo $it }
1
2
3
쉘을 사용하여 동일한 루프를 작성할 수 있습니다. while 명령:
karaf@root()> a = 0 ; while { %((a+=1) <= 3) } { echo $a }
1
2
3
karaf@root()> a = 0 ; while { %((a+=1) <= 3) } { echo $a }
1
2
3
이전 예에서와 같이 목록을 직접 만들거나 일부 명령도 목록을 반환할 수 있습니다.
콘솔에서 $list 를 사용하여 액세스할 수 있는 이름 목록을 사용하여 "세션" 변수를 생성했습니다.
$it 변수는 현재 오브젝트(list에서 현재 반복된 값)에 해당하는 암시적 변수입니다.
[] 로 목록을 생성하면 Apache Karaf 콘솔에서 Java Cryostat를 생성합니다. 즉, Cryostat 개체(예: get 또는 size for instance)에서 사용할 수 있는 방법을 사용할 수 있습니다.
karaf@root()> list = ["Hello" world]; echo ($list get 0) ($list get 1) Hello world
karaf@root()> list = ["Hello" world]; echo ($list get 0) ($list get 1)
Hello world
여기에서는 개체의 메서드를 직접 호출하면 (오브젝트 메서드 인수) 를 사용할 수 있습니다. 여기에서 ($list get 0) 는 $list.get(0) 을 의미합니다. 여기서 $list 는 Cryostat입니다.
클래스 표기법은 오브젝트에 대한 세부 정보를 표시합니다.
변수를 지정된 유형으로 "캐스팅"할 수 있습니다.
karaf@root()> ("hello world" toCharArray)
[h, e, l, l, o, , w, o, r, l, d]
karaf@root()> ("hello world" toCharArray)
[h, e, l, l, o, , w, o, r, l, d]
실패하면 캐스팅 예외가 표시됩니다.
karaf@root()> ("hello world" toCharArray)[0]
Error executing command: [C cannot be cast to [Ljava.lang.Object;
karaf@root()> ("hello world" toCharArray)[0]
Error executing command: [C cannot be cast to [Ljava.lang.Object;
shell:source 명령을 사용하여 스크립트를 "콜"할 수 있습니다.
karaf@root> shell:source script.txt True!
karaf@root> shell:source script.txt
True!
여기서 script.txt 에는 다음이 포함됩니다.
foo = "foo"
if { $foo equals "foo" } {
echo "True!"
}
foo = "foo"
if { $foo equals "foo" } {
echo "True!"
}
스크립트를 작성할 때 공백이 중요합니다. 예를 들어 다음 스크립트는 올바르지 않습니다.
if{ $foo equals "foo" } ...
if{ $foo equals "foo" } ...
다음과 같이 실패합니다.
karaf@root> shell:source script.txt Error executing command: Cannot coerce echo "true!"() to any of []
karaf@root> shell:source script.txt
Error executing command: Cannot coerce echo "true!"() to any of []
if 문 뒤에 공백이 누락되어 있기 때문입니다.
별칭에 대해 etc/shell.init.script 파일에서 init 스크립트를 생성할 수 있습니다. 별칭을 사용하여 스크립트 이름을 지정할 수도 있습니다. 사실 별칭은 스크립트일 뿐입니다.
자세한 내용은 개발자 가이드의 스크립팅 섹션을 참조하십시오.
16.9.4. 보안 링크 복사링크가 클립보드에 복사되었습니다!
Apache Karaf 콘솔은 RBAC(역할 기반 액세스 제어) 보안 메커니즘을 지원합니다. 즉, 콘솔에 연결된 사용자에 따라 사용자의 그룹 및 역할에 따라 일부 명령을 실행하거나 인수에 허용되는 값을 제한할 수 있습니다.
콘솔 보안은 이 사용자 가이드의 보안 섹션에 자세히 설명되어 있습니다.