# z shell 매뉴얼

## 1. zsh란?

zsh(z shell)는 하모니카 사용자에게 터미널 환경의 사용성을 개선해주는 쉘 스크립트 입니다.&#x20;

zsh의 더 자세한 설명은 <https://github.com/hamonikr/hamonikr-zsh> 에서 확인할 수 있습니다.&#x20;

<br>

1. zsh 설치
2. 폰트설정 변경
3. zsh의 기능 및 사용법

<br>

## 2. zsh 설치&#x20;

하모니카 6.0에는 기본적으로 zsh가 설치되어 있지만 zsh를 새로 설치해야 하는 경우엔 아래와 같은 방법으로 설치가 가능합니다.&#x20;

### 2.1 최신 패키지 다운로드&#x20;

아래의 링크를 통해 최신 패키지를 다운로드 받아줍니다.&#x20;

{% embed url="<https://github.com/hamonikr/hamonikr-zsh/releases>" %}

<figure><img src="https://555563099-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fala68su8ZrXrf5eZzXtw%2Fuploads%2FvAjp631KumhF5ZMovKtl%2F1.png?alt=media&#x26;token=78eed1d9-ef67-4a32-8dda-4b99d3393e9d" alt=""><figcaption></figcaption></figure>

### 1.2 zsh 패키지 설치

다운로드 받은 파일이 있는 폴더를 열어줍니다.&#x20;

우클릭 후 이 위치로 터미널 열기 메뉴를 누르고  **sudo apt install -f ./hamonikr-zsh\_\*\_amd64.deb** 을 입력하거나  **패키지 아이콘을 더블클릭**하면 설치가 진행됩니다. &#x20;

<mark style="color:red;">**(※ 패키지 설치 후 PC 재시작을 해야 새로운 환경이 적용됩니다.)**</mark>

<figure><img src="https://555563099-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fala68su8ZrXrf5eZzXtw%2Fuploads%2FuCdYP6bxblFw3xFfEBeH%2F2.png?alt=media&#x26;token=0452a178-189b-4a84-acca-beab6c406641" alt=""><figcaption></figcaption></figure>

정상적으로 설치가 완료되면 터미널을 열었을 때 아래와 같은 화면이 보여집니다.

<div align="center"><figure><img src="https://555563099-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fala68su8ZrXrf5eZzXtw%2Fuploads%2F0lZt1rUKck0xW8oGBjV0%2F3.png?alt=media&#x26;token=c4eb0cdc-6430-4991-bb50-892fc4daaf60" alt=""><figcaption></figcaption></figure></div>

<br>

<br>

## 3. 폰트설정 변경

zsh를 열었을 때 터미널 폰트가 적용되지 않은 경우 폰트설정을 변경하는 것이 가능합니다.&#x20;

### 3.1 터미널에서 폰트설정

&#x20;터미널을 열고 편집 하위메뉴의 기본설정 버튼을 눌러 기본설정창을 열어줍니다.&#x20;

<figure><img src="https://555563099-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fala68su8ZrXrf5eZzXtw%2Fuploads%2F626FfcxEXN8gfDHhIl9S%2F4.png?alt=media&#x26;token=2a4e0e95-ebbb-46c4-b387-b8775655a706" alt=""><figcaption></figcaption></figure>

기본설정창 좌측 메뉴의 hamonikr-settings를 클릭한 후 사용자 지정 글꼴을 클릭하면 터미널 글꼴 선택 팝업화면이 보여집니다.

팝업화면의 검색창에서 **Hack Nerd Font**를 검색 후 하단의 폰트 크기를 9로 맞춰준 뒤 선택 버튼을 누르면 설정이 완료됩니다.&#x20;

<figure><img src="https://555563099-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fala68su8ZrXrf5eZzXtw%2Fuploads%2F9E0tk4vlZoY7JUXR1tpM%2F5.png?alt=media&#x26;token=67c74ae2-6f50-4154-8653-97ffc8a7e28b" alt=""><figcaption></figcaption></figure>

<div align="left"><figure><img src="https://555563099-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fala68su8ZrXrf5eZzXtw%2Fuploads%2FuArT4N55YCoRJp2k98ok%2F6.png?alt=media&#x26;token=0b3f4d86-05a4-4fa9-918a-a2b4d4ca6fb2" alt=""><figcaption></figcaption></figure></div>

### 3.2 vscode에서 폰트설정

