반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 사업자계좌
- Blade
- javascript
- Laravel
- 이더리움
- cartalyst
- Eclipse
- reactnative
- Python
- Sentinel
- as후기
- 코로나19
- 홈택스
- php
- 당사자표시정정신청서
- Tutorial
- 소액임금체불
- 체당금
- Java
- auth
- vue
- blockchain
- 보정명령
- elasticSearch
- 전자소송
- win32
- Bootstrap
- 인민공원
- 개인사업자
- 코로나
Archives
- Today
- Total
그냥 사는 이야기
리눅스 bash 확장과 인용 본문
반응형
리눅스 커맨드 라인 완벽 입문서의 7. 확장과 인용 챕터를 정리한 내용입니다. 항상 보고 나면 까먹어서 정리를 해보았습니다.
확장과 인용
echo 명령어만 사용하여 설명함.
확장
$ echo this is a test
this is a test
경로명 확장
$ ls
Playground cute_dog.txt ls.txt
$ echo *
Playground cute_dog.txt ls.txt
$ echo *t
cute_dog.txt ls.txt
$ echo [[:upper:]]*
Playground
$ echo /usr/*/share
/usr/local/share
틸드 (~ ) 확장
$ echo ~
/home/ubuntu
산술 확장
산술확장의 형태는 아래와 같다.
$((expression))
$ echo $((2 + 3))
5
$ echo $(($((5**2)) * 3))
75
중괄호 확장
$ echo Front-{A,B,C}-Back
Front-A-Back Front-B-Back Front-C-Back
$ echo Number_{1..5}
Number_1 Number_2 Number_3 Number_4 Number_5
$ echo {Z..A}
Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
$ echo a{A{1,2},B{3,4}}b
aA1b aA2b aB3b aB4b
$ mkdir {2018..2020}-0{1..9} {2018..2020}-{10..12}
$ ls
2018-01 2018-05 2018-09 2019-01 2019-05 2019-09 2020-01 2020-05 2020-09
2018-02 2018-06 2018-10 2019-02 2019-06 2019-10 2020-02 2020-06 2020-10
2018-03 2018-07 2018-11 2019-03 2019-07 2019-11 2020-03 2020-07 2020-11
2018-04 2018-08 2018-12 2019-04 2019-08 2019-12 2020-04 2020-08 2020-12
매개변수 확장
커맨드라인보다 쉘 스크립트에서 더 유용한 기능
$ echo $USER
ubuntu
사용 가능한 변수 목록 보기
printenv | less
명령어 치환
$ echo $(ls)
Playground cute_dog.txt ls.txt pictures
$ ls -l $(which cp)
-rwxr-xr-x 1 root root 153976 Sep 5 2019 /usr/bin/cp
혹은 과거의 bash에서는 backtick을 사용할 수도 있다.
$ ls -l `which cp`
-rwxr-xr-x 1 root root 153976 Sep 5 2019 /usr/bin/cp
따옴표(Quoting) 활용
쌍 따옴표 기호
아래의 2 경우를 살펴보면
$ echo this is a test
this is a test
$ echo The total is $100.00
The total is 00.00
불필요한 공백이 사라지며 $1
이 변수로 처리되어 빈 문자열로 치환되었다. 이럴 때는 쌍따옴표를 사용한다.
$ ls -l "my records.txt"
-rw-r--r-- 1 ubuntu ubuntu 7 Oct 12 16:53 'my records.txt'
쌍따옴표는 특수한 기호들이 가진 의미가 없어지고 일반적인 문자들로 인식된다. 단, $, , ' 기호는 예외
$ echo "$USER $((2+3)) $(cal)"
ubuntu 5 October 2020
Su Mo Tu We Th Fr Sa
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
쌍따옴표 속에서 new line은 그대로 인정된다. 아래의 경우를 비교해 보면 이해가 더욱 잘 될 것이다.
$ echo $(cal)
October 2020 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
$ echo "$(cal)"
October 2020
Su Mo Tu We Th Fr Sa
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
따옴표 기호 비교
$ echo text ~/*.txt {a,b} $(echo foo) $((2+3)) $USER
text /home/ubuntu/cute_dog.txt /home/ubuntu/ls.txt /home/ubuntu/my records.txt a b foo 5 ubuntu
$ echo "text ~/*.txt {a,b} $(echo foo) $((2+3)) $USER"
text ~/*.txt {a,b} foo 5 ubuntu
$ echo 'text ~/*.txt {a,b} $(echo foo) $((2+3)) $USER'
text ~/*.txt {a,b} $(echo foo) $((2+3)) $USER
따옴표가 없는 것에서 쌍따옴표, 홑따옴표로 갈수록 확장이 없어지는 것을 확인할 수 있다.
Escape Character
확장을 피하고 싶다면 이스케이프 문자()를 사용하여 단건에 대해서 사용 가능
$ echo "USER $USER : \$100.00"
USER ubuntu : $100.00
위의 예에서 보면 $USER는 치환되었지만 $100.00 은 그대로 나왔다. 그리고 $,!, &, (공백) 문자를 파일명으로 사용하고 싶을 때 아래처럼 할 수 있다.
$ mv origin_name origin\ name
echo에 -e 옵션은 이스케이프 문자를 해석한다. (혹은 $' ')
$ sleep 10; echo -e "Time's up\a"
Time's up
$ sleep 10; echo -e "Time's up" $'\a'
Time's up
'Development > 개발언어' 카테고리의 다른 글
Python3 venv 사용하여 가상환경 구성하기 (0) | 2020.11.19 |
---|---|
ERROR: Could not find a version that satisfies the requirement tensorflow - python3.8 (2) | 2020.11.18 |
IBM HeapAnalyzer 사용 (0) | 2013.05.20 |
Log4J - The content of element type "log4j:configuration" must match "(renderer*,appender*,(category|logger)*,root?,categoryFactory?)" (0) | 2013.01.25 |
OSGi Bundle-NativeCode로 dll 로드하기 (0) | 2010.05.14 |
Comments