English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Linux 파일 및 디렉토리 관리

Linux의 디렉토리 구조는 나무 구조이며, 가장 상단 디렉토리는 루트 디렉토리입니다 /。

기타 디렉토리는 마운트를 통해 트리에 추가할 수 있으며, 언마운트를 통해 제거할 수 있습니다.

이 튜토리얼을 시작하기 전에 절대 경로와 상대 경로는 무엇인지 알아야 합니다.

  • 절대 경로:
    경로의 작성 방법은 루트 디렉토리에서 / 쓰기 시작하면 예를 들어: /usr/share/doc 이 디렉토리.

  • 상대 경로:
    경로의 작성 방법은 / 쓰기 시작하면 예를 들어 /usr/share/doc에 가기 위해 /usr/share/man 아래에서는 cd ..으로 작성할 수 있습니다/man 이것이 상대 경로의 작성 방법입니다.

디렉토리 처리의 일반적인 명령어

그래서 몇 가지 일반적인 디렉토리 처리 명령어를 보겠습니다:

  • ls(영문 전체 이름:list files): 디렉토리 및 파일 이름을 나열합니다

  • cd(영문 전체 이름:change directory):디렉토리를 전환합니다

  • pwd(영문 전체 이름:print work directory):현재 디렉토리를 표시합니다

  • mkdir(영문 전체 이름:make directory):새 디렉토리를 생성합니다

  • rmdir(영문 전체 이름:remove directory):빈 디렉토리를 삭제합니다

  • cp(영문 전체 표기:copy file): 파일이나 디렉토리를 복사합니다

  • rm(영문 전체 표기:remove): 파일이나 디렉토리를 삭제합니다

  • mv(영문 전체 표기:move file): 파일과 디렉토리를 이동하거나 파일과 디렉토리 이름을 변경합니다

あなたは以下を使用できます man [コマンド] 各コマンドの使用方法のドキュメントを確認するために、例えば:man cpを使用します。

ls (디렉토리 나열)

Linux 시스템에서 ls 명령은 가장 자주 실행되는 명령 중 하나입니다。

문법:

[root@www ~]# ls [-aAdfFhilnrRSt] 디렉토리 이름
[root@www ~]# ls [--color={never,auto,always}] 디렉토리 이름
[root@www ~]# ls [--full-time] 디렉토리 이름

옵션 및 매개변수:

  • -a  :모든 파일을 나열하며,숨은 파일(점으로 시작하는 파일)도 포함합니다(일반적으로 사용)

  • -d  :디렉토리 본체만 나열하며,디렉토리 내의 파일 데이터를 나열하지 않습니다(일반적으로 사용)

  • -l  :긴 데이터 행 나열,파일의 속성과 권한 등의 데이터를 포함합니다;(일반적으로 사용)

홈 디렉토리에 있는 모든 파일을 나열합니다(속성과 숨은 파일 포함)

[root@www ~]# ls -al ~

cd (디렉토리 전환)

cd는 Change Directory의 약자로, 작업 디렉토리를 변경하는 명령입니다。

문법:

 cd [상대 경로 또는 절대 경로]
#는 mkdir 명령으로 w를 생성합니다3codebox 디렉토리
[root@www ~]# mkdir w3codebox
#는 절대 경로로 w로 이동합니다3codebox 디렉토리
[root@www ~]# cd /root/w3codebox/
#는 상대 경로로 w로 이동합니다3codebox 디렉토리
[root@www ~]# cd ./w3codebox/
#은 자신의 홈 디렉토리로 돌아가는 것을 의미합니다,즉 /root 디렉토리
[root@www w3codebox]# cd ~
#은 현재 상위 디렉토리로 이동하는 것을 의미하며, 즉 /root의 상위 디렉토리를 의미합니다;
[root@www ~]# cd ..

다음에 몇 번 더操作을 해보면 cd 명령의 사용법을 잘 이해할 수 있을 것입니다.

pwd (현재 위치 디렉토리 표시)

pwd는 Print Working Directory 의 약자로, 현재 위치 디렉토리를 나타내는 명령입니다。

[root@www ~]# pwd [-P]

옵션 및 매개변수:

  • -P :실제 경로를 나타내며, 연결 (link) 경로를 사용하지 않습니다。

예시:현재 작업 디렉토리만 나열합니다:

[root@www ~]# pwd
/root   <== 디렉토리를 나타냅니다~

예시는 실제 작업 디렉토리를 나열하며, 연결 파일 본인의 디렉토리 이름이 아닙니다.

