shell> for i in $(seq -w 1 100); do ssh www${i}.domain.com "sudo /etc/init.d/httpd restart"; done
perl> perl -e '`ssh www$_.domain.com "sudo /etc/init.d/httpd restart"` for 1..100'
Perl win? :)
Shell도 좋지만 작업대상이 많아지면 어떤작업이 끝나길 기다리고 순차적으로 진행하면
빨리못할 경우도 생기죠.. 뭐 매 작업을 fork시켜버리면 안 기다리고 넘어가겠지만 쉘에서는
fork bomb를 맞지 않도록 fork된 작업갯수가 특정 갯수이하로 유지되길 조정하기가 어렵고...
그런 Throttling작업이 필요할때는 Perl같은 고수준의 스크립트가 유용하기도 합니다.
shell이 편하면 shell쓰고
shell에서 seq,awk,sed,sort,uniq 등등 쉘 명령등을 복잡하게 짬뽕으로 쓰는게 귀찮으면
Perl,Python,Ruby같은 스크립트 언어를 고려해보면 되겠고
하지만 Perl one-liner는 충분히 배워놓을 가치가 있습니다.
짧다고 win이 아니죠. 특히 shell 작업에서는요. shell 작업에서의 가장 힘든점은 qouting인데.. php나 perl, python등은 inline으로 작업을 하려면 quote가 기본으로 들어가야 하기 때문에 귀찮은 겁니다. 반면에 shell은 바로 사용할 수가 있죠. :-)
perl,php,python을 사용하면 훨씬 더 고난이도의 작업을 할 수 있지만, 간단하게 여러대의 서버의 daemon을 제어하는데 굳이 사용해야할 필요성을 전혀 못느낀다는 점입니다. :-)
노가다성 작업에 대한 해결책도 쉘스크립트만 있는 게 아닙니다. 오히려 쉘스크립트보다 정규식을 알아두는 게 활용도는 훨씬 높을 겁니다. 전 때때로 파이어버그에서 자바스크립트로 해결을 보기도 하구요. 간혹 엑셀이 더 유용할 때도 있고, 그냥 변환기 가져다 쓰는 게 편할 때도 있죠.
배워두면 당연히 어딘가 쓸모가 있고 도움은 되겠지만, 안 배운다고 큰일 나는 것도 아니고, 개발 실력을 구성하는 요소 중에 쉘스크립트보다 중요한 요소는 차고 넘칠 만큼 많습니다.
세상에 필수적으로 꼭 배워야 하는 것은 그리 많지 않습니다. 누구는 알고리즘이 필수라고 말하고, 누구는 쉘스크립트가 필수라고 말하고, 누구는 OOP가 필수라고 말하죠. C를 필수라고 말하는 사람도 있고, 리눅스를 필수라고 말하는 사람도 있습니다. OOPSLA 가서는 APL이 필수라는 이야기도 들었고, 프로그래머가 함수형 언어를 모른다는 게 말이 되냐는 이야기도 접했습니다. 무엇이 진짜 필수인지는 context에 따라 달라지는 것이지, context-free한 필수는 의미 없습니다.
조금 질문을 바꿔서, "쉘스크립트를 배우면 어떤 점이 좋은가요?"라고 한다면 좀더 좋은 질문이 되었을 듯.
한가지는 쉘이 엑셀하고 똑 같기 때문입니다.
대학생에게 엑셀을 가르쳐 보면 압니다.
엑셀을 활용하기 위해서는 어느 수준의 일상 업무에 대한 이해가 있어야 심도있는 부분까지 가르칠 수 있습니다.
이걸 모르면, 왜 엑셀을 공부하는지 모릅니다. 반면, 업무에 종사하는 사람에게 엑셀을 가르치면 흡수력이 매우 빠르죠.
쉘도 동일합니다.
사실상 쉘 프로그램이 상속이나 디자인 패턴이 있는 것도 아닌 이상 언어 자체가 심도 있는 것은 아닙니다.
중요한 것은 업무와 연결되는 노하우에 대한 습득입니다.
그런데, 이 업무를 모르면? 동기부여는 둘째 치고, 업무 자체를 이해해야 한다는 모순이 생기죠.
shell> for i in $(seq -w 1 100); do ssh www${i}.domain.com "sudo /etc/init.d/httpd restart"; done
예제로 적어 놓으신 이 코드도 도메인을 둘째 치더라도, ssh,unix,http,데몬에 대한 이해가 있어야 합니다.
이걸 모르면, 필요성도 이해못하고 동기부여도 안됩니다.
두번째는 개발자정도라면, shell 스크립트, 간단한 perl 스크립트 정도면 3~4시간 수준 읽어 보고, 습득할 수 있는 내용입니다.
만약, 현업에 종사전에 미리 이러한 부분을 공부해 놓지 않을 것을 후회할 정도로 언어적 쎈스가 없다면 개발자 접어야죠.
분야마다 다르겠지만
분야마다 다르겠지만 적어도 SE분야라면 쉘 스크립트를 안 쓰면 그게 더 이상한데요.
--
http://cafe.naver.com/sedarak
일반 개발 쪽에서도,
일반 개발 쪽에서도, 자동 일일 빌드라든지, 개발 중에 필요한 여러가지 반복적인 노가다 작업을 좀더 편하게 하려면 써야만 할 겁니다.
쉘스크립트 말고
쉘스크립트 말고 다른 대안이 있나요?
정말 몰라서 여쭙습니다...
설마 프로그램을 일일이 구현해서...???
perl이나 python이
perl이나 python이 훌륭한 대안이 될 수 있습니다.
=-=-=-=-=-=-=-=-=
http://youlsa.com
=-=-=-=-=-=-=-=-=
http://youlsa.com
shell> for i in $(seq -w 1
흐흐.. 이걸 shell 보다 편하게 할 수 있나요? 설마 php -R "code..." 이런식으로 하라고 하시진 않겠죠. :-)
shell script의 경우 script를 짜서 실행을 하는 것 보다 inline으로 직접 사용할 경우 power가 배가 됩니다. :-)
훔 더 간단하게
Perl win? :)
Shell도 좋지만 작업대상이 많아지면 어떤작업이 끝나길 기다리고 순차적으로 진행하면
빨리못할 경우도 생기죠.. 뭐 매 작업을 fork시켜버리면 안 기다리고 넘어가겠지만 쉘에서는
fork bomb를 맞지 않도록 fork된 작업갯수가 특정 갯수이하로 유지되길 조정하기가 어렵고...
그런 Throttling작업이 필요할때는 Perl같은 고수준의 스크립트가 유용하기도 합니다.
CPAN에 작업을 병렬로 수행하며 throttling 해주는 모듈들이 많지만 간단한
http://search.cpan.org/dist/Parallel-ForkManager/ 을 사용한 예를 들면
fork된 프로세스의 갯수가 최대 10개 이도록 Throttling 하는 예제
뭐 이런식으로 간단하게 Throttling이 가능합니다.
Perl win?
No!
저에게는 위의 예시를 봤지만 여전히 쉘이 더 쉽다고 느껴지네요...^^
과거 펄을 쓸때 cgi 만 열심히 짜봐서 그랬나(?) 여전히 작업처리용으로는 잘 모르겠군요.
혹시 펄과 파이썬 그리고 쉘의 수행 속도를 재볼만한 테스팅 대상이 없을까요?
얼마나 많이 차이가 나는지 많이 궁금하네요....
그냥 상황에 맞게 쓰면 되겠죠
shell이 편하면 shell쓰고
shell에서 seq,awk,sed,sort,uniq 등등 쉘 명령등을 복잡하게 짬뽕으로 쓰는게 귀찮으면
Perl,Python,Ruby같은 스크립트 언어를 고려해보면 되겠고
하지만 Perl one-liner는 충분히 배워놓을 가치가 있습니다.
http://sial.org/howto/perl/one-liner/
http://www.ibm.com/developerworks/linux/library/l-p101/
http://www.ibm.com/developerworks/linux/library/l-p102.html
http://wiki.kldp.org/wiki.php/PerlCommandLineCookBook
그리고 위의 마지막 링크에도 나와 있지만
shell과 Perl을 하이브리드하게 쓰면 shell 명령만 써서 했을때 보다 더 효율적일 경우도 많습니다.
짧다고 win이 아니죠.
짧다고 win이 아니죠. 특히 shell 작업에서는요. shell 작업에서의 가장 힘든점은 qouting인데.. php나 perl, python등은 inline으로 작업을 하려면 quote가 기본으로 들어가야 하기 때문에 귀찮은 겁니다. 반면에 shell은 바로 사용할 수가 있죠. :-)
perl,php,python을 사용하면 훨씬 더 고난이도의 작업을 할 수 있지만, 간단하게 여러대의 서버의 daemon을 제어하는데 굳이 사용해야할 필요성을 전혀 못느낀다는 점입니다. :-)
RegExp로 Replace하면
RegExp로 Replace하면 되는 부분을 일일이 Copy&Paste하는게 보통 프로그래머들의 마인드입니다.
오타가 나든, 힘이 들든, 더 편한방법이 있음에도 배우는게 싫어 그러지 않는 사람들은 여전히 많습니다.
사람들이 그렇게 하든 안하든 좋은 방법 찾아서 하시면 됩니다.
남들이 모르면 나만의 경쟁력이고, 남들이 알게되면 계몽시켜서 나름 좋은거죠. 뭐.
------------------------------
How many legs does a dog have?
------------------------------
How many legs does a dog have?
지금은 별로 안
지금은 별로 안 쓰인다는 말씀을 하시는 분께서는 어떤 환경에서 개발을 하시는 건지..
Unix 계열이야 말할 것도 없고 Windows 에서도 윈도우 스크립트(WSH)를 아는 것이 많이 도움이 됩니다.
흠.. 하긴 만들어진 쉘 스크립트 수정 할 수는 있지만 자신이 제대로 하나 만들어 본적도 없는 SE도 종종 봤습니다.
모, 안 배워도 개발하는데 지장은 없을 수도 있습니다만, 알고 있으면 엄청나게 도움이 됩니다. SE든, 개발자든 간에 말입니다.
쉘 스크립트를 얼마나 잘쓰냐를 통해
쉘 스크립트가 별로 필요없다는 개발자... 우리 회사라면 절대 안뽑습니다.
쉘 스크립트를 얼마나 잘쓰냐를 통해 그 개발자의 생산성을 (어느 정도는) 가늠해 볼 수도 있겠습니다.
물론 쉘 스크립트하면 유닉스 계열 OS가 가장 일반적이겠지만,
윈도우에서도 복잡한 빌드 작업의 자동화나 Code Generation을 위해 쉘 스크립트는 필수적입니다.
MS 에서도 WSH 의 약점을 많이 보완하기위해 PowerShell 이라는 걸출한 물건을 내놓았지요.
끔찍하게 많이 씁니다.
핸드폰 만드는데 가끔 그날 한 일을 생각 해보면 스크립만 짠 날이 많다고 생각 될때도 있을 정도입니다.
새 생각 :)
새 생각 :)
쉘스크립트 없으면,
쉘스크립트 없으면, 정말 죽습니다 ㅇ>-<
그놈의 파이핑은 도대체 뭘로도 교체할 수가 없겠더라구요 - ㅅ-)
프로그램의 출력을 딱 2종류(exit status, text output)로 제한시켜놨다보니
성능상 불이익이 있을지라도 그 편리성은 대단하죠...
Unix 계열이라면..
쉘 스크립트 정말 많이 사용합니다.
장비 운영, 모니터링, 간단한 개발 업무, 로그를 활용한 통계 등등..
상용장비 운영을 하다보면, 컴파일 언어보다 더 자주 사용하게 되는것 같네요.
배워두면 쓸모가 많답니다.
저같은 경우는 개인PC에서 cygwin을 설치해서,
단순 노가다성 작업이 있을 때 활용을 하곤 합니다. ^^
삶,
사랑하므로 그 외로운 싸움 앞에
생각해보면 참으로 우스꽝스럽기만 합니다.
분야에 따라, 상황에
분야에 따라, 상황에 따라 다르죠. 쉘스크립트가 필요 없는 분야도 얼마든지 많으니까요.
노가다성 작업에 대한 해결책도 쉘스크립트만 있는 게 아닙니다. 오히려 쉘스크립트보다 정규식을 알아두는 게 활용도는 훨씬 높을 겁니다. 전 때때로 파이어버그에서 자바스크립트로 해결을 보기도 하구요. 간혹 엑셀이 더 유용할 때도 있고, 그냥 변환기 가져다 쓰는 게 편할 때도 있죠.
배워두면 당연히 어딘가 쓸모가 있고 도움은 되겠지만, 안 배운다고 큰일 나는 것도 아니고, 개발 실력을 구성하는 요소 중에 쉘스크립트보다 중요한 요소는 차고 넘칠 만큼 많습니다.
세상에 필수적으로 꼭 배워야 하는 것은 그리 많지 않습니다. 누구는 알고리즘이 필수라고 말하고, 누구는 쉘스크립트가 필수라고 말하고, 누구는 OOP가 필수라고 말하죠. C를 필수라고 말하는 사람도 있고, 리눅스를 필수라고 말하는 사람도 있습니다. OOPSLA 가서는 APL이 필수라는 이야기도 들었고, 프로그래머가 함수형 언어를 모른다는 게 말이 되냐는 이야기도 접했습니다. 무엇이 진짜 필수인지는 context에 따라 달라지는 것이지, context-free한 필수는 의미 없습니다.
조금 질문을 바꿔서, "쉘스크립트를 배우면 어떤 점이 좋은가요?"라고 한다면 좀더 좋은 질문이 되었을 듯.
creativeidler님 말씀처럼
배우면 도움이 되지만, 안 배운다고 큰일나는 것이 아니라는 것에 공감합니다.
차후에 어떤 분야에서 일을 하게 될지 모르는데, 지금 이 시점에 미리 공부해 둘 필요는 없겠지요.
더욱이 C,C++/Java등에 능숙한 수준의 개발자라면 필요하다고 느껴질 때에 몇시간 공부해서 사용할 수 있는 수준에 언어이기 때문에 미리 공부할 필요는 없다고 보입니다.
다만, 특정 분야에 들어가면 하게 될 수 밖에 없다는 것은 사실입니다.
솔직히 까 놓고 얘기해서, 여기서 쉘 프로그램을 필요성을 강조하시는 분들중에 현업에 종사하기 전에 미리 공부하신 분이 몇분이나 될까요?
닥치면 하게 마련이고, 쉘스크립트 정도 수준이면 정말 닥쳐서 해도 될 수준이기 때문에 걱정하시지 마시라고 말씀드리고 싶네요.
There is no spoon. Neo from the Matrix 1999.
There is no spoon. Neo from the Matrix 1999.
솔직히 까 놓고
그렇지 않습니다. 개발 하시는 분들 중에 학교에서 현업에 종사할 정도로 배워서 오신 분이 얼마나 될까요? 하지만 항상 업계에서는 학교탓(?)을 하죠. (커리큘럼탓인가??)
shell도 마찬가지 입니다. shell 잘못쓰면 다 날립니다. 프로그램 잘못짜는 수준 보다 훨씬 더 큰 일을 발생시킬 수 있는 작업인데 너무 쉽게 말씀하시는 듯 싶습니다.
shell의 위력은.. 농담조로 많이 나오지만
rm -rf . /
정도의 위력을 항상 가지고 있습니다. 그래서 항상 조심하면서 해야 하는 작업이고요.
전 모든 일은 준비된 자가 유리한 법이라고 생각합니다.
rm -rf / 정도의
rm -rf /
정도의 위력은 아니라서 다행이라고 생각해도 될까요? ;;;;
--------------------------
피할 수 있을때 즐겨라!
http://snowall.tistory.com
피할 수 있을때 즐겨라! http://melotopia.net/b
잘 보면 `.'과 `/'에
잘 보면 `.'과 `/'에 공백이 있습니다.
----
내 블로그: http://unipro.tistory.com
내 블로그: http://unipro.tistory.com
개인적으로는
개발자에게 있어서 두가지 이유에서 미리 배우는 것이 의미가 없다는 생각입니다.
한가지는 쉘이 엑셀하고 똑 같기 때문입니다.
대학생에게 엑셀을 가르쳐 보면 압니다.
엑셀을 활용하기 위해서는 어느 수준의 일상 업무에 대한 이해가 있어야 심도있는 부분까지 가르칠 수 있습니다.
이걸 모르면, 왜 엑셀을 공부하는지 모릅니다. 반면, 업무에 종사하는 사람에게 엑셀을 가르치면 흡수력이 매우 빠르죠.
쉘도 동일합니다.
사실상 쉘 프로그램이 상속이나 디자인 패턴이 있는 것도 아닌 이상 언어 자체가 심도 있는 것은 아닙니다.
중요한 것은 업무와 연결되는 노하우에 대한 습득입니다.
그런데, 이 업무를 모르면? 동기부여는 둘째 치고, 업무 자체를 이해해야 한다는 모순이 생기죠.
shell> for i in $(seq -w 1 100); do ssh www${i}.domain.com "sudo /etc/init.d/httpd restart"; done
예제로 적어 놓으신 이 코드도 도메인을 둘째 치더라도, ssh,unix,http,데몬에 대한 이해가 있어야 합니다.
이걸 모르면, 필요성도 이해못하고 동기부여도 안됩니다.
두번째는 개발자정도라면, shell 스크립트, 간단한 perl 스크립트 정도면 3~4시간 수준 읽어 보고, 습득할 수 있는 내용입니다.
만약, 현업에 종사전에 미리 이러한 부분을 공부해 놓지 않을 것을 후회할 정도로 언어적 쎈스가 없다면 개발자 접어야죠.
There is no spoon. Neo from the Matrix 1999.
There is no spoon. Neo from the Matrix 1999.
닥치면 하게된다는 말은
닥치면 하게된다는 말에 동감합니다.
엑셀은 아무리 배워도, 윈도우즈 시스템을 훤하게 통찰할 순 없습니다.ㅎㅎ
하지만, 쉘은 다르죠.
쉘 스크립트를 단순 습득하는건 열거하신 이유 때문에 전혀도움이 안됩니다.
시스템에 대한 이해가 없으면, 문법이나 구문을 아는것으로는 할 수 있는게 없습니다.
현업에서 스크립트류(bash,perl,php,python...)의 활용여부를 묻는다면,
단순히 조건문을 만들 수 있냐라는것이 아닌
시스템에 대한 최소한의 이해가 바탕이 되었는지가 주된 관심사일 것입니다.
물론, 닥치면 하게
물론, 닥치면 하게 마련이고, 할 수 있겠지만,
적당히 배우고, 취직해서 밤낮 구별없이 일을 할 지,
많이 익혀서, 남들 일할 때, 여유있게 퇴근할 수 있을 지 여부는 달라질 것 같군요.
--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
사실, 닥쳤다는 걸
사실, 닥쳤다는 걸 알아채기만 해도 조상님 덕분이죠.
OTL
펄도 없고 파이썬도
펄도 없고 파이썬도 없는 그런 임베디드에서는 쉘만이 유일한 희망입니다.
그마저 없다면 시스템작업을 일일이 날코딩해야 하는데 그럴수는 없지요
쉘이 없다면 그냥 시체죠.
너는 누구냐?
각각의 장단점이 있기에..
각각의 스크립트는 본인(?) 각자가 어떻게, 어느상황에 사용하느냐에 따라서, 훌륭한 도구가 될 수 있다고 생각되어집니다.
물론 어느정도의 기본지식이있으면 빨리 습득할 수 있는 매력도 있을수 있구요.
무엇이든지 자기꺼로 만들어 놓으면, 관심을 가진다면, 마인드 차이라고 생각합니다.