교재 읽기!

커맨드라인분석 (21장. 출력 포맷 지정)

1. 간단한 포맷 툴

nl - 줄 번호 매기기

단순히 줄 번호를 매기는 간단한 작업을 하는 툴. cat -n처럼 간단히 사용할 수 있다

$ nl distros.txt | head
  • 커맨드라인 인자나 표준입력으로 복수의 파일명도 허용한다
  • nl은 번호를 붙일 때 논리적 페이지(logical pages) 라는 개념을 제공한다. nl이 번호를 붙일 때 순서를 다시 처음부터 시작할 수 있도록 허용하는 것이다.

테스트 설명
::: 논리적 페이지의 머리말 시작
:: 논리적 페이지의 본문 시작
: 논리적 페이지의 꼬리말 시작
옵션 의미
b styLe 본문의 줄 번호에 스타일을 적용한다 style은 다음 중 하나를 사용할 수 있다. • a 모든줄에 번호를붙인다 • t 공백 줄이 아닌 경우에만 번호를 붙인다 기본값이다 • n 번호를 붙이지 는다 • pregexp 기본 정규 표현식과 일치하는 줄에만 번호를 붙인다
-f styLe 꼬리말의 줄 번호에 스타일을 적용한다 기본값은 n
-h styLe 머리말의 줄 번호에 스타일을 적용한다. 기본값은 n
-i number 페이지 번호의 증가량을 number로 설정한다 가본값은 1.
-n format 줄 번호 포맷을 설정한다 format은 다음 중 하나를 사용할 수 있다 • ln 0 없이. 왼쪽 정렬 • rn 0 없이. 오른쪽 정렬 기본값이다 • rz 0 포함. 오른쪽 정렬
-p 각 논리 페이지의 시작 부분에서 페이지 번호를 재설정 못하게 한다
-s string string을 구분자로 만들기 위해 각 줄 호의 끝에 추가한다. 기본값은 탭 문자.
-v number 각 논리 페이지의 첫째 줄 번호를 number로 설정한다 기본값은 1.
-w width width를 줄 호 필드의 너비로 설정한EK 기본값은 6

fold - 지정된 길이로 줄 나누기

폴딩(folding)은 텍스트 행을 지정된 길이로 나누는 절차다. fold 도 다른 명령들차람, 하나 이상의 텍스트 파일이나 표준 입력을 허용한다. 간단한 텍스트 열을 fold에 보내면 어떻게 동작하는지 볼 수 있다.

echo "The quick brown for jumped over the lazy dog." | fold -w 12
-- 실행결과
The quick 
brown fox 
jumped over 
the lazy 
dog.



fmt - 간단한 텍스트 포매터

fmt 프로그램도 텍스트를 자른다. 게다가 더 많은 것을 할 수 있다. 파일이나 표준 입력을 허용하고 텍스트 열의 문장 포맷을 지정한다. 기본적으로, 공백 과 들여쓰기를 유지하면서 텍스트를 합치거나 채운다.

$ fmt -w 50 fmt-info.txt | head



fmt 옵션

옵션 설명
-c crown margin 모드로 동작하게 한다. 이는 문단 첫 두 줄의 들여쓰기를 유지한다. 그 다음 줄부터는 두 번째 줄의 들여쓰기에 맞게 정렬된다.
-p string string을 접두어로 줄을 시작하게 만든다. 그 이후에 string의 내용은 각 줄 앞에 붙여진다. 이 옵션은 소스 코드 주석을 구성하는 데 사용될 수 있다. 예를 들면, 어떤 프로그래밍 언어나 설정 파일은 # 문자를 주석 처리하는데 사용된다. 이를 위해 -p ‘#’ 옵션을 사용하면 주석으로 만들 수 있다.
-s 분할 모드, 이 모드에서는 각 줄은 지정된 “열 너비에 딱 맞게” 분할될 것이다. 짧은 줄은 너비를 채우기 위헤서 합쳐지 않을 것이다. 이 모드는 합쳐지길 원하지 않는 코드와 같은 텍스트를 구성할 때 유리하다
-u 간격을 균등하게 유지한다. 이는 전통적인 타자기 스타일의 텍스트를 구성하게 될 것이다. 이는 단어 사이의 하나의 공백, 문자 사이는 두 개의 공백으로 처리한다. 이 모드는 강제로 왼쪽과 오른쪽 여백을 정렬하는 양쪽 정렬을 제거하려고 할 경우에 유리하다
-w width width 값을 기준으로 열을 구성한다. 기본값은 75자다.



