※ 요약
리눅스 명령어 pwd는 print working directory의 약자로써, 현재 작업 중인 디렉토리의 절대 경로를 출력하는 명령어이다. 은근 자주 사용되는 명령어이며, 내 위치가 궁금할때 사용한다.

※ 경로
/usr/bin/pwd

※ 사용법
pwd [옵션]...
 
※ 옵션

 옵션

 Long옵션

 설명

 -L

 --logical

 심볼릭을 포함하더라도 pwd 환경 변수를 사용

 -P

 --physical

 심볼릭 정보를 무시하고 출력

 

 --help

 pwd 명령어 사용법 출력

 

 --version

 pwd 명령어의 버전 정보 출력


※ 사용예

딱히 설명이 필요없는 명령어이다. 내가 작업 중인 위치가 궁금하여 pwd를 쳤고, 그 결과 /usr/bin이라는 위치가 출력되었다. 고로 내가 작업 중인 위치는 /usr/bin이다.



※ 요약
리눅스 명령어 rmdir은 빈 디렉토리를 삭제할때 사용하는 명령어이다. 삭제하려는 디렉토리가 비어있지 않을 경우에는 삭제를 할 수 없고 rm 명령어가 있기 때문에 자주 사용하는 명령어는 아니다.

※ 경로
/bin/rmdir

※ 사용법
rmdir [옵션]... 디렉토리명...
 
※ 옵션

 옵션

 Long옵션

 설명

 

 --ignore-fail-on-non-empty

 디렉토리가 비어 있지 않은 경우 삭제할 수 없다는 메시지를 출력 안 함

 -p

 --parents

 상위 경로도 삭제

 -v

 --verbose

 지워지는 디렉토리의 정보를 출력

 

 --help

 rmdir 명령어 사용법 출력

 

 --version

 rmdir 명령어의 버전 정보 출력


※ 사용예

rmdir -v emptyDir1 notEmptyDir1

emptyDir1, notEmptyDir1 디렉토리를 삭제한다.

하지만 위의 설명처럼 비어있지 않은 notEmptyDir1는 에러 메시지를 출력하며 삭제가 진행되지 않았다.



 

※ 요약
필자가 에버노트에 정리해두었던 vi, vim 명령어 및 이동 단축키 파일이다. 아래 단축키 이미지들을 출력해서 벽이나 파티션에 붙여두고 필요할 때마다 참고하면 도움이 될 것이다. 참고로 Visual Studio 단축키도 정리해두었다.

※ 단축키







※ 요약

리눅스 명령어 rm은 파일이나 디렉토리를 삭제할 때 사용하는 명령어이며 -r 옵션을 붙이지 않으면 디렉토리는 삭제하지 못 한다.

참고로 리눅스처럼 유닉스형 운영체제는 삭제를 취소할 수 있는 명령어가 없다. 고로 rm 명령어로 삭제가 시작되면 되찾을 수 없다.


※ 경로

/bin/rm

※ 사용법

rm [옵션]... 파일명...

rm [옵션]... 디렉토리명...



※ 옵션

 옵션

 Long 옵션

 설명

 -f

 --force

 강제로 파일이나 디렉토리를 삭제하고, 삭제할 대상이 없을 경우 메시지를 출력하지 않음

 -i

 --interactive

 매번 삭제할 때마다 사용자에게 질문함

 -I

 

 셋 이상의 파일을 삭제하거나 하위의 파일이나 디렉토리가 있을 경우 질문함

 

 --interactive[=WHEN]

 상호대화형 모드로 값(WHEN)을 지정함

 WHEN 대신 once(-I 옵션과 같음)와 always(-i 옵션과 같으며 디폴트 값)가 올 수 있음

 

 --no-preserve-root

 '/'를 특별하게 취급하지 않음

 

 --preserve-root

 '/'를 삭제하지 않음(디폴트 값)

 -r, -R

 --recursive

 하위 디렉토리를 포함하여 모든 내용을 삭제

 -d

 --dir

 빈 디렉토리들만 제거

 -v

 --verbose

 지워지는 파일의 정보를 출력

 

 --help

 rm 명령어 사용법을 출력

 

 --version

 rm 명령어의 버전 정보를 출력

 


※ 사용예

rm  file1  file2

: 파일1과 파일2를 삭제한다.

 


rm directory

: rm 명령어는 -r 옵션을 주지 않을 경우 디렉토리는 삭제할 수 없다.

 


