Computer >> 컴퓨터 >  >> 체계 >> Linux

알아야 할 Bash 특수 문자

알아야 할 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" 파일에 저장합니다.

이중 오른쪽 꺾쇠 괄호(>> ) 추가 파일에 대한 명령의 출력. 동일한 명령을 다시 실행하면 출력이 기존 내용의 끝에 추가됩니다. 교체하려면 새로운 결과가 포함된 콘텐츠는 단일 직각 괄호(> ):

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 &

위의 내용은 거대한_file.zip 파일 복사를 시작하고 즉시 배경으로 이동하여 터미널을 계속 사용할 수 있습니다. 명령이 완료되면 자동으로 종료됩니다. 다시 앞으로 가져오려면 fg를 입력하면 됩니다. Enter 키를 누릅니다.

변수($)

달러 기호($ ) 명령에 사용할 변수를 설정할 수 있습니다. 작동하는 모습을 보려면 터미널에 다음을 입력하십시오.

myname=YOUR_NAME
myage=YOUR_AGE
echo "I'm $myname and I'm $myage years old"
알아야 할 Bash 특수 문자

변수에 값을 할당할 때 달러 기호가 없음에 유의하십시오.

이스케이프(\) 및 따옴표(”)

명령에서와 같이 특수 문자를 사용하려면 해당 문자를 이스케이프해야 합니다. 특수 문자 앞에 백슬래시(\ ). 예를 들어 느낌표가 포함된 이름의 파일이 있는 경우 \!를 입력해야 합니다. 대신 Bash가 이를 특수 문자가 아닌 느낌표로 해석하도록 합니다.

다른 방법은 단일('' ) 또는 큰따옴표("" ). 문자열을 따옴표로 묶으면 그 안에 있는 모든 특수 문자가 실제 문자로 처리됩니다. 작은따옴표와 큰따옴표 사이에도 차이가 있습니다. 작은따옴표는 묶인 문자열을 텍스트로 평가하고 큰따옴표를 사용하면 묶인 문자열 내에서 변수($)를 사용할 수 있습니다.

마무리

위의 것들이 Bash의 유일한 특수 문자는 아니지만 터미널에서 일상적인 모험을 하는 데 가장 유용하다고 생각하는 문자입니다. Bash에서 빠르게 이동하려면 다음 키보드 단축키를 확인하는 것을 잊지 마십시오. 중요한 특수 문자를 놓친 경우 아래 댓글 섹션에 알려주십시오.