2007년에 작성된 글이지만 이번에 번역되서 올라온 유닉스 쉘 관련 글을 소개하려합니다. 늘 그렇듯이 유닉스에서의 쉘의 유용함은 끝이 없죠. 최근에는 MS에서도 파워쉘이라는 걸 발표해서 커멘드라인에서의 관리 기능을 강화하곤했죠.

이번에 소개할 문서는 튜토리얼 형태로 "쉘 명령 실행하기", "쉘 산술 연산과 진법 변환", "인라인 입력", "쉘 안에서 쉘 실행하기", "연속 루프", "키보드 입력 읽기"의 내용을 담고 있습니다.

튜토리얼 보러가기 : 초보자를 위한 유닉스 팁과 기교, Part 4: 알아두면 유용한 셸 기교


셸 프로그램을 작성하다 보면 자동으로 처리하고 싶은 상황이 가끔 생깁니다. 이 튜토리얼에서는 간단한 본(Bourne) 셸 스크립트로 이러한 상황을 처리하는 예제를 소개합니다. 구체적으로 (10진수를 16진수로, 16진수를 10진수로, 10진수를 8진수로 등) 진법 변환하기, 파이프로 연결한 루프에서 키보드 입력 읽기, 셸 안에서 셸 실행하기, 인라인 입력, 디렉터리 내 모든 파일에 명령을 한 번씩 실행하기, 여러 가지 방법으로 연속 루프 만들기 등을 살펴보겠습니다. 튜토리얼 마지막에는 알아두면 편리한 한 줄짜리 셸 스크립트 모음도 제공합니다.

이 튜토리얼 내에서

  • 셸 명령 실행하기

  • 셸 산술 연산과 기본 변환

  • 인라인 입력

  • 셸에서 셸 실행하기

  • 연속 루프

  • 키보드 입력 읽기

  • 정리

목표

이 튜토리얼은 셸을 사용하여 다양한 수준에서 작업을 자동화하는 방법을 보여주려는 게 목적이다. 특수한 상황에 유용한 팁과 기교를 제공하며, 자주 수행하는 작업에 유용한 한 줄짜리 셸 스크립트 모음도 제공한다.


선수조건

이 튜토리얼은 유닉스(UNIX®)에 비교적 익숙하지 않은 사용자를 대상으로 한다. 유닉스 파일 시스템, 명령행, 파일과 디렉터리 명령, vi 같은 편집기로 텍스트 파일을 편집하는 방법 등 기본 개념만 이해하면 충분하다. 필요한 모든 개념은 튜토리얼 Part 1, 2, 3에서 자세히 설명했다.


시스템 필요조건

본(Bourne) 셸이나 본 셸과 호환되는 셸이 돌아가는 유닉스 시스템이 필요하다. 배시(bash) 셸도 괜찮다. 또한 시스템에 로그인할 사용자 계정도 필요하다. 이 외에 별다른 요구사항은 없다.


 최근에 AIX server 문제로 구글링을 하던중에 알아두면 좋을것 같은 내용이 담긴 문서를 발견했습니다. [반드시 알아둘 AIX 명령]이라는 문서입니다. 예전에 봤던 IBM DW 문서와 내용이 조금 틀린것 같아서 소개합니다.

 나날이 어려워지는 경제 여건속에 어떻게든 살아남으려면 기초 기술력 향상 밖에는 방법이 없는것 같다는 생각이 듭니다. 개발자가 아니라 DBA나 SE 같은 직종이라면 OS는 기본이겠죠. 그래서 더욱 AIX 관련 명령어를 소개하는 이 문서를 읽어둘 필요가 있다고 생각합니다.

 작년에는 그냥 지나갔지만 올해 12월 말에는 올 그 동안 소개했던 IBM DeveloperWorks의 문서중에서 각 분야별로 다시한번 읽어보면 좋을만한 문서들을 하나씩 뽑아볼까합니다. 뭐... 그러면서 기술문서들 한번씩 훑어보는거죠 ^^


원문 : 반드시 알아둘 AIX 명령

