[리눅스] Shell 확장, 인용, 명령어 대치

Becoming a Data Engineer ·2023년 10월 11일
0

리눅스

목록 보기
9/9
post-thumbnail

1. 경로명(pathname) 확장⭐

Wildcard Characters : *

╭─ ~/test 
╰─ ls 
greeting.txt  name.txt  test.html

╭─ ~/test
╰─ ls g*
greeting.txt

╭─ ~/test
╰─ ls G*	
zsh: no matches found: G*	(>> 대소문자를 구분한다.)

╭─ ~/test
╰─ ls *a*
name.txt

╭─ ~/test 
╰─ ls *.txt 
greeting.txt  name.txt

╭─ ~/test 
╰─ echo print all items list in this directory : *
print all items list in this directory : greeting.txt name.txt test.html

╭─ ~/test
╰─ cat greeting.txt
hello

╭─ ~/test
╰─ cat name.txt 
Hyojin

╭─ ~/test 
╰─ cat *.txt 
hello
Hyojin

Wildcard Characters : ?

╭─ ~/test
╰─ ls
Styles  app.html  app1.html  app2.html  app3.html  app4.css  app5.css  test.txt

╭─ ~/test 
╰─ echo app?.html
app1.html app2.html app3.html

╭─ ~/test
╰─ echo *.???? 
app.html app1.html app2.html app3.html

╭─ ~/test 
╰─ mv app?.css ./Styles 

╭─ ~/test 
╰─ ls  
Styles  app.html  app1.html  app2.html  app3.html  test.txt

╭─ ~/test 
╰─ ls ./Styles
app4.css  app5.css

Range Wildcard : [ ]

Inside of [ ], we can specify a range of characters to match

[ ] : 범위 내의 특정한 글자 중에서 일치해야 한다.

╭─ ~/test
╰─ ls  
Styles  app.html  app1.html  app12.html  app2.html  app3.html  test.txt

╭─ ~/test 
╰─ ls app[12].html    
app1.html  app2.html

╭─ ~/test
╰─ ls app[0-9].html  
app1.html  app2.html  app3.html

╭─ ~/test
╰─ ls app[0-9][0-9].html 
app12.html

╭─ ~/test
╰─ ls app[0-9]*  
app1.html  app12.html  app2.html  app3.html
  • ls -d : list directories themselves, not their contents
╭─ ~/fonts  master 
╰─ ls                               
 3270             DroidSansMono          Inconsolata     'Meslo Slashed'   RobotoMono      UbuntuMono
 AnonymousPro     DroidSansMonoDotted    Inconsolata-g    Monofur          SourceCodePro   fontconfig
 Arimo            DroidSansMonoSlashed   InconsolataDz    NotoMono         SpaceMono       install.ps1
 Cousine          FiraMono               InputMono        NovaMono         SymbolNeu       install.sh
 D2Coding         GoMono                 LiberationMono   ProFont          Terminus        samples
 DejaVuSansMono   Hack
 
╭─ ~/fonts  master 
╰─ ls -d [a-z]*  
fontconfig  install.ps1  install.sh  samples  uninstall.sh

a부터 z사이의 소문자로 시작하고 소문자 s나 h로 끝나며 가운데는 아무글자나 오도록 확장

╭─ ~/fonts  master 
╰─ echo [a-z]*[gh]		
fontconfig install.sh uninstall.sh

Range Wildcard : [^ ]

Inside of [^ ], we can specify a range of characters to NOT match

[^ ] : 범위 내의 특정한 글자 중에서 일치하지 않아야 한다.

╭─ ~/fonts  master 
╰─ ls    
 3270             DroidSansMono          Inconsolata     'Meslo Slashed'   RobotoMono      UbuntuMono
 AnonymousPro     DroidSansMonoDotted    Inconsolata-g    Monofur          SourceCodePro   fontconfig
 Arimo            DroidSansMonoSlashed   InconsolataDz    NotoMono         SpaceMono       install.ps1
 Cousine          FiraMono               InputMono        NovaMono         SymbolNeu       install.sh
 D2Coding         GoMono                 LiberationMono   ProFont          Terminus        samples
 DejaVuSansMono   Hack                  'Meslo Dotted'    README.rst       Tinos           uninstall.sh
 
╭─ ~/fonts  master 
╰─ ls -d [^D]*
 3270           FiraMono      Inconsolata-g   'Meslo Dotted'    NovaMono     SourceCodePro   Tinos         install.sh
 AnonymousPro   GoMono        InconsolataDz   'Meslo Slashed'   ProFont      SpaceMono       UbuntuMono    samples
 Arimo          Hack          InputMono        Monofur          README.rst   SymbolNeu       fontconfig    uninstall.sh
 Cousine        Inconsolata   LiberationMono   NotoMono         RobotoMono   Terminus        install.ps1
 
╭─ ~/fonts  master 
╰─ ls -d [^A-Z]*
3270  fontconfig  install.ps1  install.sh  samples  uninstall.sh

첫 문자가 대문자, 소문자 I와 일치하지 않는 파일이나 폴더를 찾기

╭─ ~/fonts  master 
╰─ ls -d [^iI]*               
 3270           DejaVuSansMono         GoMono           Monofur      RobotoMono      Tinos
 AnonymousPro   DroidSansMono          Hack             NotoMono     SourceCodePro   UbuntuMono
 Arimo          DroidSansMonoDotted    LiberationMono   NovaMono     SpaceMono       fontconfig
 Cousine        DroidSansMonoSlashed  'Meslo Dotted'    ProFont      SymbolNeu       samples
 D2Coding       FiraMono              'Meslo Slashed'   README.rst   Terminus        uninstall.sh

