디시인사이드 갤러리

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

갤러리 본문 영역

리눅스를 공부 여섯째날

펔끄유갤로그로 이동합니다. 2013.01.16 23:45:52
조회 218 추천 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/28 - -
AD 휴대폰 액세서리 세일 중임! 운영자 25/07/28 - -
345888 인터냇끋겼는대 해겨법좃 ㅜ ㅜ [5] 털자털기갤로그로 이동합니다. 13.02.14 70 0
345887 진짜 궁금해서 물어보는건데, [1] 개구리래머갤로그로 이동합니다. 13.02.14 57 0
345886 c는 되는데 c++은 안되는게 뭐가 있을까 [2] ㅇㅇ(58.102) 13.02.14 106 0
345885 클라우드가 대두되면서 죽어나가는 기업,직업은 뭐가 있을까여 [3] topandbottom갤로그로 이동합니다. 13.02.14 122 0
345883 구글링도 실력이다 [2] 1745(175.215) 13.02.14 135 0
345881 여기다가 물어봐도 되는 얘긴지는 모르겠는데 비트로커 관련해서 질문드립니다 Rabbit(221.151) 13.02.14 91 0
345880 애들아. 형 얼마 받고 이직할까? [3] ㅓㅏ(115.92) 13.02.14 148 0
345879 티버애니야~ 같이 프로그램 만들자. ㅇㅇ [1] ☎2.52™갤로그로 이동합니다. 13.02.14 91 0
345878 모닝 질문 ^ ㅅ^ jil moon [1] 칰빠버프갤로그로 이동합니다. 13.02.14 80 0
345877 자바 다룰줄 아는 횽구함. 삼천준다 [2] 촙개발자(112.216) 13.02.14 134 0
345875 ㅋㅋㅋ티버애니ㅋㅋ낄낄ㅋㅋ [1] 낄낄이(223.62) 13.02.14 95 2
345874 프로그래머가 잘먹고 잘사는 방법 - 레슨 1 [4] ㅇㅇ(58.102) 13.02.14 182 1
345870 알고리즘같은거 잘하려면 어케해야함? [3] wOw(216.171) 13.02.14 207 0
345869 살아있는사람있음? [2] 미친놈처럼살자갤로그로 이동합니다. 13.02.14 48 0
345868 수강신청할때 매크로 쓰는거 쉽게 알수있음? [6] 12(59.12) 13.02.14 161 0
345867 야근 하기싫으면 안하면 되는거 아님? [2] 티버애니갤로그로 이동합니다. 13.02.14 132 0
345866 진지하게 도움요청합니다 제 인생 걸렸음 [10] tmsladk(123.248) 13.02.14 263 0
345865 개발자가 야근 안 하는 법 [5] 경번갑(121.167) 13.02.14 290 0
345864 Code::Blocks 관련 병신 글과 병신 댓글 [8] 경번갑(121.167) 13.02.14 166 0
345863 엔시소프트 7만원가냐? ㅋㅋㅋ(1.231) 13.02.14 75 0
345862 14일이라서 문득 생각난게 있는데.. 산토리니(175.115) 13.02.14 50 0
345860 메일첨부해서 보내면 압축파일 내용이 압축해제안해도 보임? [1] -_-(211.196) 13.02.14 134 0
345858 30분 뒤가 뭔줄 아냐?? [2] 멍청닭(182.211) 13.02.13 145 0
345857 급진지) 좀비는 존재할 수가 없다. [4] 멍청닭(182.211) 13.02.13 152 0
345856 스마트폰이나 태블릿 PC용으로 난수생성기를 만들고 싶은데.. [14] -_-(211.196) 13.02.13 126 0
345854 연애하기 좋은 여자, 결혼하기 좋은 여자. 만나지 말아야할 여자 [2] 멍청닭(182.211) 13.02.13 6583 6
345853 유료 소프트웨어 팔아서 돈벌기는 힘들지 않음? [10] 티버애니갤로그로 이동합니다. 13.02.13 314 0
345852 48세 주부입니다. 개발자가 되고 싶은데 조언 부탁드릴게요. [6] 티버애미(125.180) 13.02.13 275 1
345851 갑자기 돈 존나 많이버는 수익모델 생각남 ㄷㄷㄷ [5] 티버애니갤로그로 이동합니다. 13.02.13 209 0
345850 알고리즘책 추천점 ........... [4] 티버애니갤로그로 이동합니다. 13.02.13 243 0
345849 왜 개발자는 야근을 강요 당하는가? [4] 멍청닭(182.211) 13.02.13 240 0
345847 님들아 우분투서버 말고 윈도우서버2012 써도되나여? [25] ㅈ걓(175.215) 13.02.13 198 0
345846 자바배우면 c#은 접밥인가여? [2] ㅈ걓(175.215) 13.02.13 158 0
345845 이쁜 여자 개발자가 있는 회사가 프로젝트도 잘 딴다는게 사실이냐?? [1] 멍청닭(182.211) 13.02.13 214 0
345844 자바 모르는데 c#들어도 되나요? [4] ss(218.38) 13.02.13 140 0
345843 님들 이책 아셈?ㅋㅋ대박 헐쩐다(175.195) 13.02.13 113 0
345841 왜 안드로이드 게임은 무료로 풀어야 하는가 [2] de(183.103) 13.02.13 272 0
345838 사용자 층 개발자가 많앗던 곳이 그만큼 드럽다 [1] 돌대갈(117.111) 13.02.13 94 0
345837 WinApi는 #define때문에 망햇슴 [1] 부스타(14.36) 13.02.13 123 0
345836 형들 jsp 홈페이지 업데이트 해주는 알반데.. [2] HTML(1.212) 13.02.13 114 0
345834 이거 알아? 네이버에 검색해도 뭐가 검색이 안돼 [1] 이모군(121.124) 13.02.13 89 0
345832 요즘 앱 시장 어때?? 수익 좀 나? [3] 멍청닭(182.211) 13.02.13 168 0
345831 댓글 삭제하는걸 보니 편집증 증세가 쩐당께요? [1] c(175.208) 13.02.13 76 0
345830 ' 이랑 " 이랑 차이가머냐?? [8] 고고고(110.47) 13.02.13 169 0
345829 goto 찬양글 [8] ㅇㄹ(112.163) 13.02.13 210 2
345827 개발자 = 야근이라는 공식을 깨야한다. [2] 멍청닭(182.211) 13.02.13 159 1
345825 집에 노는 데탑으로 개인용 서버 돌리려고 하는데 리눅스 하나만 추천점 [9] 마법과물리갤로그로 이동합니다. 13.02.13 127 0
345823 절대 '쉽다' 라고 하지마라 [4] de(183.103) 13.02.13 231 1
345822 제발 COM 익히는 법좀 [2] (175.197) 13.02.13 86 0
345821 이제 컴공 3학년 복학하는데여 [4] ㅇㅇ(112.186) 13.02.13 168 0
뉴스 유병재, 사진 한 장에 고소 당할 위기…네티즌 “선처없다” 디시트렌드 07.30
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2