AIX®와 System p™ 서버를 사용하다가 의문이 생기면 어떻게 처리하십니까? 고객 지원팀에게 늘 문의하지 않고서 스스로 해결하고 싶습니까? 이제 걱정을 접으십시오. 이 기사에서 Shiv Dutta가 독자들의 의문에 답하는 AIX 명령을 소개합니다.

시작하면서

알 다시피, AIX®가 제공하는 명령은 다양한 작업을 수행하도록 그 수가 많다. 사용자는 수행하려는 작업에 따라 일부 명령 집합을 선택해 사용한다. 사용자가 선택하는 명령 집합은 사용자마다 그리고 작업마다 다르다. 하지만 대다수 사용자가 흔히 사용하는 핵심 명령 집합이 있다. AIX를 사용하다 의문이 생겨서 답을 구하든, 고객 지원팀이 요청하는 정보를 구하든, 어떤 상황이든 유용한 명령 집합이다.

이 기사에서는 몇 가지 핵심 명령을 소개한다. AIX® 사용자라면 반드시 알아둘 명령이다. 각 명령은 이론상 AIX 모든 버전에서 똑같이 동작하지만, AIX 5.3에서만 테스트를 수행했다.

참고:
다음 절에서 설명하는 bootinfo 명령은 사용자 권한으로 실행하지 못한다. 또한 AIX 4.2 이후 버전은 bootinfo 명령을 지원하지 않는다.


 유닉스나 리눅스 시스템을 이용하다보면 자주 나오는 inode에 대한 IBM DeveloperWorks의 문서를 소개합니다.

원문 : 유닉스를 능숙하게 사용하기: inode에 대한 모든 것


df와 같은 유닉스 명령어에서 Iused%Iused가 무엇을 의미하는지, 아니면 사람들이 inode에 대해 이야기할 때 궁금증을 느낀 경우가 없습니까? 유닉스(UNIX®)와 리눅스(Linux®) 시스템은 모두 inode를 사용하며, IBM® AIX®라고 해서 다르지 않습니다. inode가 무엇이며, inode가 유닉스에 중요한 이유, inode의 구조, inode와 관련이 있는 명령어를 알아봅시다.

inode는 유닉스 운영체제에서 사용하는 자료 구조로, 파일 시스템 내부에 파일을 유지하는 중요한 정보를 담고 있다. 유닉스에서 파일 시스템을 생성할 때, 수 많은 inode 집합을 생성한다. 일반적으로 전체 파일 시스템 디스크 용량의 대략 1% 정도가 inode 테이블에 할당된다.

종종 사람들은 inodeinumber를 섞어서 사용한다. 두 용어는 비슷하며, 서로 관련이 있지만 똑같은 개념을 나타내지는 않는다. inode는 자료 구조다. inumber는 실제 inode 인식 번호이므로 inode numberinumber라고 부른다. inumber는 파일 정보를 담은 중요한 항목일 뿐이다. inode에서 몇 가지 다른 속성은 다음 절에서 설명한다.

inode 테이블은 개별 파일 시스템을 위한 모든 inode 숫자 목록을 포함한다. 사용자가 파일에 접근하려면, 유닉스 시스템은 올바른 inode 번호로 inode 테이블을 탐색한다. inode 번호를 발견하면, 사용자가 내린 명령이 inode에 접근해서 가능하다면 적절한 변경 작업을 진행한다.

예를 들어, vi로 파일을 변경하는 작업을 생각해보자. vi <filename>이라고 입력할 때, inode 숫자를 inode 테이블에서 찾아 inode를 연다. vi 편집 세션 중에서 몇 가지 속성이 변경되며, :wq로 작업을 종료할 때, inode가 닫히며 해제된다. 이런 식으로 사용자 두 명이 같은 파일을 동시에 편집하면, inode가 편집 세션을 연 사용자 ID에 할당되며, 다른 사용자는 inode가 해제되기를 기다려야만 한다.


  유닉스 쉘 스크립트는 유닉스 서버 관리자에게 좀더 효율적인 서버 관리를 가능하게 해주는 유용한 도구입니다. Database 공부를 해오면서 계속 쉘 스크립트를 이용해 왔지만 아직도 쉘 스크립트는 제게 공부해야할 여지가 많은 분야입니다. 그래서 IBM DeveloperWorks에 한글로 번역된 쉘 스크립트 관련 문서를 소개하려합니다.


