디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

리눅스를 공부 여섯째날

펔끄유갤로그로 이동합니다. 2013.01.16 23:45:52
조회 216 추천 1 댓글 3


드디어 리눅스에서 프로그래밍 다운것을 맛볼수 있을것 같은 챕터인 쉘 프로그래밍 챕터로 왔다.


내가 리눅스로 얻고자 하는것은 내가 짜본 가장큰 프로그램을 리눅스로 돌려보는것이다.

솔직히 말하자면 내가 짰던 가장 큰 프로그램이라는게 TCP/IP를 이용해서 유저 서버와 메인서버간에 통신을하고
 
유저서버를 통해 받은 UTF-8 문자열과 유저 서버의 데이터를 메인서버가 되는 컴퓨터의 mysql서버에 넣고 안드로이드 스마트폰으로 유저서버 데이터와 문자열들을 받아서 출력하고

유저서버와 안드로이드 디바이스와 연결하게끔해서 유저서버의 캠의 영상을 스마트폰으로 보여주는게 전부이고 

리눅스에서 구현하고자 하는것은 메인서버가 유일함으로 지금 보고있는 책을 레퍼런스처럼 참조 하고 몇일만 투자한다면 얼마 안걸릴것을 나도 알고 있다.

하지만 리눅스에 대해서 기본이라도 알고 한번 훑어본후에 끄적이는것과 무턱대고 내가 필요한것만 찾아서 만드는것의 차이가 없지 않을것이라고 생각해서 처음부터 보고있었다.

졸업작품도 어느정도 기본 뼈대는 만들어놨고 방학동안 영어공부 말고 딱히 정해놓고 하는것이 없기에 시간에 여유가 조금 있다고 생각하고 급하다고 서둘러 봤자 금방 될겄같은게 없어 급한거 없이 이렇게 능률 없게 하고 있는것인지도 모르겠다.

하지만 책을 보면 본챕터를 제외하면 C, mysql, TCP/IP에 대한 내용이 거의 다이고 파일처리, 프로세스, 스레드, GUI프로그래밍등이 있는데 물론 사용법이 윈도우랑 같을리 없겠지만 이론정도는 비슷할것 같다고 생각된다.

이제 지금 보는 한챕터 빼고는 좀더 빠르게 진행할수 있을것 같은데 진행 방향을 변경하는것도 조금 그래서 쉘 프로그래밍도 마저 하기로 했다.

능률 없이 하는거 처럼보여도 시간이 남아서 그러나 보다라고 생각하시길


쉘 프로그래밍은 앞서 사용했던 명령어들을 연장해서 다양한 명령을 만들수 있지만 더 길고 연속적인 명령을 실행하기 위해 명령들을 프로그래밍화해서 파일에 저장하고 실행할수 있게 한것을 쉘 스크립트 파일 쉘 프로그램이라고 한다.

.bash_profile이나 .hashrc도 일종의 쉘 스크립트 파일이라고 할수있다.

쉘 스크립트의 장점은 컴파일을 할필요가 없다는 것이고 이식하거나 확장하기도 쉽다.

쉘 스크립트를 실행하는 방법은 sh 스크립트파일. 스크립트파일이 있다.

sh는 하위 쉘을 생성해서 실행한다 따라서 변경된 변수는 내부에서 설정되고 끝이나면 사라진다.
. 으로 실행하는경우는 현재 쉘에서 실행하기 때문에 변수 값들이 계속 유지하게 된다.

또다른 방법으로 chmod +x 명령어로 실행 가능한 상태로 만들고 직접 실행하는것으로 
$chmod +x hello.sh
$./hello.sh
방식으로 하면된다.

책에 이방법은 하위 쉘을 만드는건지 해당쉘에서 실행하는건지 안나와 있어서 해보니 하위 쉘을 만들어서 할때처럼 변경된 변수가 없어졌다.

직접실행과 sh명령은 하위쉘로 "."명령어는 현재 쉘로 실행한다.


쉘 또한 변수를 두고 정보를 저장 연산을 하게된다. 그리고 명령어 인자 등을 가리키는데 주로 쓰이는 특별한 매개변수들이 있다.
$# 인자들의 수
$* 모든 인자들
$@ $*과 유사. 인용부호를 고려한 모든 인자 목록
$0 , $1... 각각 명령 라인 인자를 가리킴. $0은 명령어 자체
$? 이전 수행 명령의 반환값
$$ 쉘의 프로세스 ID
$! 이전 백그라운드 명령의 프로세스 ID
$- set 명령에 의해 할당된 쉘 옵션

