웹사이트 검색

가장 짜증나는 일상적인 리눅스 작업을 자동화해서 매주 몇 시간을 절약했어요


어느 날 오후, 나는 심심함에 history | tail -n 50를 실행해 보았다. 나는 아무것도 디버깅하고 있는 것이 아니었다. 최적화하고 있는 것도 아니었다. 나는 생산적인 미루기를 하고 있었는데, 이것은 리눅스의 전통이다.

돌아온 것은 일이 아니었다. 그것은 반복이었다. 같은 디렉토리로 cd하고, 이미 알고 있는 것을 확인하기 위해 ls를 실행하고, 매일 같은 패턴으로 cp와 mv를 사용했다. 터미널은 나를 판단하지 않았지만, 확실히 모든 기록을 남기고 있었다.

그 결과물은 불편할 정도로 분명한 것을 보여주었다. 나는 규율을 지키고 있는 것이 아니었다. 나는 보상하고 있었다. 각각 너무 작아서 무시할 수 있는 작은 행동들을 반복하고 있었던 것이다. 그 행동들이 모여 내가 공식적으로 지불하기로 동의한 적 없는 일상적인 정신적 부담을 만들어냈다. 그때가 바로 내가 생산성에 대해 생각하는 것을 멈추고 마찰에 대해 생각하기 시작한 순간이었다.

숨겨진 생산성 저하 요인으로서의 반복

작은 일상적인 일들이 해결하기에는 너무 사소하게 느껴지지만 금세 쌓이는 이유

대부분의 생산성 저해 요인은 스스로를 알리지 않습니다. 그것들은 일상처럼 나타납니다. 내가 Cinnamon을 실행하는 Linux 시스템에서, 그것들은 내가 일을 시작하기도 전에 나타났습니다. 나는 자동화를 여러 스크립트로 수행하기로 선택했지만, Actionaz와 같은 앱을 사용하면 거의 모든 작업을 같은 방식으로 수행할 수 있습니다.

매일 아침, 네모는 항상 같은 고정 폴더를 열었다. 나는 ~/Documents 아래의 같은 프로젝트 경로를 클릭했다. 다운로드 디렉토리는 다시 청소가 필요했는데, 보통 ls ~/Downloads로 확인한 후 이미 알고 있는 내용을 재확인하는 정도였다. 내보낸 파일들은 이름을 바꿔야 했는데, 'final_v3_reallyfinal.pdf' 같은 기본 이름은 내 정신 건강과 인간성에 대한 범죄와 같았다. 각 행동은 1분도 채 걸리지 않았지만, 고치고 싶은 마음이 들 정도는 아니었다. 그래서 그 행동들은 그대로 남아 있었다.

진짜 비용은 시간이 아니었다. 그것은 인지적 소음이었다. 이 모든 '빠른 작업' 하나하나가 문맥 전환을 강요했다. cd ../../current-project를 입력하는 것조차 원래 하려던 작업에서 집중을 빼앗는다. 시나몬은 매우 커스터마이징이 가능하지만, 어떤 데스크탑 환경도 스스로를 계속 방해하는 워크플로우로부터 당신을 보호할 수 없다.

결국 나는 이러한 성가신 일들을 참는 데 드는 에너지가 그것들을 제거하는 데 필요한 에너지보다 더 많다는 것을 깨닫게 되었다. 그때쯤 자동화는 선택이 아닌 필수가 되었다.

반복은 훈련이 아니라 경고다

리눅스가 시스템을 통해 반복되는 동작을 어떻게 가시화하는지

우리는 반복을 규율로 생각하는 경향이 있습니다. 매일 같은 일을 하는 것은 전문적이고 책임감 있어 보이죠. 하지만 실제로 절대 변하지 않는 수동 작업을 반복하는 것은 대개 시스템이 완성되지 않았다는 신호입니다.

리눅스는 이것을 숨기지 않습니다. 시나몬에서는 당신의 습관이 그대로 드러납니다. 파일 시스템이 이를 반영하고, 셸이 이를 기록합니다. 제가 history | grep cd로 제 기록을 살펴봤을 때, 패턴은 명백했습니다. 저는 생산적으로 명령을 사용하는 대신 탐색하고 있었고, 창조적이지 않았습니다.

이 과업들을 계속 살아 있도록 만드는 변명은 항상 똑같습니다. "잠깐이면 돼." 그 잠깐이 속이는 것입니다. 그것은 하루를 얕은 집중의 조각들로 나누어 버립니다. 리눅스는 이러한 행동을 보는 것으로부터 당신을 보호하지 않습니다. 오히려 그것을 드러냅니다. 반복을 알아차리면, 무시하기가 어려워집니다. 이를 인정하면 아무 것도 하지 않는 것이 점점 무책임하게 느껴지기 시작합니다. 반복은 규율의 증거가 아닙니다. 그것은 시스템이 주의를 흘려보내고 있는 곳을 알려주는 경고등입니다.

나는 일부러 자동화를 지루하게 만들었다

왜 단순한 도구가 똑똑한 시스템보다 항상 우위에 있는가

사람들이 '자동화'라는 말을 들으면 오케스트레이션 프레임워크, 대시보드, 혹은 화려한 코드 없는 도구를 떠올립니다. 저는 그런 것은 원하지 않았습니다. 저는 사라지는 자동화를 원했습니다.