rm -i file1 file2

: rm 명령어에 -i 옵션을 줘서 삭제하기 전 사용자에게 지울지 물어본다.


rm -fr di* fi*

: 옵션으로 f와 r을 줘서 디렉토리 및 그 하위 모든 내용을 강제로 삭제하는데, di로 시작하는 모든것과 fi로 시작하는 모든 것을 삭제한다. 다른 예로 rm *.txt라고 하면 확장자가 txt인것들을 삭제한다.

 

 

 

※ 요약

리눅스 명령어 mv는 파일이나 디렉토리를 이동하거나 이름을 변경할 때 사용하는 명령어로써, cp 명령어와 매우 비슷하다. 

mv 명령어를 사용할때 원본과 대상의 이름이 다르면 이름이 변경되고, 이동할 파일이 여러 개면 이동 모드로만 동작한다.


※ 경로

/bin/mv

※ 사용법

mv [옵션]... 원본 대상

mv [옵션]... 원본... 디렉토리

mv [옵션]... 디렉토리 디렉토리


※ 옵션

 옵션

 Long 옵션

 설명

 

 --backup[=CONTROL]

 대상 파일이 존재하면 백업 파일을 만듦

 -b

 

 --backup과 비슷하게 백업 파일을 생성

 -f

 --force

 사용자에게 묻지 않고 파일을 강제로 덮어씀

 -i

 --interactive

 존재하는 파일을 덮어 쓸 경우 확인

 -n

 --no-clobber

 존재하는 파일을 덮어쓰지 않음

 -S

 --suffix=SUFFIX

 지정한 접미사로 백업을 생성

 -t

 --target-directory=DIRECTORY

 전체 원본 파일을 대상 디렉토리로 이동

 -T

 --no-target-directory

 파일을 대상 디렉토리로 취급하지 않고 원본 파일로 취급

 -u

 --update

 파일이 업데이트된 경우에만 이동

 -v

 --verbose

 진행 상황에 대한 상세한 정보를 출력

 

 --help

 mv 명령어 사용법을 출력

 

 --version

 mv 명령어의 버전 정보를 출력



※ 사용예

mv  원본  대상

 

mv  원본...  대상

 

mv  -b  원본  대상

 

 

※ 요약

리눅스 명령어 cp는 copy의 약어로써 파일이나 디렉토리를 복사할 때 사용하는 명령어이다.

cp는 복사할때 같은 이름의 대상 파일이 있는 경우 사용자에게 묻지 않고 덮어씌워버리는데, 이 같은 실수를 방지하고자 Alias 설정을 "cp='cp -i'"로 해두고 있다.


※ 경로

/bin/cp

※ 사용법

사용법을 보니 어려워 보이지만, 막상 사용하면 정말 쉽다. 밑에 사용예에서 좀 더 설명하겠다.

참고로 []안에 있는 값은 생략 가능하다는 의미이며 ...의 의미는 가변적이라는 뜻이다.

고로 [옵션]...은 옵션을 생략할 수도 있고 옵션이 한 개 혹은 여러개 올 수 있다는 의미이다.

cp [옵션]... [-T] 원본 대상

cp [옵션]... 원본... 디렉토리

cp [옵션]... -t 디렉토리 원본...



※ 옵션

 옵션

 Long 옵션

 설명

 -a

 --archive

 -dR --preserve=all 옵션과 같음

 -b

 --backup

 복사 대상 파일이 이미 존재할 경우를 대비하여 백업 파일을 만듦

 -d

 --no-dereference

 원본 파일이 소프트링크 파일이면 소프트링크 원본을 삭제

 -f

 --force

 복사 대상이 이미 존재하면 복사 대상 파일을 강제로 지우고 복사

 -i

 --interactive

 복사 대상이 이미 존재하면 사용자에게 덮어씌울건지 여부를 확인

 -l

 --link

 심볼릭 링크 형식으로 복사

 -P

 --parents

 원본 파일명에 디렉토리 경로도 같이 입력했다면 그 경로 그대로 복사

 -p

 --preserve

 원본 파일의 소유주, 그룹, 권한, 시간 정보들을 그대로 보존하여 복사

 -s

 --symbolic-link

 디렉터리가 아닌 일반 파일을 심볼릭 링크 형식으로 복사

 -u

 --update

 변경일이 같거나 더 최신의 복사 대상 파일이 있으면 복사 안 함

 -v

 --verbose

 복사 상태를 자세하게 출력

 -x

 --one-file-system

 원본 파일과 대상 파일의 파일시스템이 서로 다를 경우, 복사 안 함

 -R, -r

 --recursive

 디렉토리를 복사할 경우 하위 디렉토리와 파일을 모두 복사

 

 --help

 cp의 사용법을 출력

 

 --version

 cp의 버전을 출력

 

