리눅스 기본 명령어
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 : 현재 작업 중인 파일의 정보 확인
'Computer Science > 시스템 프로그래밍' 카테고리의 다른 글
[시스템 프로그래밍] Chapter 5 (0) | 2024.05.08 |
---|---|
[시스템 프로그래밍] Chapter 4 (0) | 2024.04.12 |
[시스템 프로그래밍] Chapter 3 (0) | 2024.04.10 |
[시스템 프로그래밍] Chapter 2 (0) | 2024.04.06 |
[시스템 프로그래밍] Chapter 1 (0) | 2024.03.31 |