일찍이 암호화된 명령어와 엄격한 구문의 시대는 사라졌습니다. 시스템을 스크립팅하거나 탐색하는 데 많은 시간을 소비하는 것보다 남자 페이지를 해독하는 데 더 많은 시간을 들이는 이유가 무엇인가요? 더 원활하고 직관적인 리눅스 경험을 위한 티켓인 fish 셸의 강력함과 단숨함을 받아들이세요.
사용자 친화적인 인터페이스부터 다양한 사용자 정의 옵션까지, fish 셸로 리눅스 여정을 변화시키는 방법을 배워보세요.
스트림라인된 워크플로와 리눅스 스킬에 대한 새로운 자신감에 인사해보세요!
전제 조건
시작하기 전에, 이 자습서를 따라가기 위해 다음 필수 사항이 충족되었는지 확인해보세요:
- fish 셸이 설치된 상태입니다 – 이 자습서는 최신 버전인 fish-3.7.0을 사용합니다.
- A Linux system – This tutorial uses an Ubuntu 22.04 LTS for demonstrations, but other distributions will work.
명령어 유효성 검사, 자동 완성 및 제안 탐색
fish 셸을 설치한 후에 실시간 피드백과 문맥에 맞는 명령어, 파일 이름 및 인수에 대한 제안을 제공하는 fish 셸로 스무스한 명령어 실행에 뛰어들어 보세요.
하지만 명령어 유효성 검사, 자동 완성 및 제안을 들여다보기 전에 fish 셸에 액세스해야 합니다.
실행하기 전에 심지어 오류를 식별하고 수정할 수 있는 이 기능을 탐색하려면 다음을 수행하세요:
1. 터미널을 열고 아래의 fish
명령을 실행하여 fish 셸에 액세스하십시오.

2. 다음으로, 현재 디렉토리의 모든 파일을 나열하려는 ls
명령어의 첫 글자를 입력하십시오.
아래와 같이, ‘l’ 문자가 빨간색으로 변하는 것을 볼 수 있습니다. fish 셸은 이것을 유효한 명령어로 인식하지 않기 때문에 즉시 시각적인 신호가 나타납니다.
하지만 걱정하지 마세요! 자동 제안 덕분에 ‘s’ 문자가 어두워져 나타나며 올바른 명령어를 암시합니다.

3. 이제 오른쪽 화살표나 Ctrl+F 키를 눌러 자동으로 제안된 ls
명령을 수락하십시오.
문자 ‘l’이 빨간색에서 파란색으로 변경되는 것을 주목하세요. 이는 fish 셸이 이제 명령어를 ls
로 인식한다는 것을 나타냅니다.

fish 구성 파일에서 명령 별칭 정의하기
실시간 피드백과 문맥에 따른 제안 외에도, fish는 명령 줄 환경을 사용자 정의하는 강력하고 유연한 방법을 제공합니다. 이를 위해 fish 구성 파일을 사용합니다. 다른 셸이 여러 구성 파일을 사용할 수 있지만, fish는 주로 config.fish라는 단일 파일을 사용하며 이 파일은 ~/.config/fish/ 디렉토리에 있습니다.
구성이 fish 셸에 어떻게 영향을 주는지 보려면 다음과 같이 명령 별칭을 정의하십시오:
1. 선호하는 코드 또는 텍스트 편집기인 nano
또는 vim
과 같은 편집기를 사용하여 fish 구성 파일을 엽니다.
한 번 열면, fish 쉘의 구성 파일의 초기 내용이 표시됩니다. 이는 기본 구성을 포함하거나 비교적 비어 있을 수 있습니다. 이 초기 상태는 이전에 구성이 추가되었는지 여부에 따라 달라집니다.
파일에는 주석이나 새 설치를 위한 기본 조건 블록만 포함할 수도 있습니다. 아래와 같은 예시가 있습니다.

2. if
블록 안에 다음 function
을 추가하고, 변경 사항을 저장한 후 에디터를 닫으십시오.
이 시점에서 fish 구성 파일에서 사용자 정의 설정을 만들고, 이 함수는 c
명령에 대한 별칭을 정의합니다. clear
명령입니다.
? 참고: 각 정의된 함수에는 ~/.config/fish/functions/ 디렉토리에 해당하는 .fish 파일이 있습니다(예: c.fish).