pr - 인쇄용 텍스트 포맷 지정

pr 프로그램은 텍스트에 페이지 매기기 위해 텍스트를 인쇄할 때, 종종 각 페이지의 처음과 끝에 여백을 넣기 위해 여러 줄을 공백으로 출력 페이지를 구분하기 를 한다. 추가적 이 공백은 각 페이지에 머리말과 꼬리말을 삽입하기 위해 사용될 수 있다.

-- distros.txt 파일을 매우 짧은 페이지들로 구성
$ pr -1 15 -w 65 distros.txt

printf - 자료의 출력 및 포맷 지정

일반 텍스트 + 이스케이프 문자열(개행문자인 \n처럼) +변환 지정어(%기호로 시작하는 것)

$ printf "I formatted the string: %s\n" foo
-- I formatted the strinf: foo

주요 print 자료형지정자(옵션)

지정자 설명
d 부호를 가진 10진수 형태로 만든다
f 부호를 가진 10진수 형태로 만들고 출력한다.
s 8진수형 태로 해보려고
x 문자열 형태로 만든다
x 소문자 a에서 f를 이용해서
% 부호를 부동 소스점 수 형태로 만들고 출력한다



2. 문서 포맷 시스템

이 장의 른 명령어들과 달리 . printf 명령어는 프라인에서 용도 도 않고(표준 입력 을 허 용하지 않는 , 커맨드라인의 흔한 로그램에서도 직접적으로 발견 지 대부분 스크립트에 서 사용된다). 그럼 왜 그것이 요한가? 왜냐하면 꽤 광범위하게 사용되기 때문이다.

roff 계열과 TEX

실무에서는 두 가지 계열의 문서 포매터가 가장 두드러졌다. nroff와 troff를 포함한 roff 프로그 램 과 도널드 크누스의 TEX(“tek” 라고 발음) 조판 시스템 계열이다. 그리고 당연히 그 중간의 아래로 내려온 “E”는 의 일부다.

→ 복잡성과 대다수의 현 리눅스 배포판에는 기본적으로 설치되지 않기 때문에 다루지 않을 것

groff - 문서 포맷 시스템

문서 포맷 프로그램의 명령은 마크업 언어 사용을 통해 구성된 텍스 트에 포함되어 였다. 현재 그와 유사한 절차를 가진 것은 웹 페이지다. 웹페이지는 일종의 텍스트 편집기 를 사용하여 작성하고 나서 페이지 레이아웃을 술한 마크업 언어인 HTML을 사용하여 웹 브라우저 에 의해 최종 구현된다.

압축 풀기

apache @zcat /usr/share/man/man1/ls.1.gz |head
. \" DO NOT MODIFY THIS FILE ! It was generated by help2man 1. 35 .
. TH LS "1" "April 2008" "GNU coreutils 6 .10" "User Commands "
.SH NAME
ls \- list directory contents
.SH SYNOPSIS
.B ls
[\fIOPTION\fR] ... [\fIFILE\fR] ...
. SH DESCRIPTION
.\" Add any additional description here
. PP

groff 프로그램과 mandoc 매크로 패키지와 ASCII용 출력 드라이버 명시한 옵션

→ 포스트스크립트 형식으로 출력

  • 포스트스크립트는 사진 식자기와 유사한 장치에 인쇄 페이지 내용물을 기술하기 위해 사용되는 페이지 기술 언어
[me@linuxbox ~] $ zcat /usr/share/man/manl/ls .1. gz I groff -mandoc I head
%!PS-Adobe-3.0
%%Creator: groff version 1.18.1
%%CreationDate: Thu Feb 2 13 :44 :37 2012
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%+ font Times-Italic
%%DocumentSuppliedResources: procset grops 1.18 1
%%Pages : 4
%%Page0rder: Ascend
%%Orientation : Portrait

리눅스 프로그래밍 1-1. 리눅스 기초

1. 처음 시작하기

