Bash에서 모든 문자가 동일한 것은 아닙니다. 그들 중 일부는 특수 기능을 수행하고 명령을 조정하며 데이터 조작을 돕습니다. 이것이 우리가 가장 중요한 Bash 특수 문자로 다음 목록을 편집한 이유입니다. 사용 방법과 일상적인 Bash 생활을 더 쉽게 만드는 방법에 대해 알아보세요.
폴더 경로 구분 기호(/)
Bash에서 슬래시(/
) 경로의 부분, 즉 폴더 내 하위 폴더를 구분합니다. 홈 폴더 안에 있는 "pictures"라는 폴더를 방문하려면 cd
명령을 사용해야 합니다. 다음과 같이:
cd /home/USERNAME/pictures
위의 예에서 슬래시 뒤의 모든 것은 슬래시 앞에 있는 것 안에 있습니다.
홈 디렉토리(~)
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]*
아마도 당신은 대신 매년 이름을 딴 하위 폴더로 가득 찬 폴더에 있을 것입니다. 지난 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" 파일에 저장합니다.
이중 오른쪽 꺾쇠 괄호(>>
) 추가 파일에 대한 명령의 출력. 동일한 명령을 다시 실행하면 출력이 기존 내용의 끝에 추가됩니다. 교체하려면 새로운 결과가 포함된 콘텐츠는 단일 직각 괄호(>
):
ls > list.txt
파이프(|)
파이프(|
)를 사용하여 다양한 명령을 더 큰 전체로 결합하여 더 복잡한 결과를 얻을 수 있습니다. ). 리디렉션과 다소 유사합니다(여기에서 유사점 및 차이점에 대해 자세히 알아보기).
수천 개의 항목이 있는 거대한 파일이 있고 그 파일에서 이름을 찾으려고 가정합니다. 텍스트 편집기에서 검색하는 대신 다음을 수행하십시오.
cat entries.txt | grep 'YourName'
이 경우 "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 &
위의 내용은 거대한_file.zip 파일 복사를 시작하고 즉시 배경으로 이동하여 터미널을 계속 사용할 수 있습니다. 명령이 완료되면 자동으로 종료됩니다. 다시 앞으로 가져오려면 fg
를 입력하면 됩니다. Enter 키를 누릅니다.
변수($)
달러 기호($
) 명령에 사용할 변수를 설정할 수 있습니다. 작동하는 모습을 보려면 터미널에 다음을 입력하십시오.
myname=YOUR_NAME myage=YOUR_AGE echo "I'm $myname and I'm $myage years old"
변수에 값을 할당할 때 달러 기호가 없음에 유의하십시오.
이스케이프(\) 및 따옴표(”)
명령에서와 같이 특수 문자를 사용하려면 해당 문자를 이스케이프해야 합니다. 특수 문자 앞에 백슬래시(\
). 예를 들어 느낌표가 포함된 이름의 파일이 있는 경우 \!
를 입력해야 합니다. 대신 Bash가 이를 특수 문자가 아닌 느낌표로 해석하도록 합니다.
다른 방법은 단일(''
) 또는 큰따옴표(""
). 문자열을 따옴표로 묶으면 그 안에 있는 모든 특수 문자가 실제 문자로 처리됩니다. 작은따옴표와 큰따옴표 사이에도 차이가 있습니다. 작은따옴표는 묶인 문자열을 텍스트로 평가하고 큰따옴표를 사용하면 묶인 문자열 내에서 변수($)를 사용할 수 있습니다.
마무리
위의 것들이 Bash의 유일한 특수 문자는 아니지만 터미널에서 일상적인 모험을 하는 데 가장 유용하다고 생각하는 문자입니다. Bash에서 빠르게 이동하려면 다음 키보드 단축키를 확인하는 것을 잊지 마십시오. 중요한 특수 문자를 놓친 경우 아래 댓글 섹션에 알려주십시오.