셸,shell

셸,shell (rev. 1.13)

사용자의 명령(유닉스,Unix의 경우 유닉스_명령)을 받아 실행하는 프로그램.
보통 사용자,user커널,kernel의 사이에 위치.

기능
작업_제어,job_control (= 프로세스 제어)
입출력 리다이렉션(I/O redirection) 리디렉션,redirection
{
AKA 리다이렉션

명령 > 파일명 
명령의 출력을 파일로 저장한다. (=캡쳐한다, capture) 기존 파일 내용이 있다면 지워진다. (=덮어쓴다, overwrite)
셸이 csh나 tcsh이면 다음 명령으로 덮어쓰기를 방지할 수 있다.
set noclobber
Bash에서도 추가되었는데..문법? TBW
표준 에러(stderr)는 저장되지 않는다.
표준 에러도 저장하려면
명령 >& 파일명
을 쓰면 된다.
csh인가? bash도 되는가? CHK
본 셸과 bash에서는 이렇게 적을 수 있다.
명령 &> 파일명

에러만 저장하려면, 본 셸 호환 셸에서
명령 2> 파일명
을 쓴다.

출력을 아예 버리려면, /dev/null이라는 특별한 파일로 리디렉트한다.
명령 > /dev/null

명령 >> 파일명
명령의 출력을 파일에 추가한다.
파일이 없으면 생성됨? TBW


명령 < 파일명
파일에서 입력을 받는다.


}

파이프
{
|
정렬하려면 sort_명령으로 보내면 된다.
du | sort -rn 
명령은 현재 디렉토리의 항목 중 큰 것 부터 보여준다.

}
스크립팅
DOS의 경우 batch file

종류
Bourne shell (sh)
Bourne again shell (bash)
csh
tcsh
Korn shell (ksh)
ash (of BSD)
zsh (of BSD)
rc (of Plan 9)

셸을 바꾸는 명령은 chsh_명령이다.

리눅스에서 특정 셸을 로그인 셸로 쓸 수 있으려면, 파일_/etc/shells에 등록해야 한다.

Bash 단축키

C-u: 커서 위치부터 행의 처음까지 삭제
C-c: 실행 중 중지
C-z: 일시정지(suspend). 재개하고자 할 때는 fg_명령을 입력. (foreground를 뜻하는)
C-s: 터미널 출력 멈추기
C-q: 멈춘 출력 재개하기

이 키들이 작동하지 않으면 터미널이 잘못 설정되어 있기 때문이다. stty_명령으로 고칠 수 있다.
문법: stty function key
예를 들어, 위의 명령들이 동작하지 않으면,
$ stty erase ^H
$ stty kill ^U
$ stty intr ^C
$ stty susp ^Z

내장 명령 built-in command

cd같은 명령들은 외부 실행 파일이 존재하지 않고 셸에 내장되어 있다.

명령을 백그라운드로 보내기, 혹은 백그라운드에서 실행하기

명령 뒤에 & 문자를 넣는다.
$ gcc a.c &
[1] 21457
1은 작업 번호다.
21457은 프로세스 ID(pid)이다.
물론 작업 번호가 숫자가 작으므로 PID보다 기억하기 쉽다.

백그라운드 명령을 포그라운드로 가져오기

foreground로 가져오기
fg명령을 쓴다. 작업 번호 앞에 %을 붙여서 쓰거나, PID를 그대로 쓴다.
위의 경우,
$ fg %1
$ fg 21457

백그라운드 작업 없애기

kill_명령을 쓴다.
$ kill %1

역사

Shell이라는 단어는 멀틱스,Multics에서 유래.
https://multicians.org/shell.html
https://news.ycombinator.com/item?id=25207957 -- .*rc는 RUNCOM에서 유래? CHK

ssh

ssh pagename 뭘로하지?