vscode에서 파일 하위메뉴의 기본설정 메뉴를 눌러 설정화면에 접속합니다.&#x20;

<figure><img src="https://555563099-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fala68su8ZrXrf5eZzXtw%2Fuploads%2FjdkK7JGMdY1X5otBO9bS%2F7.png?alt=media&#x26;token=c6d16b1b-52d3-4801-a884-8e98e969d13a" alt=""><figcaption></figcaption></figure>

설정 화면 상단에 **font**를 검색하고 좌측 메뉴의 터미널 메뉴를 클릭하면 터미널 폰트설정을 할 수 있는 화면이 보여집니다.&#x20;

입력란에  **Hack Nerd Font** 을 입력 후 하단의 폰트사이즈를 13으로 설정하면 폰트설정이 완료됩니다.

<figure><img src="https://555563099-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fala68su8ZrXrf5eZzXtw%2Fuploads%2FchMFoaCUjx11nP6wOMPs%2F8.png?alt=media&#x26;token=b757cc3c-2f21-4069-82cd-2c7b7b20e828" alt=""><figcaption></figcaption></figure>

<br>

<br>

## 4. zsh의 기능 및 사용법&#x20;

하모니카에 설치된 zsh의 주요기능들을 설명합니다.&#x20;

### 4.1 autojump

autojump는 여러번의 cd 명령을 통해서 디렉터리를 바꾸는 것을 간단히 j 명령을 통해서 한번에 이동 가능하게 하는 기능입니다.

autojump 옵션은 **autojump --help**에서 확인이 가능합니다.&#x20;

(※ j 명령어는 명령어를 사용하기 이전에 이동한적이 있었던 디렉토리에 한해서 사용 가능)&#x20;

**4.1.1  j 명령어**&#x20;

예를들어 'tomcat10' 을 포함하는 디렉토리로 이동하고 싶은 경우:  터미널에  **j tomcat10** 입력

이동 시에 파일명을 끝까지 입력하지 않아도(j to 혹은 j t) 겹치는 파일 이름이 존재하지 않으면 이동이 가능합니다.&#x20;

(파일이 겹칠시에는 우선순위가 높은 곳으로 이동 - 우선순위 설정 방법은 3.1.4에서 설명)&#x20;

<figure><img src="https://555563099-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fala68su8ZrXrf5eZzXtw%2Fuploads%2FHsowaCZubqCfu1MHh1Pc%2F9.png?alt=media&#x26;token=402cb081-31d1-4f9f-8ae3-807d8e6b9cda" alt=""><figcaption></figcaption></figure>

j 명령어를 사용할 때 **이동할 디렉토리의 전체 경로를 보고 싶으면  j 파일명을(앞부분만 입력해도 확인 가능)  입력하고 tab 키를 두번 눌러줍니다.** &#x20;

j tomcat10을 입력 후 tab키를 누르면 아래와 같이 경로 목록이 나오고, 목록이 나온 후 tab 키를 더 누르면 아래의 경로들로 이동이 가능합니다. &#x20;

\<tab을 두 번 눌러서 경로가 나온 화면>&#x20;

<figure><img src="https://555563099-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fala68su8ZrXrf5eZzXtw%2Fuploads%2FPK2PPediivoRR6DB9pdB%2F10.png?alt=media&#x26;token=29559b8c-f7d1-4441-aeab-43a5c9e26093" alt=""><figcaption></figcaption></figure>

\<tab을 더 누르면 아래의 경로들로 이동이 가능함>

<figure><img src="https://555563099-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fala68su8ZrXrf5eZzXtw%2Fuploads%2FM9m8x8gE4i70ppb5Ul5i%2F11.png?alt=media&#x26;token=97b87eb7-c379-4264-8782-bda457b15c4b" alt=""><figcaption></figcaption></figure>

**4.1.2  jc 명령어**

jc 명령어는 디렉토리 이동 기능은 j와 같으나 **tab키를 누르면 전체경로가 아닌 해당 디렉토리의 하위 디렉토리와 파일을 보여줍니다.**&#x20;

jc 명령어를 이용해 하위 디렉토리를 확인하려면 상위 디렉토리에서 명령어를 입력해야합니다.&#x20;

\<jc를 이용해 tomcat10의 하위 디렉토리와 파일 확인하는 화면>

