Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

나의 IT일지

디렉토리, 파일 기본 명령어 본문

운영체제/Linux - CentOs

디렉토리, 파일 기본 명령어

세레프 2023. 2. 26. 07:25

 운영체제는 컴퓨터를 편리하고, 효율적으로 사용하기 위해 사용하는 환경으로, 디렉토리와 파일로 구성되어 있다. 그래서 우리는 Linux 운영체제를 사용하기 위해선, Linux에서 사용하는 디렉토리, 파일에 대한 기본 명령을 알아야 한다. 

 

디렉토리

 Linux에서의 디렉토리 구조는 root 디렉토리(/)를 최상위 디렉토리로 기준으로 하위 디렉토리를 형성하는 계층적 트리 형식으로 구성되어 있다. 이때, 디렉토리파일을 저장하기 위한 저장소로, Window에서는 폴더라고 불린다. 

 디렉토리마다 사용하는 용도가 다르기에 디렉토리 이름을 보면 해당 디렉토리에 있는 파일들은 어떤 용도로 사용되는지 알 수 있다.

  • / : 최상위 디렉터리(디렉터리의 시작), root사용자가 사용하는 디렉터리
  • /root/ : 최고 관리자의 홈 디렉터리
  • /bin/: 기본명령어 디렉터리
  • /boot/ : 시스템 부팅 관련 디렉터리로, 커널과 부트로더가 저장되어 있다
  • /dev/ : 장치 관련 디렉터리
  • /etc/ : 모든 시스템의 환경설정이 저장되어 있는 디렉터리 
  • /home/ :일반 사용자의 홈 디렉터리 
  • /lib/ : 필요에 따라 부르는 동적 파일이 들어 있는 디렉터리
  • /media/ :주변장치 및 추가장치 관련 디렉터리 
  • /sbin/ : 시스템관련 명령어 디렉터리
  • /tmp/ : 파일공유할 때 임시저장하는 디렉터리(특수비트가 있음)
  • /usr/ : 일반 사용자가 사용할 수 있는 명령어 디렉터리
  • /var/ : 시스템 운영중, 변동되는 파일을 저장하는 디렉터리 ex)log file, DNS, Mail

 

디렉토리 기본 명령어

  • mkdir [옵션] [디렉토리명] : 현재 위치하고 있는 디렉터리안에 디렉터리 생성하는 명령어로, 디렉토리명 앞에 "."을 사용하면, 해당 디렉토리는 숨김 디렉토리로 생성 할 수 있으며, 경로를 디렉토리명으로 사용하게 되면, 해당 경로에 디렉토리를 생성한다.
옵션 예시
-p : 디렉터리명에 있는 경로에 있는 모든 디렉터리 경로대로 생성 mkdir dir2 dir3 dir4 : 해당 디렉토리에 dir2 dir3 dir4 생성

mkdir dir/mk : dir디렉토리 안에 mk디렉토리 생성

mkdir dir/mk mk1 :이건 안되는 명령, 경로를 통해 생성할 경우 1개의 디렉토리만 생성가능

 

  • rmdir [디렉토리명] : 현 위치의 디렉터리안에 비어있는 디렉터리만 삭제할 수 있는 명령어
예시
rmdir dir2 dir3 dir4 : 해당 디렉토리에 dir2 dir3 dir4 삭제

rmdir /home/dir1/dir2 : 홈디렉토리에 있는 dir1에 있는 dir2를 삭제

 

파일 기본 명령어

  • touch [옵션] [파일명]: 빈 파일 생성하는 명령어로, 생성된 파일의 수정날짜 변경할 때도 사용한다.
옵션 touch의 응용명령어
-t : 생성시간 지정
(시간지정의 구조는 "년/월/일/시/분/.초" )
touch test.txt : test.txt 파일을 디렉터리에 생성

touch test.txt test1.txt test2.txt : test.txt test1.txt test2.txt 파일을 디렉터리에 생성