[root@www ~]# cd /var/mail   <==주의하세요,/var/mail은 연결 파일입니다
[root@www mail]# pwd
/var/mail         <==현재 작업 디렉토리를 나열합니다
[root@www mail]# pwd -P
/var/spool/mail        <==무슨 일이 있나요? -P 차이가 많이 나요~
[root@www mail]# ls -ld /var/mail
lrwxrwxrwx 1 root root 10 Sep  4 17:54 /var/mail -> spool/mail
# 여기서 이해가 되셨을까요? 왜냐하면 /var/mail은 연결 파일로, /var/spool/mail 
# 따라서, pwd를 추가하세요 -P 옵션을 추가하면 연결 파일의 데이터가 아닌 정확한 전체 경로를 표시합니다!

mkdir (새 디렉토리 생성)

새 디렉토리를 생성하려면 mkdir (make directory)을 사용하세요.

문법:

mkdir [-mp] 디렉토리 이름

옵션 및 매개변수:

  • -m 옵션을 추가하면 기본 권한(umask)의 표정을 보지 않고 직접 설정할 수 있습니다!

  • -p 옵션을 추가하면 필요한 디렉토리(상위 디렉토리 포함)를 재귀적으로 생성할 수 있습니다!

예제:/tmp 아래에서 여러 개의 새 디렉토리를 생성해 보세요:

[root@www ~]# cd /tmp
[root@www tmp]# mkdir test            <==test라는 이름의 새 디렉토리를 생성합니다
[root@www tmp]# mkdir test1/test2/test3/test4
mkdir: cannot create directory `test1/test2/test3/test4': 
No such file or directory        <==이 디렉토리를 직접 생성할 수 없습니다!
[root@www tmp]# mkdir -p  test1/test2/test3/test4

이를 추가하면 -p 옵션을 추가하면 여러 층의 디렉토리를 자동으로 생성할 수 있습니다!

예제: 권한이 rwx--x--x 의 디렉토리.

[root@www tmp]# mkdir -m 711 test2
[root@www  tmp]#  ls -l
drwxr-xr-x  3 root  root 4096 Jul 18 12:50 test
drwxr-xr-x  3 root  root 4096 Jul 18 12:53 test1
drwx--x--x  2 root  root 4096 Jul 18 12:54 test2

위의 권한 부분, 추가하지 않으면 -m을 강제로 설정하면 시스템이 기본 속성을 사용합니다.

m을 사용하면 -m, 예를 들어서 우리는 이렇게 주었습니다 -m 711 새 디렉토리 drwx에 주세요.--x--x의 권한.

rmdir (빈 디렉토리를 지우기)

문법:

 rmdir [-p] 디렉토리 이름

옵션 및 매개변수:

  • -p :위의『빈』디렉토리도 함께 지우세요

w를 지우세요3codebox 디렉토리

[root@www tmp]# rmdir w3codebox/

mkdir 예제에서 생성한 디렉토리/tmp 아래에서 지우세요!

[root@www  tmp]#  ls -l        <==존재하는 디렉토리의 수를 확인해 보세요?
drwxr-xr-x  3 root  root 4096 Jul 18 12:50 test
drwxr-xr-x  3 root  root 4096 Jul 18 12:53 test1
drwx--x--x  2 root  root 4096 Jul 18 12:54 test2
[root@www tmp]# rmdir test        <==직접 지울 수 있습니다, 문제가 없습니다
[root@www tmp]# rmdir test1  내용이 남아 있기 때문에 지울 수 없습니다!
rmdir:  `test'1':  Directory not empty
[root@www  tmp]#  rmdir -p  test1/test2/test3/test4
[root@www  tmp]#  ls -l         <==보세요, 아래 출력에서 test와 test1없어졌습니다!
drwx--x--x  2 root  root 4096 Jul 18 12:54 test2

이를 통해 -p 이 옵션을 사용하면 즉시 test1/test2/test3/test4 한 번에 제거합니다。

하지만 주의해야 할 것은, 이 rmdir는 비어 있는 디렉토리만 제거할 수 있으며, 비어 있는 디렉토리를 제거하려면 rm  명령어를 사용할 수 있습니다。

cp  (파일이나 디렉토리 복사)

cp는 파일과 디렉토리를 복사합니다。

문법:

[root@www  ~]#  cp  [-adfilprsu]  원본 파일(source)  목표 파일(destination)
[root@www  ~]#  cp  [옵션]  원본1 source2 source3 .... directory

