"파일 및 폴더의 조정" 에 관한 리눅스 커맨드

이준희·2024년 5월 12일
post-thumbnail

수많은 리눅스 커맨드들 중 파일 및 폴더의 조정과 관련한 커맨드들: ls, cd, pwd, mkdir, rm, cp, mv, touch, cat, grep 의 쓰임에 대해 간략하게 정리해 보았습니다.

이 포스트를 글을 통해 쓰임새가 대충 파악이 되었다면 구글링을 통해 더 자세하고 훌륭하며 수많은 기능들을 찾아보면 좋을 것 같습니다.

시작하기 전에, 커맨드의 형식은 명령어, 띄어쓰기, 대괄호로 구분됩니다.

예를 들어, command [option] 이라는 형식을 보면 command 부분은 필수적으로 입력되어야 하고, 대괄호 [ ] 로 둘러쌓인 부분은 선택적으로 입력한다는 사실을 알 수 있습니다.

또한 모든 커맨드는 대소문자를 구분합니다.


ls: lists directory contents

# 형식
ls [option] [file or directory]

ls 커맨드는 해당 디렉토리 내의 파일 및 폴더의 내용을 알파벳 순서대로 나열합니다. 기본적으로 현재 위치해 있는 디렉토리 기준입니다.

ls 만 입력할 경우 현재 위치한 디렉토리 내의 내용을, 파일 또는 폴더명을 함께 입력하면 그에 대한 내용을 나열합니다.

options

옵션설명
-l (소문자 L)파일 및 디렉토리에 관한 더 자세한 설명을 출력합니다.
-a숨겨진 파일 및 디렉토리를 포함해 모두 출력합니다.
-t파일 및 디렉토리를 변경된 시간순으로 정렬해 출력합니다.
-r파일 및 디렉토리를 현재 설정과 반대로 정렬하여 출력합니다.
-S파일 및 디렉토리를 크기가 큰 순서대로 정렬하여 출력합니다.
-R하위 디렉토리를 포함하여 재귀적으로 나열해 출력합니다.
-i각 파일 및 디렉토리의 인덱스 넘버(inode)를 포함하여 출력합니다.
-d파일을 제외하고 디렉토리만 출력합니다.

cd: change directory

# 형식
cd [directory]

cd 커맨드는 디렉토리를 이동할때 사용합니다. 디렉토리 경로를 입력하면 현재 디렉토리에서 해당 디렉토리로 이동합니다.

cd .. 처럼 점 두 개를 입력하면 상위(이전) 디렉토리로 이동합니다.

'/' 는 root 디렉토리, '~' 는 home 디렉토리를 의미합니다.


pwd: print working directory

# 형식
pwd [option]

pwd 커맨드는 현재 위치한 디렉토리의 절대위치를 출력합니다.

절대위치를 보여준다는 말은 root 디렉토리(/)부터 현재 디렉토리까지의 경로를 보여준다는 의미입니다.

options

옵션설명
-L심볼릭 링크가 포함된 경로라도 환경변수 내의 경로를 출력합니다.
-P심볼릭 링크가 포함된 경로라면 실제 경로를 출력합니다.

심볼릭 링크(symbolic link)란 다른 파일이나 폴더를 가리키는 파일을 의미하며, 이는 윈도우의 바로가기 파일과 유사합니다.


mkdir: make directory

# 형식
mkdir [option] folder_name

mkdir 커맨드는 새 폴더를 생성합니다.

원하는 폴더명을 입력으로 받습니다.

options

옵션설명
-v폴더가 생성되었다는 문장을 함께 출력합니다.
-p상위 디렉토리도 함께 생성합니다.

rm: remove

# 형식
rm [option] file..

rm 커맨드는 파일, 폴더, 심볼릭 링크를 삭제합니다.

기본적으로는 폴더를 삭제할 수 없고(-r 옵션을 쓰면 됩니다) 한 번 삭제하면 복원할 수 없기 때문에 신중하게 사용해야 합니다. 정말 삭제하시겠습니까? 그런 확인 없습니다.

options

옵션설명
-i각 파일을 삭제하기 전에 정말 삭제할지 여부를 물어봅니다.
-f보호된(write-protected) 파일을 삭제합니다.
-r폴더를 삭제합니다(해당 디렉토리 하위 파일 및 폴더들을 재귀적으로 삭제합니다).

cp: copy

# 형식
cp [option] source_file.. destination_file..

cp 커맨드는 파일, 폴더를 복사해 붙여넣습니다.

복사를 원하는 파일명을 먼저 쓰고(source_file..)
새로운 파일명(destination_file..)을 입력하여 붙여넣습니다.

또한 디렉토리 경로를 입력하여 다른 곳으로 파일을 복사할 수 있습니다. destination_file.. 부분에 경로를 집어넣으면 됩니다.

cp -r /home/folderA /home/tmp/folderB
위와 같이 사용하여 디렉토리(folderA) 자체를 다른 디렉토리(folderB)에 복사해 붙여넣는 것도 가능합니다.

options

