리눅스 <기본 명령어>

이선재·2022년 11월 28일
0

기술면접

목록 보기
4/4
post-thumbnail

지식습득을 위해 다음과 같은 커리큘럼 Knowre-Dev를 활용하여 진행합니다! Topic에 대하여 잘 학습하고 Checklist를 활용하여 자문자답을 진행하고 결과물을 만들고 추가적인 공부를 진행하는 형식으로 진행합니다.

이번 퀘스트를 통해 리눅스의 기본적인 구조와 기능에 대해 공부할 수 있습니다.

Topic. 리눅스

1. 기본 커멘드

cd(change directory) - 디렉토리 간 이동하는 명령어

<usage>

<기본 사용>
$ cd test1
$ cd (디렉토리 이름)

<루트(CentOS)로 이동>
$ cd ~/ 	

<루트부터 시작하는 절대경로로 주면 어디서든 이동 가능>
$ cd ~/test1/test1.1/test1.1_hi/	

<결과>


pwd(print working directory) - 현재 위치한 디렉토리 경로 출력하는 명령어

<usage>
$ pwd

<결과>


ls(list) - 디렉토리의 내용을 알파벳 순서의 리스트로 보여주는 다양한 옵션이 있는 명령어

<usage>

<기본 사용>
$ ls

<지정 사용>
$ ls test1 #test1 속 ls 명령어 실행

<모든 파일>
$ ls -a #숨김 파일도 포함 리스트화
$ ls -al #숨김 파일 긴 목록화

<크기별 정렬 출력>
$ ls -S
$ ls -lS #크기별 긴 목록화

<최근 수정  파일 탐색>
$ ls -lt

<결과>


cp(copy) - 디렉토리 및 파일을 복사할 때 사용되는 명령어

<옵션>
-i : 복사될 파일이 이름이 이미 존재할 경우, 사용자에게 덮어 쓰기 여부 출력
-b : 복사될 파일이 이름이 이미 존재할 경우, 백업파일을 생성
-f : 복사 될 파일이 이름이 이미 존재 할 경우, 강제로 덮어씀
-r : 하위 디렉토리 까지 모두 복사
-a : 원본 파일의 속성, 링크 정보까지 모두 복사
-p : 원본 파일의 소유자, 그룹, 권한 등의 정보까지 모두 복사
-v : 복사 진행 상태를 출력

<usage>

<기본 사용>
$ cp [옵션] [복사 대상] [복사 결과]
$ cp text.txt new_text.txt
$ cp text1.txt text2.txt [복사 될 경로 및 이름]
-->현재 경로의 지정 파일 복사 될 경로로 복사

<모든 파일>
$ cp * [복사 될 경로 및 이름]
-->현재 경로의 모든 파일 복사 될 경로로 복사

<경로 사용>
$ cp ~/new_test1/test1.1/test1.1_hi/cp_addr.txt plz_here.txt 
--> 디렉토리 속 파일 현재 위치에 복사

$ cp plz_here.txt ~/new_test1/test1.1/test1.1_hi/cp_addr.txt 
--> 현재 위치의 파일을 복사 될 경로로 복사

$ cp ~/file_to_addr.txt plz_here.txt
--> #다른 위치의 파일을 현재 위치로 복사

<디렉토리 복사>
$ cp -r test1 new_test1  
-->하위 디렉토리까지 복사 옵션

<결과-경로>

<결과-하위 디렉토리>

<결과-모든 파일>

mv(Move) - 파일,디렉토리 이름 변경 및 이동시키는 명령어

<usage>
<파일 이름 변경>
$ mv [기존 이름] [변경 될 이름]
$ mv a.txt new_a.txt

<파일을 디렉토리로 이동>
$ mv [이동할 파일] [이동할 디렉토리]
$ mv a.txt b.txt c.txt dir

<디렉토리 이동>
$ mv [이동시킬 디렉토리] [이동 될 디렉토리]
$ mv dir dir1

<결과-이름>

<결과-파일>

<결과-디렉토리>


mkdir(make directory) - 디렉토리를 생성하는 명령어

<옵션>
-m : 디렉토리를 생성할 때 권한을 설정 (defualt : 755)
-p : 상위 경로도 함께 생성
-v : 디렉토리를 생성하고 생성된 디렉토리에 대한 메시지를 출력

<usage>

<기본 생성>
$ mkdir dir1
$ mkdir dir1 dir2 dir3
--> 동시 3개 생성

<특정 경로에 생성>
$ mkdir ~/test2
$ mkdir ~/test2/test2_1
--> test2 생성 후 안에 test2_1 생성

