Some terminal frustrations

Julia Evans

터미널의 답답한 점들

몇 주 전 터미널에 관한 설문조사를 진행했습니다 (결과는 여기에서 볼 수 있습니다). 설문 마지막에는 이렇게 물었습니다:

터미널을 사용할 때 가장 답답한 점은 무엇인가요?

1,600명이 답변해 주었고, 며칠에 걸쳐 모든 응답을 분류하기로 했습니다. 해보니 정성적 데이터를 분류하는 일은 결코 쉽지 않다는 걸 알았지만, 나름대로 최선을 다했습니다. 결국 더 빠르게 분류하기 위해 직접 도구를 만들었습니다.

제 설문조사가 늘 그렇듯 이번에도 방법론이 특별히 과학적이지는 않습니다. Mastodon과 Twitter에 설문을 올리고 며칠간 진행한 뒤, 우연히 보고 응답하고 싶었던 분들에게 답변을 받았습니다.

가장 많이 나온 답답함 유형은 다음과 같습니다!

이 의견들을 읽기 전에 염두에 두면 좋을 점이 있습니다.

  • 설문 응답자의 40%는 터미널을 21년 이상 사용해 왔습니다
  • 95%는 최소 4년 이상 사용해 왔습니다

이 의견들은 완전 초보자에게서 나온 것이 아닙니다.

이제 답답함의 유형을 하나씩 살펴보겠습니다. 괄호 안 숫자는 해당 항목을 언급한 사람 수입니다. 이 글은 주로 저 자신을 위해 정리하는 것입니다. 터미널에 관한 zine을 준비하면서 사람들이 어떤 부분에서 어려움을 겪는지 파악하고 싶었습니다.

문법 기억하기 (115)

많은 분들이 다음과 같은 문법을 기억하는 데 어려움을 겪는다고 했습니다:

  • awk, jq, sed 같은 CLI 도구의 문법
  • 리다이렉션 문법
  • tmux나 텍스트 편집 등의 키보드 단축키

대표적인 답변 하나를 소개합니다:

제대로 활용하려면 기억해야 할 자잘한 ‘암기’ 요소가 너무 많습니다. 이렇게 오래 써왔는데도 가끔은 stderr가 2였는지 1이었는지 헷갈리고, >>> 중 무엇이 무엇인지 잊어버리곤 합니다.

터미널 환경 전환이 어렵다 (91)

집과 직장 컴퓨터를 오가거나 SSH로 접속하는 등 시스템을 전환할 때 겪는 어려움에 대한 이야기가 많았습니다. 예를 들면 다음과 같습니다:

  • 키보드 단축키의 OS별 차이(예: Linux와 Mac)
  • 선호하는 텍스트 에디터가 없는 시스템(“vim이 없음” 혹은 “vim밖에 없음”)
  • 같은 명령어의 버전 차이(예: Mac OS의 grep과 GNU grep)
  • 탭 완성이 안 되는 경우
  • 익숙하지 않은 셸(“zsh와 bash의 미묘한 차이”)

같은 시스템 안에서도 pager가 서로 일관되지 않은 경우(git diff pager와 다른 pager 등) 같은 문제도 있었습니다.

대표적인 답변입니다:

fish와 vi 모드에 익숙해졌는데, 서버나 컨테이너에 SSH로 접속하면 그런 것들을 쓸 수 없습니다.

색상 (85)

색상과 관련한 문제도 많았습니다. 예를 들면 다음과 같습니다:

  • 밝은 배경색에서 읽기 어려운 색상을 지정하는 프로그램
  • 마음에 드는 컬러 스킴을 찾고 여러 앱에서 일관되게 동작하도록 만드는 데 어려움을 겪는 경우
  • SSH/tmux 등을 여러 겹으로 거치면 색상이 제대로 표시되지 않는 문제
  • 기본값이 마음에 들지 않는 경우
  • 색상을 전혀 원하지 않는데 끄기가 어려운 경우

다음 답변은 특히 공감이 갔습니다:

터미널 에뮬레이터와 fish 사이에서 터미널 테마를 그럴듯하게 설정하는 것(몇 년 전에 했는데, 꽤나 번거롭고 까다로웠던 기억이 납니다. 지금은 그럭저럭 동작하니 현재 테마에 갇힌 느낌이고, 그 설정을 다시 건드리는 게 끔찍하게 느껴집니다).

키보드 단축키 (84)

