Computer >> 컴퓨터 >  >> 시스템 >> Linux

Bash에서 꼭 알아야 할 특수 문자 완벽 가이드

Bash에서 꼭 알아야 할 특수 문자 완벽 가이드

Bash에서 모든 문자가 똑같이 취급되는 것은 아닙니다. 어떤 문자들은 특별한 기능을 수행하고, 명령어를 조정하며, 데이터를 자유롭게 다룰 수 있게 도와줍니다. 이 글에서는 실무에서 가장 유용하게 쓰이는 Bash 특수 문자들을 하나로 정리했습니다. 각 문자의 사용법과 함께, 이들이 여러분의 터미널 작업을 얼마나 편리하게 만들어 주는지 확인해 보세요.

폴더 경로 구분자 (/)

Bash에서 슬래시(/)는 경로의 각 부분, 즉 폴더 안에 있는 하위 폴더들을 구분하는 역할을 합니다. 홈 폴더 안에 있는 'pictures'라는 폴더로 이동하려면 cd 명령어를 다음과 같이 사용합니다.

cd /home/USERNAME/pictures
Bash에서 꼭 알아야 할 특수 문자 완벽 가이드

위 예제에서 슬래시 뒤에 오는 모든 요소는 슬래시 앞에 있는 경로 내부에 위치한다는 의미입니다.

홈 디렉터리 (~)

Bash 터미널에서 홈 폴더의 전체 경로를 일일이 입력하는 대신 물결표(~)를 사용할 수 있습니다. 예를 들어 홈 폴더로 이동하려면 다음과 같이 입력합니다.

cd ~

물결표는 더 복잡한 경로에도 활용할 수 있습니다. 예를 들어 홈 디렉터리의 'Personal' 폴더 안에 있는 'mydata.txt' 파일을 편집하려면 다음과 같이 입력합니다.

nano ~/Personal/mydata.txt

현재/상위 폴더 (.)

마침표 한 개(.) 또는 두 개(..)를 사용해 작업을 수행할 대상이 현재 디렉터리인지, 아니면 바로 위 상위 디렉터리인지 지정할 수 있습니다. 마침표 한 개(.)는 현재 폴더를, 두 개(..)는 그 위의 폴더를 가리킵니다.

예를 들어 '/home/USERNAME/pictures' 폴더에 있고, 같은 디렉터리 안의 'transform_images.sh' 스크립트를 실행하고 싶다면 다음과 같이 입력합니다.

sh ./transform_images.sh

스크립트 실행 후 현재 폴더의 상위 폴더로 돌아가고 싶다면 다음을 입력합니다.

cd ..

이렇게 하면 '/home/USERNAME/pictures' 폴더에서 '/home/USERNAME'으로 이동하게 됩니다.