옵션 및 매개변수:

  • -a:相当于 -pdr의 의미로, pdr에 대해 다음 설명을 참조하십시오;(일반적으로 사용)

  • -d:원본 파일이 링크 파일의 속성(link file)인 경우, 링크 파일 속성을 복사하지만 파일 본체를 복사하지 않습니다;

  • -f:강제(force)의 의미로, 목표 파일이 이미 존재하고 열을 수 없다면, 제거한 후 다시 시도합니다;

  • -i:목표 파일(destination)이 이미 존재하는 경우, 덮어쓰기 전에 행동을 묻습니다(일반적으로 사용)

  • -l:파일 본체를 복사하지 않고, 하드 링크를 생성하는 연결 파일을 만듭니다;

  • -p:파일의 속성도 복사하여 가고, 기본 속성을 사용하지 않습니다(백업에서 일반적으로 사용)

  • -r:재귀적으로 지속적으로 복사합니다. 디렉토리 복사 작업에 사용됩니다;(일반적으로 사용)

  • -s:시ンボ릭 링크 파일로 복사됩니다(『액세스』 파일이 됩니다);

  • -u:destination이 source보다 오래된 경우에만 destination을 업그레이드!

root 권한으로, root 디렉토리 아래의 .bashrc를 복사하여 /tmp 하위에,bashrc로 이름 지정

[root@www  ~]#  cp  ~/.bashrc /tmp/bashrc
[root@www  ~]#  cp -i  ~/.bashrc /tmp/bashrc
cp:  overwrite  `/tmp/bashrc'?  n   <==n은 덮어쓰지 않음, y는 덮어쓰기

rm  (파일이나 디렉토리 제거)

문법:

 rm  [-fir]  파일이나 디렉토리

옵션 및 매개변수:

  • -f  :force라는 의미로, 존재하지 않는 파일을 무시하고 경고 메시지가 나타나지 않습니다;

  • -i  :상호작용 모드,삭제하기 전에 사용자가 행동할지 여부를 묻습니다

  • -r  :再帰的に削除します。これは非常に危険なオプションです!!!

cpの例で作成したbashrcを削除します!

[root@www tmp]# rm -i bashrc
rm: remove regular file `bashrc'? y

もし追加すると -iのオプションは、間違ったファイル名を削除しないように自動的に尋ねます

mv(ファイルとディレクトリの移動、または名前の変更)

문법:

[root@www ~]# mv [-fiu] source destination
[root@www ~]# mv [options] source1 source2 source3 .... directory

옵션 및 매개변수:

  • -f  :forceの意味です。ターゲットファイルが存在する場合、確認せずに直接上書きします;

  • -i  :ターゲットファイル(destination)が存在する場合、上書きするかどうかを尋ねます

  • -u  :ターゲットファイルが存在し、sourceが新しい場合にのみアップグレード(update)します

ファイルをコピーし、ディレクトリを作成し、ファイルをディレクトリに移動します

[root@www ~]# cd /tmp
[root@www tmp]# cp ~/.bashrc bashrc
[root@www tmp]# mkdir mvtest
[root@www tmp]# mv bashrc mvtest

あるファイルをあるディレクトリに移動する場合、このようにします!

先ほどのディレクトリ名をmvtestに変更します2

[root@www tmp]# mv mvtest mvtest2

Linux ファイル内容確認

Linuxシステムでは以下のコマンドを使用してファイルの内容を確認します:

  • cat   最初の行からファイルの内容を表示します

  • tac   最後の行から表示し始めます。tacはcatの逆です!

  • nl   表示する際に、行号も出力します!

  • moreはページごとにファイルの内容を表示します

  • lessはmoreと似ていますが、moreよりも良いのは、前にページを戻れることです!

  • headは先頭の数行のみを表示します

  • tailは末尾の数行のみを表示します

あなたは以下を使用できます man [コマンド]各コマンドの使用方法のドキュメントを確認するために、例えば:man cpを使用します。

cat

最初の行からファイルの内容を表示します

문법:

cat [-AbEnTv]

옵션 및 매개변수:

  • -A  :相当於 -vETの統合オプションは、空白以外の特殊文字を列挙できます;

  • -b  :行號を列挙します。空白行以外の行にのみ行号を表示します。

  • -E: 끝의 줄바꿈 비트 $를 표시합니다;

  • -n: 행 번호를 인쇄합니다. 빈 행도 행 번호가 표시됩니다. -b의 옵션은 다릅니다;

  • -T: [tab] 키를 ^I로 표시합니다;

  • -v: 보이지 않는 특수 문자를 나열합니다;

검토 /etc/issue 파일의 내용:

[root@www ~]# cat /etc/issue
CentOS release 6.4 (Final)
Kernel \r on an \m

tac