이 내용을 이해하기 위해서 예제를 하나 해봐야 되는데 이놈에 책 예제는 한번에 되는게 하나도 없어 망할 저자 ㅠㅠ

인터넷을 검색 결과 인자를 넣어서 실행할때 sh args.sh arg1 arg2처럼 뒤에 인자를 넣어줘야 한다고 한다. 그런데 왜 책에는 아무런 설명이 없이 실행 결과만 보여주는걸까. 인자 넣어서 실행하는거 쯤은 당연히 알고 있다고 생각하는걸까...자세히 살펴보니 프롬프트만 적어놓고 명령어를 안적어 놓은 라인이 두줄있는것으로 보아 명령어 입력 부분이 누락된거 같다.

변수는 보통 문자열로 취급하며 환경 변수를 설정하는 것처럼 
변수이름 = 값 으로 대입하여 만들수 있다

만들어진 쉘 변수는 이름 앞에 "$"를 붙여 변수값을 참조할 수 있다.

변수 연산의 종류로는
$변수 변수값을 출력
${변수} 변수를 일부로 번역
${변수:-word} 설정되어 있으면 변수 값을, 그렇지 않으면 word값으로 출력
${변수:=word} 설정되어 있지 않으면 변수에 word를 입력하고 출력
${변수:+word} 변수가 설정되었을때만 word값으로 출력 인자들의 수 //실행해보면 변수가 설정되었을때만 word가 출력되는데 되에 인자들의 수가 뭘뜻하는지 모르겠다
${변수:?메시지} 변수가 설정 되어 있으면 변수 값을 출력하고, 그렇지않다면 표준오류 메세지로 메세지를 출력하고 쉘은 종료. 만일 메시지가 생략되면 그 대신 표준오류 메시지가 표시됨.

12시가 넘으면 자야하는 병에 걸려서 오늘도 짧게 하고 자야겠다. 하는 내용은 쥐똥인데 예제가 막혀서 알아보는데 몇십분이 날라가버려서 안그래도 느린 진행이 꼼지락 꼼지락 거리고 있다.

추천 비추천

1

고정닉 0

0