원문 : 유닉스를 능숙하게 사용하기: 고급 셸 스크립트 기법

유닉스에는 길고 따분한 작업을 단순하게 만들기 위해 작업을 자동화하는 셸 스크립트가 있습니다. 이 기사는 셸 스크립트를 좀 더 제대로 배우기를 원하며 고급 스크립트를 작성하는 방법이 궁금한 독자들에게 팁을 제공합니다.

다른 유닉스 운영체제나 리눅스와 마찬가지로 IBM AIX 운영체제는 시스템 관리자, 개발자, 사용자가 일상 업무를 처리하고 고객 비즈니스를 단순하게 만들기 위한 여러 가지 강력한 도구를 제공한다. 유닉스에는 길고 따분한 작업을 단순하게 만들기 위해 작업을 자동화하는 셸 스크립트가 있다.

몇 년 동안 유닉스에서 셸 스크립트를 끼적거려 본 경험이 있을지라도 주로 운영체제 안팎을 파느라고 스크립트를 마스터하지는 못했을 것이다. 이 기사는 셸 스크립트를 좀 더 제대로 배우기를 원하며 고급 스크립트를 작성하는 방법이 궁금한 독자들에게 팁을 제공한다. 이 기사는 스크립트를 단순하게 만드는 방법, 스크립트를 최대로 유연하게 유지하는 방법, 깔끔한 스크립트를 작성하는 방법, 스크립트 내부에서 문서화 작업 방법, 스크립트 디버깅 방법을 포함해 일반적인 셸 프로그래밍 기본 원칙을 설명한다.


 유닉스/리눅스 사용자라면 가장 자주 사용하는 프로그램 중에 하나인 vi 편집기에 대한 튜토리얼입니다.
그 동안 vi에 대한 글들이 많았지만 그래도 빠뜨릴수 없는 부분인거 같아서 소개하려합니다. 기본적인 유닉스/리눅스 사용법에 대해서는 알고 있는 사용자를 대상으로 작성된 문서입니다.

원문 : 초보자를 위한 유닉스 팁과 기교, Part 2:vi 편집기

vi 편집기를 처음 접하는 사용자는 편집기가 직관적이지 못하다고 느끼기 쉽습니다. 하지만 세상에서 내로라하는 개발자들이 30년이 넘는 도구를 아직도 애용하는 데는 그만한 이유가 있습니다. vi 편집기는 삽입 모드(insert mode)와 명령 모드(command mode)로 작업을 분리합니다. 그래서 키보드에서 엄청나게 빨리 사용자가 정의한 영역을 대상으로 텍스트를 편집하고 삽입하고 이동할 수 있습니다.

이 튜토리얼 내에서

  • vi 소개

  • vi에서 커서 이동하기

  • vi에서 텍스트 삽입하고 편집하기

  • 고급 vi 명령

선수조건

이 튜토리얼을 따라가려면 명령행, 파일, 디렉터리라는 개념을 알아야 한다. 또한 유닉스(UNIX®) 계열 운영체제에 로그인할 줄도 알아야 한다.


시스템 필요조건

유닉스 계열 운영체제가 돌아가는 시스템에 로그인할 수 있는 계정만 있으면 충분하다. 유닉스 계열 운영체제는 IBM® AIX®, 리눅스(Linux®), BSD(Berkeley Software Distribution), 맥 OS(Mac OS®) X 등을 포함한다. 맥 OS X은 터미널을 실행해야 명령행을 사용할 수 있다.


 유닉스나 리눅스 환경에서 작업을 많이 하는 분들을 Shell script를 많이 이용하게 됩니다. Shell script는 업무의 자동화에 유용하죠. 최근에는 MS에서도 자사의 윈도우즈 운영체제에 Power shell이라는 제품을 설치하여 Script를 사용할 수 있도록했죠.

 이번에 소개할 문서는 배시 셸 관련 투토리얼입니다.


원문 : 배시 셸로 작업하기



