메뉴
HN
Hacker News • 35일 전

LLM은 유닉스가 승리했다는 증거다

IMP
4/10
핵심 요약

저자는 오랜 리눅스 사용자로서 커맨드라인 도구들을 조합해 원하는 작업을 수행하는 유닉스 철학의 강력함을 강조하며, LLM이 바로 이 '작은 도구들의 조합'이라는 유닉스식 사고방식이 결국 승리했음을 보여준다고 주장합니다. 텍스트 기반 인터페이스와 파이프라인으로 대표되는 유닉스의 설계 철학이 AI 시대에도 여전히 유효하다는 통찰을 담은 에세이입니다.

번역된 본문

LLM은 유닉스가 승리했다는 증거이다

태그: 단상 2026년 8월 20일 목요일 게시

처음 유닉스와 '유닉스 계열' 운영체제에 대해 알게 되었을 때, 나는 흥미를 느꼈다. 그때까지 나는 윈도우 3.1의 화려한 세계만 알고 있었다. 일본 목공예처럼, 모든 것이 하나의 덩어리에서 아무 틈도 없이 깎여 나온 것처럼 보였다(다만 일본 목공예는 견고하지만, 윈도우 3.1을 그렇게 말할 수 있는 사람은 아무도 없다). 처음 커맨드라인 프롬프트 앞에 앉았을 때의 놀라움을 상상해 보라. 깜빡이는 커서가 뭔가 입력하라고 도발했고, 컴퓨터가 할 수 있다고 알고 있던 어떤 일도 어떻게 해야 할지 명백하지 않았다. 벅찬 퍼즐이었다. 나는 푹 빠져 버렸다!

다음 마을에 있는 놀랍도록 잘 갖춰진 도서관 덕분에, 유닉스에도 다양한 계열 혹은 진화적 사촌들이 있으며, 그중 일부 동작은 POSIX 같은 표준으로 규정되어 있다는 것을 알게 되었다. 또한 GNU와, 모든 것을 잠그고 만지작거리는 것을 막으려는 데 더 관심이 있어 보이는 세상에 이 모든 소프트웨어를 공개한 초창기 해커들의 영웅적인 노력에 대해서도 알게 되었다. 오, 눈부신 새 세상이여!

그래도 나는 포기하지 않았다. 끊임없이 깜빡이는 프롬프트를 노려보며 명령어를 먹여 댔다. 한참 세월이 흐르고, FreeBSD를 거쳐간 뒤로 나는 지금도 열렬한 리눅스 사용자다. 리눅스가 내 작업 방식에 맞기 때문이다. 나는 위험하게 사는 것을 좋아하는데, 중요한 마감 직전에 커널 업데이트를 미루곤 한다. 아주 짜릿하다. 그리고 어떤 곤경이든 스스로 빠져나올 수 있는 능력에 대해 대체로 낙관적이다.

내가 높이 사는 것은 리눅스가 자기효능감을 발휘하게 해준다는 점이다. 본질적으로, 리눅스를 사용하며 겪는 고통은 거의 대부분 자초한 것이다. 다음 iOS 업데이트가 내 기기들을 망가뜨리지 않기를 빌어야 하는 것 같은 어리석은 상황보다 훨씬 낫다. 이런 태도는 대개 멍한 시선이나 늘 그렇듯 "그건 그렇고…"라는 반응을 받곤 한다. 이해하지 못하는 사람들, 즉 골수 너드나 닐 스티븐슨 팬, 아니면 시간이 남아도는 사람이 아닌 거의 모든 사람들로부터 말이다.

짜릿한 위험감 옆에서, 리눅스가 나를 가장 매료시키는 것은 디지털 점토처럼 내 목적에 맞게 빚어낼 수 있다는 점이다. 내가 사용하는 커맨드라인 도구들의 상당수는 꽤 오래전부터 존재해 왔지만, 여전히 훌륭하게 작동하며 다음과 같은 일을 할 수 있게 해준다:

rg -t py "^\surl ="
| grep -Eo "(http|https)://[a-zA-Z0-9./?=_%:-]
"
| awk -F/ '{print $3}'
| sort
| uniq -c
| sort -rn

