...
리눅스 터미널 커맨드 특수문자 정리
리눅스 터미널 쉘에선 일부 특수문자는 사전 정의되어 있다. 이를 쉘 메타 문자라고 하는데, 쉘 명령에서 사용하는 문자들 중 사전에 정의된 특별한 기능대로 동작하는 약속된 기호라고 이해하면 된다.
리눅스 디렉토리 기호
문자 | 설명 |
~ | 홈 디렉토리 |
- | 이전 작업 디렉토리 롤백 |
. | 현재 디렉토리 |
.. | 상위 디렉토리 |
cd ~ # 홈 디렉토리 이동
cd - # 이전 작업 디렉토리로 롤백
리눅스 히스토리 기호
문자 | 설명 |
! | history 명령어에는 고유의 식별번호가 존재하는데, 느낌표+식별번호를 입력하면 해당 번호의 명령어가 실행 |
!! | 바로 직전에 사용한 명령어를 실행 |
!-번호 | 마지막 명령어로부터 뒤로 번호만큼 째 명령어를 재호출 한다는 의미 !-2 는 마지막에서 두번째 명령어 호출 |
!^ | 이전 명령어의 첫 번째 argument |
!$ | 이전 명령어의 마지막 argument |
!* | 이전 명령어의 전체 argument |
$ ls -la company
total 20
drwxr-xr-x 5 root root 4096 Dec 12 09:12 .
drwxr-xr-x 8 root root 4096 Mar 14 20:06 ..
drwxr-xr-x 2 root root 4096 Dec 12 09:12 bin
drwxr-xr-x 3 root root 4096 Jan 20 09:52 pkg
drwxr-xr-x 6 root root 4096 Jan 20 09:52 src
$ ls !*
# 전체 argument 실행 : ls -la company
total 20
drwxr-xr-x 5 root root 4096 Dec 12 09:12 .
drwxr-xr-x 8 root root 4096 Mar 14 20:06 ..
drwxr-xr-x 2 root root 4096 Dec 12 09:12 bin
drwxr-xr-x 3 root root 4096 Jan 20 09:52 pkg
$ ls !^
# 첫 번째 argument만 실행 : ls -la
total 32912
drwxr-xr-x 8 root root 4096 Mar 14 20:06 .
drwxr-xr-x 23 root root 4096 Mar 14 13:28 ..
drwxr-xr-x 5 root root 4096 Dec 12 09:12 company
-rw-r--r-- 1 root root 32976929 Jan 20 10:01 company.tar.gz
$ ls !$
# 마지막 argument만 실행 : ls company
bin pkg src
리눅스 다중 명령어
다중 명령을 사용할 경우 연산자에 따라서 출력을 다른 명령으로 보내거나 다음 명령어의 실행 여부를 결정할 수 있다.
문자 | 설명 |
| | 명령과 명령을 연결 (왼쪽 명령의 실행결과를 오른쪽 명령어의 입력으로 전달) |
; | 명령과 명령을 연결 (연결된 명령을 왼쪽부터 차례로 실행) |
&& | 앞에서부터 순차적으로 실행하되, 명령 실행에 실패 할 경우 뒤에 오는 명령은 실행하지 않는다 (AND 연산) |
|| | 앞에서부터 순차적으로 실행하되, 명령 실행에 성공하면 뒤에 오는 명령을 실행하지 않는다. (OR 연산) |
# /etc/passwd파일의 내용중에 bash문자를 가진 부분만 출력하고 정렬하라
$ cat /etc/passwd | grep bash | sort
# 날짜 출력하고 달력 출력하고 내 정보를 출력한다
$ data; cal; who
# 1하고 2 출력한 뒤, 중간에 명령어오타가 있어 실행되지않아 4는 출력 안됨
$ echo 1 && echo 2 && eccHo 3 && echo 4
# 1만 출력되고 뒤에는 실행 안됨
$ echo 1 || echo 2 || eccHo 3 || echo 4
리눅스 와일드 카드
와일드 카드는 검색에서 문자 클래스를 대체 할 수있는 기호 이다.
문자 | 설명 |
* | 매칭되는 모든 문자를 나타내는 특수 문자로 쉘에서 *는 0개 이상의 문자로 대체 |
[ ] | 문자 범위 지정하는 특수 문자로 [] 괄호 안에 포함된 문자 중 하나를 나타냄 |
? | 매칭되는 하나의 문자를 나타내는 특수 문자 쉘에서 ?는 1개의 문자로 대체 |
{ } | 중괄호. 안의 각 문자열과 일치 (딕셔너리) |
- | 양 옆에 있는 문자에서 문자범위를 설정 |
[! ] 또는 [^ ] | [ ] 의 여집합. 즉, 대괄호 안에 있는 문자를 모두 제외 |
# test.txt, tes/123.txt 등 일치하는 모든 파일/디렉토리(내부)가 출력
$ ls tes*
# test.txt, test.txx 등 하나 일치한 파일을 출력
$ ls test.tx?
# 임의의 네문자와 f로 끝나는 파일 출력
$ ls ????f
# a부터 z까지 모든 문자중에 하나를 가지는 파일 출력
$ ls [a-z]
# a,b,c 가 아닌 문자와 임의의 문자 하나
$ ls -l [!a-c]*
$ sudo mkdir test{1,2,3}
$ ll
...
drwxr-xr-x 2 root root 4096 Mar 14 20:54 test1/
drwxr-xr-x 2 root root 4096 Mar 14 20:54 test2/
drwxr-xr-x 2 root root 4096 Mar 14 20:54 test3/
리눅스 인용(따옴표) 기호
Quoting은 특정 문자나 단어가 쉘에 특수한 의미를 제거하는데 사용된다. 예를들어 특수 문자에 대한 특수 처리를 비활성화하고 예약어가 인식되지 않도록하고, 매개 변수 확장을 방지하는 데 사용할 수 있다.
문자 | 설명 |
' ' | 뒤에 오는 모든 특수문자를 일반 문자로 인식 (모든 특수 문자 쿼팅) 작은 따옴표로 감싸진 문자열은 변화없이 그대로 출력 |
" " | " " 사이에 들어있는 모든 특수 문자를 일반 문자로 인식하지만 단, $()와 ` `(명령어 대체 특수문자), $ (변수 값 대체 특수문자), \ (quotation 특수문자) 등은 예외 |
\ | 특수문자 바로 앞에 사용되는데 해당 특수문자의 효과를 없애고 일반 문자처럼 처리 (뒤에 한 특수문자만 쿼팅) |
` ` (역 따옴표) | 역 따옴표는 따옴표 안에 있는 명령문의 실행하여 실행결과를 대입 |
# 특수문자 출력 방법
$ echo "\\"
\
$ echo \\
\
$ echo '\'
\
# 변수를 작은 따옴표 내에서 출력하면 변수명 그대로 출력
$ echo '$HOME'
$HOME
# 변수를 큰 따옴표 안에 넣으면 변수가 실제 값으로 치환된 후 출력
$ echo "$HOME"
/home/storycompiler
# 따옴표 안에 있는 명령문의 실행하여 실행결과를 대입
$ echo The working directory is `pwd`
The working directory is /home/storycompiler # pwd의 명령 실행결과 절대경로를 출력
$ echo "The working directory is `pwd`"
The working directory is /home/storycompiler
# 작은 따옴표가 더 우선순위가 높아 역따옴표 무시
$ echo 'The working directory is `pwd`'
The working directory is `pwd`
리눅스 괄호 기호
문자 | 사용처 |
( ) |
1. 함수 인수의 시작과 끝 2. 서브 쉘 작성 (스크립트의 다른 곳에서는 소괄호 안 서브 쉘에 들어있는 변수를 볼 수 없음) 3. 배열 초기화 |
(( )) | 1. 산술 연산에 사용 |
{ } |
1. 명령 블록의 시작과 끝 2. 각종 변수의 존재범위도 연관됨 3. 매개변수 확장 4. 반복되는 문자열 목록 작성, 변수를 명확하게 식별 |
[ ] | 1. 배열 인덱스 2. 테스트 조건을 정의 |
[[ ]] | 1. 단일 대괄호[ ] 의 업그레이드 버젼이라 보면 됨. bash 내장용 |
# 1. 함수 인수의 시작과 끝
function_name(argument1, argument2, argument3)
# 2. 서브 쉘 작성
(command1; command2) | command3
# 3. 배열 초기화
array=(1 2 3 4 5)
# 4. 산술 연산에 사용
result=$((5 + 3))
# 5. 명령 블록의 시작과 끝
{
command1
command2
}
# 6. 각종 변수의 존재범위도 연관됨
if [ $var -eq 1 ]; then
var2="hello"
fi
# 7. 매개변수 확장
echo *.txt
# 8. 반복되는 문자열 목록 작성, 변수를 명확하게 식별
for file in *.txt; do
echo $file
done
# 9. 배열 인덱스
array[0]=1
array[1]=2
echo ${array[0]}
# 10. 테스트 조건을 정의
if [ -f /etc/passwd ]; then
echo "The file exists"
fi
이중 소괄호 (( )) 설명
산술 연산을 위한 전용 문법으로 문자열은 다루지 않고 오직 숫자만 처리한다. 따라서 이중 소괄호 안에 알파벳으로 된 단어가 나타나게 되면 쉘은 이를 변수로 해석하게 된다.
이러한 특징 때문에 이중 소괄호 안에서 변수를 사용할 경우, $ 문자를 사용하지 않아도 된다. 단, 괄호 안에 큰 따옴표나 작은 따옴표를 사용할 수 없다.
num=0
((num = num + 1))
((++num))
((num = 2 ** 10))
((ret = 10 > 1))
리눅스 입출력 리다이렉션
리디렉션을 통해 명령의 파일 핸들을 복제, 열기, 닫기, 다른 파일을 참조 할 수 있으며 명령을 읽고 쓰는 파일을 변경할 수 있다.
문자 | 설명 |
< | 입력 재지정 |
> | 출력 재지정 (표준 출력 파일을 바꿈) |
>> | 출력 재지정 (파일의 내용을 추가하는 역할, 이어 쓰기) |
$ cat < aaa.txt # 출력 재지정 == cat aaa.txt와 같다고 보면 된다.
$ who >> output.txt
$ cat < file > file_copied # 입력재지정하여, file내용을 cat하고 그걸 바로 출력재지정하여 file_copied에 저장
# 참고자료
https://coding-chobo.tistory.com/54
https://brownbears.tistory.com/331
https://www.leafcats.com/223
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.