거의 모든 유닉스(UNIX®) 기반 운영체제에서 활용 가능한 배시 셸에 대한 소개 튜토리얼입니다. 배시는 성숙하고, 강력하고, 그럼에도 불구하고 사용하기 쉬운 셸이며, 자유롭게 구할 수 있습니다. 이 튜토리얼은 다른 인기 있는 유닉스 셸과 다른 점을 파악하기 위해 배시에 대한 간략한 역사를 소개하며, 배시 내부에서 제공하는 주요 기능을 살펴봅니다. 다음으로 유닉스 파일 시스템, 디렉터리와 파일 조작 방법, 배시 외양과 동작 방식을 개인화하기 위한 몇 가지 방법을 설명합니다. 마지막으로 이 튜토리얼은 배시가 제공하는 작업 제어 기능을 소개하며 끝을 맺습니다.

이 튜토리얼 내에서

  • 배시 개괄

  • 배시에서 명령 행 프롬프트로 작업하기

  • 배시에서 파일과 디렉터리 다루기

  • 배시 개인화하기

  • 배시 작업 제어

선수조건

필요한 사전 지식은 없다.


시스템 필요조건

이 튜토리얼을 읽기 위한 시스템 요구 사항은 없다. 단지 글을 읽고 배시를 익히면 된다. 하지만 이 튜토리얼을 최대로 활용하려면 튜토리얼이 제공하는 기법을 시도할 필요가 있다. 이렇게 하려면 버전 2.05 이상인 동작하는 배시 셸이 필요하다. 컴퓨터에 설치된 배시 셸 버전을 모른다면, 배시 셸 홈 페이지를 방문해 필요한 정보를 얻기 바란다.


 지난번에 소개한 "유닉스 팁: 열 가지 더 좋은 유닉스 습관"과 연관이 있는 "10가지 유닉스 사용습관"을 소개합니다.
이 글은 제목에서 알 수 있듯이 유닉스를 사용하는데 좋은 명령행 사용 습관을 소개합니다. 지난번에 소개한 글과 함께 참고해보시기 바랍니다.

원문 : 유닉스 팁 : 10가지 유닉스 사용습관(한글) (잘못된 유닉스 사용 패턴 고치기)


유닉스® 명령어(Unix Command Line) 조작에 있어서 효율성을 높일 수 있는 10가지 좋은 습관들을 익히고, 그릇된 사용 패턴을 고쳐봅시다. 본 기사는 유닉스 명령어 조작에 있어서 충분히 유용한 것인데도, 간과되는 기술들을 설명합니다. 또한, 본 기사에서 열거한 일반적인 에러 유형과 이를 해결하는 방법을 배우다 보면, 좋은 습관을 들이는 것이 왜 중요한지를 알게 될 것입니다.

머리말

시스템을 사용할 때, 일정한 사용 패턴으로 빠지는 경향이 있고, 가끔은 가장 좋은 방법을 제쳐놓을 때도 있다. 심지어, 좋지 않은 방법을 선택할 때도 있다. 이러한 모순을 타파하는 가장 좋은 방법은 좋은 습관을 의식적으로 익히는 것이다. 이 글에서는, 10 가지 좋은 명령행 사용 습관들을 제안한다. 일반적인 오류를 없앨 수 있는, 효과적인 명령행 작동을 위한 좋은 습관들이다. 이제부터 상세하게 설명하겠다.

 유닉스(UNIX) 사용자라면 대부분 명령행 사용에 익숙하겠죠. 하지만 익숙하다고 느낀 유닉스 명령행 사용이 잘 못된 습관이라면 빨리 고치는게 좋을겁니다. 물론 습관이란게 하루 아침에 고쳐질 건 아니겠지만요.

 이번에 소개하려는 문서는 "열가지 유닉스 사용습관"이라는 문서에 이어서 유닉스 명령행 전문가가 되는데 도움이 되는 열가지 기법을 소개하는 문서입니다.

John Fronckowiak이 쓴 글을 박재호, 이해영씨가 한글로 옮기셨습니다.

원문 : 유닉스 팁: 열 가지 더 좋은 유닉스 습관(유닉스 명령행 전문가가 되자)