<figure><img src="https://555563099-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fala68su8ZrXrf5eZzXtw%2Fuploads%2FoZDmqvSUivtvwtfOhUo4%2F12.png?alt=media&#x26;token=67e02ec1-5da3-46d0-bb8e-384c71c2f4bc" alt=""><figcaption></figcaption></figure>

\<jc를 이용해 확인한 하위 디렉토리 목록과 동일함>  &#x20;

<figure><img src="https://555563099-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fala68su8ZrXrf5eZzXtw%2Fuploads%2F6L2I6kivHyUme9sI3yLR%2F13.png?alt=media&#x26;token=aa2d5ce0-a2d2-4971-a148-8e49fc96bd99" alt=""><figcaption><p><br></p></figcaption></figure>

**4.1.3  jo 명령어**

jo 명령어는 디렉토리로 이동하는 대신 파일 탐색기 창을 해당 디렉토리로 열 수 있습니다.

tomcat10디렉토리를 열기 위해 **jo tomcat10** 명령어 입력하면 파일탐색기가 보여집니다. &#x20;

\<jo를 사용해 tomcat10 디렉토리를 여는 과정>&#x20;

<figure><img src="https://555563099-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fala68su8ZrXrf5eZzXtw%2Fuploads%2FmohIGzAY7BREI18Knwdl%2F14.png?alt=media&#x26;token=a21ee082-e5cd-4cb4-9539-4c1833c6259d" alt=""><figcaption></figcaption></figure>

<figure><img src="https://555563099-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fala68su8ZrXrf5eZzXtw%2Fuploads%2FCqdYZIHyx8KHtrT52PVp%2F15.png?alt=media&#x26;token=a900b68e-42ea-4beb-bd26-6003753d8146" alt=""><figcaption></figcaption></figure>

**4.1.4 파일명이 중복될 때 우선순위 설정**

j 명령어를 사용할 때 이름이 동일한 디렉토리나 파일이 있으면 우선순위가 높은 곳으로 이동합니다.&#x20;

**우선순위를 높이고 싶을 때는 해당 디렉토리로 이동해서 autojump --i 명령어를 입력하고, 낮추고 싶을 때는 autojump --d 명령어를 입력**합니다.&#x20;

명령어를 입력하면 변경된 우선순위가 보여집니다.&#x20;

\<tomcat10 디렉토리의 우선순위를 변경하는 화면>&#x20;

<figure><img src="https://555563099-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fala68su8ZrXrf5eZzXtw%2Fuploads%2F1oJZc3lUYiml6vstfuDG%2F16.png?alt=media&#x26;token=00642308-8308-469f-b14f-61e36ac1abd5" alt=""><figcaption><p><br></p></figcaption></figure>

### 4.2 autosuggestion

이전에 입력한 적이 있는 명령어는 명령을 다 입력하기 전에 옅은 회색으로 완성된 내용이 표시됩니다.&#x20;

**옅은 회색으로 나온 명령어를 완성시키려면  키보드 방향키 "→"**&#xB97C; 눌러줍니다.&#x20;

<figure><img src="https://555563099-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fala68su8ZrXrf5eZzXtw%2Fuploads%2FVnzDdmCB3BkW458EEyCV%2F17.png?alt=media&#x26;token=de2d3c11-14fc-410a-9f90-838ac769ddef" alt=""><figcaption></figcaption></figure>

### 4.3 syntax-highlighting

명령어 오류를 잡을 때 명령을 실행하기 전에 검토하는 데 도움이 되는 명령어 강조 표시 기능입니다.&#x20;

**맞는 명령어는 초록색으로 표시되고, 잘못된 명령어는 빨간색으로 표시**됩니다. &#x20;

<맞는 명령어>

<figure><img src="https://555563099-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fala68su8ZrXrf5eZzXtw%2Fuploads%2FTloEE1Y6w3iD8Q3NMP4G%2F18.png?alt=media&#x26;token=0c8536f9-776d-4803-9134-3c4520c2e967" alt=""><figcaption></figcaption></figure>

<잘못된 명령어>&#x20;

<figure><img src="https://555563099-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fala68su8ZrXrf5eZzXtw%2Fuploads%2Fooky5YdPjSBcqYgXf2KU%2F19.png?alt=media&#x26;token=fc01e551-9de6-4505-8281-dd4df6f3319f" alt=""><figcaption><p><br></p></figcaption></figure>

### 4.4 Useful Alias