touch -t 202302221250.32 test6.txt : test6.txt파일의 생성시간을 23.2.22 12:50:32로 지정후 생성

 

 위의 터미널은 응용 명령어를 사용하여 파일을 생성한 것으로, test4.txt를 보면, 다른 파일과 다르게 생성일이 다른 것을 알 수 있다. 이는 옵션"-t"를 통해 파일의 생성일을 변경해서 나타난 현상이다.

 

  • cp [옵션] [원본 파일 경로] [복사 파일 경로 or 덮어쓸 파일 경로]: 원본파일을 복사본 파일명으로 복사할 때 사용하는 명령어
    • 디렉터리 내에 복사본 파일명과 같은 파일명이 있을 경우, 덮어쓰기
    • 복사 파일 경로자리에 디렉토리 경로를 작성해서, 경로에 해당하는 디렉토리에 파일을 복사 가능, 이때 복사 파일명은 원본 파일명과 동일
옵션  cp 응용 명령어
-r : 디렉토리를 복사할 때 사용

-i : 동일명으로 파일을 복사할 때 복사여부확인

-f : 강제복사

-b : 기존파일의 백업파일을 생성 후 복사

-S : 백업파일의 확장자(~)를 변경

-u : 원본파일이 덮어 쓸 파일보다 최신일 경우에만 덮어쓰기
cp test.txt test1.txt : test.txt파일을 test1.txt라는 이름의 파일로 복사

cp /etc/passwd passwd.txt : 현 디렉토리에 /etc에 있는 passwd라는 파일을 passwd.txt라는 이름으로 복사

cp /etc/passwd /home/mdir/dir1 : dir1디렉토리에 /etc에 있는 passwd라는 파일을 복사

cp -r dir2 /home/mdir/dir1 : 현 디렉토리에 있는 dir2디렉토리를 dir1디렉토리에 복사

cp -b test.txt test2.txt : test2.txt파일의 백업파일을 만든 뒤, test.txt파일을 test2.txt라는 이름의 파일로 덮어쓰기, 이때 백업파일 확장자는 "~"이다.

cp -b -S .back test.txt test1.txt : test1.txt파일의 백업파일을 만든 뒤, test.txt파일을 test1.txt라는 이름의 파일로 덮어쓰기,이때  백업파일 확장자는 ".back"이다.

cp -u test1.txt test.txt : test1.txt파일이 test.txt파일보다 최신일경우, 덮어쓰기 여부 확인

 위의 터미널은 1~6번의 응용 명령어를 사용한 결과이며, 원본을 삭제하지 않고 복사본 생성하는 것을 볼 수 있다. 

 7번 응용 명령어를 사용하면, test.txt의 생성시간이 변화하는 것을 볼 수 있다. 만약 7번 응용 명령어인 "cp -u test1.txt test.txt"가 아닌 "cp -u test.txt test1.txt"를 입력하면 덮어쓰기 여부를 묻지 않는다. 왜냐하면 test1.txt가 test.txt보다 생성시간이 늦기때문에, 덮어쓰기가 되지 않는다.

 

  • mv [옵션] [원본 파일 or 디렉터리] [이름 변경할 파일명 or 이동할 디렉터리 위치] : 원본파일을 디렉터리에 옮길 때 사용하는 명령어, 원본 파일명을 변경할 때 사용하는 명령어이며, 파일을 이동하게 되면, 원본은 삭제되고 복사본을 생성하는 형태를 갖는다.
옵션 mv 응용 명령어
-i : 동일명으로 파일을 복사할 때 복사여부확인

-f : 강제복사
mv test.txt test3.txt : test.txt파일을 test3.txt라는 이름의 파일로 이름 변경

mv dir2 dir1: dir2디렉토리를 dir1디렉토리로 이름 변경하며, 만약 위치해 있는 디렉토리에 dir1, dir2가 있을경우, dir2를 dir1으로 이동

 이 터미널은 "mv test.txt test3.txt"를 사용하기 전과 후이며, test.txt파일이 test3.txt파일로 바뀐 것을 확인 할 수 있다.

 이 터미널은 위의 터미널의 연장선으로, dir2가 dir1으로 바뀐 것을 확인 할 수 있다. 만약 현 디렉터리에 dir1이랑 dir2가 있을 경우에서 mv dir2 dir1를 입력하면 dir2가 dir1으로 이동하게 된다.

 

  • rm [옵션] [파일명] : 파일을 삭제하기 위한 명령어, "*"을 통해 다수의 파일을 지정할 수 있으며, 디렉토리를 삭제하는 경우,  디렉터리안에 비어있지 않은 디렉터리도 삭제할 수 있다. 
옵션 예시
-r : 디렉터리를 삭제할 때 사용

-f : 강제로 (묻지않고)