※ 사용예

이번에는 캡쳐 없이 글로만 설명하도록 하겠다.

띄어쓰기 잘 안 보여서 2칸씩 띄웠으니 참고바람.

 

cp  -f  file1  file2

: file1을 file2로 복사한다. file2가 이미 존재한다면 file1의 내용을 그대로 덮어씌우고 복사한다. file2가 없다면 새로 생성된다.

 

cp  -i  file1  file2

: 위와 같이 복사가 이뤄지지만 만약 file2 파일이 있다면 사용자에게 덮어씌울건지 물어본 뒤 작업을 진행하거나 취소한다.

 

cp  file1  file2  file3  dir

: file1과 file2, file3을 dir이라는 디렉토리로 복사한다. 단, dir1은 존재하고 있어야 한다.

 

cp  dir1/*  dir2

: 와일드 카드와 함께 사용해서 dir1 디렉토리에 있는 모든 파일을 dir2 디렉토리로 복사한다. 단, dir2는 존재하고 있어야 한다.

 

cp  -r  dir1  dir2

: dir1 디렉토리와 그 안에 있는 모든 내용(파일 및 디렉토리)을 dir2로 복사한다. dir2가 없다면 새로 만든다.

 

 

 

※ 요약
mkdir 명령어는 make directory의 약자로써 디렉토리를 생성할 때 사용하는 명령어다.

자주 사용하지만 옵션의 종류도 별로 없고 매우 쉬운 명령어 중에 하나이다.


※ 경로
/bin/mkdir

※ 사용법

mkdir [옵션]... 디렉토리 이름...

[옵션] : 생략 가능

디렉토리 이름 : 생성할 디렉토리명, ...은 가변인자를 뜻하는데, 생성할 디렉토리들을 나열하면 나열한 개수 만큼 생성


※ 옵션

 옵션

 Long 옵션

 설명

 -m

 --mode=MODE

 디렉토리를 생성할때 권한을 설정, 디폴트는 755

 -p

 --parents

 상위 경로도 함께 생성

 -v

 --verbose

 디렉토리를 생성 후, 생성된 디렉토리에 대해 메시지 출력

 

 --help

 mkdir의 사용법을 출력

 

 --version

 mkdir의 버전 정보를 출력


 

※ 사용예

mkdir 디렉토리명

: 옵션 없이 기본적으로 사용하는 방법이다. Test 디렉토리가 생성된 것을 확인할 수 있다.

 

mkdir -m 777 디렉토리명

: 777로 하였기 때문에 drwxrwxrwx로 생성된 것을 알 수 있다. -m 옵션을 넣지 않으면 디폴트 값인 755로 생성된다.

 

mkdir -p /경로/디렉토리명

: workspace디렉토리는 있지만 그 하위에 Test디렉토리는 없어서 -p 옵션이 없으면 오류로 생성되지 않는다.

  -p 옵션이 있다면 상위 디렉토리인 Test도 함께 생성하기 때문에 오류없이 생성된다.

 

mkdir -v 디렉토리명

: 디렉토리를 생성 후, 그에 대한 메시지를 출력한다. 성공이면 성공, 실패면 실패에 대해 출력한다.

  여러 개의 디렉토리를 생성할때, 무엇이 성공했고, 무엇이 실패했는지 파악할때 편리하다.

 

mkdir --version

: mkdir의 버전을 출력한다.


 

 

 

※ 요약

ls 명령어는 "list segments"의 약자로써 가장 많이 사용하는 리눅스 명령어 중에 하나이다. 

ls는 보통 지정한 디렉토리나 파일의 정보를 출력하는데 사용한다.

옵션은 아래와 같이 상당히 많지만 자주 쓰이는 옵션은 그다지 많지 않다.


※ 경로
/bin/ls

※ 사용법
ls [옵션]... [파일]...

[옵션] : 생략 가능하고 여러개 사용가능

[파일] : 생략 가능하고 여러개 지정가능


※ 옵션

옵션은 보통 (-)와 함께 입력하여 사용한다.

그 밖에 LONG 옵션을 제공하는데, LONG 옵션은 보통 (--) 기호를 선행하여 사용한다.

 옵션

 Long 옵션

 설명

 -a

 --all

 .을 포함하여 경로 안의 모든 내용을 출력

 -A

 --almost-all

 .과 ..을 제외한 모든 내용을 출력

 -b

 --escape

 알파벳 형식의 리스트를 출력

 

 --block-size=SIZE

 지정한 바이트(SIZE) 만큼의 블록을 사용

 -B

 --ignore-backups

 ~로 끝나는 백업 파일을 출력하지 않음

 -c

 

 -lt 옵션과 함께 마지막 변경 시간을 출력하고 시간을 기준으로 정렬

 -l 옵션과 함께 마지막 변경된 시간을 출력하고 이름을 기준으로 정렬

 -C

 

 열의 엔트리를 출력

 

 --color[=WHEN]

 파일의 타입을 색으로 구별함

 WHEN에 올 수 있는 값은 'never', 'always', 'auto'

 -d

 --directory

 디렉토리의 경로를 출력, 심볼릭 링크라면 원래의 링크 정보를 출력 안 함

 -D

 --dired

 emacs를 위한 출력 형태를 생성

 -f

 

 정렬하지 않음, 이 옵션은 -aU 옵션을 활성화하고 -ls --color 옵션을 비활성화

 -F

 --classify

 목록의 마지막에 (*/=>@|) 중에 하나의 지시자를 붙임

 (실행파일은 *, 경로는 /, 소켓은 =, 심볼릭 링크는 @, FIFO는 |)

 

 --file-type

 -F, --classify과 비슷하나, *은 덧붙이지 않음

 

 --format=WORD

 옵션 대신 워드 서식을 지정하여 출력

 (across는 -x, commas는 -m, horizontal는 -x, long는 -l, single-column는 -1, verbose는 -l, vertical는 -C)

 

 --full-time

 -l --time-style=full-iso와 비슷함

 -g

 

 -l과 비슷하나 소유자의 리스트를 출력하지 않음

 

 --group-directories-first

 파일 이전에 그룹 디렉토리를 먼저 출력

 -G

 --no-group

 긴 리스트 형식으로 출력하나 그룹 이름은 출력하지 않음

 -h

 --human-readable

 -l과 함께 사람이 읽기 쉬운 형식의 크기로 출력

 

 --si

 -h와 비슷하나 1,024 단위가 아닌 1,000의 단위로 출력

 -H

 --dereference-command-line

 심볼릭 링크면 실제로 참조하는 목록을 출력

 

 --hide=PATTERN

 지정한 PATTERN과 매칭되는 리스트를 숨김(-a나 -A 옵션이 우선함)

 

 --indicator-style=WORD

 목록 이름에 WORD 스타일의 지시자를 추가

 (none은 기본값, slash는 -p, file-type은 --file-type, classify는 -F)

 -i

 --inode

 각 파일의 인덱스 값을 출력

 -I

 --ignore=PATTERN

 지정한 PATTERN에 매칭되는 목록을 출력하지 않음

 -k

 --kibibytes

 --block-size=1K와 비슷함

 -l

 

 긴 리스트 형식으로 출력

 -L

 --dereference

 심볼릭 링크의 정보를 보여줄 때 링크 파일의 원본 파일의 정보를 출력

 -m

 

 콤마로 구분된 목록 형식으로 출력

 -n

 --numeric-uid-gid

 -l 옵션과 비슷하나, 숫자 형식의 사용자와 그룹 ID를 출력

 -N

 --literal

 원래의 이름 형식으로 출력(보통 영문이 아닌 경우 \를 붙여서 출력)

 -o

 

 -l와 비슷하지만 그룹의 정보를 출력하지 않음

 -p

 --indicator-style=slash

 디렉토리에 슬래시(/)를 추가

 -q

 --hide-control-chars

 그래픽이 아닌 문자 대신 ?를 출력

 -Q

 --quote-name

 목록에 쌍 따옴표로 감싸서 출력

 -r

 --reverse

 정렬의 순서를 역순으로 바꿈

 -R

 --recursive

 현재 디렉토리를 기준으로 모든 하위의 디렉토리를 출력

 -s

 --size

 각 파일이나 블록에 할당된 크기를 출력

 -S

 

 파일의 크기를 기준으로 정렬

 -t

 

 수정된 시간을 기준으로 정렬

 -T

 --tabsize=COLS

 기본값 8 대신 지정한 COLS를 탭 간격으로 지정

 -u

 

 -lt 옵션과 함께 접근 시간을 기준으로 정렬

 -l 옵션과 함께 접근 시간을 출력하는데 이름을 기준으로 정렬

 -U

 

 정렬하지 않음

 -v

 

 

 -w

 --width=COLS

 현재 값 대신 스크린 넓이(COLS)를 지정

 -x

 

 열의 기준 대신 라인의 기준으로 출력

 -X

 

 목록의 확장자를 기준으로 알파벳 순으로 정렬

 -Z

 --context

 각 파일의 SELinux 보안 컨텍스트를 출력

 -1

 

 줄 별로 하나의 파일을 출력

 

 --help

 사용법을 출력

 

 --version

 버전 정보를 출력