clear
command3. 다음 명령을 실행하여 구성 파일(config.fish
)을 source
합니다.
이 명령은 터미널에 출력이 없지만 현재 세션에 구성 변경을 적용합니다.
? 이 fish 구성 파일은 새 fish 세션이 시작될 때마다 자동으로 실행되며 셸 사용자 정의를 정의하기에 완벽한 위치입니다.
4. 이후에 변경 사항을 확인하려면 프롬프트에서 c
를 입력하십시오.
fish 셸이 clear
명령으로 인식하므로 문자 ‘c’가 파란색으로 변하는 것에 유의하십시오. 이 동작은 fish 구성에 성공적인 변경을 나타냅니다.
문자 ‘c’가 파란색으로 변하는 것을 보셨나요? 이 변경은 fish 셸이 문자 ‘c’를 clear
명령으로 인식하기 때문입니다. 이 동작은 fish 구성에 성공적인 업데이트를 시그널합니다.
이제, 어떨까요? 분위기가 일 때마다 항상 돌아가는 그 신뢰할 수 있는 명령에 대해 몇 가지 더 설정해 보는 것은 어떨까요?

clear
command worksFish 셸 프롬프트 사용자 정의
더 원활한 작업을 위한 별칭 설정 외에도 fish는 쉘에 개인적인 터치를 추가하는 것과 같이 프롬프트를 사용자 정의할 수 있는 기능을 제공합니다. 긴 디렉터리 경로 대신 더 깨끗하고 조직적인 프롬프트를 즐기세요.
fish 셸 프롬프트를 사용자 정의하려면 다음 조치를 실행하십시오:
1. fish 구성 파일(~/.config/fish/config.fish)를 열고 다음 함수를 추가하십시오.
이 함수는 fish 셸 프롬프트를 달러 기호($
) 뒤에 공백이 따르도록 사용자 정의합니다.

2. 변경 사항을 fish 구성 파일에 저장하고 편집기를 종료합니다.
3. 이제 구성 파일을 source
하여 변경 사항을 적용합니다.
구성 파일을 소스화하면 다음 스크린샷과 같이 프롬프트 변경 사항이 표시됩니다.

세션 간 변경 사항 유지하기
fish 쉘에서 사용자 정의를 만드는 방법을 보았습니다. 그러나 한 가지 주의할 점은 이러한 설정이 현재 세션에서만 사용 가능하다는 것입니다.
현재 세션을 닫고 새로 열면 어떻게 될까요? 사라져 버립니다! 섬세하게 만든 설정이 모두 사라지는 거죠—안타깝죠? 하지만 걱정하지 마세요, 여전히 희망이 있습니다. 구성을 잊혀진 상태로부터 구원해 주는 funcsave
명령어를 사용하세요!
세션 간 구성을 유지하려면 다음을 수행하십시오:
1. fish 구성 파일을 열고, 각 function
에 funcsave
명령어를 함수 이름과 함께 추가합니다. 다음과 같이요:

funcsave
command to persist functions across sessions2. 변경 사항을 저장하고, 편집기와 터미널을 닫습니다.
3. 새로운 터미널 세션을 열고, 아래의 fish
명령어를 실행하여 fish 쉘에 액세스합니다.
만약 당신이 추가한 funcsave
명령이 구성을 영구적으로 유지하는 데 도움이 된다면, 아래와 같은 메시지를 볼 수 있을 것입니다.

환경 변수 설정 및 유지
유지 함수는 훌륭하지만 전역으로 접근 가능한 값 관리는 쉘 스크립팅을 한 단계 더 발전시킵니다. 환경 변수 설정입니다. 전통적인 쉘이 export
를 사용하는 반면, fish는 변수 범위와 내보내기 동작을 제어하기 위해 set
을 사용합니다.
하지만 함정이 있습니다. 알고 계신가요? 응, 맞죠! 터미널에서 set
명령을 통해 설정된 변수는 현재 세션에서만 접근할 수 있습니다.
환경 변수를 설정하고 유지하기 위해서는 다음과 같이 -gx
플래그를 사용하면 편리합니다:
1. 다음 명령을 추가하여 fish 구성 파일에서 MY_VARIABLE
변수를 전역으로 설정하십시오. 아래는 -gx
플래그의 작동 방식입니다:
-g
– 변수를 전역으로 설정하여 동일한 사용자 환경 내의 모든 범위에서 접근 가능하게 합니다.-x
– 변수를 내보내어 fish에서 시작된 모든 외부 명령이나 프로그램에서 사용할 수 있게 합니다.

