친근한 인터랙티브 쉘 - Fish
(github.com/fish-shell)- Fish는 macOS, Linux 및 기타 Unix 계열 운영체제를 위한 사용자 친화적인 커맨드라인 쉘
- 구문 강조, 타이핑 중 자동 제안, 설정 없이 작동하는 탭 완성 등의 기능을 제공
- bash 또는 zsh와 같은 다른 쉘과 유사하게 작동하지만, 주요 차이점이 있음
- 변수를 설정할 때 다른 셸에서 사용하는
=연산자 대신set명령어를 사용 :set name 'Mister Noodle' - 변수 치환 이후 추가로 값을 분리하지 않으며, 이는 공백이 포함된 값을 처리할 때 유용 :
mkdir $name # 하나의 디렉토리 "Mister Noodle" 생성 - 명령 치환에서 백틱(``) 대신 $() 또는 ()를 사용:
echo "Current directory: $(pwd)" - 명령 치환의 출력값을 공백 대신 줄바꿈(newline)으로만 분리
- 모든 변수를 리스트로 처리하며, 다른 셸의 문자열 기반 변수와 다름 :
set PATH /usr/bin /bin - 리스트 요소를 접근할 때 1부터 시작하는 인덱스를 사용 :
echo $PATH[1] - 별칭(alias)을 지원하지 않으며, 대신 함수(function)를 사용
- &&, ||뿐만 아니라 and, or, not 키워드를 지원 :
command1; and command2; or command3 - 명령어와 히스토리를 기반으로 실시간 추천(autosuggestions)을 제공 :
grep --ignore-case - .bashrc 대신 ~/.config/fish/config.fish 파일을 구성 파일로 사용
- 변수를 설정할 때 다른 셸에서 사용하는
- Homebrew, MacPorts 또는 공식 웹사이트를 통해 macOS에 설치할 수 있음. 지원되는 최소 macOS 버전은 10.10 "Yosemite"
- curses 또는 ncurses, 일반적인 Unix 시스템 유틸리티, 그리고 선택적으로 번역 지원을 위한 gettext 라이브러리와 같은 특정 의존성이 있음
- Fish를 기본 쉘로 사용하려면
chsh -s /usr/local/bin/fish명령을 사용 - Fish는 현재 Rust로 포팅되고 있으며, 모든 C++ 코드를 대체함
댓글과 토론
Hacker News 의견
- Fish는 최소한의 설정 요구로 시간 효율적인 도구로 인정받음.
- 사용자들은 Fish가 zsh보다 더 사용자 친화적이며, 설정 중 문제가 더 적다고 발견함.
- Fish는 사용자 스크립트에서 잘 처리되지 않는 특이 사례가 적어 견고함으로 칭찬받음.
- 일부 사용자들은 10년 이상 Fish를 사용해왔으며, bash보다 더 단순하고 직관적이라고 느낌.
- Fish는 패키지 매니저와 플러그인을 사용하는 zsh 설정이 필요한 것을 추가 기능 없이도 달성할 수 있어 그 기능성을 인정받음.
- 그러나 일부 사용자들은 bash 호환성의 부재가 단점으로 느껴짐, 다른 스크립트 언어로 전환하는 것이 필요하기 때문임.
- 일부 사용자들은 Fish의 설정 가능한 옵션 부재로 인해 Fish에서 zsh로 전환함.
- 이러한 단점에도 불구하고, 사용자들은 Fish를 자신의 기계에 좋은 추가로 여기며, 가끔 bash와 함께 사용함.
- 전반적으로, Fish는 호환성과 설정 가능성의 일부 제한에도 불구하고 사용자 친화적이고 효율적이며 견고한 쉘로 간주됨.