※ 사용예

ls -al

: 현재 디렉토리 내의 모든 내용을 출력하는데, 출력 형식은 리스트 형식으로 출력한다.


ls -alt

: 현재 디렉토리 내의 모든 내용을 출력하고 출력 형식은 리스트 형식으로 출력하는데, 시간 순으로 정렬


ls -l --color=never

: 리스트 형식으로 출력하고 파일의 타입을 색으로 구분하지 않음


ls --tabsize=SIZE

: 아래를 보면 알겠지만 탭 사이즈를 변경해가며 출력


ls -m

: 각 파일이나 디렉토리의 간격을 콤마로 구분





※요약

Signal은 Unix/Linux에서 커널이나 프로세스가 다른 프로세스에게 비동기적인 사건을 알려주거나 시간을 동기화 시키기 위해 사용한다. signal을 받은 프로세스는 보통 3가지 작업을 할 수 있다. 프로세스를 종료하거나 signal 무시, 받은 signal에 따른 적절한 행동이 그 3가지이다.

필자가 리눅스에서 C로 개발하면 처음 접한 signal은 SIGSEGV(11)이다. SIGSEGV은 잘못된 메모리 관리 때문에 생기는 신호로써, sprintf함수를 이용하여 서식 문자를 만들다가 int형을 %s로 서식을 지정하여 발생하였었다.

 


