Computer Science/시스템 프로그래밍

[시스템 프로그래밍] LInux

seungwon9201 2024. 3. 31. 19:27

리눅스 기본 명령어

man : 도움말 보기

pwd(print working directory) : 현재 작업 디렉터리 확인

cd(change directory) : 작업할 디렉토리를 변경, "~"는 홈 디렉터리, ".. "은 작업 디렉터리를 부모디렉터리로 이동

ls(list) : 파일이나 서브디렉토리 목록을 확인

- -l : 파일의 부가정보를 더 출력

- -t : 마지막 수정시간을 기준으로 출력

- -S : 크기를 기준으로 출력

- -h : 사람이 읽기쉬운 크기단위로 바꿔서 출력

- -r : 순서를 뒤집어서 출력

ex) ls -ltr : long list로 출력하고 수정시간을 기준으로 출력하고 그 순서를 오래된 순으로 바꿔서 출력

      ls *.c -l : c로 끝나는 파일을 long list로 출력

mkdir(make directory) : 디렉터리를 하나 만들자

rmdir(remove directory) : 비어있는 디렉터리를 제거

cat : 파일 전내역을 한번에 출력

less : 한 화면에 표시할수있는 만큼만 출력

head : 파일의 처음 10줄만 출력

tail : 파일의 마지막 10줄만 출력

cp(copy) : 복사

mv : 파일을 옮기거나 이름을 바꾸기

rm : 파일을 삭제(비어있지 않아도 삭제가 가능)

wc(word count) : 글자수, 단어의 개수, 줄을 세주기

grep : 특정 단어를 가지고 있는 파일 찾기

 

File permissions

rwx : 읽기쓰기실행권한

  • owner(user) : u
  • group : g
  • others : o

chmod(change mode) : 권한을 변경하자

ex) chmod go-w test.txt : group과 others에게 test.txt파일의 쓰기 권한을 삭제하자

 

ps(process state) : 프로세스 정보 확인

kill : 강제로 종료하는 명령어

 

piping

  • program_a | program_b : 두 개의 명령어를 연결하자. a의 명령어의 실행결과가 b의 인풋으로 전달

ex) ls -l | wc를 입력하면 ls-l의 실행결과가 wc의 인풋으로 전달되어서 wc는 ls-l에 있는 입력값을 보고 그에 맞는 word cout값을 출력

  • program_a > file.txt : 아웃풋의 방향을 바꾸자. 왼쪽 명령어의 실행결과과 화면에 나오는 게 아니고 오른쪽 파일에 출력

ex) ls -l > test.txt입력 시에 cat test.txt를 입력하게 되면 ls-l에 담긴 정보가 출력

  • program_a < input.txt : 인풋의 방향을 바꾸자 

 ex) wc < test.txt 입력시 test.txt에 담긴 인풋값을 wc명령어가 읽어서 그에 관한 정보를 출력

 

gcc command 

hello.c파일을 컴파일하기 위해서 gcc hello.c를 입력한다. 그럼 a.out파일이 생성되고 a.out파일을 입력하면 출력이 됨

gcc hello.c -o hello를 입력하면 a.out을 입력하지 않고 hello를 입력을 하면 출력이 된다.


Vi Editor

 

vi -r filename : vi로 편집하다가 비정상적으로 종료된 swp파일을 찾아서 오픈

vi -R filename : 읽기 전용 모드로 실행

vi +/patttern filename : 해당패턴을 찾아서 커서를 그 패턴이 있는 라인으로 이동해서 이 파일을 실행

 

:w : 저장

:w def : 다른 이름(파일명)으로 저장

:w!  def : 강제로 파일이름을 바꿔서 저장

:r def : 편집 중인 문서에 다른 파일을 추가, 다른 문서내용을 추가하고 싶을 때 사용

:f : 간단한 파일의 정보를 아래에 출력

:q : 나가기

:q! : 강제로 나가기

ZZ pr :x : 문서의 변경사항이 있을 때에만 저장

:wq : 저장하고 나가기

 

Insert 명령어

i, <esc> :  현재커서위치 그대로 insert모드

o(밑), O(위) : 현재 위치 밑(위)에 한 줄을 추가하고 insert모드

a, A : 현재커서 바로 다음에 insert모드, 현재라인 가장 끝으로 이동해서 insert모드

I : 현재 라인의 가장 첫 부분에 insert모드

 

ndm : n개를 지우자 m명령어

-m자리에 올 명령어들-

d : 이 줄을 지우자

w :  word하나 삭제

W : whitespace 삭제

} : 다음 문단 삭제

^ : 이 줄의 앞쪽까지 다 삭제

/pattern : 현재 위치에서 검색어가 나올 때까지 삭제

n : 위에 명령어를 사용한 후에 같은 검색어가 나올때까지 삭제

fa : 현재 줄에서 a라는 문자가 나올때까지 a를 포함해서 삭제

ta : 현재 줄에서 a라는 문자가 나올때까지 a를 제외하고 삭제

nx : 캐릭터 하나씩 지우기(키보드에서 delete와 같음)

nX : 이전의 캐릭터 지우기(키보드에서 backspace와 같음)

rx : 현재 위치 글자를  x로 바꿈

Rtext : 현재 커서 위치에서부터 뒤에 입력한 텍스트를 새로 입력한 텍스트로 덮어씀

cd : 뒤에 수정하고자 하는 범위를 지정 ex) cw는 현재 커서에 위치한 워드를 새로 입력하는 워드로 변경

 

긴 문단으로 분리하고자 할 때 r + enter (그냥 insert모드 들어가서 엔터 쳐도 됨)

두 개의 문단을 하나로 합치고 싶을 때 J,  합치고자 하는 부분에 커서를 두고 J를 누르면 합쳐짐

 

방향(Navigation) 명령어

h, j, k, i : ←↓→↑

w, W : 다음 오른쪽방향 앞쪽 word, whitespace word로 이동

e, E : 다음 오른쪽방향 뒤쪽 word, whitespace word로 이동

b, B : 다음 왼쪽 방향으로 word, whitespace word로 이동

(, ) : 문장으로 ← →

{, } : 문단으로 ← →

0,& : 현재커서에서 맨 앞쪽, 맨 뒤쪽으로 이동

^ : 그 라인의 처음(빈칸제외)으로 이동

n| : n번째 Column으로 이동

 

검색(Search) 명령어

/text : text의 내용을 현재커서 다음 방향부터 찾기

? text : 위와 반대

n : 검색한 text의 다음 text로 이동

N : 위와 반대

 

복사 붙여 넣기 명령어

[n] Y or yy : 현재커서에 위치한 라인을 복사

[n] ym : 복사하려는 범위를 라인이 아니라 다른 범위(m)로 지정가능 ex) 2yW : 스페이스로 구분된 단어 두 개를 복사

P, p : 커서의 이전방향으로, 커서의 다음방향으로 붙여 넣기

 

substitute/replace 명령어

:[address] s /old/new/[g]

n : 줄 숫자

n, m : 줄 범위

1,. : 첫 번째 줄에서 현재 커서 위치까지

.,$ : 현재 커서에서 마지막 줄까지

ex) :1,$ s/old/new/g : 전체 파일(1,$)에 있는 모든(g) old를 new로 바꾸자

 

알면 좋은 것

:set nu, nu! : 라인줄표시, 삭제

:! cmd : 잠깐 밖으로 나가서 ls 확인

:sh : 잠깐 밖으로 나가서 shell 확인

:↑ or ↓ : 이전에 실행했던 명령어들 소환

:f : 현재 작업 중인 파일의 정보 확인