『리눅스 학당-리눅스 강좌 / 연재 (go LINUX)』 96번 제 목:[자유강좌] 쉘 #6 올린이:머드넷 (황동준 ) 95/07/17 02:57 읽음:5183 관련자료 없음 ----------------------------------------------------------------------------- 초보자를 위한 Linux & X Window System #6 7. 쉘. (1) Standard Input & Standard Output 간단히 설명해서 키보드에서 들어오는 명령을 표준입력이라고 하고 유저의 터미널 로 보내지는 출력을 표준출력이라고 합니다. 그 출력은 프린터, 파일로도 갈수가 있습니다. 여기서 사용자의 터미널이라는 것은 저희가 처음에 who라는 명령어를 배울때 tty0, tty1.... 이라고 디스플레이됐던것을 의미합니다. 리눅스에서는 프린터, 디스크 드라이브, 터미널같은 것을 파일로 간주하기 때문에 각각마다 고유의 파일이름을 가지고 있습니다. 여러분들 리눅스 디렉토리내에 보시면 /dev라는 디렉토리가 있을 겁니다. 바로 그 디렉토리내에 디바이스 파일들이 존재하고 있습니다. who라는 명령어로 확인 했을 때 tty0라고 표시됐다면 그 터미널의 패스 이름은 /dev /tty0일 겁니다. 터미널과 Command사이에 존재하는 것이 바로 쉘입니다. Command에서 터미널로 향하 는 것이 표준출력이고 터미널에서 Command로 향하는 것이 표준입력입니다. 표준입력과 표준출력을 잘 보여주는 예가 cat이라는 명령어입니다. cat이라는 명 령어 다음에 아규먼트가 붙으면 그 파일의 내용을 화면에 디스플레이 해준다는 것 은 아마 아실겁니다. 그럼 아규먼트를 붙이지 말고 cat이라는 명령어를 실행하여 봅시다. ClassData:/# cat [ENTER] Good morning Good morning Goodbye Goodbye ^d ClassData:/# 아래에 커서가 깜박이죠 아무 문장이나 타이프하시고 [ENTER]를 치시면 그 문장이 그대로 출력됨을 볼수가 있습니다. 유저가 키보드로 입력한 표준입력이 그것의 표준출력에 복사가되어 화면에 디스플 레이 되는 것을 의미합니다. 한번에 한 라인만 가능합니다. 위에서 살펴본 표준입력, 표준출력 이외에 표준에러라는 것이 하나 더 있습니다. 다음 파트를 보시면 표준에러를 쉽게 이해하실 수 있을 겁니다. (2) Redirection 방향전환이라는것은 표준입력이나 출력의 방향을 꼭 키보드 또는 터미널로 하는 것 이 아니라 임의로 방향을 바꿔 파일에서 입력을 받거나 파일로 출력을 하는 것을 말합니다. 유닉스에서 흔히 말하는 쉘에는 본쉘과 c쉘이 있습니다. 11장에서 자세히 쉘프로 그래밍에 대해 공부할 것이므로 그냥 지금은 있다고만 하겠습니다. 방향전환하는 기호가 본쉘이냐 c쉘이냐에 따라 약간은 다릅니다. 자 그럼 먼저 표준출력의 방향전환부터 알아보겠습니다. 저번장에서 cat > test 라는 명령어를 사용한적 있었죠? 임의의 텍스트 파일 만드는 방법으로요 ' > '가 표준출력 방향전환기호 입니다. 아까 cat이라는 명령어 다음에 아규먼트가 붙지 않으면 표준입력이 표준출력으로 복사된다고 했죠 '>'기호와 'test' 라는 파 일이름으로 인해 표준출력이 터미널로 가야되는 것이 test라는 파일로 가게되는 겁 니다. 기호 방향 혼동 하시면 안됩니다. 예를들어 ClassData:/# ls > test [ENTER] ClassData:/# 'ls'라는 명령어를 수행하면 현 디렉토리내의 파일과 서브디렉토리가 출력이 되어 야 정상인데 출력이 되지 않고 있습니다. 출력될것이 전부 test라는 파일에 들어 갔기 때문입니다. 별로 어렵지 않죠? 그런데 이것도 조심해서 사용해야 됩니다. 파일이 기존에 존재하고 있다면 그 파 일은 날라가 버리게 되죠. 자 이번에는 표준입력에 관한것입니다. 역시 cat으로 예를들어 설명해 보겠습니다. ClassData:/# cat < test [ENTER] Good morning Good bye ClassData:/# 위 명령어 test라는 파일을 표준입력으로 받아 표준출력인 터미널로 보내는 것입 니다. 곧 'cat test'와 다를게 없죠? 기호방향을 잘 기억하시기 바랍니다. 가끔 오락가락할 때가 있을 겁니다. 그리고 마지막으로 표준에러의 방향전환입니다. 표준에러의 방향전환은 본쉘을 기준으로 간략하게 설명하겠습니다. 실행하려고 하는 명령어가 시스템에 없으면 Command not found라는 메세지가 나옵니다. 그러한 메세지는 표준출력을 방향전환 을 하더라도(파일로) 화면에 메세지가 나옵니다. 이러한 메세지를 표준에러라 하 는데 이것의 방향을 전환해서 파일로 저장할 수 가 있습니다. ClassData:/# ttt 2> good ClassData:/# cat good bash : ttt : Command not found 아래는 본쉘과 c쉘에서의 입력과 출력방향전환 기호입니다. 기호 C쉘 본쉘 > 표준출력을 새로운 파일로 표준출력을 파일로 >! 표준출력을 기존의 파일로 사용하지 않음 >> 표준출력을 기존의파일에 표준출력을 기존의 파일에 덧붙임 덧붙이거나 새로운 파일로 < 표준입력을 파일에서 표준입력을 파일에서 >& 표준출력, 에러를 새로운 사용하지 않음 파일로 >&! 표준출력, 에러를 기존의 사용하지 않음 파일로 >>& 표준출력고, 에러를 기존의 사용하지 않음 파일에 덧붙임 1> 사용하지 않음 표준출력을 파일로 2> 사용하지 않음 표준에러를 파일로 >&2 사용하지 않음 표준출력, 표준에러를 결합 하고 결과를 표준출력으로 * 참고 : 리눅스에서 본쉘은 bash, c쉘은 tcsh 숭실대학교 전자계산학과 MUDNet [출처] [펌] [자유강좌] 쉘|작성자 몽에보