tac 명령어는 cat 명령어와 반대로, 파일 내용이 마지막 행에서 시작으로 표시됩니다. 따라서 tac는 cat의 반대입니다! 예를 들어:

[root@www ~]# tac /etc/issue
Kernel \r on an \m
CentOS release 6.4 (Final)

nl

표시 행 번호

문법:

nl [-bnw] 파일

옵션 및 매개변수:

  • -b: 행 번호 표시 방법을 지정하는 것으로 주로 두 가지가 있습니다:
     -b a: 공백 행이 있든 없든 행 번호를 모두 표시합니다(类似 cat -n);
     -b t: 공백 행이 있으면, 공백 행은 행 번호를 표시하지 않습니다(기본 값);

  • -n: 행 번호 표시 방법을 나열하는 것으로 주로 세 가지가 있습니다:
     -n ln: 행 번호가 화면의 가장 왼쪽에 표시됩니다;
     -n rn: 행 번호가 자신의 컬럼에서 가장 오른쪽에 표시되고 0을 추가하지 않습니다;
     -n rz: 행 번호가 자신의 컬럼에서 가장 오른쪽에 표시되고 0을 추가합니다;

  • -w: 행 번호 컬럼이 차지하는 자리수.

예제 1: nl로列出 /etc/issue의 내용

[root@www ~]# nl /etc/issue
     1  CentOS release 6.4 (Final)
     2  Kernel \r on an \m

more

한 페이지씩 넘겨보세요.

[root@www ~]# more /etc/man_db.config 
#
# 자동으로 man.conf.in에서 생성된 것입니다.
# configure script.
#
# man.conf from man-1.6d
....(중간에 생략)....
--More--(28%) == 중요한 행은 여기에 있습니다! 커서도 여기에서 명령을 기다립니다

more 프로그램이 실행 중에, 사용할 수 있는 키는 다음과 같습니다:

  • 빈 공간 키 (space): 한 페이지 아래로 넘어가는 것을 의미합니다;

  • Enter: 한 행 아래로 돌아가는 것을 의미합니다;

  • /문자열: 현재 표시된 내용에서 '문자열'이라는 키워드를 찾아내는 것을 의미합니다;

  • :f: immediately display the filename and the current line number;

  • q: immediately leave more and stop displaying the file content.

  • b 또는 [ctrl]-b: 이전 페이지로 돌아가는 것을 의미합니다. 그러나 이 액션은 파일에만 유효하며 파이프라인에 무효입니다.

less

한 페이지씩 넘겨보세요. 다음 예제 출력:/etc/man.config 파일의 내용:

[root@www ~]# less /etc/man.config
#
# 자동으로 man.conf.in에서 생성된 것입니다.
# configure script.
#
# man.conf from man-1.6d
....(중간에 생략)....
:   <== 여기에 명령어를 입력할 수 있습니다!

less 실행 중에 입력할 수 있는 명령어는 다음과 같습니다:

  • 공백 키    :아래로 한 페이지로 이동;

  • [pagedown]:아래로 한 페이지로 이동;

  • [pageup]  :위로 한 페이지로 이동;

  • /문자串     :『문자串』을 아래로 검색하는 기능;

  • ?문자串     :『문자串』을 위로 검색하는 기능;

  • n         :뒤의 검색을 반복 (와 / 또는 ?에 대해 알고 싶다!)

  • N         :뒤의 검색을 반대로 반복 (와 / 또는 ?에 대해 알고 싶다!)

  • q         :less 프로그램을 벗어나기;

head

파일의 앞쪽 몇 행을 꺼냅니다

문법:

head [-n number] 파일

옵션 및 매개변수:

  • -n  :뒤에 숫자를 따르면, 표시할 행의 수를 나타냅니다

[root@www ~]# head /etc/man.config

기본적으로는 앞쪽 열 행을 표시합니다 10 행을 표시하려면 20 행,이렇게 해야 합니다:

[root@www ~]# head -n 20 /etc/man.config

tail

파일의 마지막 몇 행을 꺼냅니다

문법:

tail [-n number] 파일

옵션 및 매개변수:

  • -n  :뒤에 숫자를 따르면, 표시할 행의 수를 나타냅니다

  • -f  :뒤에 따르는 파일 이름을 나타냅니다. [ctrl]-c를 누르면 tail의 감지가 끝납니다

[root@www ~]# tail /etc/man.config
# 기본적으로는 마지막 열 행을 표시합니다! 마지막 열 행을 표시하려면 20 행,이렇게 해야 합니다:
[root@www ~]# tail -n 20 /etc/man.config