RHCSA 시리즈: 파일 및 디렉토리 관리 방법 – 파트 2

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

RHCSA: Perform File and Directory Management – Part 2

파일 및 디렉토리 생성, 삭제, 복사 및 이동

파일 및 디렉토리 관리는 모든 시스템 관리자가 보유해야 하는 중요한 능력입니다. 이에는 빈 파일을 생성하고 삭제하는 능력(각 프로그램의 구성의 핵심) 및 디렉토리(파일 및 다른 디렉토리를 구성하는 위치)를 생성하고 기존 파일의 유형을 확인하는 능력이 포함됩니다.

touch 명령어는 빈 파일을 생성하는 데만 사용되는 것이 아니라 기존 파일의 액세스 및 수정 시간을 업데이트하는 데도 사용될 수 있습니다.

touch command example

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

file command example

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

rm command example

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

mkdir command example

디렉토리를 제거할 때는 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에게만 전달하도록 한다.

  1. export, env, 그리고 declare 는 모두 전역적인 environment variable를 가지고 있는지, 非 전역적인 environment variable를 가지고 있는지 구별하기 위해 사용할 수 있는 properties가 있습니다.
  2. export와 env의 차이점은, export는 하나의 shell에서 실행되는 모든 process들에게 某些 environment variable를 전달하는 것이고, env는 여러 shell에서 실행되는 모든 process들에게 전역적인 environment variable를 전달하는 것입니다.declare를 사용하면 특정 variable를 선언하고 초기화하고, 其 value는 다른 process들에게 전달되지 않습니다.
  3. 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

Input and Output Example

이러한 특수 파일을 더 쉽게 식별하기 위해 각각의 파일에는 파일 디스크립터가 할당됩니다. 파일 디스크립터는 이러한 파일에 액세스하기 위해 사용되는 추상적인 표현입니다. 이해해야 할 핵심은 이러한 파일들도 다른 파일과 마찬가지로 리디렉션될 수 있다는 것입니다. 이는 파일이나 스크립트의 출력을 캡처하여 다른 파일, 명령 또는 스크립트의 입력으로 보낼 수 있다는 것을 의미합니다. 이를 통해 나중에 처리하거나 분석하기 위해 명령의 출력을 디스크에 저장할 수 있습니다.

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. 리디렉션은 명령의 출력을 파일로 보내거나 파일을 명령의 입력으로 보내는 데 사용됩니다.
  2. 파이프라이닝은 명령의 출력을 다른 명령의 입력으로 보내는 데 사용됩니다.

리디렉션 및 파이프라이닝의 예시

예시 1: 명령의 출력을 파일로 리디렉션하기

파일 목록을 반복해야 할 때가 있습니다. 이를 위해 먼저 그 목록을 파일에 저장한 다음 파일을 한 줄씩 읽을 수 있습니다. ls의 출력을 직접 반복할 수 있는 것이 사실이지만, 이 예시는 리디렉션을 설명하기 위한 것입니다.

# ls -1 /var/mail > mail.txt
Redirect output of command tot a file
예시 2: stdout과 stderr를 /dev/null로 리디렉션하기

stdout 및 stderr 両方을 화면에 표시하지 않고 싶다면, 両方的な file descriptor를 /dev/null에 redirect 할 수 있습니다. 같은 명령어에 대해 redirection이 적용되었을 때 출력의 변화를 주의 깊게 살펴봐야 합니다.

# ls /var /tecmint
# ls /var/ /tecmint &> /dev/null
Redirecting stdout and stderr ouput to /dev/null
예 3: 명령어에 파일을 입력으로 사용하기

cat 명령어의 classic syntax는 다음과 같습니다.

# cat [file(s)]

파일을 입력으로 사용하기 위해서는 적절한 redirection operator를 사용할 수 있습니다.

# cat < mail.txt
cat command example
예 4: 명령어의 출력을 다른 것의 입력으로 보내기

大きい 디렉터리 또는 프로세스 목록이 있고, 특정 파일 또는 프로세스를 한 눈에 볼 수 있게 하고자 한다면, 목록을 grep로 pipeline 할 것입니다.

다음 예에서는 두 개의 pipeline을 사용합니다. 첫 번째는 필요한 keyword를 찾고, 두 번째는 실제 grep 명령어를 결과에서 제거합니다. 이 예는 apache 유저와 관련된 모든 프로세스를 列挙합니다.

# ps -ef | grep apache | grep -v grep
Send output of command as input to another

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