[cmd_test@btjeon-naver ~]$ echo /usr/*/share
/usr/local/share
cmd_test@btjeon-naver ~]$ echo [[:lower:]]*
lazy_dog.txt ls-error.txt ls-output.txt ls.txt
[cmd_test@btjeon-naver ~]$ echo ls*
ls-error.txt ls-output.txt ls.txt
echo 명령어와 와일드카드(*)를 통해 디렉토리, 파일명 경로를 탐색할 수 있다.
[cmd_test@btjeon-naver ~]$ echo ~
/home/cmd_test
[cmd_test@btjeon-naver ~]$ echo ~root
/root
홈디렉토리 확인
[cmd_test@btjeon-naver ~]$ echo $((2 + 2))
4
[cmd_test@btjeon-naver ~]$ echo $(($((5**2)) * 3))
75
[cmd_test@btjeon-naver ~]$ echo $(((5**2) * 3))
75
[cmd_test@btjeon-naver ~]$ echo Five divided by two equals $((5/2))
Five divided by two equals 2
[cmd_test@btjeon-naver ~]$ echo with $((5%2)) left over.
with 1 left over.
echo 명령어를 통해 산술 연산이 가능하다.
[cmd_test@btjeon-naver ~]$ echo Front-{A,B,C}-Back
Front-A-Back Front-B-Back Front-C-Back
[cmd_test@btjeon-naver ~]$ echo Number-{1..5}
Number-1 Number-2 Number-3 Number-4 Number-5
[cmd_test@btjeon-naver ~]$ 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
[cmd_test@btjeon-naver ~]$ echo a{A{1,2},B{3,4}}b
aA1b aA2b aB3b aB4b
[cmd_test@btjeon-naver ~]$
[cmd_test@btjeon-naver ~]$
[cmd_test@btjeon-naver ~]$ mkdir Pics
[cmd_test@btjeon-naver ~]$ cd Pics
[cmd_test@btjeon-naver Pics]$ mkdir {2022..2024}0{1..9} {2022..2024}{10..12}
[cmd_test@btjeon-naver Pics]$ ls
202201 202203 202205 202207 202209 202211 202301 202303 202305 202307 202309 202311 202401 202403 202405 202407 202409 202411
202202 202204 202206 202208 202210 202212 202302 202304 202306 202308 202310 202312 202402 202404 202406 202408 202410 202412
중괄호 안에 표현된 패턴과 일치하는 다양한 텍스트 문자열을 만들 수 있다. 중괄호 표현식은 그 자체가 쉼표로 구분된 문자열을 표현하거나 정수나 문자의 범위를 표현할 수 있다. (또한 이런 패턴에는 빈칸이 허용되지 않는다.)
[cmd_test@btjeon-naver ~]$ echo $USER
cmd_test
[cmd_test@btjeon-naver ~]$ printenv | less
[cmd_test@btjeon-naver ~]$ echo $HOSTNAME
btjeon-naver
변수값 확인
[cmd_test@btjeon-naver ~]$ echo $(ls)
lazy_dog.txt ls-error.txt ls-output.txt ls.txt Pics
[cmd_test@btjeon-naver ~]$ ls -l $(which cp)
-rwxr-xr-x. 1 root root 155176 Aug 20 2019 /bin/cp
[cmd_test@btjeon-naver ~]$ file $(ls /usr/bin/* | grep zip)
/usr/bin/bunzip2: symbolic link to `bzip2'
/usr/bin/bzip2: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=9587d04997b37141a2dbdbdb9562ca151913a6f4, stripped
/usr/bin/bzip2recover: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=b79d9a281baf0b8f43196bfe406a6d945e792ccb, stripped
/usr/bin/funzip: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=15c0808e98adf5995c27c015e6f725d1adc3e3d4, stripped
/usr/bin/gpg-zip: POSIX shell script, ASCII text executable
/usr/bin/gunzip: POSIX shell script, ASCII text executable
/usr/bin/gzip: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=526d77ff7164870f948d8f97aaf0a888cc561b30, stripped
/usr/bin/unzip: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=e7f845f5398bd53a5bc6b732d1c42ae24095209b, stripped
/usr/bin/unzipsfx: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=75e78ab9234cf34dd0f57f601ae529800bdab657, stripped
/usr/bin/zip: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=7c01940c97abdf45a093c697e63ef214ea14adcf, stripped
/usr/bin/zipcloak: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=e0f7de70feffd0124f6350e449b8d6c7513502da, stripped
/usr/bin/zipgrep: POSIX shell script, ASCII text executable
/usr/bin/zipinfo: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=e7f845f5398bd53a5bc6b732d1c42ae24095209b, stripped
/usr/bin/zipnote: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=750c11ada0bec740fa2885383e678e7be5206cdd, stripped
/usr/bin/zipsplit: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=e259ffcdb17baf5b9599c87ad924eb51b4df53b4, stripped
$ 기호를 통해 명령어 치환하기
[cmd_test@btjeon-naver ~]$ ls -l `which cp`
-rwxr-xr-x. 1 root root 155176 Aug 20 2019 /bin/cp
` 사용
[cmd_test@btjeon-naver ~]$ ls -l two words.txt
ls: cannot access two: No such file or directory
ls: cannot access words.txt: No such file or directory
[cmd_test@btjeon-naver ~]$ ls -l "two words.txt"
-rw-rw-r-- 1 cmd_test cmd_test 8 May 12 06:21 two words.txt
쌍 따옴표(")로 텍스트를 묶으면 쉘에서 사용하는 모든 특수한 기호들이 가진 의미가 없어지고 대신 일반적인 문자들로 인식된다. (단, $, \, ` 기호는 예외다.)
[cmd_test@btjeon-naver ~]$ echo "$USER $((2+2)) $(cal)"
cmd_test 4 May 2022
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
단어 분할, 경로명 확장, 틸드(~) 확장, 괄호 확장을 숨길 수 있지만 매개변수 확장, 산술 확장, 명령어 치환은 그대로 실행된다.
[cmd_test@btjeon-naver ~]$ echo text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER
text /home/cmd_test/lazy_dog.txt /home/cmd_test/ls-error.txt /home/cmd_test/ls-output.txt /home/cmd_test/ls.txt /home/cmd_test/two words.txt a b foo 4 cmd_test
[cmd_test@btjeon-naver ~]$ echo "text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER"
text ~/*.txt {a,b} foo 4 cmd_test
[cmd_test@btjeon-naver ~]$ echo 'text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER'
text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER
모든 확장을 숨겨야 한다면 따옴표(') 기호를 사용하면 된다.
[cmd_test@btjeon-naver ~]$ echo "The balance for user $USER is: \$5.00"
The balance for user cmd_test is: $5.00
하나의 문자를 인용하고 싶을 때는 백슬래시(\)를 해당 문자 앞에 추가하면 된다. (이것을 이스케이프 문자(escape character)라고 부른다.)
출처 : 리눅스 커맨드라인 완벽 입문서
'IT일반 > Linux' 카테고리의 다른 글
Command Line - 퍼미션 (0) | 2022.05.14 |
---|---|
Command Line - 고급 키보드 기법 (0) | 2022.05.13 |
Command Line - 리다이렉션 (0) | 2022.05.06 |
Command Line - 명령어와 친해지기 (0) | 2022.05.05 |
Command Line - 파일과 디렉토리 복사 (0) | 2022.05.05 |