Bash – 기본적인 명령어 소개, Wildcard

Table of Content

Bourn shell

shposix 표준을 따르는 shell을 위한 쉘 스크립팅 언어 표준을 말하고 이 표준에 대해 처음으로 구현체가 된 것은 유닉스에 켄 톰슨이 개발한 sh이였다. Bourne shell은 여러가지 shell들 중 c shell, korn shell 등의 장점을 sh에 구현하여 기존 sh에 기능을 추가한 sh 이다.

시작하기

Shell 기본 : 시작하고 종료하기

내가 쓰는 쉘 버전 확인하기

echo $SHELL

# 출력 : Bash라면.. (BSD 유저는 csh이 기본입니다.)
/bin/bash

쉘 커맨드 경로 확인하기

whereis bash
# 또는
which bash

로그인 쉘 변경하기

chsh <bash-name>

로그아웃 하기

exit 
# 또는 
logout

파일 옮겨다니기

pushd, popd, dirs

파일 디렉토리를 스택에 저장해놓고 돌아다닐 수 있다.

pushd <dir-path>
# Check directory stack
dirs -v 
# Clear stack
dirs -c 
# Return to stack HEAD pointer
popd

유의 : popd는 stack의 HEAD 포인터가 가리키는 경로로 이동한다. 그런데 HEAD 포인터가 가리키는 위치는 현재 경로를 의미하기 때문에아래와 같은 경우가 있을 수 있다..

[Sun Mar 20 05:18:59]  [job]: 0 [dir]: ~/Documents  
dsparch@archlinux$ dirs -v
 0  ~/Documents
 1  ~/Videos
 2  ~/Downloads
 dsparch@archlinux$ cd

# 디렉토리를 이동하니 0번째 경로가 바뀐 것을 볼 수 있다.[]()
[Sun Mar 20 05:19:04]  [job]: 0 [dir]: ~  
dsparch@archlinux$ dirs -v
 0  ~
 1  ~/Videos
 2  ~/Downloads

Man page 만들기

groff

아래와 같은 명령어로 일반적인 텍스트 파일을 다양한 양식으로 포매팅 할 수 있다. html, man page, 프린터 출력 양식 등등
man페이지가 어떻게 groff에 의해 포매팅 되는지 보고 싶다면 /usr/share/man/man1/groff.1.gz 파일을 vim이나 cat으로 열어보면 된다.[]()

groff -T ascii -man test.txt > test.man
groff -T ascii -html test.txt > test.html
# test.txt
NAME
foo - frobnicate the bar library

SYNOPSIS
foo [-bar] [-c config-file ] file ...

DESCRIPTION
foo  frobnicates the bar library by tweaking internal symbol tables. By default it parses all baz segments and rearranges them.

OPTIONS
-b Do not write `busy' to stdout while processing.

SEE ALSO
: bar(1), foo(5), xyzzy(1)

Linux                Last change: MARCH 1995       

Wildcard Expansion

wildcard로 패턴 매칭을 하는 것을 globbing이라고 한다.

Wildcard Matches
? 문자 하나
* 문자열 매칭
[abc] a 또는 b또는 C와 매칭
[^abc] a 또는 b또는 C를 제외

[set] expansion

set으로 abc를 지정하는 법은 아래와 같이 다양하게 표현할 수 있다. 아래 예시 중 dash는 범위 지정을 가리킨다.
[abc], [a,b,c], [a.b.c], [a_b_c], [a-c]
예를 들어 rm [abc].c 같은 명령어를 수행하면 .c 확장자를 가진 소스 파일만 지울 수 있다.

실습을 위한 파일을 만들고 싶을 때 : touch {a,b}1{,2{,3}} a{11,22,33}

관례로 소문자 범위, 대문자범위, 숫자, 기호 순으로 set expansion을 나열한다.

Set expansion Matches
a-z 모든 영 소문자
A-Z 모든 영 대문자
[0-9!] 느낌표를 포함한 모든 숫자
[^0-9] 숫자 모두 제외
a-zA-Z 모든 영문자
a-zA-Z0-9_- 모든 영문자, 숫자, 언더바, 하이픈

Brace expansion

주어진 문자열 조합으로 새로운 문자열을 생성해준다.

# 예시 1
echo b{ar{d,n,k},ed}s
# 출력
bards barns barks beds

# 예시 2 : main.c와 대응되는 main.h 파일 만들기
touch main.{c,h}

# 예시 3 : 1~10번까지 순서가 있는 데이터 학습 파일 만들기
touch data{1..10}.txt

참고문헌

[Bash Reference Manual]https://www.gnu.org/software/bash/manual/bash.pdf)

Related Posts

답글 남기기

이메일 주소는 공개되지 않습니다.