2. 구성 변경 사항을 저장한 다음, 편집기와 터미널을 닫으십시오.
3. 새로운 터미널 세션을 열고 fish 쉘에 액세스하여 변경 사항을 확인하십시오.
아래 출력은 세션 간 변경 사항이 적용되었음을 확인합니다.

4. 확인되면 다음 set
명령을 fish 설정 파일에 추가하고 변경 사항을 저장한 후 편집기를 닫습니다.
이 명령은 재부팅 후에도 모든 세션에서 MY_UNIVERSAL_VARIABLE
변수를 전역으로 만듭니다.
-Ux
플래그가 어떻게 작동하는지 아래에서 확인하세요:
-U
–MY_UNIVERSAL_VARIABLE
변수를 universal로 만들어 현재 및 향후의 모든 터미널 세션에서 공유되도록 보장합니다.-x
– 변수가 자식 프로세스에 내보내져 현재 세션에서 호출된 명령 또는 스크립트에 액세스 할 수 있게 합니다.

5. 새 터미널 세션을 열고 fish 셸에 액세스 한 다음 아래의 echo
명령을 실행하여 변경 사항을 확인합니다.
모든 것이 순조롭게 진행되면 변경 사항이 세션 간에 적용되었음을 나타내는 다음 출력이 표시됩니다.

? fish 설정 파일 외에도 터미널에서
fish_config
를 활용하여 빠르고 자동으로 사용자 정의를 적용하세요. 이 명령은 브라우저에서 웹 인터페이스를 시작하여 사용자 친화적인 설정에서 프롬프트 조정, 설정 조정 및 기능 및 변수 관리를 가능하게 합니다.
Fisher 패키지 관리자를 사용하여 Fish 플러그인 관리
물고기 쉘은 그 자체로 인상적입니다, 그렇죠? 하지만 알고 계셨나요? 플러그인을 통합하기 시작하면 더욱 강력해집니다. 이러한 플러그인은 물고기 쉘의 기능을 확장하여 새로운 명령, 유틸리티 및 통합을 가져와 명령 줄 경험을 크게 향상시킵니다.
한 가지 좋은 예는 물고기 쉘용으로 설계된 패키지 관리자인 Fisher입니다. 이 플러그인은 성능과 간결성을 염두에 두고 구축되었으며 가벼워요.
? Fisher 는 물고기 쉘 플러그인을 관리하는 데 가볍습니다. 시스템 수준의 패키지 관리자와 직접적으로 비교할 수는 없습니다. 이 차이는 관리하는 패키지의 크기와 복잡성 측면에서 명확합니다.
물고기 플러그인을 관리하려면 먼저 다음 단계에 따라 Fisher를 설치해야 합니다:
터미널을 열고 물고기 쉘에 액세스하여 다음 명령을 실행하여 Fisher를 다운로드하고 설치합니다. 이 명령은 Fisher 설치 스크립트를 가져와 source
로 파이핑하여 현재 물고기 쉘 세션 내에서 스크립트를 실행합니다.
설치되면 다음 출력이 표시됩니다.

이제 아래의 fisher
명령을 실행하여 Fisher의 현재 설치된 --version
을 확인하여 설치를 확인합니다.

GitNow 플러그인 설치하기
이제 피셔가 작동되었으니, 다음 단계는 무엇일까요? 몇 가지 멋진 플러그인으로 피쉬 셸을 강화하는 것은 어떨까요? 예를 들어, GitNow은 피쉬 셸 내에서 Git 작업을 강화하는 도구입니다. 유혹적이죠.
GitNow은 일상적인 Git 작업을 위한 간소화된 명령을 제공하여 생산성을 향상시키고 Git 명령 루틴을 간소화합니다.
피셔 패키지 매니저를 사용하여 GitNow을 설치하려면 다음 단계를 따르십시오.
1. 피쉬 셸에서 다음 fisher
명령을 실행하여 GitNow 플러그인(joseluisq/gitnow
)을 설치
합니다.
이 명령은 Fisher에게 GitNow을 가져와 피쉬 구성에 통합하여 Git의 바로 가기를 즉시 사용할 수 있도록 합니다.