키보드 단축키에 관한 답변 중 절반은 Linux/Windows에서 터미널의 복사/붙여넣기 단축키가 운영체제의 다른 곳과 다르다는 점에 대한 것이었습니다.

복사/붙여넣기 외에 언급된 다른 단축키 문제는 다음과 같습니다:

  • 브라우저 기반 터미널에서 Ctrl-W를 눌렀다가 창이 닫히는 문제
  • 터미널이 제한된 종류의 단축키만 지원하는 문제(Ctrl-Shift- 불가, Super 불가, Hyper 불가, Ctrl-, 같은 많은 ctrl- 단축키를 쓸 수 없음)
  • 운영체제가 터미널 단축키 사용을 막는 경우(예: Mac OS에서는 기본적으로 Ctrl+left arrow가 다른 기능에 할당되어 있음)
  • 터미널에서 emacs를 사용할 때 생기는 문제
  • 백스페이스가 동작하지 않는 문제 (2)

그 밖의 복사/붙여넣기 문제 (75)

“복사/붙여넣기 단축키가 다르다”는 문제 외에도 복사/붙여넣기와 관련한 다양한 문제가 언급되었습니다. 예를 들면 다음과 같습니다:

  • SSH를 통한 복사
  • tmux와 터미널 에뮬레이터가 서로 다른 방식으로 복사/붙여넣기를 처리하는 문제
  • 여러 클립보드(시스템 클립보드, vim 클립보드, Linux의 “가운데 클릭” 클립보드, tmux 클립보드 등)를 다루고 이를 동기화해야 하는 문제
  • 터미널에서 복사할 때 불필요한 공백이 추가되는 문제
  • 여러 줄 명령어를 붙여 넣었을 때 무섭게도 자동으로 실행되는 문제
  • 마우스를 쓰지 않고 텍스트를 복사하고 싶은데 방법이 없는 문제

발견 가능성 (55)

이 항목에 대한 답변도 많았는데, 결국 핵심 불만은 같았습니다. 유용한 도구나 기능을 발견하기가 어렵다는 것입니다! 다음 답변이 이를 잘 요약해 줍니다:

혼자서 배우기가 얼마나 어려운지요. 제가 아는 것 대부분은 몇 년 동안 여러 사람들에게서 듣고 모은 것들입니다.

가파른 학습 곡선 (44)

학습 곡선이 가파르다는 의견도 많았습니다. 대표적인 답변 두 가지를 소개합니다:

15년 동안 써왔는데, 5년 전이나 어쩌면 10년 전에 비해 딱히 더 빨라진 것 같지 않습니다.

그리고

단축키와 명령어를 더 배우고 터미널을 설정하면 삶이 편해질 거라는 걸 알지만, 너무 벅차게 느껴져서 시간을 내지 않게 됩니다.

히스토리 (42)

셸 히스토리와 관련한 문제는 다음과 같습니다:

  • 터미널 탭 간에 히스토리가 공유되지 않는 문제 (16)
  • 히스토리 길이가 너무 짧은 문제 (4)
  • 터미널 탭을 복원해도 히스토리가 복원되지 않는 문제
  • 터미널이 충돌하면서 히스토리를 잃어버리는 문제
  • 히스토리 검색 방법을 모르는 문제

대표적인 답변입니다:

원인을 파악하기 전까지 많은 시간을 낭비했고, 지금도 zsh의 “history” 버퍼가 너무 작다는 점이 짜증납니다. 쓸 만한 길이의 히스토리를 보려면 “history 0”을 입력해야 합니다.

부실한 문서 (37)

다음과 같은 이야기가 있었습니다:

  • 문서가 전반적으로 불친절하고 이해하기 어렵다는 점
  • man 페이지에 예시가 부족하다는 점
  • man 페이지가 없는 프로그램이 있다는 점

대표적인 답변입니다:

좋은 예시와 문서를 찾기가 어렵습니다. man 페이지만으로는 부족한 경우가 많아 Stack Overflow를 뒤져야 합니다.

스크롤백 (36)

스크롤백과 관련한 문제는 다음과 같습니다:

  • 프로그램이 너무 많은 데이터를 출력해서 스크롤백 히스토리를 잃어버리는 문제
  • 터미널 크기를 조절하면 스크롤백이 깨지는 문제
  • 타임스탬프가 없는 문제
  • 백그라운드에서 시작한 GUI 프로그램이 이것저것 출력하면서 다른 프로그램의 출력을 가리는 문제

