데브옵스(DevOps)/Linux

[Linux] 리눅스 CLI 기본 개념과 명령어 정리

잇트루 2022. 8. 24. 15:51
반응형

CLI(Command-Line Interface)

CLI는 가상 터미널 또는 터미널을 통해 사용자와 컴퓨터가 상호 작용을 하는 방식을 뜻한다.

리눅스의 터미널은 키보드의 입력과 모니터의 출력으로 모든 작업을 할 수 있다. 리눅스는 GUI가 개발되기 이전부터 컴퓨터를 조작하기 위해 사용된 프로그램으로 GUI가 할 수 있는 모든 작업을 CLI로 할 수 있다.

 

프롬프트(Prompt)

터미널 창에서 키보드의 입력을 확인하고 편집할 수 있는 한 줄의 공간을 뜻한다. 프롬프트를 통해 키보드로 입력하여 사용한다.

 

CLI 기본 명령어

pwd : 현재 위치 확인

pwd는 터미널이 현재 위치를 알려주는 명령어로 현재 작업 중인 디렉토리의 절대 경로를 출력한다.

pwd

디렉토리(Directory) : 컴퓨터에서 파일을 분류하기 위해 사용하는 공간으로 윈도우의 폴더와 같은 역할

 

mkdir : 새로운 디렉토리 생성

make directories의 약자로 터미널의 현재 위치에 디렉토리를 만드는 명령어이다.

명령어를 사용하기 위해 생성할 폴더의 이름을 함께 입력해야 한다.

CLI에서는 명령어와 폴더의 이름을 공백으로 구분한다.

mkdir name

 

ls : 현재 위치 디렉토리의 리스트 출력

list의 약자로 특정 디렉토리에 포함된 파일이나 하위 디렉토리 리스트를 출력한다.

ls [-옵션]

ls 명령어의 옵션

  • ls -a : 숨겨진 파일이나 디렉토리를 포함한 모든 리스트를 출력한다.
  • ls -l : 리스트의 자세한 내용까지 포함하여 출력한다. (권한, 하위 파일 수, 크기, 수정일 등)
  • ls -R : 하위 디렉토리의 리스트까지 출력한다.
  • ls -r : 리스트를 내림차순으로 정렬하여 출력한다.
  • ls -h : 파일 크기를 편리하게 나타내어 출력한다.
  • ls -S : 리스트를 파일 크기 순으로 정렬하여 출력한다.

옵션을 2개 이상 조합하여 사용할 수 있다.

  • ls -al 또는 ls - la : 숨겨진 파일이나 디렉토리를 자세한 내용으로 출력한다.
  • ls -lr 또는 ls -rl : 리스트의 자세한 내용을 포함하여 내림차순으로 정렬하여 출력한다.
  • 위와 같이 여러 조합을 사용하여 출력할 수 있다.

ls -l의 추가 옵션 u, c

  • ls -l : 리스트의 자세한 내용에서 파일 수정시간을 기준으로 출력한다.
  • ls -lu : u를 추가하여 파일의 수정시간 대신 접근 시간을 출력한다.
  • ls -lc : c를 추가하여 파일의 수정시간 대신 변경 시간을 출력한다.

 

cd : 터미널의 현재 위치 변경

change directory의 약자로 다른 현재 디렉토리 위치를 다른 디렉토리 위치로 이동하는 것을 의미한다.

앞서 설명한 명령어를 함께 응용하면, pwd 명령어를 통해 현재 위치를 확인하고, ls 명령어를 통해 이동할 수 있는 디렉토리를 확인하여 cd를 통해 작업할 위치로 이동한다.

cd ./dirname
cd ..
cd /dirname1/dirname2
cd ~/dirname

cd 명령어의 사용 방법은 다양하다.

1. 현재 위치를 기준으로 하여 위치 변경

cd ./directory

2. 절대 경로를 사용하여 위치 변경

cd /user/username/desktop

3. 상대 경로를 사용하여 위치 변경