2. 설치가 완료되면 아래의 gitnow
명령을 실행하여 GitNow이 올바르게 설치되었는지 확인합니다.
이 명령은 현재 설치된 GitNow 버전을 표시하지만 셸에서 GitNow 명령이 인식되는 경우에만 표시됩니다.

3. 마지막으로 이 fisher
명령을 실행하여 Fisher가 관리하는 모든 플러그인(포함하여 GitNow)을 list
합니다.
아래에서는 GitNow 플러그인과 Fisher 플러그인 자체를 볼 수 있습니다.

피쉬 셸 플러그인 제거
피쉬 셸에 플러그인이 너무 많아 쓸모없는 플러그인을 찾느라 고생하고 있나요? 필요 없는 플러그인을 제거하여 피쉬 셸 환경을 정리하세요.
피셔가 관리하는 플러그인을 fish 셸에서 제거하려면 다음 단계를 따르세요:
1. 현재 설치된 모든 플러그인을 나열하려면 다음 명령을 실행하십시오.
삭제하려는 목록에서 하나를 선택하십시오.

2. 다음으로 아래의 fisher remove
명령을 실행한 다음 플러그인 이름(joseluisq/gitnow
)을 입력하여 제거하십시오.
이 명령은 피셔에게 fish 셸 환경에서 GitNow 플러그인을 제거하도록 지시합니다.

3. 이제 동일한 fisher list
명령을 실행하여 GitNow 플러그인이 성공적으로 제거되었는지 확인하십시오.
GitNow 플러그인은 더 이상 설치된 플러그인 목록에 표시되지 않아야 합니다.

피셔 패키지 관리자 제거
알아본 대로, 피셔 패키지 관리자는 정말 편리합니다. 그러나 피셔와의 문제 또는 불만이 생기면 피셔를 제거하는 것이 최선일 수 있습니다.
fish 셸에서 피셔를 완전히 제거하려면 다음을 완료하십시오:
아래 명령을 실행하여 피셔와 피셔를 통해 설치된 모든 플러그인을 나열하고 제거하십시오.

대안으로 아래 명령을 실행하여 fisher
자체만 제거하십시오.

오 마이 피쉬 패키지 관리자 탐색
Fisher와 이미 크루징 중이라면, Oh My Fish를 고려해야합니까? Fisher와 함께 fish 셸 플러그인의 힘을 경험했습니다. 하지만 여기에 더할 나위 없는 것이 있습니다: 이 프레임워크는 fish 셸을 위한 새로운 사용자 정의 영역을 열어주며, 광범위한 테마와 플러그인 모음을 제공합니다.
Oh My Fish가 당신에게 제공하는 것을 보려면 먼저 이 패키지 매니저를 설치하세요. 다음 명령을 사용하여 이를 설치합니다.
다음 curl
명령을 사용하여 Oh My Fish 설치 스크립트(https://get.oh-my.fish
)를 fish
셸에서 다운로드하고 실행하세요.
성공하면 다음과 유사한 출력이 표시됩니다.

설치된 후, 다음 omf
명령을 실행하여 Oh My Fish의 설치된 버전을 확인하세요.
A successful response, as shown below, indicates that Oh My Fish is ready and waiting to transform your fish shell experience.

Oh My Fish 테마로 환경 사용자 정의
같은 오래된 fish 셸 외관에 지루하셨나요? 왜 개성을 더하지 않을까요? Oh My Fish에서 제공하는 신선하고 개인적인 테마로 fish 셸 환경을 새롭게 만들어보세요.
fish 셸 환경을 사용자 정의하려면 다음 단계를 통해 테마를 설치해야 합니다.
1. fish 구성 파일을 열고, 프롬프트가 표시되는 방식을 정의하는 fish_prompt
함수를 제거하세요. 이렇게 하면 설정한 사용자 정의 프롬프트가 Oh My Fish에서 제공하는 테마와 충돌하거나 덮어쓰지 않게 됩니다.
? 테마는 외관과 기능에 중요한 독특한 프롬프트로 제공됩니다. 사용자 정의 프롬프트 (
fish_prompt
)를 비활성화하면 선택한 Oh My Fish 테마가 완전히 디자인과 기능을 통합하여 fish 셸에 적용됩니다.
2. 그런 다음, (rm
) ~/.config/fish/functions/fish_prompt.fish
파일을 삭제합니다. 이 명령은 출력이 없지만, 이 파일을 삭제하면 fish 셸이 기본 프롬프트로 되돌아갑니다.
3. fish 구성 파일의 변경 사항이 적용되도록 다음 source
명령을 실행합니다.