대표적인 답변입니다:

터미널 크기를 조절할 때(특히 너비를 좁힐 때) 명령어가 터미널 창 너비에 맞춰 출력을 포맷했기 때문에 스크롤백 내용이 다시 줄 바꿈되면서 깨지는 경우입니다.

“구식처럼 느껴진다” (33)

터미널이 과거의 결정들 때문에 발목을 잡힌 느낌이며, 사용자가 결국엔 아주 난해하게 느껴지는 구현 세부 사항까지 배워야 한다는 의견이 많았습니다. 대표적인 답변입니다:

대부분의 오래된 잔재들 때문에, CLI 인터페이스를 백지 상태에서 다시 구현하면 좋을 것 같습니다.

셸 스크립트 (32)

POSIX 셸 스크립트에 대한 불만이 많았습니다. 셸 스크립트 자체가 어렵다는 인식이 전반적인데, 그렇다고 fish나 nushell 같은 덜 표준적인 스크립트 언어로 바꾸는 것도 나름의 문제를 일으킨다는 의견이었습니다.

셸 스크립트요. 셸 스크립트를 버리고 스크립트 언어로 넘어가려는 인내심이 거의 바닥났습니다. 너무 지저분하면서도 강력해서요. 잘못하면 대가가 클 수 있어서 아예 시도조차 하지 않습니다.

그 외의 문제들

10번 이상 언급된 다른 문제들은 다음과 같습니다:

  • (31) 일관되지 않은 명령줄 인자: -h인지 help인지 --help인지 헷갈리는 문제
  • (24) 여러 시스템에서 dotfiles 동기화를 유지하는 문제
  • (23) 성능 문제(예: “셸 시작이 너무 오래 걸린다”)
  • (20) 창 관리(tmux 탭, 터미널 탭, 여러 터미널 창이 뒤섞인 경우. 그 셸 세션은 어디로 갔을까?)
  • (17) 전반적인 두려움/불안감(“명령어 하나로 뭔가 알 수 없는 나쁜 일을 저지를 것 같고, 어떻게 고치거나 되돌려야 할지, 심지어 무슨 일이 일어난 건지조차 전혀 알 수 없을 것 같은 마비될 정도의 두려움”)
  • (16) terminfo 문제(“새로운 터미널 에뮬레이터를 써보거나 다른 곳에 SSH로 접속할 때 terminfo를 배워야 하는 경우”)
  • (16) 이미지 지원 부족(sixel 등)
  • (15) SSH 문제(SSH 연결이 끊기면 처음부터 다시 시작해야 하는 경우 등)
  • (15) 다양한 tmux/screen 문제(예: tmux와 터미널 에뮬레이터 간의 통합 부족)
  • (15) 오타와 느린 타이핑
  • (13) 여러 이유로 터미널이 깨지는 문제(Ctrl-S를 누르거나 바이너리를 cat하는 경우 등)
  • (12) 셸에서의 인용/이스케이프 처리
  • (11) 다양한 Windows/PowerShell 관련 문제

해당 없음 (122)

“딱히 없다”거나 “터미널에서 모든 걸 다 할 수 없다는 점 정도”라는 취지의 답변도 122개 있었습니다.

대부분의, 혹은 모든 답답한 점에 대한 해결책을 찾은 것 같습니다.

이게 전부입니다!

이 결과에 대해 길게 논평하지는 않겠지만, 제게 서로 연관되어 보였던 유형 몇 가지를 짚어보겠습니다:

  • 문법 기억하기와 히스토리(기억해야 할 것이 예전에 실행했던 것인 경우가 많습니다!)
  • 발견 가능성과 학습 곡선(발견 가능성이 부족한 것이 학습을 어렵게 만드는 큰 요인입니다)
  • “시스템 전환이 어렵다”와 “구식처럼 느껴진다”(30~40년 동안 거의 변하지 않은 도구들은 여러 문제가 있지만 어떤 시스템에 가든 항상 거기에 있다는 장점이 있습니다. 그래서 매우 유용하고, 쓰기를 그만두기도 어렵습니다)

이 모든 결과를 합리적인 방식으로 분류해 보면서 사회과학 연구자들의 역량에 새삼 감사하게 되었습니다.

원문은 Julia Evans님이 에 게재했습니다.

이 글은 muse-spark-1.2-contributor 모델을 사용해 번역했습니다.