-i : 삭제 여부 확인
rm -rf dir2 dir3 dir4 : 해당 디렉토리에 dir2 dir3 dir4 하위디렉터리 상관없이 강제로 삭제

rm -rf *: 해당 디렉토리에 있는 모든 파일 디렉토리 삭제

rm -rf d*: 해당 디렉토리에 있는 첫이름이 d인 파일 디렉토리 삭제

 

파일 내용 기본 명령어

 위의 명령어는 파일을 생성하고 복사하고 이동시키는 파일 관련 기본명령어들이다. 그렇다면 파일의 내용을 작성하고 수정하며, 삭제하는 파일 내용 관련 기본 명령어도 필요 할 것이다.

 

vi 편집기

  • vi [옵션] [파일]: 모드형 파일 편집기로, 파일의 내용을 작성할 수 있게 하는 편집기이다. 만약 디렉터리에 파일명을 가진 파일이 없을 경우, 해당 파일명을 가진 새로운 파일이 임시적으로 생성된다.

 vi편집기에는 3가지 모드가 있는데, 편집기의 내용을 단축키를 통해 명령할 수 있는 모드명령모드, 파일의 내용을 적을 수 있는 모드편집모드, 편집기를 설정 및 파일 저장등 명령어로 명령 할 수 있는 모드실행 모드가 있다. 

  

 vi편집기의 모드를 전환하는 방법은 모드마다 다르다. 명령모드에서 편집모드로 전환하는 방법은 "i,a,o"이며, 편집 모드에서 명령 모드 전환하는 방법은 "ESC", 명령 모드에서 실행 모드 전환하는 방법은 ": , /, ?"가 있다.

명령 모드 <=======================> 편집 모드 <=======================> 실행 모드
명령모드 단축키 X 실행 모드 명령어
x : 한 문자 지우기 = "del"

dw : 한 단어 지우기 (space로 구분되어 있지 않으면 한단어)

u : 되돌리기

ndd : n줄 잘라내기 ex)3dd: 커서기준 3줄 잘라내기

nG : n줄로 이동 ex)3G: 3줄로 이동

nyy : n줄 복사 ex)3yy: 커서기준 3줄 복사

p : 붙혀넣기
:set number (=:se nu) : 편집기에 행번호 출력

:set nonumber (=:se nonu) : 행번호 지우기

:%s/[기존문자]/[바꿀 문자]/g : 파일내의 기존문자를 바꿀문자로 전부 치환

:6,10s/[기존문자]/[바꿀 문자]/g : 파일내의 기존문자를 6행~10행까지 바꿀문자로 치환

?[찾을 문자] : 파일내 문자중 찾을 문자와 똑같은 문자를 찾음(n:커서이전에 있는 문자 서치,N: 커서 이후에 있는 문자 서치)

:q :저장하지 않고 나가기

:wq : 저장하고 나가기

:q! : 저장하지 않고 강제로 나가기

:wq! : 저장하고 강제로 나가기

:wq [파일명] : 디렉터리에 파일명을 가진 파일 생성 후, 해당 내용을 저장

위의 단축키와 명령어를 통해 test1.txt에 저장한 내용

vi편집기 환경설정 파일
해당 사용자의 홈 디렉토리의 ".vimrc"파일로, 해당파일은 만들어져 있는 파일이 아니다. "set number"를 입력후 저장하면, vi편집기로 연 파일은 줄번호가 설정된다.

 

파일 내용 추가 / 복사 출력 명령어

  • cat [옵션] [파일] | [조합할 명령] : 파일에 저장되어 있는 내용을 출력하는 명령어로, text모드로 출력한다. grapic모드로 출력하는 명령어인 "gedit[파일]"도 있다.
  옵션 페이지 단위 출력방법 리다이렉션(>)의 활용방법
종류 -n : 파일 내용에 행번호 출력 more : 한 페이지씩 볼 수 있도록 함(enter(1줄), space(20줄) 사용) 

less : 한 페이지씩 볼 수 있도록 함(방향키 사용 가능)
cat[파일1] > [파일2] : 표준 출력, 파일1의 내용을 파일2에 덮어쓰기

cat[파일1] >> [파일2] : 파일1의 내용을 파일2의 내용에 추가

cat > [파일명] : 터미널에 입력한 내용을 파일명의 파일에 저장 (ctrl+d에 입력종료)

