본문 바로가기

Computer Science/Embedded Software

[Embedded Software] Linux Basic Commands

+ 한국항공대학교 최차봉 교수님의 임베디드 SW 과목 내용을 정리한 글입니다.

시스템 관리 명령

whoami 사용자의 이름을 표시한다.

 

who 현재 로그인 사용자를 표시한다.

리눅스는 Multiuser System이기 때문에 여러 사용자가 함께 사용 가능하다.

 

uname : 시스템 정보를 표시한다.

-a : 모든 시스템 정보

-r : 커널 Release

-n : 호스트 명

-m : 머신 타입

-p : Processor 타입

-s : OS의 시스템 타입

-v : 커널 버전 정보

 

man [명령어] : 명령어의 사용법을 출력한다.

 

free : 메모리 사용량을 확인한다. (기본단위: KB)

-h : GB, MB, KB 형태로 변경하여 출력 (-h는 보통 보기 좋게 출력하는 옵션)

-s [second] : 지정한 초마다 메모리 사용량을 출력

Mem : RAM의 용량을 출력 (Total = Used + Free + Buff/Cache)

Swap : RAM이 부족할 때 사용되는 가상메모리 사용량 출력 (HDD의 일부분을 사용)

(RAM에 load되어 있으나 사용하지 않는 내용을 Secondary Storage로 옮겨 놓고 RAM의 여유분을 확보한다. = Swapping)

 

jobs : 현재 터미널(Shell)에서 실행 중인 작업을 표시한다.

-l : 프로세스 ID (PID) 표시

프로세스 상태는 Running, Stopped, Terminated, Done

job번호는 %를 앞에 붙여야한다.

 

ps : 프로세스 정보를 표시한다.

-e : 현재 실행 중인 모든 프로세스 표시

-f : 사용자, 시작 시간 표시

-u : 현 사용자의 프로세스 표시

-p [PID] : 지정한 프로세스의 정보만 표시

-e f : 프로세스의 관계를 트리 형식으로 표시 (parent, child)  

 

top : 프로세스 정보를 실시간으로 표시한다.

Priority, Virtual, Resident, Status, %CPU, %MEM 등을 표시

-d [second] : 지정한 초마다 표시 정보 갱신 (기본: 3초)

-p [PID] : 지정한 프로세스 ID의 정보만 표시 

 

kill : 프로세스에게 신호(signal)을 통지한다.

-9 [PID]: 강제 종료 통지. 종료에 따른 후속 작업 없이 즉시 종료

 

wait : 실행한 프로세스가 종료하기를 기다리는 명령

 

watch : 주기적으로 명령을 실행하고 결과를 화면에 표시한다.

-n [sec] : 표시 시간 간격 (기본: 2초)

-d : 변경되는 부분을 강조하여 표시 

예) watch -d -n 1 date : 1초마다 날짜/시간 표시, 변경되는 부분 강조

예) watch -d ls : 2초마다 폴더 내용 표시, 변경되는 부분 강조

 

which [명령어] : 현재 사용되고 있는 명령어의 위치를 알려준다.

예) which vi


파일 시스템 관리 명령

df : 디스크 사용량을 표시한다.

-h : 읽기 쉬운 형태로 표시

 

du : 디렉토리와 파일의 사용량을 표시한다.

| more : 출력을 모니터로 보내지 않고 more라는 앱을 통해 출력 (긴 출력값을 볼 때 사용)

(more는 한 화면(페이지)이 꽉 차면 pause, space바를 통해 다음 페이지로 이동할 수 있다.)

 

pwd : print working directory의 약자로, 현재 작업 path를 표시한다.

 

cd : 작업 디렉토리의 위치를 변경한다. (change directory)

. : 현재 위치

.. : 부모 디렉토리로 변경

~ : 홈 디렉토리로 변경

- : 이전 디렉토리로 이동

 

ls [디렉토리]: 디렉토리의 내용을 표시한다. ([디렉토리]를 입력하지 않을 시 현재 디렉토리 내용 표시)

-a : 모든 파일 표시 (Hidden File 포함)

-l : 자세한 표시

-h : 보기 쉽게 표시

ex) ls -al, ls -alh /etc > ls.etc (>: 리디렉션: ls.etc 파일에 저장 or 덮어씀)

 

+ 디렉토리 내용을 읽는 방법 +

drwxrwxrwx

= d/- + rwx/--- + rwx/--- + rwx/---

= 디렉토리/파일 + User Permission + Group Permission + Others Permission

r : read (읽기)

w: write (쓰기)

x : execute (실행)

 

chmod [u/g/o/a] [+/-/=] [r/w/x]  [file] or chmod [8진수] [file] : 파일 mode를 변경한다.

u : User, g : Group, o : Other, a: All