cd ~/desktop

4. 상위 디렉토리로 위치 변경

cd ..
cd ../

 

touch : 파일 생성하기

현재 위치에서 텍스트 파일, 빈 파일 등 파일을 생성할 때 사용한다. 단, 파일 이름은 존재하지 않는 파일 이름으로 작성해야 한다. 파일 이름이 이미 존재하는 경우 타임스탬프 값이 현재 시간으로 업데이트된다.

 

리눅스의 타임스탬프 종류

atime : 최종 접근 시간

mtime : 최종 수정 시간

ctime : 최종 상태 변경 시간

touch [-옵션] name

 

touch 명령어의 옵션

touch -a filename : 현재 시간으로 파일의 접근 시간, 변경 시간을 수정한다.

touch -c filename : 현재 디렉토리의 파일명과 같은 파일이 없으면 파일을 만들지 않는다.

touch -t [YYYYMMDDhhmm.SS] filename : 파일의 접근 시간과 수정 시간을 설정 시간으로 수정한다.

touch -d ‘YYYY-MM-DD hh:mm:ss’ filename : 지정한 시간으로 접근 시간과 수정시간을 설정하고, 변경 시간은 현재 시간으로 수정된다.

touch -r filename1 filename2 : filename2의 접근 시간과 수정 시간을 filename1의 시간으로 수정하고, 변경 시간은 현재 시간으로 수정된다.

touch -m filename : 수정 시간과 변경 시간을 현재 시간으로 수정한다.

touch filename1, filename2, filename3, … : 여러 개의 파일을 생성한다.

옵션을 2개 이상 조합하여 사용할 수 있다.

 

echo : 터미널에 텍스트 출력

터미널 창에서 텍스트를 출력해주는 명령어이다.

echo [-옵션] [텍스트]

echo -n text : 마지막에 붙는 개행 문자를 출력하지 않는다.

echo -e text : 문자열에서 백 슬래시와 이스케이프 문자를 작은따옴표(’’)로 묶어 인식한다.

echo -E text : 문자열에서 백 슬래시와 이스케이프 문자를 비활성화한다.

 

단순 출력

echo Hello Terminal

 

> : 실행 결과를 파일로 저장

명령어 > 파일이름

ls 명령어의 결과를 LsResult.txt 파일에 작성하여 저장한다.

ls > LsResult.txt

echo 명령어를 사용하여 텍스트를 저장할 수 있다.

echo MyEmail@address.com > Email.txt

 

cat : 파일의 내용을 터미널에 출력

파일의 내용을 터미널에 출력하는 명령어

cat [-옵션] [파일이름]

위에 작성한 이메일 파일을 출력하기

cat Email.txt

cat 명령어의 옵션

cat -n filename : 모든 라인 앞에 번호를 출력한다.

cat -b filename : 비어있지 않은 라인 앞에만 번호를 출력한다.

cat -E filename : 라인의 마지막에 $ 기호를 출력한다.

cat -T filename : 탭 문자를 ^I로 바꿔서 출력한다.

cat -s filename : 두 번 이상 연속된 빈 라인은 출력하지 않는다.

cat -v filename : 탭과 줄 바꿈을 제외한 non-printing 문자를 ^ 또는 M-를 사용하여 표시한다.

cat -e filename : 줄 바꿈을 포함한 non-printing 문자를 ^ 또는 M-를 사용하여 표시한다.

cat -t filename : 탭을 포함한 non-printing 문자를 ^ 또는 M-를 사용하여 표시한다.

cat -A filename : 탭과 줄바꿈을 포함한 non-printing 문자를 ^ 또는 M-를 사용하여 표시한다.

옵션을 2개 이상 조합하여 사용할 수 있다.

 

rm : 디렉토리 또는 파일 삭제

현재 위치의 디렉토리나 파일을 삭제할 때 사용한다.

주의할 점은 rm 명령어를 사용 시 휴지통을 거치지 않고 삭제되기 때문에 ls 명령어를 통해 확인 후 삭제해야 한다.

