디시인사이드 갤러리

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

갤러리 본문 영역

리눅스를 공부 여섯째날

펔끄유갤로그로 이동합니다. 2013.01.16 23:45:52
조회 214 추천 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/07 - -
343258 헤이 플밍형들 XML 무뇌라 질문좀할게 ( C# 연동) [4] 화휴갤로그로 이동합니다. 13.01.17 61 0
343256 여기 유니티3d 다루는 횽아 있음? [5] ㅁㄴㅇㄹ(180.231) 13.01.17 124 0
343254 이 주 만에 c 마스터하고 한 달만에 API 마스터햇음. [12] 죠빱플밍(125.180) 13.01.17 246 0
343253 IT 전문학원 다닌다는 애덜 한심해 보이는 이유가 [4] ㅁㄴㅇㄹ(180.231) 13.01.17 293 0
343252 error : invalid extent 1233333(124.5) 13.01.17 44 0
343251 횽들 c로 trim 짜보는데 [11] ?(123.142) 13.01.17 137 0
343250 간만에 왔네 [1] 이모군(175.114) 13.01.17 67 0
343248 HTML5관련 예상질문 [4] ㅁㄴㅇ(119.202) 13.01.17 118 0
343247 HTML5의 위대함 [4] ㅁㄴㅇ(119.202) 13.01.17 265 1
343246 잉여탈출! OpenCV vs 온라인저지 [1] ㅁㄴㅇㄹ(182.214) 13.01.17 73 0
343245 님들 현역특례도 경력으로 쳐주나여??? [2] aa(112.220) 13.01.17 89 0
343244 제일 웃긴것 학원가서 배우겠다는것은 [1] 소크락텍스(211.112) 13.01.17 180 0
343243 HTML5 시작을 어떻게 접근해야함? [8] 빌어먹을야옹갤로그로 이동합니다. 13.01.17 164 0
343242 프로그래머 왜 돼셨나요? [5] 아흠(183.101) 13.01.17 208 1
343240 소켓통신중에 특정 유저 완벽 차단하는 방법 없을까? [5] ㅁㄴㅇㄹ(180.231) 13.01.17 104 1
343237 나없을때 또 자바를 비오는날 먼지나도록 깟구나 쉿팔뤔들아 [8] 얼룩돼지갤로그로 이동합니다. 13.01.17 194 0
343236 회사생활 하면서 실제 코딩다운 코딩은 거의 못해보고 잇다.. [5] ㅇㅇ(112.148) 13.01.17 257 0
343235 아 소멤 미뤄졌어.. [4] 구구(211.178) 13.01.17 167 0
343234 야 게임어플추천좀 [1] 털자털기갤로그로 이동합니다. 13.01.17 57 0
343233 C++에 인터페이스가 있음? [6] 금고래갤로그로 이동합니다. 13.01.17 174 0
343231 ㅎㅎㅎㅎ프갤 컨셉중 최고는 자랑질이지 [1] 국민카드쓰세욧(223.62) 13.01.17 84 0
343228 형들 php게시판 만들때 소스 퍼와서만듬? [4] 작성자(175.215) 13.01.17 163 0
343227 노가다인가 창의력의 장인가 [2] 3qc3(110.12) 13.01.17 141 0
343226 형들아 나 이거 미칠것같거든 누가좀 찾아주라(은꼬르임) [2] 개럴(69.60) 13.01.17 191 0
343225 사용가능 ide툴에 에디트플러스 적은새끼들 sexer1갤로그로 이동합니다. 13.01.17 103 1
343224 누가 내 홈페이지에들어옴계속 [페이스북홈페이지임] [8] 주커버그(175.215) 13.01.17 187 0
343223 C++ API 관련해서 질문올립니다. [2] 열정(61.84) 13.01.17 91 0
343222 형들 보통 웹디자인할때 html/css태그 찾아가면서 필요한거 골라서씀? [2] nn(175.215) 13.01.16 114 0
343221 게임기획자가 꿈인데 테크를 어찌타야좋을까요 [15] rqwer(112.161) 13.01.16 255 0
343220 병1신들 조또 재미업네 [5] 중딩플머(125.180) 13.01.16 131 0
리눅스를 공부 여섯째날 [3] 펔끄유갤로그로 이동합니다. 13.01.16 214 1
343217 오늘 회사에서 일어난 썰.. [5] 힝아(115.161) 13.01.16 213 0
343215 뉴욕의 프로그래머라는 소설 보고 있거든요 [6] 길가던놈갤로그로 이동합니다. 13.01.16 192 0
343213 간만에 jsp해야 하는데 [1] 초보리버서(49.1) 13.01.16 73 0
343212 LINQ ?? ㅠㅠ개초보(183.102) 13.01.16 52 0
343211 나 C 공부한 지 한달 째인 중딩인데 [13] 미애버티(125.180) 13.01.16 280 0
343208 배열 주소값 호출관련해서 질문이 있는데요 [2] 네로시엔갤로그로 이동합니다. 13.01.16 101 0
343206 더블포인터 다중포인터는 언제쓰죠 [19] 노네임(175.208) 13.01.16 327 0
343203 C++ 배우고 있는데 객체지향은 어떻게 짜야될지 감이 안잡혀요 [4] 원딜왕코르킹갤로그로 이동합니다. 13.01.16 149 0
343201 군특기가 경력에 적용??? [5] ㅇㅇ?(223.62) 13.01.16 124 0
343200 횽들 혹은 내가 자바니 C#이니 티격태격 토론 훈장질 할때 [3] ㅁㄴㅇ(59.25) 13.01.16 140 0
343199 언어 익히는것도 감각도 타고나야 되는것같다. [5] ㅋㅋ(122.128) 13.01.16 152 0
343198 프갤의 수준.txt [5] Kyle(220.244) 13.01.16 314 0
343197 프갤에 문제점이 뭔지아냐?? 영어되는새끼가 없다는거 .. [11] 영어(112.153) 13.01.16 257 0
343196 님들아 님들은보통 html태그 다외워요? [5] nn(175.215) 13.01.16 126 0
343195 야근비 새는 밤... ㅇㅇ(58.102) 13.01.16 32 0
343194 이거 추가되면 자바 빤다 [5] 돌대갈(211.36) 13.01.16 180 0
343193 아..역시 비전공자는 불가능하구나... [25] 프엔퓨(210.121) 13.01.16 465 0
343191 야 내가 존나 이상한거냐? [6] 08학번공대생갤로그로 이동합니다. 13.01.16 109 0
343190 암호학 어려움???????? 3학년 전공 인데 [7] 공대(211.251) 13.01.16 159 0
뉴스 에이핑크 박초롱·윤보미·김남주·오하영, 위드어스와 전속계약…새 프로필 공개로 본격 활동 시동 디시트렌드 07.07
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2