이 기사에서는 RHCSA 파트 2: 파일 및 디렉토리 관리를 통해 시스템 관리자의 일상 업무에서 필요한 몇 가지 필수 기술을 검토하겠습니다.

파일 및 디렉토리 생성, 삭제, 복사 및 이동
파일 및 디렉토리 관리는 모든 시스템 관리자가 보유해야 하는 중요한 능력입니다. 이에는 빈 파일을 생성하고 삭제하는 능력(각 프로그램의 구성의 핵심) 및 디렉토리(파일 및 다른 디렉토리를 구성하는 위치)를 생성하고 기존 파일의 유형을 확인하는 능력이 포함됩니다.
touch 명령어는 빈 파일을 생성하는 데만 사용되는 것이 아니라 기존 파일의 액세스 및 수정 시간을 업데이트하는 데도 사용될 수 있습니다.

file [파일명]
을 사용하여 파일의 유형을 확인할 수 있습니다(편집을 위해 선호하는 텍스트 편집기를 실행하기 전에 유용합니다).

그리고 삭제하려면 rm [파일명]
을 사용합니다.

디렉토리의 경우 기존 경로 내에 디렉토리를 생성하려면 mkdir [디렉토리]
를 사용하거나 전체 경로를 사용하여 mkdir -p [/전체/경로/디렉토리]
를 만듭니다.

디렉토리를 제거할 때는 rmdir [디렉토리]
명령을 사용하기 전에 해당 디렉토리가 비어 있는지 확인해야 하거나 더 강력한(주의해서 사용하세요!) rm -rf [디렉토리]
를 사용합니다. 이 마지막 옵션은 [디렉토리]
및 모든 내용을 재귀적으로 강제로 제거하므로 사용에 주의하십시오.
입력 및 출력 리다이렉션 및 파이프라이닝
옛 environment variable에 대해 다음과 같은 정보가 있습니다. 이러한 environment variable는 다양한 의미에 의해 사용되며, 특정 프로세스를 실행할 때 주로 사용되는 것입니다.export는 현재 shell에 의해 실행되는 모든 后来的 process들에게 某些 environment variable를 가지도록 한다.env는 현재 shell process에 의해 실행되는 모든 process들에게 전역적인 environment variable를 가지도록 한다.
declare는 한 certain variable를 선언하고 초기화하고, 其 value를 여러 process들에게 전달하는 것이 아니라, 只 해당하는 当前 shell process에게만 전달하도록 한다.
- export, env, 그리고 declare 는 모두 전역적인 environment variable를 가지고 있는지, 非 전역적인 environment variable를 가지고 있는지 구별하기 위해 사용할 수 있는 properties가 있습니다.
- export와 env의 차이점은, export는 하나의 shell에서 실행되는 모든 process들에게 某些 environment variable를 전달하는 것이고, env는 여러 shell에서 실행되는 모든 process들에게 전역적인 environment variable를 전달하는 것입니다.declare를 사용하면 특정 variable를 선언하고 초기화하고, 其 value는 다른 process들에게 전달되지 않습니다.
- export, env, 그리고 declare는 모두 environment variable를 관리하는 shell built-in 명령어입니다.export, env, 그리고 declare를 사용하면 environment variable를 다양한 의미에 사용할 수 있습니다. 예를 들어, 特定 process를 실행할 때 필요한 某些 setting을 지정하거나, 某种 process 실행 시간 또는 其 output을 조절할 수 있습니다.
export, env, 그리고 declare를 사용하면 environment variable를 更好地 manage하고, 其 value를 更灵活地 利用할 수 있습니다.declare

이러한 특수 파일을 더 쉽게 식별하기 위해 각각의 파일에는 파일 디스크립터가 할당됩니다. 파일 디스크립터는 이러한 파일에 액세스하기 위해 사용되는 추상적인 표현입니다. 이해해야 할 핵심은 이러한 파일들도 다른 파일과 마찬가지로 리디렉션될 수 있다는 것입니다. 이는 파일이나 스크립트의 출력을 캡처하여 다른 파일, 명령 또는 스크립트의 입력으로 보낼 수 있다는 것을 의미합니다. 이를 통해 나중에 처리하거나 분석하기 위해 명령의 출력을 디스크에 저장할 수 있습니다.
stdin (fd 0), stdout (fd 1) 또는 stderr (fd 2)를 리다이렉트하기 위해 다음 연산자를 사용할 수 있습니다.
Redirection Operator | Effect |
> | Redirects standard output to a file containing standard output. If the destination file exists, it will be overwritten. |
>> | Appends standard output to a file. |
2> | Redirects standard error to a file containing standard output. If the destination file exists, it will be overwritten. |
2>> | Appends standard error to the existing file. |
&> | Redirects both standard output and standard error to a file; if the specified file exists, it will be overwritten. |
< | Uses the specified file as standard input. |
<> | The specified file is used for both standard input and standard output. |
리디렉션과는 달리, 파이프라인은 명령어 앞에 수직 막대 (|)
를 추가하여 수행됩니다.
기억하세요:
- 리디렉션은 명령의 출력을 파일로 보내거나 파일을 명령의 입력으로 보내는 데 사용됩니다.
- 파이프라이닝은 명령의 출력을 다른 명령의 입력으로 보내는 데 사용됩니다.
리디렉션 및 파이프라이닝의 예시
예시 1: 명령의 출력을 파일로 리디렉션하기
파일 목록을 반복해야 할 때가 있습니다. 이를 위해 먼저 그 목록을 파일에 저장한 다음 파일을 한 줄씩 읽을 수 있습니다. ls의 출력을 직접 반복할 수 있는 것이 사실이지만, 이 예시는 리디렉션을 설명하기 위한 것입니다.
# ls -1 /var/mail > mail.txt

예시 2: stdout과 stderr를 /dev/null로 리디렉션하기
stdout 및 stderr 両方을 화면에 표시하지 않고 싶다면, 両方的な file descriptor를 /dev/null
에 redirect 할 수 있습니다. 같은 명령어에 대해 redirection이 적용되었을 때 출력의 변화를 주의 깊게 살펴봐야 합니다.
# ls /var /tecmint # ls /var/ /tecmint &> /dev/null

예 3: 명령어에 파일을 입력으로 사용하기
cat 명령어의 classic syntax는 다음과 같습니다.
# cat [file(s)]
파일을 입력으로 사용하기 위해서는 적절한 redirection operator를 사용할 수 있습니다.
# cat < mail.txt

예 4: 명령어의 출력을 다른 것의 입력으로 보내기
大きい 디렉터리 또는 프로세스 목록이 있고, 특정 파일 또는 프로세스를 한 눈에 볼 수 있게 하고자 한다면, 목록을 grep로 pipeline 할 것입니다.
다음 예에서는 두 개의 pipeline을 사용합니다. 첫 번째는 필요한 keyword를 찾고, 두 번째는 실제 grep 명령어
를 결과에서 제거합니다. 이 예는 apache 유저와 관련된 모든 프로세스를 列挙합니다.
# ps -ef | grep apache | grep -v grep

Source:
https://www.tecmint.com/file-and-directory-management-in-linux/