[컴퓨터구조] LINUX리눅스 명령어 정리
Undergraduate lectures

[컴퓨터구조] LINUX리눅스 명령어 정리

이 글은 필자가 학교 수업(반효경 교수님의 '시스템 SW 및 실습')을 듣고 정리한 글(중간고사 전까지의 범위)입니다.

이미지출처: 위키백과

1. 명령어 정리

(ctrl+F로 검색하여 찾아볼 수 있다./ []안에 들어가 있는 부분은 조건을 다는 부분으로 원하는 조건이 있으면 추가하는 방식으로 진행된다.)

-파일 관리 부분(파일/디렉토리 생성, 저장, 삭제, 복사, 이동,수정, 압축 등등)

명령어 명령어 이용 예시
cd 다른 디렉토리 이동(밑 파일 경로 내용 확인) $ cd /home/test/temp
pwd 작업 디렉토리 확인 $ pwd
ls [-adIR] [FILE|Directory]

디렉토리 내용 보기

-a: 숨겨진 파일 나열

-d는 디렉토리 자체의 정보

-l 허가정보, 소유권 등 긴 목록 제공

-R 해당 파일, 폴더의 내용과 서브 내용을 재귀적으로 삭제

$ ls //디렉토리 안 폴더 내용 보기

$ ls -l 

$ ls -a -l

mkdir directory

디렉토리 만들기

$ mkdir temp

//temp라는 디렉토리 생성

mv [-i] old_FILE new_FILE

mv [-i] FILE/direc Directory

mv [-i] old_dir new_dir

파일 이름 변경 및 이동

old_file을 new_file로 이름 변경

file/directory를 directory로 이동

old_dir를 new_dir로 이름 변경

-i 파일이름 존재하는 경우 확인을 위한 확인 프롬프트 생성

$ mv old.txt new.txt

$ mv tmp temp

$ mv -i new.txt temp

 

cp [-i] old_file new_file

cp [-ir] old_directory new_directory

파일 복사

-i 이미 존재하는 경우 확인

-r directory경우 모든 내용을 재귀적으로 복사

$ cp -i text.txt a.txt

$ cp -i -r temp temp2

rmdir directory

rm [-fir] FILE

디렉토리 제거

파일 삭제

-f 강제 종료

-r 재귀적으로 삭제

-i 사용자에게 확인 요구

$ rmdir temp

$ rm * //해당 디렉토리내 모든 파일 삭제

cat [-n] FILE

파일을 입력받아 파일 생성

-n은 줄번호 포함하여 파일 내용 보기

$ cat > test //표준입력을 test에 받기

$ cat -n test // 줄번호를 포함하여 test내용 받기

vi

텍스트 에디터(4번 내용 참고)

$ vi test //test라는 파일의 에디터로 간다.

$vi

more / less FILE

텍스트 파일의 내용을 한 화면씩 끊어서 출력한다. 

more은 pipe("|")를 이용해 다른 프로그램들과 동시에 사용되기도 한다.

$ more test.txt

$ less test.txt

sort [-trbfn] FILE

파일은 아스키코드 값에 따라 정렬(이때, 소문자, 대소문자, 공백 순으로 정렬한다.)

-t: 항목분리자 명시

-r: 내림차순으로 정렬

-b: 줄 앞에 있는 공백을 무시

-f: 대소문자 무시

-n: 숫자 순으로 정렬

$  sort -r test1

$ sort test2

uniq FILE

연속된 중복 행 제거하여 하나로 정리해준다.

$ uniq test.txt

grep [options] pattern FILE

파일 내의 pattern을 찾아준다.

pattern은 Regular Expression을 이용하여 표현한다.

$ grep what temp.txt

find 탐색위치 탐색조건 명령 {}\;

탐색 위치에 탐색조건(type, name,시간, 최근 수정 등의 조건)을 가진 파일을 찾아, 명령을 내린다.

-type: d(디렉토리), f(파일)

-name

-atime(최근에 살펴본 파일, 일 기준)

-mtime(최근에 수정한 파일, 일 기준)

$ find . -type d -exec{}\;

//현재디렉토리(.)내 type가 디렉토리인 파일을 찾아 실행하라.

$ find . -name pocket test1 -exec {}\;

$ find . -atime 7 test2 -exec {}\;

//7일 전에 살펴본 파일 찾아서 실행

$ find . -mtime 24 test4 -exec{}\;

//24일 전에 수정한 파일 찾기

wc [-lwc] FILE

파일 내 단어수 세기