자주 사용하는 명령어에 단축어를 사용해서 시간과 노력을 절약할 수 있는 기능입니다.

단축어기능을 사용하면 사용자가 터미널 사용을 간단하게 개인화할 수 있습니다.&#x20;

**4.4.1 모든 단축어 표시**

터미널에 **alias** 를 입력하면 모든 단축어 확인이 가능합니다.&#x20;

<figure><img src="https://555563099-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fala68su8ZrXrf5eZzXtw%2Fuploads%2FIu7vP4TjtE2lcFBFl1Mf%2F20.png?alt=media&#x26;token=52f13556-c330-4380-a020-7158a7b77bd2" alt=""><figcaption><p><br></p></figcaption></figure>

**4.4.2 단축어 만들기**

**`alias 단축어="실행할 명령어"`**` ``형태로` 터미널에 입력하면 단축어 생성이 가능합니다. (단축어를 설정할 때 명령은 등호와 명령 사이에 공백 없이 따옴표료 묶어야 합니다. )

&#x20;단축어 생성 후 alias 명령어를 이용해 생성한 단축어를 확인할 수 있습니다.&#x20;

(※ 이러한 방법으로 생성한 단축어는 PC 재시작 시 사라집니다.)&#x20;

<단축어를 만들고 alias로 단축어 목록을 확인하면 생성된 단축어 확인 가능>&#x20;

<figure><img src="https://555563099-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fala68su8ZrXrf5eZzXtw%2Fuploads%2FWxezy4rj82nYerN9r6PF%2F21.png?alt=media&#x26;token=83aaed6e-bbd5-4c30-9801-ef49ae2c893f" alt=""><figcaption><p><br></p></figcaption></figure>

**4.4.3 영구적인 단축어 만들기**

위의 방법으로 생성된 단축어는 PC를 재시작하면 사라지기 때문에 영구적인 단축어를 생성하려면 아래와 같은 방법을 사용해야 합니다.&#x20;

a. 터미널에 **ls -al** 명령어를 입력 후 디렉토리에 있는 내용 리스트 중 **.zshrc** 파일을 열어줍니다.  (.zshrc 파일을 여는 명령어 : **vi .zshrc )**

<figure><img src="https://555563099-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fala68su8ZrXrf5eZzXtw%2Fuploads%2FTcMyQwxli9XdW7VbyXuA%2F22.png?alt=media&#x26;token=8b937a39-2310-45e5-a9c7-8a9e25bdcef8" alt=""><figcaption></figcaption></figure>

b. vi .zshrc를 터미널에 입력하면 아래와 같은 화면이 보여지고 단축어 생성이 가능합니다.&#x20;

`단축어 생성 방법 :`&#x20;

1. &#x20;`i, a, o 중 하나를 누르면 편집모드로 전환됩니다.`&#x20;
2. `편집모드로 전환되면 맨 아랫줄에 원하는 단축어를  alias 단축어="실행할 명령어" 형태로 작성합니다.`
3. `작성이 완료되면 esc 키를 누르고 :wq! 를 입력하고 엔터를 누르면 저장이 완료됩니다.`

<figure><img src="https://555563099-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fala68su8ZrXrf5eZzXtw%2Fuploads%2FUqTKxn5spgo7RJSBHuJs%2F23.png?alt=media&#x26;token=53277c85-457a-481a-807f-660967384d8a" alt=""><figcaption></figcaption></figure>

생성한 단축어를 입력하면 정상적으로 단축어가 등록된 것을 확인할 수 있습니다.&#x20;

<figure><img src="https://555563099-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fala68su8ZrXrf5eZzXtw%2Fuploads%2FcPzgUNAlGf1CMVsuuDBf%2F24.png?alt=media&#x26;token=a9a5429e-53dc-4d8d-b4f0-63c0889ec3a1" alt=""><figcaption><p><br><br></p></figcaption></figure>

**4.4.4 단축어 삭제**&#x20;

생성한 단축어는 **unlias 삭제할 단축어** 의 형태로 터미널에 입력하면 삭제가 가능합니다.&#x20;

<figure><img src="https://555563099-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fala68su8ZrXrf5eZzXtw%2Fuploads%2FuDA56yupsN3tJrXEDYDV%2F25.png?alt=media&#x26;token=5d4bfa64-086f-4870-a157-67e72b20b6e6" alt=""><figcaption></figcaption></figure>