<-p 옵션>
$ mkdir -p ./dir2/dir3
--> 하위 폴더 동시 생성, -p 옵션이 없을 경우 하위 폴더 검색 오류 발생

<-v 옵션>
$ mkdir -v hi_dir
--> 생성
 메시지 출력

<결과-경로>

<결과-옵션>


rm(remove) - 파일 및 디렉토리를 삭제하는 명령어

<옵션>
-r : 디렉토리 삭제시 하위 디렉토리를 삭제하는 옵션
-f : 파일, 디렉토리 삭제시 강제로 삭제하는 옵션
-v : 파일, 디렉터리 삭제시 결과를 보여주는 옵션

<usage>
$ rm [옵션] [삭제 대상]

<-f 옵션>
$ rm -rf dir1

<-v 옵션>
$ rm -rvf dir1
-->디렉토리 삭제에 대한 문자열 출력

touch - 크기 0의 파일 생성 및 파일의 날자 및 시간을 변경해주는 명령어

<옵션>
-t : 사용자가 원하는 시간을 설정
-m : 서버 시간으로 설정 (default)

<usage>
$ touch [파일명]
--> 파일 존재하지 않을 시 크기 0의 새로운 파일 생성

<기본적 사용>
$ touch b.txt
--> 현재 서버 시간으로 갱신

<-t 옵션>
$ touch -t 202212250000 d.txt

<결과>


ln(link) - 하드, 심볼릭 링크를 생성하는 명령어

🙌 링크를 걸게 되면 경로 축소가 가능하고, 파일 내부동작으로 파일 안정성을 높힐 수 있다 🙌

하드링크 - link 파일 및 원본 파일이 같은 inode를 가르키므로 수정시 두 수정 내역이 원본 파일 데이터에 영향을 준다. 그러므로 원본 파일이 삭제가 되더라도 링크 파일을 통해 사용이 가능하다.

소프트링크 - 원본 파일 외 새로운 링크 파일을 만드므로 데이터에 영향을 줄 수 없다. 디렉토리 경로 축소시 대게 사용된다.

<옵션>
-s : 심볼릭 링크 설정시 사용
-S : 백업 파일 생성시 원하는 suffix 지정 가능
-v : 링크를 만드는 정보를 자세히 출력
-b : 대상 파일 존재 시 백업 파일을 만들고 링크 파일 생성
-f : 링크 파일 존재 시 삭제하고 생성

-i : 대상 파일 존재 시 파일 삭제 여부를 물음

<usage>
$ ln [옵션] [링크 대상] [생성할 링크 파일 이름]

<하드  소프트 링크 생성>
$ ln link_test hardlink
$ ln -s link_test softlink

<결과>


하드링크는 원본 파일과 같은 inode 값을 가진다. 원본 파일이 삭제되어도 열람이 가능하다.


echo - 입력한 문자열을 출력하는 명령어

리다이렉션을 사용하여 파일 생성에 사용된다.

<usage>
$ echo [문자열]

<리다이렉션 사용>
$ echo hi > hi.txt
--> 대상 파일이 없을시 생성 및 존재할 시 덮어쓰기
$ echo hi >> hi.txt
--> 대상 파일이 없을시 생성 및 존재할 시 이어쓰기

<결과>


cat(concatenate) - 파일 및 txt 내용을 출력하는 명령어

<usage>
$ cat [옵션] [파일 이름]

<리다이렉션 사용>
$ cat > hi.txt            ( > 생성 및 덮어쓰기 )
hi                        --> 입력 후 control+d
$ cat > hello.txt         ( > 생성 및 덮어쓰기 )
hello                     --> 입력 후 control+d
$ cat >> hi.txt           ( >> 이어쓰기 )
Todd!                     --> 입력 후 control+d
$ cat hi.txt
hi
Todd!

<결과>


tail - 지정한 행까지 파일의 마지막부터 출력하는 명령어

<옵션>
-f : tail을 종료하지 않고 파일의 업데이트 내용을 실시간으로 계속 출력
-n (라인 수) : 파일의 마지막줄부터 지정한 라인수까지의 내용을 출력
-c (바이트 수) : 파일의 마지막부터 지정한 바이트만큼의 내용을 출력
-q : 파일의 헤더와 상단의 파일 이름을 제외 후 내용만 출력
-v : 출력하기전에 파일의 헤더와 이름 출력한 후 파일의 내용을 출력

<usage>
$tail [옵션] [파일명]
$tail hi.txt