4. 이제 아래의 omf
명령을 실행하여 fish 셸에 완벽한 테마
를 찾습니다.
fish 셸에 통합하려는 하나의 테마를 선택하세요 (예: cbjohnson).
? 테마를 설치하기 전에 공식 GitHub 저장소에서 Oh My Shell 테마를 확인하세요.

? 다음 명령을 실행하여 플러그인으로 fish 셸을 강화하세요. 플러그인을 설치할 플러그인 목록은 OMF GitHub 저장소에서 확인하세요.
omf install <플러그인_이름>
5. 그런 다음, 아래 명령을 실행하여 네가 단계 네에서 선택한 테마 (cbjohnson
)를 설치
합니다.
설치되면 프롬프트가 즉시 변경됩니다.

? 팁: 두 개 이상의 테마를 가지고 있을 때 다음 명령을 실행하여 빠르게 테마를 전환하세요.
omf theme <테마_이름>
Oh My Fish 제거
Oh My Fish는 셸 분위기를 개선하는 보석입니다. 그러나 새로운 경치를 원하거나 새로운 것을 시도하고 싶다면 Oh My Fish를 제거하여 fish 셸에 새로운 시작을 제공할 수 있습니다.
Oh My Fish를 제거하려면 다음을 수행하십시오:
1. 다음 rm
명령을 실행하여 모든 Oh My Fish 관련 파일을 삭제합니다.
삭제된 후에는 처음 설치한 테마가 없어집니다.

2. 다음 명령을 실행하여 더 많은 Oh My Fish 관련 파일을 삭제하십시오.
이러한 명령에는 출력이 없지만 이러한 파일을 삭제하면 Oh My Fish의 모든 잔재가 시스템에서 제거됩니다.
3. 이제 아래의 omf
명령을 실행하여 삭제 여부를 확인하십시오.
아래와 같은 오류가 표시되며 omf
명령을 찾을 수 없으며 Oh My Fish가 완전히 제거되었음을 나타냅니다.

기본 셸로 Fish 설정
Linux 경험을 향상시킨 fish 셸과 함께한 여정을 즐겼다면 왜 기본 셸로 설정하지 않으시겠습니까? 이렇게 하면 새로운 터미널을 시작할 때마다 전환하는 번거로움을 피할 수 있습니다.
Fish를 기본 셸로 설정하려면 다음 단계를 수행하십시오:
1. 아래 명령을 실행하여 fish
쉘이 위치한 경로를 찾으세요.
이 경로를 클립보드에 복사하세요. 이후 단계에서 필요합니다.

2. 다음 명령을 실행하여 /etc/shells
에 허용 가능한 쉘 목록에 fish를 추가하세요.

3. 마지막으로, 아래 명령을 실행하여 기본 쉘을 fish(/usr/bin/fish
)로 변경하세요.
시스템을 다시 시작하면 fish가 기본 쉘로 설정됩니다.

? 팁: Bash와 같은 다른 쉘로 기본값을 변경하려면 이 섹션의 모든 단계를 반복하세요. 두 번째와 세 번째 단계에서 Bash의 경로를 지정한 후 시스템을 다시 시작하여 변경 사항을 적용하세요.
결론
이 튜토리얼을 통해 fish 쉘의 본질에 대해 깊이 파고들어 강력한 기능과 사용자 정의 옵션을 발견했습니다. 별칭 정의부터 프롬프트 사용자 정의 및 환경 변수 유지 관리, 플러그인 관리까지, fish 쉘은 신뢰할 수 있는 조력자였습니다.
Oh My Fish 패키지 관리자를 사용하여 Linux 경험을 변형하는 방법에 대한 통찰력을 얻었습니다. 또한, 새로운 플러그인 및 테마를 손쉽게 발견하고 설치하여 fish 쉘 환경의 기능과 미학을 확장하는 방법을 배웠습니다.
이제 기본적인 fish 쉘의 기초를 탐색했으니, 더 깊이 파고들어서 그의 전체 잠재력을 발휘하세요. Powerline이나 Starship와 같은 사용자 정의 프롬프트를 실험하여 쉘에 개인적인 터치를 더해보는 것은 어떨까요?