리눅스는 기업이나 공공기관, 학교 동 정보 시스템 서비스를 제공하는 서버의 운영체계로 많이 시용되는 소프트웨어이다. 리눅스 운영체계를 개인용 PC의 윈 도우 운영체계를 대신하는 운영체계로 시용할- 수도 있다. 또한 스마트폰에서 많 이 사용되는 안드로이드 운영체계에 기본 바탕은 리눅스로 구성되어 있다.

리눅스와 유닉스

리눅스와 유닉스는 대용량 정보처리가 가능한 서버를 운영할 수 있는 대표적 인 운영체계 중 하나이다.

  • 운영체계(Operating System, OS)

    컴퓨터의 하드웨어와 소프트웨어를 제어하여 사용자가 컴퓨터를 쓸수 있게 만들어 주는프로그램이다.

  • 유닉스와 리눅스 비교
    • 유닉스 → 중대형 서버 시스템에서 가장 많이 사용되는 OS
    • 리눅스 → 1991년 리누스 토발즈가 중대형 기종에서만 작동하던 유닉스 운영체계를 PC에서도 작동할 수 있게 만듦
  • 리눅스 기능
    • 오픈 소스, 어느 플랫폼에도 포팅이 가능하다
  • 커널 쉘 유틸리티 : 리눅스 운영체계는 커널, 쉘, 유틸리티 3부분으로 구분된다.
    • 커널 (Kernel) • 사용자가 작동시키는 어플리케이션과 하드웨어 사이에서의 조정자 역할을 한다 • 컴퓨터 운영체계 부분의 핵심이며 하드웨어에 따라 다른 버전이 존재하며 . 하드웨어 진화에 따라 같이 진화한다. (http://www.kernel.org/).
    • 쉘 (Shell) • 커널과 사용자간의 페이스로서 중간매개의 역할을담당한다. • 명령어를 해석하고 명령과 관련된 유틸리티나 커널을 호출하고 실행 결과를 출력한다. • Dos의 command.com 같이 기본제공 OS 명령어를수행하는곳이다. • 윈도우에서 탐색기의 왼쪽 마우스 메뉴의 압축 기능과 같은 기본 명령이다.
    • 유틸리티 Utility) • 사용자가 시스템을 편하게 시용-하기 위한 용용 프로그램이다. • 시용-자 입장에서는 Shell 과 유틸리티의 구분이 필요 없다. • dir. ping. rype. 좀 더 편리하게 사용하기 위해 만들어서 제공하는 명령 시 스템이댜 • 윈도우에서 알집 등좀더 편리하게 만든압축프로그램을사용하는명령이다.

      리눅스의 종류

  • 데스크탑(Desktop) 형식
    • 일반 사용자 PC의 Windows 운영체 와 유사한 형식이댜
    • 윈도우의 상용성에 웅하여 GNU 정신을 입각하여 태동하였댜(무료 윈도우)
    • 서버의 용도로 시용할 수 있지만, 실제 서버 환경을 운영하는 데 윈도우 형태의 GUI가 불필요한서버 리소스를사용한다.
    • 다양한 GUI 를 하는 경우 데스크탑 형식을 설치하여 서버로 사용할 수도있다.
  • 서버(Server) 형식
    • 불필요한 윈도우 GUI 를 없애고. 서버용으로 적합하계 구성된 리눅스 형식이다
    • 본 에서는 리눅스 령어 실습` 리눅스 쉘 프로그래밍을 익히기 에 적절한 형식인 서버 형식으로 실습을 진행한다.

      2. 서버로 접속하기

설치한 리눅스는 서버 형식으로 대용량 정보 처리 및 다수의 사용자에게 정보 서비스를 제공하는 서 버 용도로 이용하는 시스템이다. 서버는 개인용 PC 는 달리 직접 바로 옆에 두고 사용하는 경우보다는 서버실이나 인터넷 데이터 센터 (IDC) 에 원거리에 위치하고, 관리지는 이 서버를 원격 속하는 경우가 대부분이다. 이 서버에 접속하는 방법과 간단한 명령어를 활용해보겠다.

사용자 등록, 패스워드 설정

  • 관리자(Root)와 일반 사용자
    • 사용자 계정: 운영체계를 사용하는 시용자 계정이다
    • 관리자 계정 : 운영체계에서 슈퍼 사용자(Super user), 운용 관리자(Adminstrator) 또는 루트 (Root) 는 시스템 관리자가 시스템 제어를 위한 별한 권한을 가지고 있는 시용자 계정이다.
  • 사용자(User 와 그룹(Group)
    • 유닉스, 리눅스 시스템은 여러 사람이 사용하는 다중 시용자 운영체계이다.
    • 시용자묶음의 그룹 개념이 존재한다. • root 라는 사용자는 관리자 권한을 가진 용자임 • kopoct 라는 사용자를 관리자 그룹(root 그룹)에 포함시 키 면 root 그룹의 권한을공유할수있음.
    • 사용자는 여러 개의 그룹에 포함될 수 있다.
    • 현재의 시용자와 그룹을 알아보는 명령어는 id. groups 이다.
  • 사용자 및 그룹 관리
    • 사용자 등록, 그룹 등록: adduser, addgroup
    • 사용자 삭제, 그룹 삭제 : deluser, delgroup
    • 자기의 권한에 맞는 사용자만 등록하거나 삭제할 수 있음
  • 패스워드 설정
    • 명령어를 통해 패스워드를 입력하고, 권한에 때라 패스워드 설정이 가능하다

      → 일반사용자가 패스워드를 잊어버렸을 경우 root 권한으로 접속하여 변경 가능함



권한 획득, 명령어 도움말

  • 권한 획득
    • 권한 획득을하는방법은다음두가지 방법이 있다.
      • 다른 사용자로 재 로그인
      • 잠시 다른 사용자의 권한을 얻어올 수 있는 법
    • sudo : 쉘 명령어 라인에서 root의 권한을 잠시 사용한다. (sud o 명령은 sudo 등록이 되어 있는 경우에만 시용 가능)
    • su-userid : 잠시 른사용자의 권한으로 접속한다.
    • ‘su-’ 명령은 ‘su- root’와 동일하다.
  • 명령어 도움말
    • man 명령: 명령어 도움말을 보여준다. (manual) • 예) man adduser: adduse 라는 명령어를 설명함
    • 리눅스유닉스명령은쉘상태에서 영문약자형식으로되어 있다.
    • 특히 인자(argument) . 옵션 등을 알고자 할 때 유용한 명 령 어 이 댜

      가상 터미널(telnet/ssh)

리눅스 서버 에 직접 접속된 모니터는 콘솔 Console) 이라고 부르며, 원격지에서 서버로 접속하는 대표적인 방법은 telnet이나 ssh 서비스로 접속하는 방법이 있다.

프로그램 설치

  • apt-get
    • 우분투 리눅스 시스템에서 프로그램을 설치해 주는 명령어
    • apt-get 명령어는 root 계정으로 사용하여야함.
  • ~ sudo
    • 일반 시용자가 잠시 Root 권한을 시용하고자 하는 명령어
  • 사용 사례
    • sudo ape-get update: Root 권한으로 ape-get 이라는 명령어를 update라는 옵션울 가지고 실행. 설치할 수 있는 프로그램 리스트를 인터넷을 통하여 새로 받는 명령이다.
  • 가상터미널
    • 전용서버(가상머신[VM] 서버)를사용하기 위한 원격지 프로그램으로 ssh, telnet 등이 있다.
    • telnet: 서 버의 네트워크를 통하여 원격으로 접속하는 방식 규약(프로토콜)
    • ssh: telnet 과 동일한 역할을 히는 프로그램으로 보안이 강화된 방식으로 접속을 함.

      ssh 설치 및 설정

  • ssh 설치
    • 서버에 ssh 프로그램 패키지를 다음 명령어로 설치함. —-> sudo apt-get install ssh
  • telnet 설치
    • 서버에 xintd, telnet 프로그램 패키지를 설치함.
    • a) xinetd 설치
      • inet 는 네트워크 서 스 데몬으로 ln 을 사용하기 위한 필수 요소입니다
      • sudo apt-get install xinetd 명령으로 설치
    • b) telnet 설치
      • telnetd는 텔넷 서 비스 데몬으로 telnet을 서용하기 위한 필수 요소임
      • sudo apt-get insraJI telnetd 명령으로 설치
    • c) xinetd 설정
      • xinetd 설정 파일에 telnet 이 동작하도록 설정
      • 다음 명령어로 설정 파일올 편집기(에디터)로 편깁 : vi /etc/xinetd.conf
      • 아래 내용을 편집하는 파일 하단에 추가함. 저장후파일을닫음.

      ssh

서브목차