-
[리눅스]쉘, 쉘의 기능서버/리눅스 2017. 3. 15. 21:35
쉘
커널 : 하드웨어를 관리
명령어를 읽고 해석한뒤 커널에 전달하는 기능 (모든 o/s에 존재)
(#종류 unix, linux : bash, sh, ksh, csh ... windows : explorer.exe)
쉘 스크립트
쉘의 외부명령어 : 쉘에 내부명령어가 아닌 사용자가 만든 명령어
-외부명령어를 치면 path 환경변수에 지정된 경로로 가서 입력된 명령어를 실행한다
*환경변수 path : 사용자가 명령을 입력했을시 내부명령어면 실행 아니면 실행파일이라고 간주
쉘의 내부명령어 : ...말 그대로 내부명령어 ㅎㅎ
-설치가 필요없고 컴파일 단계가 없기에 다른언어에 비해 빠르다 but 잠재적으로 하위 프로세스의 수많은 영향으로 속도가 느려질수 있다.
Perl 프로그래밍 언어의 창시자 Larry Wall 曰 : "쉘 포팅이 쉘스크립트보다 쉽다"
쉘의 기능
(여기서 입력이란 장치입력을 말한다)
#1) 입출력 리다이렉션 (입출력 방향을 지정할 수 있다)
-입/출력 방향 재지정
-입력 방향 재지정
<. <<
-출력 방향 재지정
>, >>
( > : 덮어씀)
( >> : 추가됨)
ex) id addr > file1 : file1이라는 파일안에 ip addr로 실행된 명령어를 넣겠다
ex)who >> file1 : file1이라는 파일 맨 밑에 추가
cat -에 적용하면 출력을 이용 할 수 있다.
#>cat - > file
따라서 #>cat 명령어를 > 를통해 파일에 write까지 가능해 진다
#2 제어문자
-ctrl + c : 현재 실행중인 명령을 종료
ex) ping 8.8.8.8을 하고 놔두면 계속 핑을 보낸다 ▶이때 ctrl + c 를 입력하면 ping명령어를 종료시킨다.
-ctrl + l : 페이지를 위로 올린다(putty 프로그램을 이용해서 스크롤로 올려보면 위에 text들이 살아있다)
cf) #>clear 명령어를 사용하면 화면을 다 지운다
-ctrl + u : 명령라인을 종료
ex) #>cd ../etc/sysconfig/network-script/... 쓰고 있는데 갑자기 옮기라고 할떄 사용하면 된다.
-ctrl + d : 로그아웃, 프로그램 종료시 사용
ex) #>exit 명령어로 로그아웃이 가능하다
-ctrl + z : 포그라운드 프로세스 정지
ex)vi편집기를 사용중 ctrl+z를 하면 프로세스를 정지하고 나온다
#3 쿼터
1) ' 2) " 3) ` 4)\
공통점
다른점
'
(quarter)
문자열을 표현할 떄 사용
변수 해석 X
"
(double quarter)
변수 해석 O
▶쿼터를 이용해서 띄어쓰기가 가능한 파일을 만들거나 접근할 수 있습니다.
변수 해석 능력 test
쿼터는 메타문자($)를 해석하지 못하고 특수문자로만 해석했기 때문에
'$file' "$file" 명령어 실행시 쿼터는 문자열로 인식되었고 더블쿼터는 변수로 인식되었습니다.
문장안에 쿼터와 더블쿼터를 출력하고 싶을때는 두개를 섞어서 사용해주시면 됩니다.
\(escape sequence) : enter와 backspace사이에 있는 버튼
▶ 문자들의 기능을 정지시킨다
spacebar나 등등 이런 기호를 뜻하는 문자들을 정지하고 순수 문자로 나타냅니다
자기 자신또한 기능을 정지 시킵니다.
`(back quarter) : Tab키위에 (~)
문자열을 쓰는곳에서 명령어를 사용할 수 있게해줍니다.
!!!!!!!!!!사용주의!!!!!!!!!!! '(single quarter)랑 많이 헷갈립니다.
변수에 명령어를 넣어 빠르게 사용할 수 도 있습니다.
사용자를 만들면 생성되는 파일은 mkdir /home/`whoami`/ 로 만들어지겠네요
#3 다중명령어
1) ; 2) && 3) |
;(세미콜론) : L옆에
#> <command1> ; <command2> ; <command3> : 순서대로 커멘드를 실행한다(에러 무시)
에러가 발생해도 순차적으로 모든 명령어를 실행한다.
&&(엔퍼센트 엔퍼센트) : 7특수문자
#> <command1> && <command2> && <command3> : 순서대로 커멘드를 실행한다(에러시 뒤에 커멘드는 동작하지 않음)
| ( 바 ) : \특수기호
#> <command1> | <command2> || <command3> : 명령어를 동시에 실행
최상위 폴더 / 를 맨아래 3개만 보고 싶을때
명령어를 섞어서 쓴다는 말이 어울리겠네요
'서버 > 리눅스' 카테고리의 다른 글
[리눅스] 사용자 관리, 사용자 생성 (0) 2017.03.17 [리눅스] 명령어 (0) 2017.03.16 [리눅스] putty (0) 2017.03.15 [리눅스] 인터넷 (0) 2017.03.14 [리눅스] 파일(cat, vi) (0) 2017.03.14