자연어로 표현하자면, 이 명령어의 목적은 현재 디렉토리와 하위 디렉토리의 모든 파이썬 파일에서 url이라는 이름의 변수에 할당된 URL들을 추출하여 github.com 같은 도메인 이름을 세는 것이다.

이게 외계어처럼 읽힌다면, 젊고 혈기왕성하던 나는 (네오)빔과 활력이 넘쳐 그 유명한 말을 던졌을 것이다. "리눅스는 매우 사용자 친화적입니다. 다만 친구를 가려낼 뿐이죠." 그렇다, 젊은 나는 장인처럼 적을 만드는 데 능숙했다.

세월이 주는 지혜와 관록으로 이제는 외교적으로 말하겠지만, 이런 방식의 컴퓨터 작업이 많은 이들에게 그토록 낯설다는 여전히 이상하게 느껴진다. 현대적인 GUI에만 익숙한 사람에게 나의 고전적인 워크플로우를 설명하는 것은, 플랫랜드(2차원 세계)에 사는 사람에게 고차원을 설명하는 것과 비슷하다. 운이 좋아도 그들은 정중하게 듣고는, 살짝 이상하다고 치부한 채 예전 방식으로 돌아갈 뿐이다.

하지만 다시 말하지만, 나는 굽히지 않았고 컴퓨터는 사용자가 원하는 것을 만들 수 있는 범용 인터페이스를 제공해야 한다는 확신을 지켰다. GUI는 사용자가 취할 경로를 추측해야만 하기 때문에 이러한 욕구를 부분적으로만 충족시킬 수 있다. 반면 옛날 유닉스의 원로들은 사용자 행동을 추측하거나 강제하는 것은 헛수고라는 것을 깨달았다. 대신 그들은 특정 철학을 따르는 몇 가지 작은 도구들로 모두를 무장시키기를 택했다. 즉, 한 가지 일만 잘 하는 프로그램을 작성하라는 것이다.

