...
리눅스 터미널 커맨드 특수문자 정리
리눅스 터미널 쉘에선 일부 특수문자는 사전 정의되어 있다. 이를 쉘 메타 문자라고 하는데, 쉘 명령에서 사용하는 문자들 중 사전에 정의된 특별한 기능대로 동작하는 약속된 기호라고 이해하면 된다.
리눅스 디렉토리 기호
문자 | 설명 |
~ | 홈 디렉토리 |
- | 이전 작업 디렉토리 롤백 |
. | 현재 디렉토리 |
.. | 상위 디렉토리 |
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/
[LINUX] 📚 정규표현식 과 grep 명령어 정복하기 [패턴 검색] [확장브래킷]
파일/디렉토리 패턴 검색 리눅스를 사용하다 보면 로그파일이나, 텍스트 파일에서 특정 문자열을 찾을 때, 혹은 디렉터리 내에서 특정 문자를 포함하는 파일을 찾을 때와 같은 경우가 생긴다.
inpa.tistory.com
리눅스 인용(따옴표) 기호
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에 저장
[LINUX] 📚 입출력 재지정 & 파이프 명령어 💯 정리
입출력 재지정 입출력 재지정이란, 일반적인 입력, 출력을 사용하지 않고 "파일"로 입출력 하겠다는 말이다. 본래 표준입력은 기본적으로 키보드에서 직접 받아오고, 표준 출력은 기본적으로
inpa.tistory.com
# 참고자료
https://coding-chobo.tistory.com/54
https://brownbears.tistory.com/331
https://www.leafcats.com/223
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.