K 개발자

유닉스 시스템 도구 본문

유닉스(Unix)/시스템 프로그래밍

유닉스 시스템 도구

ddingz 2021. 8. 14. 13:14

유닉스 기본 명령

로그인/로그아웃 관련 명령

명령 기능 주요 옵션 사용 예
telnet 유닉스 시스템에 접속 - telnet a.co.kr
logout 유닉스 시스템에서 접속 해제 - logout
exit - exit

파일/디렉토리 조작 명령

명령 기능 주요 옵션 사용 예
pwd 현재 디렉토리 경로 출력 - pwd
ls 디렉토리 내용 출력 -a : 숨김 파일 출력
-l : 파일 상세 정보 출력
ls -a /tmp
ls -l
cd 현재 디렉토리 변경 - cd /tmp
cd ~a01
cp 파일/디렉토리 복사 -r : 디렉토리 복사 cp a.txt b.txt
cp -r dir1 dir2
mv 파일/디렉토리 이름 변경과 이동 - mv a.txt b.txt
mv a.txt dir1
mv dir1 dir2
rm 파일/디렉토리 삭제 -r : 디렉토리 삭제 rm a.txt
rm -r dir1
mkdir 디렉토리 생성 - mkdir dir1
rmdir 빈 디렉토리 삭제 - rmdir dir2
cat 파일 내용 출력 -n : 행 번호 출력 cat a.txt
cat -n a.txt
more 파일 내용을 페이지 단위로 출력 - more a.txt
chmod 파일 접근 권환 변경 - chmod 755 a.exe
chmod go+x a.exe
grep 패턴 검색 - grep abcd a.txt

프로세스 관련 명령

명령 기능 주요 옵션 사용 예
ps 현재 실행 중인 프로세스의 정보 출력 -ef : 모든 프로세스에 대한 상세 정보 출력 ps
ps -ef
ps -ef | grep ftp
kill 프로세스 강제 종료 -9 : 강제 종료 kill 5000
kill -9 5001

기타 명령

명령 기능 주요 옵션 사용 예
su 사용자 계정 변경 - : 변경할 사용자의 환경 초기화 파일 실행 su
su -
su - a02
tar 파일/디렉토리 묶기 cvf : tar 파일 생성
tvf : tar 파일 내용 보기
xvf : tar 파일 풀기
tar cvf a.tar *
tar tvf a.tar
tar xvf a.tar
whereis 파일 위치 검색 - whereis ls
which 파일 위치 검색 - which telnet

vi 편집기 내부 명령

기능 명령
입력 모드로 전환 i, a, o, O
커서 이동 j, k, h, l 또는 방향키
한 글자 수정 r
단어 수정 cw
검색해서 수정 :%s/aaa/bbb/g
붙이기 p
글자 삭제 x, #x (3x, 5x 등)
저장하고 종료 :wq! 또는 ZZ
행 붙이기 J(shift + J)
행 번호 보이기 :set nu
명령 모드로 전환 Esc
행 이동 #G (50G, 143G 등) 또는 :행 번호
여러 글자 수정 #s (5s, 7s 등)
명령 취소 u, U
복사 #yy (5yy, 10yy 등)
커서 이후 삭제 D(Shift + D)
행 삭제(잘라내기) dd, #dd (3dd, 4dd 등)
저장 않고 종료 :q!
화면 갱신 Ctrl + L
행 번호 숨기기 :set nonu

컴파일 환경

GNU C 컴파일러 : gcc

  • 기능
    • C 프로그램을 컴파일해 실행 파일을 생성한다.
  • 형식
    • gcc [옵션] [파일명]
  • 옵션
    • -c : 오브젝트 파일(.o)만 생성한다.
    • -o 실행 파일명 : 지정한 이름으로 실행 파일을 생성한다. 기본 실행 파일명은 a.out이다.
  • 사용 예
    • gcc test.c
    • gcc -c test.c
    • gcc -o test test.c

Makefile과 make

대부분의 경우 프로그램을 작성할 때 소스 파일이 하나가 아닌 여러 개로 구성되고, 컴파일 시 이를 묶어서 실행 파일을 생성한다.
유닉스 시스템에서는 이렇게 여러 소스 파일을 컴파일하고 링크해서 실행 파일을 생성하는 데 사용할 수 있는 도구로 Makefile 설정 파일과 make 명령을 제공한다.


오류 처리 함수

오류 메시지 출력 : perror(3)

#include <stdio.h>

void perror(const char *s);
// s : 출력할 문자열

오류 메시지 출력 : strerror(3)

#include <string.h>

char *strerror(int errnum);
// errnum : errno에 저장된 값

동적 메모리 할당

메모리 할당 : malloc(3)

#include <stdlib.h>

void *malloc(size_t size);
// size : 할당받을 메모리 크기

메모리 할당과 초기화 : calloc(3)

#include <stdlib.h>

void *calloc(size_t nelem, size_t elsize);
// nelem : 배열 요소의 개수, elsize : 각 배열 요소의 크기

메모리 추가 할당 : realloc(3)

#include <stdlib.h>

void *realloc(void *ptr, size_t size);
// ptr : 할당받은 메모리를 가리키는 포인터, size : 할당할 메모리의 크기

메모리 해제 : free(3)

#include <stdlib.h>

void free(void *ptr);
// ptr : 해제할 메모리 주소

명령행 인자

main 함수에서 명령행 인자를 전달받으려면 다음과 같이 정의해야 한다.

int main(int argc, char *argv[]) {…}

첫 번째 인자인 argc는 명령과 인자를 포함한 개수로, 두 번째 인자인 argv 배열의 크기다.
두 번째 인자인 argv는 명령과 각 인자를 담고 있는 배열이다.
명령행 인자는 argv에 문자열 형태로 저장된다.

옵션 처리 : getopt(3)

명령행 인자로 전달된 옵션을 편리하게 처리할 수 있도록 getopt 함수가 제공된다.

Comments