원문 보기
원문 보기 (영어)
LLMs Are Proof That Unix Won Tags: musings Published on Thursday, August 20, 2026 « Previous post: A Pledge for Scientists When I first learned about Unix and “Unix-like” operating systems, I was intrigued. I had only known the colorful world of Windows 3.1 so far. Like Japanese carpentry , everything seemed to be carved out of one block with no apparent cracks (except that Japanese carpentry is rock solid, and the same cannot be said about Windows 3.1 with a straight face). Imagine my surprise when I sat in front of a command-line prompt for the first time. The blinking cursor dared me to enter something and there was, at first, no obvious way to achieve any of the things I already knew a computer could do. A formidable puzzle—I was hooked! Thanks to a surprisingly well-stocked library the next village over, I learned that there are different flavors or evolutionary cousins of Unix, and that some of their behavior is codified by standards like POSIX . I also learned about GNU and the heroic efforts of the first waves of hackers who made all of this software available to a world that seemed more interested in locking down everything and preventing any tinkering. O brave new world! But I persisted. I stared down the ever-blinking prompt and fed it. Many moons later, after a detour with FreeBSD , I remain an avid Linux user since it suits my working style: I like to live dangerously, often deferring kernel updates right before important deadlines—what a thrill—and generally being quite optimistic about my ability to get myself out of any jam. What I appreciate is that Linux lets me exercise my self-efficacy . In essence, virtually all the pain I may experience by using it is, to a large extent, self-inflicted . That feels so much better than having to pray that the next iOS update does not destroy my devices or some other nonsense. This attitude is often met with blank stares or the usual “Anyway, …” by people who just don’t get it, i.e., almost everyone else who is not a huge nerd, Neal Stephenson fan, or blessed with an abundance of free time. Next to the nice tingling sense of danger, the thing that entices me most about Linux is the ability to mold it to my purposes like digital clay. Many of the command-line tools I use have been around for quite some time now 1 but they still work admirably and allow me to do things like this: 2 rg -t py "^\s*url =" \ | grep -Eo "(http|https)://[a-zA-Z0-9./?=_%:-]*" \ | awk -F/ '{print $3}' \ | sort \ | uniq -c \ | sort -rn In natural language, the purpose of this command is to extract and count domain names like github.com from URLs that are assigned to variables named url across all Python files in the current directory and its subdirectories. If this reads like gibberish to you, my younger hothead self, full of (neo)vim and vigor, would have hit you with the old “Linux is very user-friendly; it’s just also super picky about its friends.” Yes, younger me was adept at making enemies like a craftsman. 3 With the wisdom and mellowing of the years, I would now be diplomatic, but it still strikes me as odd that this way of working with a computer is so alien to many. Explaining my ancient workflow to someone who is used to only modern GUIs is a bit like explaining higher dimensions to someone inhabiting Flatland : At best, they will politely listen before discarding what you said as mildly odd and going back to their old ways. But again, I persisted and stuck to my conviction that a computer should offer you a general-purpose interface that enables you to build things you like. GUIs can only partially sate that need since they need to guess what path you are wont to take. By contrast, the Unix graybeards of yore realized that it is futile to guess or railroad user behavior—instead, they opted to equip everyone with a couple of smallish tools that adhere to a certain philosophy : Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface. Decades later, this still works. Programs have become larger, more complex, but also more convenient for highly-specific cases like video editing—but at the core of many machines lies this wonderful interface that offers nigh-limitless fun. 4 Instead of widening the gap between the CLI dwarves and the GUI elves, however, something unexpected happened, viz., the development of large language models . Presenting at first nothing but an input box to the user, they constituted a deliberate break in habits for many. Here, then, was no GUI waiting for you to specify what type of picture you wanted to create. The prompt was daring you to dream big. I imagine for some, it must have been a bit shocking even—a program that does not tell you what to do with it was unheard of. 5 And progress marched on, leaving the prompts of the early days 6 for ever-refined queries in natural language. Now, instead of having to know about awk , grep , and friends, one can just ask their favorite LLM: I want to extract and count domain names like github.com from URLs that are assigned to variables named url across all Python files in the current directory and its subdirectories. How do I do this with a set of shell commands? The output is quite competent: grep -rhoP "url\w*\s*=\s*['\"]\Khttps?://[^'\"]+" --include="*.py" . \ | sed -E 's#https?://##; s#/.*##' \ | sort \ | uniq -c \ | sort -rn The commands do more or less the same thing. My hand-crafted one with rg automatically ignores hidden directories, though, which is typically what you want to do when searching code, but I did not provide that context to the LLM. Moreover, -P will fail on operating systems that use the BSD variant of grep . Again, the LLM lacks the context, but this command will work when I copy and paste it into my terminal. I could even use one of the CLI tools myself to make it directly execute the command for me, with the LLM serving as a translator between natural language commands and ancient Unix incantations. In that sense, LLMs are embodying the Unix philosophy. Of course, this analogy has holes so big you can easily ride a horse through. LLMs are neither small nor do they do one thing—you could even argue that some of the things they do, they certainly do not do well . These issues notwithstanding, LLMs understand that text is the universal interface. Instead of users needing to learn how to talk to the computer, the computer now talks to you. A couple of years ago, this notion would have seemed utterly optimistic. No one would have expected that “text and tokenization” are the recipe for building general-purpose AI models. But here we are, relying less and less on GUIs and instead going back to our beloved Unix-like interface. For all the problematic things around AI, 7 we may at least find some comfort in being vindicated after so many decades: Text reigns supreme and Unix won. Most, if not all of them, are older than my students. Some are even older than me. Tempus fugit .  ↩︎ There are probably ways to do this more efficiently. Please let me know about them—I am not claiming that my CLI knowledge is the best.  ↩︎ I could blame my neurodivergence but I think even with these extenuating circumstances, I used to be (even more) insufferable when I was younger. Sorry!  ↩︎ At least, that is my definition of fun.  ↩︎ I suspect that this lingering feeling is still the reason for the many example prompts/images of the first generation of these models.  ↩︎ With such absolute gems like this one: A wizard standing on a mossy stone path inside an ancient forest, casting a glowing spell from his wooden staff. Dynamic cinematic lighting, concept art by Alphonse Mucha, Octane Render, Unreal Engine 5, hyperrealistic details, 8K, crisp, m