리눅스에는 이미 필요한 모든 것이 포함되어 있습니다: 셸, 간단한 스크립팅, 크론을 통한 스케줄링, 그리고 rsync 같은 도구로 깔끔하게 처리되는 파일 작업들까지. 시나몬은 이 모든 일이 진행되는 동안 예의 바르게 자리에서 물러나 있습니다.

저는 지루할 정도로 사소한 변경부터 시작했습니다. 하루에도 여러 번 입력하던 긴 명령어들은 별칭으로 바꾸었고, 익숙한 탐색 패턴을 alias work='cd ~/Documents/Projects/Current'처럼 간단하게 만들었습니다. 여러 단계로 이루어진 작업 루틴들은 어디엔가 적절한 위치에 저장된 작은 셸 스크립트로 바꾸고, 한 단어로 실행할 수 있도록 했습니다.

여기에는 의도적으로 어떠한 영리함도 개입하지 않았습니다. 모든 스크립트는 한 가지 규칙을 따랐습니다. 내가 여섯 달 후에 열었을 때 즉시 무엇을 하는지 알 수 없다면, 그것은 내 워크플로우에 포함되지 않았습니다. 명확한 이름 짓기가 우아함보다 중요했습니다. 읽기 쉬움이 성능 조정보다 중요했습니다. 아래는 자동화를 설정하는 예제 스크립트입니다. 이미 사용하기 좋은 훌륭한 스크립트들이 존재합니다.

#!/bin/bash

# 1. Define the base path (Change this to your actual projects folder)
BASE_PATH="$HOME/Documents/Projects"
TARGET="$BASE_PATH/$1"

# 2. Check if the folder exists
if [ -d "$TARGET" ]; then
echo "Launching project: $1"

# 3. The "Setup" Chores
cd "$TARGET" || exit
xed . & # Opens Mint's text editor (or use 'code .' for VS Code)
nemo . & # Opens the file manager to this spot

# 4. Leave the terminal ready for work
ls -F
else
echo "Error: Project '$1' not found in $BASE_PATH"
fi

이런 종류의 자동화는 방치에도 살아남습니다. 영리한 시스템은 주의를 요구하지만, 지루한 시스템은 조용히 일을 처리하며, 존재조차 잊어버리게 만듭니다.

예상보다 빨리 성과를 낸 작업들

자동화가 즉각적인 안도감을 제공한 곳

가장 큰 성과는 복잡한 논리에서 나온 것이 아니라 반복되는 결정을 제거함으로써 얻어졌다.

프로젝트 설정은 초기의 승리였다. 예전에는 새 프로젝트를 시작할 때 폴더를 만들고 이름을 정하는 데 다섯 분 정도가 걸리곤 했다. 자동화 이후에는 단일 스크립트로 만들어진 예측 가능한 구조로 시작할 수 있게 되었다. src, docs, temp 같은 디렉토리가 즉시 나타났고, 내가 평소라면 깜빡하고 만들었을 스타터 파일도 함께 생겼다.

다운로드 폴더는 내가 더 이상 그것과 협상하지 않게 되면서 쓰레기장이 되는 것을 멈췄다. 수동으로 정리하는 대신, 예약된 작업이 간단한 find ~/Downloads -mtime +7 -delete 명령을 사용해 설정한 일수보다 오래된 파일을 조용히 삭제했다. 중요한 것이 있다면 나는 그것을 옮겼고, 그렇지 않으면 사라졌다.

백업은 가장 큰 심리적 만족을 가져다주었다. 한 번 rsync로 자동 실행되고 타임스탬프가 찍힌 디렉토리를 남기면, 더 이상 배경 불안이 되지 않았다. 나는 ls backups/로 모든 것을 빠르게 확인하고 하루를 이어갈 수 있었다.

사라진 것은 일이 아니라 소음이었다. 시스템은 처음부터 절대 물어봐서는 안 될 질문을 더 이상 나에게 묻지 않았다. 그 침묵이 쌓여갔다. 작은 자동화가 하나씩 생길 때마다 다음 갈등의 원인을 더 쉽게 발견할 수 있었다.

리눅스는 반복을 제거하는 것을 더 쉽게 만들어줍니다

문제가 한 번에 해결되기를 기대하는 시스템

리눅스는 패턴을 알아차리고 이에 대해 조치를 취할 것이라는 기대를 가지고 설계되었습니다. 도구들은 조합이 가능합니다. 출력은 입력이 되도록 되어 있습니다. grep과 같은 명령어가 존재하는 이유는 로그가 무시되기 위해서가 아니라 읽고 조치하기 위해서입니다.

Cinnamon에서는 특히 이것이 잘 드러납니다. 데스크톱이 모든 것을 다시 해석해주지 않기 때문입니다. 파일은 파일입니다. 로그는 유용한 자료입니다. 스크립트는 일급 시민입니다. 시스템이 어떻게 작동하는지 보는 것을 아무것도 방해하지 않습니다.

리눅스는 동기 부여 문구로 자동화를 강요하지 않습니다. 반복적인 작업에 지치게 될 것이라고 조용히 가정할 뿐입니다. 마침내 컴퓨터를 관리하는 것을 멈추고 그것과 함께 일하기 시작하면, 무언가가 달라집니다.

문제를 매일 반복해서 해결하는 대신 한 번에 해결하는 시스템을 경험해 보면, 다시 돌아가는 것이 터무니없게 느껴집니다. 이는 리눅스가 더 빨라서가 아니라, 당신의 집중을 존중하여 그것을 유지할 수 있게 하기 때문입니다.

관련기사