옵션설명
-r해당 폴더의 하위 디렉토리까지 재귀적으로 모두 복사합니다.
-v복사 진행 상태를 함께 출력합니다.
-p복사 대상의 소유자, 그룹, 권한 등의 정보까지 함께 복사합니다.
-i복사하는 파일 및 폴더가 해당 디렉토리 내에 있을 경우 덮어쓰기 여부를 물어봅니다.
-f복사하는 파일 및 폴더가 해당 디렉토리 내에 있을 경우 강제로 덮어씁니다.
-b복사하는 파일 및 폴더가 해당 디렉토리 내에 있을 경우 백업 파일을 생성합니다.

mv: move

# 형식
mv [option] source_file.. destination_file..

mv 커맨드는 파일, 폴더의 이름을 변경하거나 이동시킵니다.

파일 또는 폴더명을 먼저 쓰고(source_file..)
변경하려는 이름(destination_file..)을 쓰거나
이동시키려는 디렉토리 경로(destination_file..)를 씁니다.

디렉토리를 이동할 때 여러 파일, 폴더를 동시에 지정할 수도 있습니다.

options

옵션설명
-i이름을 변경하거나 이동시키려는 파일 및 폴더가 이미 존재할 경우 덮어쓰기 여부를 물어봅니다.
-f이름을 변경하거나 이동시키려는 파일 및 폴더가 이미 존재할 경우 강제로 덮어씁니다.
-n이름을 변경하거나 이동시키려는 파일 및 폴더가 이미 존재할 경우 덮어쓰기를 방지합니다.
-b이름을 변경하거나 이동시키려는 파일 및 폴더가 이미 존재할 경우 백업 파일을 생성합니다.

touch: touch file

touch [option] file_name

touch 커맨드는 파일을 생성하거나 이미 존재하는 파일의 타임 스탬프를 변경하는 커맨드입니다.

touch file1 file2 file3 와 같이 사용해 여러 파일들을 한 번에 생성할 수 있고, 이미 존재하는 파일명에 touch 커맨드를 사용하여 해당 파일의 타임스탬프를 변경합니다.

리눅스의 타임스탬프에는 atime, mtime, ctime이 있습니다.

atime: access time, 최종 접근시각
mtime: modify time, 최종 수정시각
ctime: change time, 최종 변경시각

options

옵션설명
-aatime만 변경합니다.
-c해당 파일이 존재하지 않다면 새로 생성하지 않습니다.
-d문자열을 입력해 atime, mtime을 변경합니다. (touch -d '15 Dec' filename)
-mmtime만 변경합니다.
-r다른 파일의 타임스탬프를 복제해 적용합니다. (touch -r file1 file2)

cat: concatenate

# 형식
cat [option] file

cat 커맨드는 파일(들)의 내용을 입력된 순서대로 출력하거나 연결하는 등의 다양한 기능을 가진 커맨드입니다. 파일을 간편하게 프롬프트에 출력하거나 여러 파일들을 합칠 수 있어 유용합니다.

cat file1 file2 와 같이 파일 이름들을 나열하면 줄바꿈으로 구분된 파일들의 내용이 출력됩니다.

cat > file 과 같이 사용하면 파일의 내용을 새로 작성하거나, 새 파일을 만들어 내용을 작성할 수 있습니다. 작성을 마쳤으면 Ctrl + D 로 빠져나옵니다.

cat file1 file2 > file3 와 같이 사용하면 file1과 file2의 내용을 합쳐 file3에 작성합니다. 이때 cat file1-file2 > file3 와 같이 사용하면 file1과 file2 사이에 원하는 내용을 작성해 넣을 수 있습니다. 마찬가지로 작성을 마쳤으면 Ctrl + D로 빠져나옵니다.

options

옵션설명
-n줄번호를 함께 출력합니다.
-b비어 있지 않은 줄에만 줄번호를 출력합니다.
-E줄의 마지막에 $ 기호를 출력합니다.
-T탭 문자를 ^I 로 바꿔서 출력합니다.
-s두 번 이상 연속된 빈 줄을 출력하지 않습니다.

grep: globally search for a regular expression and print

# 형식
grep [option] pattern file

grep 커맨드는 파일의 내용을 검색해 찾아내고 조작할 수 있는 커맨드입니다.

pattern 부분에 원하는 텍스트를 넣어 해당 파일 내에서 찾을 수 있습니다. 마치 윈도우에서 Ctrl + f 로 단어를 찾아보는 것과 유사합니다.

파일은 한 번에 여러 개를 지정할 수 있으며 grep pattern * 와 같이 사용해 모든 파일을 검색할 수 있습니다.

options

옵션설명
-c패턴에 해당하는 줄의 개수를 출력합니다.
-h해당하는 줄을 출력하지만, 파일명은 출력하지 않습니다.
-i대소문자를 구별하지 않습니다.
-l (소문자 L)해당하는 파일이름의 리스트만 출력합니다.
-n해당하는 줄을 줄번호와 함께 출력합니다.
-v해당하지 않는 줄만 출력합니다.
-o줄이 아닌, 해당되는 부분만 출력합니다.
-A n해당되는 줄과 그 뒤 n개의 줄을 함께 출력합니다.
-B n해당되는 줄과 그 전 n개의 줄을 함께 출력합니다.
-C n해당되는 줄과 그 뒤 n개의 줄을 함께 출력합니다.

profile
꾸준하게 떨어지는 물방울이 돌을 뚫는다고 水適穿石이래요

0개의 댓글