※특징

아래는 signal 리스트이다. 

 Signal Name

 Number

 Description

 SIGHUP

 1

 Hangup (POSIX)

 SIGINT

 2

 Terminal interrupt (ANSI)

 SIGQUIT

 3

 Terminal quit (POSIX)

 SIGILL

 4

 Illegal instruction (ANSI)

 SIGTRAP

 5

 Trace trap (POSIX)

 SIGIOT

 6

 IOT Trap (4.2 BSD)

 SIGBUS

 7

 BUS error (4.2 BSD)

 SIGFPE

 8

 Floating point exception (ANSI)

 SIGKILL

 9

 Kill(can't be caught or ignored) (POSIX)

 SIGUSR1

 10

 User defined signal 1 (POSIX)

 SIGSEGV

 11

 Invalid memory segment access (ANSI)

 SIGUSR2

 12

 User defined signal 2 (POSIX)

 SIGPIPE

 13

 Write on a pipe with no reader, Broken pipe (POSIX)

 SIGALRM

 14

 Alarm clock (POSIX)

 SIGTERM

 15

 Termination (ANSI)

 SIGSTKFLT

 16

 Stack fault

 SIGCHLD

 17

 Child process has stopped or exited, changed (POSIX)

 SIGCONT

 18

 Continue executing, if stopped (POSIX)

 SIGSTOP

 19

 Stop executing(can't be caught or ignored) (POSIX)

 SIGTSTP

 20

 Terminal stop signal (POSIX)

 SIGTTIN

 21

 Background process trying to read, from TTY (POSIX)

 SIGTTOU

 22

 Background process trying to write, to TTY (POSIX)

 SIGURG

 23

 Urgent condition on socket (4.2 BSD)

 SIGXCPU

 24

 CPU limit exceeded (4.2 BSD)

 SIGXFSZ

 25

 File size limit exceeded (4.2 BSD)

 SIGVTALRM

 26

 Virtual alarm clock (4.2 BSD)

 SIGPROF

 27

 Profiling alarm clock (4.2 BSD)

 SIGWINCH

 28

 Window size change (4.3 BSD, Sun)

 SIGIO

 29

 I/O now possible (4.2 BSD)

 SIGPWR

 30

 Power failure restart (System V)


+ Recent posts