원본 첨부파일 1

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 탈모 걱정 없어 보이는 머리숱 금수저 스타는? 운영자 25/07/14 - -
343596 람다는 람다람다해~ [2] ㅋㄱ(183.96) 13.01.21 129 0
343595 오바마 대통령, 게임-총기 폭력 관련성 연구에 1천만달러 예산 지원 [2] ㅇ3ㅇ(180.66) 13.01.21 103 0
343594 근데 SI 공사판은 우리 나라 종특이냐? [2] ㅇㅇ(58.102) 13.01.21 153 0
343592 SI업체가 용역인가여??; [3] sco(58.127) 13.01.21 199 0
343590 C언어밖에 모르는 상태에서 취직했는데 [7] ㅁㄴㅇ(125.143) 13.01.21 396 1
343589 몇개월정도 공부해야지 스스로 php로 게시판 만들수있음? [4] php신(175.215) 13.01.21 181 0
343588 프로그래밍좀 한다싶을정도가 되려면 어느정도 클라스가 되야함 ? [3] ㅇㅇ(123.212) 13.01.21 261 1
343587 형들은 몇백만원짜리 프로그램 깔았어 ? ㅇㅇ(123.212) 13.01.21 106 0
343586 디자인 패턴책 보는데 돌아버리겟네 [12] 자바초보(211.183) 13.01.21 226 0
343585 템프스탭이라는 인재파견 어때??? 구래구래(211.215) 13.01.21 39 0
343584 C 매크로 사용시 주의할점 [2] classical(110.70) 13.01.21 174 1
343582 안드로이드 사이드 뭐냐 [2] ㅇㅇ(211.215) 13.01.21 108 0
343581 일베에서 사랑돋긔인가 뭔가 보고 네이버에서 찾아봤다. [7] ㅇㅇ(58.102) 13.01.21 245 0
343579 SAP 하시는 성님 있나여? [1] 123(112.153) 13.01.21 113 0
343578 면접보구 왔다 진통제(112.171) 13.01.21 96 0
343577 php는 어떠케 공부하는겁니까? +ajax는 머라고발음해야함니까 [7] php신(175.215) 13.01.21 152 0
343576 온라인모바일게임공부할려고 nodejs쓸려고하는대 괜찮? (211.237) 13.01.21 46 0
343575 시스템엔지니어가 꿈인데,, 리눅스를 어느정도까지 공부해야됨?? [3] 토트넘이체고시다!갤로그로 이동합니다. 13.01.21 449 1
343574 개발자까지는아니고, 개발자 하려는 학생인데 울트라북써도됨? [3] ㅇㅇ(112.153) 13.01.21 205 0
343573 게시판 강좌 따라보면서 만들고있는데 [3] wws(175.215) 13.01.21 78 0
343572 자바스크립이나 에이작스 좀 만져본 놈들은 [1] ㅁㄴㅇ(119.202) 13.01.21 141 0
343571 php게시판만드는거 뭐이리힘듬?? 장제스(175.215) 13.01.21 67 0
343570 소멤 전화온사람없나.. [3] 구피(210.179) 13.01.21 148 1
343569 형들 자바학원추천점 [6] 뉴비(112.216) 13.01.21 162 0
343568 입학 전에 윤성우 열강 C 독학하는데 손코딩으로 해도 상관없겠죠 [10] 플로피디스크갤로그로 이동합니다. 13.01.21 261 1
343567 자바 잘하는 프갤러들있나..? 나 초보인데 상수는 메모리에 저장돼..? [2] ㅇㅇ(211.224) 13.01.21 124 0
343566 자바 볍신같다. 비오는데 먼지나게 패고 싶다 [2] 볍신자바(223.32) 13.01.21 132 1
343565 '#define 함수명' 이랑 'void 함수명()' 뭔 차이?? [22] 나초보(182.172) 13.01.21 252 0
343564 SQLite3에서 시퀀스를 생성하는 autoincrement의 문제점. ㅁㄴㅇ(119.202) 13.01.21 91 0
343563 HTML의 메타 태그 <meta>에 대한 고찰 ㅁㄴㅇ(119.202) 13.01.21 106 1
343562 프로그래밍은 수학점수랑 관련없다 수학적사고력에 관계잇지 [16] asdfw(175.215) 13.01.21 318 1
343561 한국에서 프로그래머의 위치는 어느 정도일까? [4] 멍청닭(182.211) 13.01.21 305 1
343558 입사 두달째‥‥ 몸이 적응이 안된다 [5] 노흑(211.36) 13.01.21 283 0
343557 디씨 홈페이지 키워드 meta태그 오타.ㅓㅔㅎ [2] 1.602*10^-19갤로그로 이동합니다. 13.01.21 153 0
343554 HTML 기본적인 태그인데 그 유투브 embed 로 긁어올때 풀스크린 [5] dd(124.197) 13.01.21 114 0
343553 sprintf 에서 에러가 나는데 왜 나는지 잘 모르겠음 [8] 늘모(58.143) 13.01.21 137 0
343549 해킹 : 공격의 예술 이란 책을빌려서 읽는데 생각보다어렵구나.. 염산.갤로그로 이동합니다. 13.01.21 323 1
343548 파로스로 좀 깔짝거리면 디시나 일베에 태그난사할수있지않음? [2] asww(175.215) 13.01.21 118 1
343547 C언어 가상메모리구조에 관해 질문 [19] dasf(36.39) 13.01.21 306 0
343545 2d게임 경사로 구현중인데 질문점 [3] g.w.갤로그로 이동합니다. 13.01.21 183 0
343544 세상 뒤집은 1인 개발자의 필살기는? [7] 에어로홍갤로그로 이동합니다. 13.01.21 368 0
343543 갤러님들아 웹해킹/보안 관련 서적 추천점여 [3] assd(175.215) 13.01.20 163 2
343542 횽들 용책 해골책에 본(bone) 심어서 캐릭 움직이는건 안알려주지? [2] 김삼디(110.9) 13.01.20 120 0
343541 C언어 초보인데 이런 포인터는 기본이야...ㅇㅇ? [5] 초보(211.224) 13.01.20 223 1
343540 여기서 말입니다. [2] ㅌㄹㅇ갤로그로 이동합니다. 13.01.20 68 1
343538 웹개발쪽 회사는 회사 자체가 IT계열밖에 없음? [5] (116.120) 13.01.20 213 0
343535 너희 아날로그 티비 나오냐? [4] 에어로홍갤로그로 이동합니다. 13.01.20 86 1
343534 형들 C++로 Parsing 하려면 어떻게 해야해요? [6] 잉여대학생(221.161) 13.01.20 156 1
343532 슈바두밥바~♪ [2] ㅌㄹㅇ갤로그로 이동합니다. 13.01.20 53 0
343531 암호학 배울 때 기호 나오는거 어디서 배움? [2] 에어로홍갤로그로 이동합니다. 13.01.20 101 0
뉴스 빅뱅 대성, 호주 멜버른 콘서트 취소 "기술 관련 문제" 디시트렌드 07.17
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2