-l 라인수 -w 단어수 -c문자 수

$ wc -lwc heart

cmp FILE1 FILE2

두 파일을 비교해서 처음으로 다른 첫번째 바이트 수와 라인 수를 출력

$ cmp lady1 lady2

//예시 결과:

lady1 lady2 differ: char 19, line1

compress FILENAME

확장자 .Z로 파일 압축

$ compress keynote

//ls시 keynote.Z가 존재함을 알 수 있다.

gzip

확장자.gz로 파일 압축

표준 compress보다 압축률이 좋다.

$ gzip foo.txt

tar [options] NAME(묶는 결과 파일 이름) file1 file2 file3 ...

여러 파일을 묶어서 하나로 만드는 기능, 압축은 하지 않는다.

options에 cvf시 묶고, xvf는 풀어준다.

$ tar cvf files.tar foo.txt bar.txt

$ tar xvf files.tar

split [-lbC] [FILE [prefix]]

하나의 파일을 일정한 기준으로 여러개의 파일들로 나눈다. 파일의 이름이 주어지지 않으면 표준입력(키보드)에서 입력을 받는다.

결과 파일 이름은 [prefix]aa, [prefix]ab...으로 되며, prefix를 넣지 않으면 xaa, xab, xac.... 방식으로 저장된다.

-l: 결과 파일 하나의 라인수

-b: 결과파일 하나의 byte수

-C: 라인 단위로 저장하면서 결과 파일의 최대 byte수

$ split -l 10 .bashrc bash

//.bashrc가 파일 이름,bash가 prefix가 되어 저장시에 bashaa bashab .....방식으로 저장된다.

- 사용자, 프로세시 관련

명령어 명령어 이용 예시
passwd 패스워드 설정 및 변경 $ passwd
logout 사용자 로그아웃 $ logout
id username 해당 username(사용자)의 정보를 출력 $ id user3
finger [-ls] username

사용자의 정보 출력

username없으면 현재 로그인한 모든 사용자들의 정보 출력

-l: long form

-s: short form

$ finger -l user10
chfn

사용자(현재 이용하는 나)의 finger수정(change finger)

$ chfn
w 현재 시스템 사용중인 사용자들에 대한 정보 출력(who)

$ w

$ w user2 //사용중인 user2만의 정보 출력

logname 현재 사용자의 login name을 출력 $ logname
su username 사용자변경(switch user)

$ su //유저이름을 넣지 않으면 root로 인식한다.

$ su user3

write/talk username

write: 다른 사용자에게 메시지 보내기

talk: 다른 사용자와 1대1 대화

$ write user18

$ talk user30

wall FILE 모든 사용자에게 파일 전송

$ wall hi.txt

mesg 다른 사용자로부터 메세지 수신 기능 여부 설정

$ mesg y //허가함

$ mesg n //허가하지 않음.

ps [options]

현재 동작중인 프로세스들 출력

-x는 자신이 사용하는 모든 프로세스 출력

-aux는 시스템에서 동작하는 모든 프로그램 출력

$ ps

$ ps -x

$ ps -aux

jobs

current shell 아래 수행중인 process를 모두 보여준다.

$ jobs

top [options]

CPU 사용량이 top인 프로세스들 출력

-c: command list 전체를 보여준다.

-i: idle상태와 zombie 프로세스는 무시

$ top

kill processid

해당 프로세스id를 가진 프로세스를 강제종료한다.

$ kill 334

nohup FILE &

로그아웃 이후에도 계속 프로세스가 수행되도록 한다.

command 뒤에 &를 붙이면 background로 process 수행

$ nohup ./a.out &

nice FILE

프로세스를 매우 낮은 우선순위로 실행

$ nice ./a.out

fg job_id

job_id의 프로세스를 foreground로 전환

$ fg 445

$ fg //그냥 fg만 쓰면 최근에 멈춘 process를 foreground로 전환한다.

bg job_id

job_id의 프로세스를 background로 실행

$ bg 445

-프로그램 실행시

명령어 명령어 설명 예시
gcc [-o filename] FILE

c 컴파일러로, FILE이 c언어여야 한다.(.c로 끝나야 한다.)

컴파일시 FILE.out으로 저장되며, 따로 이름을 지정해주고 싶으면 -o filename을 통해 filename.out으로 해준다.

$ gcc -o test temp.c
ar rcs libname.a a.o b.o c.o

static library 파일로  만들시, 이 명령어를 바탕으로 설명할 때, a.o, b.o, c.o가 libname.a에 들어가 라이브러리를 만들게 된다.

