Bash - 기본적인 명령어 소개, Wildcard
Bourn shell
sh
는 posix
표준을 따르는 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)