find - 리눅스 파일시스템에서 파일을 검색 시 사용되는 명령어

<표현식>
-name : 해당 이름의 파일을 검색 해당 이름에는 정규 표현식을 활용 가능
-type : 지정된 파일 타입에 해당하는 파일 검색
-user : 해당 유저에게 속한 파일 검색
-empty : 빈 디렉토리 혹은 크기가 0인 파일 검색
-delete : 검색된 파일 혹은 디렉토리 삭제
-exec : 검색된 파일에 대해 지정된 명령 실행
-path : 지정된 문자열 패턴에 해당하는 경로에서 검색
-print : 검색 결과를 출력. 검색 항목은 newline으로 구분 (default)
-print0 : 검색 결과를 출력. 검색 항목은 null로 구분
-size : 파일 크기를 사용하여 파일 검색
-mindepth : 검색을 시작할 하위 디렉토리 최소 깊이 지정
-maxdepth : 검색할 하위 디렉토리의 최대 깊이 지정
-atime : n일 이내에 액세스된 파일을 찾음
-ctime : n일 이내에 만들어진 파일을 찾음
-mtime : n일 이내에 수정된 파일을 찾음
-cnewer file : 해당 파일보다 최근에 수정된 파일을 찾음
<usage>
$ find [옵션] [경로] [표현식]
$ find . -name "*txt*"

ps(process) - 프로세스 목록과 상태를 출력해주는 명령어

<옵션>
-A : 모든 프로세스
-N : -A 옵션과 비슷하다 실행한 ps 프로세스만 제외 출력
-a : 세션 리더 및 터미널과 관련되지 않은 프로세스를 제외 모든 프로세스 출력
-d : 세션 리더를 제외한 모든 프로세스를 출력
-e : 커널 프로세스를 제외한 모든 프로세스를 출력
T : 현 터미널에서의 모든 프로세스를 출력
a : 한 터미널의 사용자 고유 프로세스를 출력
r : 현재 실행중인 프로세스를 출력
x : 터미널 없는 프로세스를 출력

<usage>
$ ps [옵션]

kill - 프로세스에 특정 signal을 보내는 명령어

🙌kill은 대게 프로세스를 종료시킬 때 사용된다🙌

<usage>
$ kill [옵션 및 시그널] PID

<시그널 확인>
$ kill -l

grep() - 특정 파일에서 지정한 문자열 및 정규포함식을 출력해주는 명령어

<옵션>
-c : 일치하는 행의 수를 출력
-i : 대소문자를 구별 X
-v : 일치하지 않는 행만 출력
-n : 포함된 행의 번호를 함께 출력
-l : 패턴이 포함된 파일의 이름을 출력
-w : 단어와 일치하는 행만 출력
-x : 라인과 일치하는 행만 출력
-r : 하위 디렉토리를 포함한 모든 파일에서 검색.
-m 숫자 : 최대로 표시될 수 있는 결과를 제한
-E : 찾을 패턴을 정규 표현식으로 검색
-F : 찾을 패턴을 문자열로 검색

<usage>
$ grep [옵션] [패턴] [파일명]

<특정 문자열 찾기>
$ grep 'Todd' hi.txtg
$ grep 'h' *

+보강 예정

<결과>


wc(word count) - 바이트, 문자, 단어 그리고 줄(라인) 수를 출력해주는 명령어w

<옵션>
-c : 바이트 수
-m : 문자 수
-l : 개행 수
-w : 문자 수

<usage>
$ wc [옵션] [파일명]

<바이트 >
$ wc -c wc_test.txt

<문자 >
$ wc -m wc_test.txt

<개행 >
$ wc -l wc_test.txt

<문자 >
$ wc -w wc_test.txt

<결과>


df(disk free) - 리눅스 시스템 전체 디스크 사용량을 출력하는 명령어

🙌파일시스템, 디스크 크기, 사용량, 여유공간, 사용률, 마운트지점 순이다.🙌

<usage>
$ df [옵션]
$ df -h
--> 기가, 메가 형식으로 출력

<결과>


du(disk usage) - 특정 디렉토리를 기준으로 디스크 사용량 출력하는 명령어

<usage>
$ du [옵션]
$ du -h
--> 기가, 메가 형식으로 출력

pipe - 명령어 간 결과를 연결해주어 최종 결과를 도출해주는 명령어

🙌리눅스라는 요리의 조미료 역할🙌

<usage>
$ cat hi.txt | grep hi

<결과>


참고-코딩팩토리

profile
지적을 환영하는 인프라 냠냠을 시도하는 취준생

0개의 댓글