$ ar rcs statlib.a test1.o test2.o test3.o
gcc [-o filename] FILE1 FILE2

shared library파일로 만들 때,

FILE1은 c파일, FILE2는 .a(static library)형식으로 하여 filename으로 컴파일 된다.

$ gcc -o result test1.c statlib.a

-기타 그외..

명령어 명령어 설명 예시

mancommand_name

man -kcommand_name

온라인 도움말 정보

-k는 키워드 검색

$ man cp

$ man -k copy

chmod [-R]mode FILE

Access permission 변경(3번 내용 참고)

-R는 재귀적으로 권한 설정(설정 디렉토리 안에 있는 파일들 다 권한 설정해버림)

$ chmod g+w data.txt

$ chmod -R uo=rx temp

$ chmod 750 heart

mail [-v] [-ssubject]address

 이메일 보내기

-v 메세지 전송여부 확인

-s subject에 제목 지정

address: 이메일 주소 , 동일 서버 상 로그인 이름

$ mail -v -s hi abc@gmail.com 

date/cat

시스템의 날짜, 시간 표시 및 변경

(변경은 슈퍼유저만이 할 수 있다.)

$ date

$ cal

echo $argumentname

argument의 값을 띄워준다.

$ name = hi

$ echo $name //결과: hi

 

2. 파일명 및 경로명 설정

절대경로와 상대경로로 나뉘어 설정된다. 절대경로는 root부터 시작하는 경로를 말한다. 상대경로는 현재 사용자가 위치해있는 경로를 바탕으로 한 경로를 나타내며, .는  현재 디렉토리, ..는 부모 디렉토리를 말한다.

 

3. Access Permission 읽기 및 mode 정의

기본적으로 정의할 때, user(u), group(g), others(o) 총 세 그룹(다 합쳐서 all이라고도 함)을 위한 허가권을 주며, 허가권은 r(read), w(write), x(execute)로 3개로 나누어서 접근권을 준다. 그룹에 관한 허가권을 순서대로 나타내며, 예를 들면

rw-r--r-x 를 보면 3개씩 허가권을 끊어서 보면 user에게 rw-로 r,w권한을 주지만 x는 주지 않고, group는 r--로 r권한을 주지만, w,x권한은 주지 않는다. others는 r-x로 r,x권한을 주고, w권한을 주지 않는다.

 이에 적용하여 mode를 작성할 때 주고자하는 대상에 허가권을 각각 주는 방식으로, 대상+(주고)/-(빼고)/=(일방적으로 정의) 허가권인 방식으로 예를 들면 go-r이면 g(group), o(others)에게 r권한을 빼는 것을 볼 수 있다. 대상이 없이 +x이렇게 나오는 경우는 모두(user, group, others)에게 권한 x를 주는 경우로 해석할 수 있다.

 mode설정은 설정과 더불어 숫자로 나타낼 수 있다. 이도 한숫자씩 각각의 그룹에게 적용하면 된다. 예를 들어 701이면 user에게 7, group에게 0, others에게 1로 이진수로 나타내면 111,000,001로 해석하면 rwx-----x 이 형태로 Access Permission에 적용할 수 있다.

 

4. vi editor

  텍스트 에디터로써, 명령모드와 텍스트 입력 모드가 존재한다. 명령모드는 키보드를 마음대로 제어할 수 없고, 텍스트 입력모드는 키보드로 파일 수정시 자유롭게 움직이며 작성할 수 있다. 명령 > 텍스트모드는 i로, 텍스트모드 > 명령모드는 ESC로 작동된다.

 명령모드는 커서이동을 k(위),j(아래),l(오른쪽),h(왼쪽)으로 하면서 삽입하게 되며, 파일을 저장하거나 종료하고 싶을 때 :w로 저장, :q로 수행 종료, :wq로 저장하고 수행 종료할 수 있다. :q!를 사용하면 강제적으로 종료하게 된다.

 

5. foreground, background

foreground: 현재 터미널에서 수행하여 표준입출력(키보드)이 가능하다.

background: 터미널 이면에서 수행한다.

 

5. 추가 키보드 명령

Ctrl +C: 프로세스의 종료 (cat수정할 때나 foreground process시에 사용된다.)

Ctrl + D: 입력 끝냄(cat에 주로 쓰이며 저장의 의미도 내포함.)

Ctrl+Z: foreground process의 일시중지

 

 

LINUX 명령어 정리(시스템 SW 복습).pdf
6.27MB