rm [-옵션] [이름]

현재 위치에서 .txt가 들어가는 모든 파일 삭제

rm *.txt

현재 위치에서 모든 파일 삭제

rm *

디렉토리를 삭제하는 경우

rm -rf directoryname

rm 명령어의 경우 옵션을 사용하지 않으면, 디렉토리를 삭제할 수 없다.

rm 명령어의 옵션

rm -f name : 강제로 디렉토리나 파일을 삭제한다. 대상이 없을 경우 메시지를 표시하지 않는다.

rm -r directoryname : 디렉토리 하위의 모든 파일을 삭제한다.

rm -d : 하위 내용이 비어있는 모든 디렉토리를 삭제한다.

rm -i name : 삭제할 때 사용자에게 삭제 여부를 묻는다.

rm -l name : 3개 이상의 파일을 삭제하거나 삭제할 디렉토리 내부가 비어있지 않은 경우 삭제 여부를 묻는다.

rm -v name : 삭제되는 대상의 정보를 출력한다.

옵션을 2개 이상 조합하여 사용할 수 있다.

 

mv : 디렉토리나 파일의 이름을 변경하거나 위치 이동

mv명령어는 move의 약자로, 폴더의 파일을 이동하거나 이름을 변경할 때 사용한다.

파일을 특정 디렉토리로 이동하는 경우

mv [-옵션] 파일이름 이동할디렉토리/
mv [-옵션] 파일1, 파일2, 파일3 이동할디렉토리/
mv [-옵션] * 이동할디렉토리/

파일의 이름을 변경하는 경우

mv [-옵션] 기존파일이름 변경할파일이름

mv 명령어의 옵션

mv -b name1 name2 : 이동 또는 변경할 파일 존재하면 백업 파일을 만든다.

mv -i name1 name2 : 이동 또는 변경할 파일 이름이 존재할 경우, 덮어쓸 것인지 여부를 묻는다.

mv -f name1 name2 : 이동 또는 변경할 파일 이름이 존재할 경우, 강제로 덮어쓴다.

mv -n name1 name2 : 이동 또는 변경할 파일 이름이 존재할 경우, 덮어쓰지 않는다.

mv -r dir1 dir2 : dr1 하위 디렉토리의 모든 내용을 dir2 디렉토리로 이동한다.

mv -v : 이동 진행 상태를 터미널에 출력한다.

 

cp : 디렉토리나 파일 복사

cp 명령어는 copy의 약자로 디렉토리나 파일을 복사할 때 사용한다.

cp [-옵션] 기존이름 복사할이름

디렉토리를 복사할 경우

cp -rf 기존디렉토리이름 복사할디렉토리이름

cp 명령어의 옵션

cp -i name1 name2 : 복사할 파일의 이름이 존재할 경우, 덮어쓰기 여부를 묻는다.

cp -b name1 name2 : 복사할 파일의 이름이 존재할 경우, 백업 파일을 만든다.

cp -f name1 name2 : 복사할 파일의 이름이 존재할 경우, 덮어쓴다.

cp -r dir1 dir2 : dir1의 하위 모든 내용을 dir2이름으로 복사한다.

cp -a name1 name2 : name1의 속성, 링크 정보를 포함하여 복사한다.

cp -p name1 name2 : name1의 소유, 그룹, 권한 등의 정보를 포함하여 복사한다.

cp -v : 복사 진행 상태를 터미널에 출력한다.

 

whoami : 현재 로그인된 사용자 계정 확인

whoami 명령어를 통해 현재 로그인된 사용자를 확인할 수 있다.

whoami

 

sudo : 관리자 권한을 획득

sudo 명령어

sudo mkdir dir1 : 관리자 권한으로 dir1 디렉토리를 생성

mkdir dir2 : 사용자가 dir2 디렉토리를 생성

ls -l 명령어로 확인하면 관리자 권한이 다르게 생성된 것을 확인할 수 있다.

반응형