디시인사이드 갤러리

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

갤러리 본문 영역

리눅스를 공부 여섯째날

펔끄유갤로그로 이동합니다. 2013.01.16 23:45:52
조회 217 추천 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 - -
345956 IT계열 해외 취업이 어떤가요? [7] 늅늅(112.172) 13.02.15 328 0
345953 인터넷 보안은 보안전문업체한테 맏기는게 좋을듯 ㅇㅇ [2] 티버애니갤로그로 이동합니다. 13.02.14 197 0
345952 게임회사 이력서 정리된거랑 소스파일도내야되? [4] 으마마악(211.237) 13.02.14 191 0
345951 회사에서 하는 프로그래밍만 하다보면 왠지 질리고 재미없지 않아요?? [12] 개쉛기갤로그로 이동합니다. 13.02.14 309 0
345950 프로그래밍으로 19살에 월600 버는거 가능 [11] ㅁㄴㅇㄹㄴㅇ(1.227) 13.02.14 381 0
345949 문자열은 값이야 주소야? [13] 상상(175.123) 13.02.14 226 0
345948 DB 튜닝법 자세히 나와있는 책있음 ? [3] 천국거지갤로그로 이동합니다. 13.02.14 101 0
345945 디자인 패턴 개쩐당 [5] 우앙(14.36) 13.02.14 224 0
345942 형님들 인공지능 이론에 대해서 이해가 안되서 질문좀요 [4] ssapo갤로그로 이동합니다. 13.02.14 153 0
345939 C++ 함수 이름 대문자로 만듬? [5] 시시(14.36) 13.02.14 131 0
345938 와이드 노트북으로 도저히 코딩 못하겠다 [7] 굿컴(14.36) 13.02.14 190 0
345937 vi 편집기? [4] ㅁㄴㅇㄹ(119.56) 13.02.14 125 0
345936 플래시 소켓 서버 만들고 싶은데 [2] 래디가가(61.140) 13.02.14 80 0
345935 맵에디터 처음만드려고 해보는개 머쓰는게좋음? [2] 모르겠어(175.223) 13.02.14 89 0
345933 3d 윈도우 가젯 만드는 방법이 궁금함 [4] d(168.126) 13.02.14 101 0
345932 gvim 자동 들여쓰기기능 없음? [4] 나리링갤로그로 이동합니다. 13.02.14 96 0
345931 대학원은 과연 그만한 가치가 있는가/ [5] 니 코 가 뭐갤로그로 이동합니다. 13.02.14 312 0
345930 자바로 mysql문 날리고싶은데어찌해야함니까 [1] ㅂㄷ죠ㅛㄱ(175.215) 13.02.14 88 0
345929 형들 온라인게임같은거는 [3] ㅡㅡㅋ(113.216) 13.02.14 122 0
345928 리눅스는 어려우시다 ㅠㅠ [2] 나리링갤로그로 이동합니다. 13.02.14 121 0
345927 거 소켓프로그래밍 배울라카면 c언어알고배워야하는거여? [9] 346ㅛㄱ(175.215) 13.02.14 150 0
345926 코드 에러때문에 구글링 하다보면 제일 짜증나는 것들 MUFF갤로그로 이동합니다. 13.02.14 67 0
345925 난 아직도 c++ 이해가 안가 [5] 이모군(175.114) 13.02.14 211 0
345924 님들 이거암? ㅎㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷ [2] 티버애니갤로그로 이동합니다. 13.02.14 284 0
345922 구글 유투브 etc 검색도 활용못하면 티모티모(211.112) 13.02.14 83 0
345921 게시판을 오늘까지 만들어야 하는데 [6] 개구리래머갤로그로 이동합니다. 13.02.14 174 0
345920 쓰레기 코드를 싸질러놓는다는게 무슨의미임? 쓰레기코드의 기준이뭐임 [9] vaert(175.215) 13.02.14 215 0
345919 졸업작품 주제를 정해야하는데 아무거나 좀 던져주셈 [8] ㅁㄴㄻㄴㅇ(223.32) 13.02.14 240 0
345918 너희들은 인터넷 다막혀버리면 어느 정도 실력 다운되냐 ? ㅇㅇ ? [2] ☎2.52™갤로그로 이동합니다. 13.02.14 148 0
345917 횽들 질문점할게여...회사관련.. [5] 흐으으으아아앙(14.49) 13.02.14 102 0
345914 it뱅크 정말 개짜증난다. [2] ㅇㅁ(211.236) 13.02.14 279 0
345913 굽신 문과생이 컴퓨터과학부 편입했는데 도와주세여ㅠㅠㅠㅠ 굽신 [10] 문문문(14.54) 13.02.14 272 0
345912 프로그래머중 승리자라면 생각 나는 사람이 [3] d861ch(211.207) 13.02.14 188 0
345911 원래 CentOS에는 아파치랑 MySQL이 깔려 있어? [2] ㅇㅇ(14.37) 13.02.14 183 0
345910 프로그래머가 성공하는법 [11] vaert(175.215) 13.02.14 395 4
345909 요즘 슬슬 내 나이때 사람들도 겨론을 하는데 [1] ㅇㅇ(58.102) 13.02.14 74 0
345907 Java에서 변수 중복선언 허용하는게 JDK 언제적 버젼이냐? dlbo갤로그로 이동합니다. 13.02.14 65 0
345906 오브젝티브c 어렵다 [1] ㅁㅁ(125.61) 13.02.14 94 0
345904 난 프로그래머로 성공했다. [6] ㅓㅏ(115.92) 13.02.14 282 0
345903 면접날짜 안맞아서 미뤄달라고 했다가 전화해서 그날 보겠다고하면 받아주나여 [3] topandbottom갤로그로 이동합니다. 13.02.14 102 0
345900 프로그래머가 잘먹고 잘사는 방법 - 레슨 2 [2] ㅇㅇ(58.102) 13.02.14 210 0
345898 초졸은 외국 중졸은 한국 고졸은 검정고시라 맞춤법 잘틀림 [1] 티버애니갤로그로 이동합니다. 13.02.14 129 0
345897 C++로는 되는데 C#으론 안되는게 뭐가있슴? [3] (175.197) 13.02.14 151 0
345896 프로그래밍언어도 저작권 있음? [2] 저작(175.197) 13.02.14 133 0
345895 안드로이드 adb 결과 화면 루핑 도는거 어케 제어함 [1] ㅁㄴㅇㄴㅁㅇ(210.94) 13.02.14 49 0
345894 (워게임)이걸푼다는게 도대체무슨의미..? [8] 염산(175.223) 13.02.14 470 0
345893 형들 이거 머하는거임?? 1533(175.215) 13.02.14 29 0
345892 워게임이란 정확히 무엇인가요?? 질문자(175.223) 13.02.14 64 0
345891 이거 무슨언어임??.jpg [5] 염산(175.223) 13.02.14 273 0
345889 안드로이드 경로 어떻게 확인함? [3] ㅁㄴㅇㄴㅁㅇ(210.94) 13.02.14 69 0
뉴스 ‘언니’라 부르던 그 여자… 남편과 내 집에서 살림 차렸다 디시트렌드 07.28
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2