2. 틸드(tilde, ~) 확장

  • cd ~ : 현재 어디에 있던지 홈 디렉토리로 이동한다.
╭─ ~/fonts  master 
╰─ pwd      
/home/hyojin/fonts

╭─ ~/fonts  master 
╰─ cd ~

╭─ ~ 
╰─ pwd
/home/hyojin
  • echo ~kitty : 이 리눅스에 kitty라는 다른 사용자가 있다면 /home/kitty 로 확장한다.
╭─ ~/fonts  master 
╰─ echo ~kitty                    
/home/kitty
  • mv ./test/app12.html ~ : mv 명령어로 파일을 옮길 때 나의 홈 디렉토리로 옮기기 위해 ~를 사용해서 내 홈 디렉토리로 확장할 수도 있고 ~kitty처럼 다른 유저의 홈 디렉토리로 확장할 수도 있다.
╭─ ~/test 
╰─ ls    
Styles  app.html  app1.html  app12.html  app2.html  app3.html  test.txt

╭─ ~ 
╰─ ls
cleanUp  fonts  powerlevel10k  test  test-py-project  vim_shortcut.txt

╭─ ~ 
╰─ mv ./test/app12.html ~

╭─ ~ 
╰─ ls ./test    
Styles  app.html  app1.html  app2.html  app3.html  test.txt

╭─ ~ 
╰─ ls ~ 
app12.html  cleanUp  fonts  powerlevel10k  test  test-py-project  vim_shortcut.txt

3. 중괄호(brace) 확장⭐

하나 혹은 여러개의 중괄호 안에 들어있는 몇개의 패턴에 기반해 여러 문자열을 만드는 것

중괄호 {} 안에 ,로 구분되어있는 값들은 각각 하나의 문자열이 되며, 중괄호 앞과 뒤에 있는 문자와 합쳐진다.

예를 들어, page{1,2,3}.txt >> page1.txt, page2.txt, page3.txt 가 된다.

╭─ ~/test 
╰─ touch 2023_Nov_{Mon,Tue,Wed,Thu,Fri}_Planner.txt

╭─ ~/test 
╰─ ls      
2023_Nov_Fri_Planner.txt  2023_Nov_Thu_Planner.txt  2023_Nov_Wed_Planner.txt
2023_Nov_Mon_Planner.txt  2023_Nov_Tue_Planner.txt

잘못된 중괄호 확장

아래 명령어는 touch 명령어가 {} 사이에 공백을 기준으로 여러 개의 파일을 생성한다.

╭─ ~/test 
╰─ touch 2023_Nov_{Mon, Tue, Wed, Thu, Fri}_Planner.txt                       

╭─ ~/test 
╰─ ls
2023_Nov_{Mon,  Fri}_Planner.txt  Thu,  Tue,  Wed,

중괄호를 여러 개 사용하는 것도 가능하다.

╭─ ~/test 
╰─ touch 2023_Nov_{Mon,Tue,Wed,Thu,Fri}_{AM,PM}_Planner.txt

╭─ ~/test 
╰─ ls -l | sort -nk7    
total 0
-rw-r--r-- 1 hyojin hyojin 0 Oct 19 17:43 2023_Nov_Fri_Planner.txt
-rw-r--r-- 1 hyojin hyojin 0 Oct 19 17:43 2023_Nov_Mon_Planner.txt
-rw-r--r-- 1 hyojin hyojin 0 Oct 19 17:43 2023_Nov_Thu_Planner.txt
-rw-r--r-- 1 hyojin hyojin 0 Oct 19 17:43 2023_Nov_Tue_Planner.txt
-rw-r--r-- 1 hyojin hyojin 0 Oct 19 17:43 2023_Nov_Wed_Planner.txt
-rw-r--r-- 1 hyojin hyojin 0 Oct 19 17:49 2023_Nov_Fri_AM_Planner.txt
-rw-r--r-- 1 hyojin hyojin 0 Oct 19 17:49 2023_Nov_Fri_PM_Planner.txt
-rw-r--r-- 1 hyojin hyojin 0 Oct 19 17:49 2023_Nov_Mon_AM_Planner.txt
-rw-r--r-- 1 hyojin hyojin 0 Oct 19 17:49 2023_Nov_Mon_PM_Planner.txt
-rw-r--r-- 1 hyojin hyojin 0 Oct 19 17:49 2023_Nov_Thu_AM_Planner.txt
-rw-r--r-- 1 hyojin hyojin 0 Oct 19 17:49 2023_Nov_Thu_PM_Planner.txt
-rw-r--r-- 1 hyojin hyojin 0 Oct 19 17:49 2023_Nov_Tue_AM_Planner.txt
-rw-r--r-- 1 hyojin hyojin 0 Oct 19 17:49 2023_Nov_Tue_PM_Planner.txt
-rw-r--r-- 1 hyojin hyojin 0 Oct 19 17:49 2023_Nov_Wed_AM_Planner.txt
-rw-r--r-- 1 hyojin hyojin 0 Oct 19 17:49 2023_Nov_Wed_PM_Planner.txt

인용(quoting)

명령어(command) 대치

산술 확장

profile
I want to improve more 👩🏻‍💻

0개의 댓글