솔직히 말해, 나쁜 습관은 고치기 어렵다. 이제 편안함까지 느끼는 버릇은 더욱 고치기 어렵다. 종종 사물을 새롭게 보면 "아하, 당신이 이렇게 하는 이유를 모르겠네?"라는 순간이 찾아온다. Michael Stutz가 작성한 "열 가지 유닉스 사용 습관"이라는 훌륭한 기사에 이어 이 기사에서는 여러분을 유닉스 명령행 전문가로서 좀 더 높은 생산성을 발휘하도록 열 가지 더 좋은 유닉스 명령행, 도구, 기법을 제시한다.

익혀야 하는 열 가지 더 좋은 습관은 다음과 같다.
- 파일 이름 완성 기능을 활용하자.
- 히스토리 확장 기능을 활용하자.
- 직전에 사용한 인수를 재사용하자.
- pushd와 popd로 디렉터리를 탐색하자.
- 대용량 파일을 탐색하자.
- 편집기 없이 임시 파일을 생성하자.
- curl 명령행 유틸리티를 활용하자.
- 정규 표현식을 적극 활용하자.
- 현재 사용자가 누구인지 알아내자.
- awk로 자료를 처리하자.

 IT관련 종사자라면 한때 메인프레임이라는 단어가 가진 무게감, 동경... 뭐 이런 느낌이 있었을것이다. 어릴때 뉴스 등에서 가끔씩 봐왔던 슈퍼 컴퓨터라든지, 영화에서나 볼 수 있었던 그런 대형 서버들... 이제 메인프레임이 시장에서 서서히 없어지려하고 있다. IT 시장은 급속도로 변하고 있다. 따라가기 힘들만큼...
아직 삼십대 초반인데 벌써 이러면 나중엔 어떻게 밥 벌이할런지 걱정이네요. ㅡ.ㅡa


 언제부터인가 유닉스 서버가 시장을 접수하기 시작했고 유닉스의 뒤를 리눅스 서버가 바짝 뒤쫓고 있는 양상을 띄게 되었다. 이게 몇년 전이다. 이때 벌써 메인프레임은 사양길에 들어선 사업이라는 얘기가 많았다.
 가상화, 분산처리, 병렬처리 등등의 기술을 이용해서 유닉스/리눅스 서버는 점점 영역을 넓혀가고, K*에서 윈도우 서버로 웹서비스(ASP.Net), 데이타베이스(MS-SQL) 등등을 올려서 사용하는 현재에는 메인프레임이라는 단어가 생소하기까지하다. 이런 대형 시스템에 이런 제품으로 궁합을 맞추는데도 사실 드물것이다. 업계 최초라고 얘기한다는데, 구축 당시와 운영중인 현재에도 엔지니어와 개발자들의 삽질은 이루 말할 수 없을정도이다.
음... 얘기가 잠깐 옆으로 샜는데... ^^;

 메인프레임의 쇠퇴와 유닉스/리눅스/윈도우 서버의 부흥의 이유에 대해서 생각해보자.

1. 유닉스와 리눅스 사용자의 증가로 인해 관리/개발 인력이 증가했다. 초기의 유닉스는 메인프레임과 마찬가지로 어려운 시스템이었지만, 리눅스가 개인 PC에서도 유닉스 환경을 거의 똑같이 사용할 수 있도록 해줬기에 유닉스 서버 인력은 많아졌고, 인력 수급이 원활해졌죠.
 그리고 메인프레임에 비해서 저렴한 유닉스 서버 장비 가격과 유지보수, 인력비 등으로 인해서 경쟁에서 우위를 차지할 수 있었습니다. 이제는 리눅스 서버가 유닉스 시장을 위협할 정도가 됬으니 유닉스 서버도 안심할 수 없게되었네요. 그래서 SUN Microsystems(이하 썬)에서는 Solaris를 Open Solaris로 공개하게 되었고, IBM은 Open Solaris를 z10 시스템(메인프레임)에서 운용할 수 있게했습니다.(IBM이 메인프레임 시장에서 버티기위한 대책 중 한가지입니다.)