주석과 명령 취소 (#)

해시 기호(#)는 Bash 스크립트를 작성할 때 특히 유용합니다. 나중에 참고할 수 있도록 스크립트에 주석을 추가할 수 있기 때문입니다. Bash는 해시 기호 뒤에 오는 모든 내용을 무시합니다.

다음 스크립트에서 첫 번째 줄은 Bash 스크립트임을 선언하고, 두 번째 줄은 무시되는 주석이며, 세 번째 줄은 일반적인 복사 명령어입니다.

#!/bin/bash
# This is a comment - you can type anything you want here
cp file1.txt /home/USERNAME/scripts/file2.txt

해시 기호는 스크립트를 작성하지 않을 때도 유용합니다. 명령어의 일부를 임시로 취소할 수 있기 때문입니다. 직접 확인해 보려면 다음 간단한 명령어를 입력해 보세요.

echo I am YOUR_NAME

그다음 아래와 같이 입력해 보세요.

echo I am #YOUR_NAME

두 번째 버전에서는 'I am'만 출력됩니다. 해시 기호가 그 뒤의 모든 내용을 취소했기 때문입니다.

범위 지정 ([])

대괄호([])로 문자를 묶으면 문자 범위를 정의할 수 있습니다. 예를 들어 D 또는 M으로 시작하는 폴더 이름을 찾고 싶다면 다음과 같이 입력합니다.

ls [DM]*
Bash에서 꼭 알아야 할 특수 문자 완벽 가이드

연도별 이름이 붙은 하위 폴더가 가득한 폴더에 있다면, 최근 5년치 폴더를 /home/USERNAME/backup으로 복사할 때 다음과 같이 사용할 수 있습니다.

cp -r 201[56789] /home/USERNAME/backup

대시(-)를 사용하면 더욱 간결하게 표현할 수 있습니다.

cp 201[5-9] /home/USERNAME/backup

Bash는 5부터 9까지 사이의 숫자를 모두 포함하여 반복 처리합니다.

입출력 리다이렉션 (<>)

꺾쇠 괄호(<>)를 사용하면 명령어의 입력이나 출력을 원하는 곳으로 전달(리다이렉션)할 수 있습니다. 예를 들어 다음 명령어는:

ls >> list.txt

ls의 출력 결과를 'list.txt' 파일에 저장합니다.

여기서 오른쪽 꺾쇠 두 개(>>)는 명령어의 출력을 파일에 추가(append)한다는 점에 유의하세요. 같은 명령어를 다시 실행하면 기존 내용 끝에 결과가 덧붙여집니다. 기존 내용을 새 결과로 덮어쓰기(replace)하려면 오른쪽 꺾쇠 한 개(>)를 사용합니다.

ls > list.txt

파이프 (|)

파이프(|)를 사용하면 여러 명령어를 하나의 큰 흐름으로 연결해 더 복잡한 작업을 수행할 수 있습니다. 리다이렉션과 비슷한 역할이지만 방식에는 차이가 있습니다.

수천 개의 항목이 담긴 거대한 파일에서 자신의 이름을 찾고 싶다고 가정해 봅시다. 텍스트 편집기에서 일일이 검색하는 대신 다음과 같이 입력하면 됩니다.

cat entries.txt | grep 'YourName'
Bash에서 꼭 알아야 할 특수 문자 완벽 가이드

이 경우 'entries.txt'의 출력 결과가 grep 명령어로 전달되어 원하는 이름만 걸러지게 됩니다.

명령어 구분자 (;)

Bash에서는 세미콜론(;)으로 명령어를 구분해 한 번에 여러 명령을 실행할 수 있습니다. 예를 들어 두 개의 폴더를 서로 다른 위치로 한 번에 복사하려면 다음과 같이 입력합니다.

cp folder1 destination1; cp folder2 destination2

세미콜론이 두 명령어를 구분하고, Bash가 이를 순차적으로 실행하도록 지시합니다. 세 개 이상의 명령어도 필요에 따라 연결해서 사용할 수 있습니다.

와일드카드 (*)

별표(*)는 이미 여러 명령어에서 사용해 보셨을 겁니다. 임의의 문자열과 일치하며, 예를 들어 한 폴더의 모든 JPG 파일을 다른 폴더로 복사하는 작업을 손쉽게 처리할 수 있습니다.

cp /home/USERNAME/folder1/*.jpg /home/USERNAME/folder2/

물음표(?) 역시 Bash의 와일드카드지만, 단 한 글자와만 일치합니다. 예를 들면 다음과 같습니다.

cp /home/USERNAME/201?/*.jpg /home/USERNAME/folder2/

위 명령어는 '201'로 시작하는 폴더 안의 모든 jpg 파일을 복사합니다. 와일드카드는 숫자뿐 아니라 모든 영숫자와 일치하므로, '201A'나 '201z'처럼 이름이 지어진 폴더도 함께 복사된다는 점에 유의하세요.

백그라운드 실행 (&)

명령어 뒤에 앰퍼샌드(&)를 붙이면 해당 명령을 백그라운드 프로세스로 실행할 수 있습니다.

cp /home/USERNAME/Downloads/huge_file.zip /home/USERNAME/backups &

위 명령은 huge_file.zip 복사를 시작한 직후 백그라운드로 전환되므로, 터미널을 계속 사용할 수 있습니다. 작업이 완료되면 자동으로 종료됩니다. 다시 포그라운드로 가져오고 싶다면 fg를 입력하고 Enter를 누르면 됩니다.

변수 ($)

달러 기호($)를 사용하면 명령어에서 활용할 변수를 설정할 수 있습니다. 직접 확인해 보려면 터미널에 다음을 입력해 보세요.

myname=YOUR_NAME
myage=YOUR_AGE
echo "I'm $myname and I'm $myage years old"
Bash에서 꼭 알아야 할 특수 문자 완벽 가이드

변수에 값을 할당할 때는 달러 기호를 붙이지 않는다는 점에 주의하세요.

이스케이프(\)와 따옴표("")

특수 문자를 명령어에서 문자 그대로 사용하고 싶다면 이스케이프 처리를 해야 합니다. 특수 문자 앞에 백슬래시(\)를 붙이면 됩니다. 예를 들어 파일 이름에 느낌표가 포함되어 있다면, Bash가 이를 특수 문자가 아닌 느낌표 자체로 해석하도록 \!처럼 입력해야 합니다.

또 다른 방법은 작은따옴표('')나 큰따옴표("")를 사용하는 것입니다. 문자열을 따옴표로 감싸면 그 안의 특수 문자는 실제 문자로 취급됩니다. 단, 작은따옴표와 큰따옴표에는 차이가 있습니다. 작은따옴표는 감싼 문자열을 순수한 텍스트로 평가하는 반면, 큰따옴표는 문자열 안에서 변수($)를 사용할 수 있게 해줍니다.

마무리

위에서 소개한 것들이 Bash 특수 문자의 전부는 아니지만, 터미널에서의 일상적인 작업에 가장 유용하다고 생각되는 문자들입니다. Bash에서 빠르게 이동할 수 있는 키보드 단축키도 함께 살펴보시길 추천합니다. 중요한 특수 문자를 빠뜨린 것이 있다면 댓글로 알려주세요!