[리스트] > [파일명] : 리스트에 있는 내용을 파일명의 파일에 저장
응용 cat -n passwd : passwd를 행번호가 있는 상태로 출력 cat passwd | more (= more passwd.txt) : passwd를 한페이지씩 볼 수 있도록 함

cat passwd.txt | less
(= less passwd.txt): passwd를 한페이지씩 볼 수 있도록 함

ls -l | more 
: ls -l의 목록을 한 페이지씩 볼 수 있도록 함
ls > ls.txt : 디렉토리 내에 있는 파일과 디렉터리의 목록을 ls.txt에 저장

history > history.txt : 현재까지 사용한 명령어 사용한 목록을 history.txt에 저장

more passwd의 결과
리다이렉션을 통해 history를 파일로 저장한 결과

 

 

파일 내용 찾기 명령어

  • grep [옵션] [내용] [파일] : 파일에 있는 내용중에 찾고싶은 내용을 찾을 때 사용하는 명령어
옵션 응용 명령어
-n : 해당 내용 행번호 출력 grep root passwd : passwd 파일에서 root라는 단어를 찾아서 출력

grep -n root passwd 
: passwd 파일에서 root라는 단어를 찾아서 위치하고 있는 행번호와 같이 출력

grep -n root passwd의 출력

 

파일 내용 부분출력

  • head [옵션/설정값] [파일] : 위에서부터 설정값만큼 출력하는 명령어 
  • tail [옵션/설정값] [파일] : 아래에서부터 설정값 출력하는 명령어
옵션 응용 명령어
-n [설정값] : 설정값 만큼 출력

-f : 내용이 변경될 때 마다 파일 추적
head -n 5 text1.txt  : text1.txt파일의 내용 중, 위에서 5줄 출력

tail -n 5 text1.txt
: text1.txt파일의 내용 중, 아래에서 5줄 출력

tail -n 5 text1.txt 의 출력

줄, 단어수, 문자수, 출력 명령어

  • wc [옵션] [파일]: 파일에 저장되어 있는 내용의 줄, 단어수, 문자수를 출력해 주는 명령어
옵션 응용 명령어
-l : 행 수를 출력

-w : 단어 수를 출력 

-c : 문자 수를 출력
wc test1.txt : test1.txt에 저장되어있는 행, 단어, 문자의 수를 출력

wc -l test1.txt : test1.txt에 저장되어있는 행의 개수를 출력

wc -w test1.txt
: test1.txt에 저장되어있는 단어의 개수를 출력

wc -c test1.txt
: test1.txt에 저장되어있는 문자의 수를 출력

응용 명령어를 사용한 결과

 

파일 분할 명령어

  • split [옵션/설정값] [파일명] [분할 파일명] : 파일의 내용을 분할하여 저장하는 명령어로, 분할 파일명은 자동적으로 x라는 이름을 가지며, aa같이 문자로 구분하여 저장이 된다. 만약 분할 파일명을 지정하면, 분할 파일명을 가진 상태에서 구분이 진행된다.
옵션 응용 명령어
-l : 행 수단위로 분할

-b : 문자수(바이트)단위로 분할

-d : 파일명에 숫자 추가

-a : 추가 파일의 문자의 자릿수 

--additional-suffix : [변경 확장자]: 확장자의 이름 변경
split -l 5 test1.txt file_ : test1.txt의 내용을 5줄 단위로 분할하고, 첫 시작 이름이 file_인 파일로 저장

split -l 5 -d test1.txt file_ : test1.txt의 내용을 5줄 단위로 분할하고, 첫 시작 이름이 file_이며 숫자로 파일을 구분해서 저장
split -l 5 -d --additional-suffix : .txt test1.txt file_ : test1.txt의 내용을 5줄 단위로 분할하고, 첫 시작 이름이 file_, 확장자는 .txt로하여 숫자로 파일을 구분해서 저장

split -l 5 -d test1.txt file_의 출력 결과

 

'운영체제 > Linux - CentOs' 카테고리의 다른 글

네트워크와 프로세스  (0) 2023.03.06
디스크, 파티션 관리  (1) 2023.03.05
데이터 관리 기본 명령어  (1) 2023.02.27
Linux의 부팅과 기본 명령어  (0) 2023.02.20
운영체제와 Linux  (0) 2023.02.19
Comments