2. 유지 보수의 어려움.
 현재 전산인들이 주로 사용하는 개발 언어로는 JAVA, C/C++, C#, JSP, ASP, ASP.Net,  Perl, PHP, Python, Ruby 등이 있습니다. 반면에 메인프레임에서 사용하던 코볼, 포트란 등의 언어는 이제 대학에서도 잘 가르치지 않고 있습니다. 점점 개발인력이 줄어들고 있는 상황에서 유지보수가 편한 쪽으로 시스템을 바꾸게 되었죠.

3. 결국 돈이 문제다.
 일단 장비 가격이 대형 유닉스 서버의 몇 배가 되고(요즘에 좀 내렸다고 하는데, 그래도 유닉스 서버의 갑절이 넘는다.), 유지보수를 위한 인력 역시 구하기 힘들다. 지금 메인프레임 유지보수를 하는 사람들은 수년 혹은 십수년이 넘는 경력으로 인해서... 희망하는 연봉에 맞춰 주기가 힘들다.
일반 개발자보다 급여가 높다는 DBA인 나도 희망 연봉에 준하는 급여를 받은 적이 없다. 경력이 좀더 쌓이면 달라질까??


 메인프레임의 쇠퇴를 바라보며 느끼는 점.
지금 내가 가진 기술도 곧 사장될 수 있으며, 내가 가망없다고 취급하는 기술도 시장의 강자로 우뚝설 수 있다.

 앞으로 십년 이상 IT업계에 종사할 사람으로서 바짝 긴장해야 겠다는 생각을 하게됩니다. 앞으로 업계를 이끌지도 모를 기술들에 관심을 가지며, 현재 내 연봉을 결정해주는 기술외에 다른 영역에도 지속적인 관심을 기울이지 않으면 언제 실업자가 될지 모른다는 거죠.
너무 우울한 얘기를 한것 같은데요. 이게 현실인것 같습니다. 오라클이 언제 시장에서 힘을 잃을지, 갑자기 DBMS의 패러다임이 바뀌어서 다른 개념의 제품이 시장을 휩쓸어 버릴지는 아무도 모르는거죠. 다만... 제 대출금 다 갚을때까지는 오라클이 시장에서 굳건하게 버텨주길 바랍니다. IBM AIX서버도 그 자리를 지켜주시길...
 "사무실의 아무 자리에나 앉아서 아이디와 비밀번호를 입력하면 내가 사용하던 환경이 뜨면서 업무를 볼 수가 있습니다." 어느 영화에서나 보던, 혹은 어느 외국계 기업에서 사용한다던 얘기이지만, 실제로 구현 가능한 기술들이죠. MS의 액티브디렉토리 기술을 사용해서도 구현이 가능하다고합니다.

 이번에 소개할 문서는 유닉스, 리눅스 환경에서 이런 기능을 할 수 있게 해주는 기술들에 대한 내용입니다.
NIS, NIS+, NFS, Automounter, 시각동기화 등의 기술을 이용해서 구현하는 법을 설명하고 있습니다. NIS, NFS는 모두 SUN Microsystems가 만든 기술들로 AIX, HP-UX, Solaris, Linux에서 모두 사용 가능합니다.

원문 : 유닉스와 리눅스를 함께 어울리게 만들기

 이 글을 쓴 마틴 브라운은 자유기고가로 IT 컨설턴트이면 프리랜서 작가입니다. 번역은 박재호, 이해영씨가 수고하셨습니다.


NIS(Network Information Service)로 리눅스(Linux®)와 유닉스(UNIX®) 사이에 핵심 데이터베이스를 공유하는 방법과 NFS(Network File System)로 직접 연결하거나 automounter로 파일 시스템을 공유하는 방법을 살펴봅니다. 유닉스와 리눅스는 비슷하지만, 두 시스템을 통합하는 과정을 복잡하게 만드는 몇 가지 차이점이 있습니다. 예를 들어, 동일한 인증 시스템을 공유하지만, 대다수 시스템은 또한 단독으로 동작합니다. 이런 인증 정보 공유는 네트워크에 물린 모든 서버에 SSO(Single Sign-On) 기능을 제공합니다.

+ Recent posts