+ : permission 추가, - : permission 제거, = : permission 변경

예) chmod u+x file : file의 User Permission에 x(execute)를 추가한다.

예) chmod a = rwx file : file의 모든 권한을 rwx로 변경한다. 

=> rwxrwxrwx는 2진수로 111111111로 나타낼 수 있고, 이를 8진수로 바꾸면 777이다.

=> 따라서, chmod a = rwx file 코드는 chmod 777 file와 같다.

++ 2진수를 8진수로 변환하는 방법은 앞에서부터 3개씩 잘라서 8진수로 변환 후 붙이면 된다.

=> 111111111 => 111/111/111 => 7/7/7 => 777

 

cp : 파일, 디렉토리를 복사한다.

-r : 하위 디렉토리, 파일을 모두 복사 (recursive)

 

rm : 파일, 디렉토리를 삭제한다.

-r : 하위 디렉토리, 파일을 모두 삭제 (recursive)

 

mkdir : 디렉토리를 생성한다.

 

rmdir : 디렉토리를 삭제한다.

 

mv : 파일, 디렉토리를 이동하거나 이름을 변경한다.

 

tree : 파일, 디렉토리를 트리 구조로 표시한다. (설치 필요: sudo apt install tree)

-d : 디렉토리만 표시

tree . : 현재 위치(하위)의 파일, 디렉토리를 트리구조로 표시

tree /home : /home (하위)의 파일, 디렉토리를 트리구조로 표시

tree -d /etc > dic.etc : /etc (하위)의 디렉토리만을 트리구조로 표시 후 dic.etc라는 파일에 리디렉션(저장)

 

find : 파일 검색 및 결과를 이용하여 부가 기능을 실행한다.

-name : 검색할 이름 지정

-exec : 검색결과를 이용하여 다른 명령 실행

예) find /etc -name "*.txt" : etc 디렉토리 안에 .txt 이름이 포함된 파일들을 출력한다.

예) sudo find / -name "*.txt" -exec cp {} ttdir \; : ttdir 디렉토리에 앞의 결과 값({})을 복사

 

less, more : text 파일을 읽는다. (화면 이동은 vi 명령어와 동일)

예) less file, ls -l |more

 

xxd [파일] : 파일을 16진수 또는 2진수 값으로 보여준다.

-b : 2진수

 

head : 파일의 앞 부분을 출력한다.

-n [linenumber] : 파일의 첫 라인부터 지정한 라인까지 출력

 

tail : 파일의 뒷 부분을 출력한다. 

-n : [linenumber] : 지정한 라인부터 끝까지 출력

예) -n 2 : 파일의 뒷 부분 두 라인 출력

예) -n +2 : 두 번째 라인부터 끝까지 출력


날짜, 시간 처리 명령

date : 현재 날짜, 시간 정보를 표시한다.

+ : 표시 형식을 나타낸다. (format을 정해준다.)

%y%m%d : 년(두 자리), 월, 일 출력

%Y : 4자리 연도 출력

%H%M%S : 시, 분, 초 출력

예) date +%Y%m%d : 20230907으로 출력

예) echo $(date +%M%S) : 화면에 명령($()) 결과값 date +%M%S 값을 출력


문자열 처리 명령

cat [파일] : 파일 내용을 화면에 출력한다. (여러 파일 지정 가능)

예) cat file1 : file1을 화면에 출력

예) cat file1 file2 > file3 : file1 file2를 동시에 화면 출력 후 file2에 저장(생성)

 

echo : 문자열이나 변수를 화면에 출력한다.

 

cut : 문자열에서 원하는 부분만 출력한다.

-c[number] : 위치 지정한 문자 출력 (2-, -3)

-d : 구분자 지정

-f : 구분자로 구분된 Field 출력

예) uname -a | cut -c7-

예) uname -a | cut -d ' ' -f3

 

tr : 문자열을 치환하거나 삭제한다. (transport)

-d : 문자를 삭제

예) uname -a | tr '[a-z]' '[A-Z]'

 

diff : 두 파일을 비교하여 다른 부분을 출력한다.

 

sort : Text를 정렬한다.

-k : 정렬 기준

-t : Field 구분자 (기본값은 공백과 탭)

-r : 역순 정렬

 

grep, egrap : 지정한 문자열을 포함하는 행을 검색한다.

-i : 대소문자 구분 없이 검색

-v : 해당 문자 제외

-n : 검색한 문자의 행을 출력

-l : 검새된 문자가 들어있는 파일 이름 출력

pattern : 문자열 또는 정규 표현식 (Regular Expression)으로 표현

 

awk : (Aho Weinberger kernighan) 문자열 처리 Script

$1, $2, $3 .. : 각 Line의 문자열에 대한 변수 


복사, 붙여넣기 => ctrl + insert, shift + insert