pwd, cd, ls, cp
Linux를 포함한 모든 CLI 환경은 명령어로 제어된다.
앞으로 세 번의 포스팅에 걸쳐 Linux의 기초 명령어를 알아보려고 한다.
명령어 형식
명령어의 기본적인 형식은 다음과 같다.
명령어 [옵션] [보조옵션] [대상]
(대괄호는 IT 전반에서 생략 가능한 것을 나타내는데 사용되는 기호이다.)
(1) 명령어만 사용
- pwd
- clear
(2) 명령어와 대상
- mkdir 디렉토리
- cd 디렉토리
(3) 명령어와 옵션
- ls -l
대부분의 명령어가 위의 형식을 따르지만, 그렇지 않은 경우도 존재하긴 한다.
지금부터 살펴볼 기초 명령어들은 모두 기본 형식을 따른다.
pwd
현재 위치를 절대 경로로 출력해주는 명령어이다.
cd
현재 위치한 디렉토리를 이동/변경해주는 명령어이다.
명령어의 대상과 함께 사용된다.
(1) cd 디렉토리
해당 디렉토리로 이동
(2) cd .
현재 디렉토리로 이동(실행 의미 없음)
(3) cd ..
상위 디렉토리로 이동
(4) cd ~
명령어를 입력한 사용자의 홈 디렉토리로 이동
(5) cd ~계정이름
해당 사용자의 홈 디렉토리로 이동(root 전용)
5번의 경우 관리자 계정인 root 계정에서만 동작한다.
root 계정만 관리 목적으로 다른 사용자의 홈 디렉토리에 접근이 가능하다.
일반 사용자는 다른 사용자의 홈 디렉토리에 접근 불가능하며, 허가 거부 에러가 발생한다.
대상을 생략하면 4번과 마찬가지로 명령어를 입력한 사용자의 홈 디렉토리(~)로 이동한다.
cd만 입력 시 관리자 계정은 /root로, 일반 사용자 itbank 계정은 /home/itbank로 이동한다.
ls
ls 명령어는 대상에 따라 출력하는 내용이 달라진다.
(1) ls 파일
파일 자체의 정보를 출력
ex) ls -l /etc/passwd
(2) ls 디렉토리
디렉토리 내부의 목록을 출력
ex) ls -l /home/
대상을 생략할 경우 현재 위치한 디렉토리를 대상으로 사용한다.
또한, ls 명령어의 대상은 여러 개가 될 수 있으며, 대상이 꼭 한 가지 종류일 필요는 없다.
ex)
ls -l /etc/passwd /etc/inittab
ls -l /home/ /home/test/
ls -l /home/ /etc/passwd
ls 명령어는 다양한 옵션과 함께 사용된다.
(1) ls -l
자세한 정보 출력(옵션 생략 시 이름만 출력)
* 자세한 출력 내용 설명
ex)
-rw-r--r--. 1 root root 2263 5월 10 10:37 /etc/passwd
- - : 해당 개체의 형식(- : 일반 파일, d : 디렉토리)
- rw-r--r-- : 허가권
- 1 : 링크 개수
- root root : 소유권
- 2263 : 크기(byte 단위, 디렉토리의 경우 정확한 크기가 출력되지 않음)
- 5월 10 10:37 : 마지막으로 수정된 날짜와 시간
(2) ls -a
숨겨진 개체까지 출력(. 으로 시작하는 개체들이 숨겨져 있던 개체들을 의미)
(3) ls -d
대상이 디렉토리인 경우 해당 디렉토리의 정보를 출력(단, 대상이 디렉토리가 아니면 효과 없음)
(4) ls -R
대상이 디렉토리인 경우 하위 디렉토리가 있다면 그 내부까지 출력
cp
cp(copy)는 복사와 붙여넣기를 한 번에 처리하는 명령어이다.
기본적으로 파일만 복사가 가능하며, 디렉토리의 복사는 별도의 옵션이 필요하다.
(Windows에서는 복사, 붙여넣기 명령어를 따로 실행하며, 파일과 폴더 모두 복사가 가능하다.)
원본 파일의 이름을 유지하거나 변경하면서 복사할 수 있다.
단, 복사와 동시에 이름을 변경할 때는 원본을 하나만 입력해야 한다.
cp 명령어의 형식은 다음과 같다.
cp [옵션] 원본 [원본] ... [원본] 복사할 위치[변경할 이름]
예를 들어 mkdir /backup/을 입력해 / 디렉토리 아래에 'backup' 디렉토리를 생성했다고 하자.
(mkdir은 디렉토리를 형성하는 명령어이다.)
backup 디렉토리로 세 개의 파일을 복사하기 위해 두 줄의 명령어가 사용되었다.
(1) cp /boot/grub2/grub.cfg /backup/grub.conf
/boot/grub2/에 위치한 grub.cfg 파일의 이름을 'grub.conf'로 변경해 /backup/으로 복사
다시 말하지만, 복사와 동시에 이름을 변경할 때는 일대일 복사만 가능하다.
(2) cp /etc/inittab /etc/login.defs /backup/
/etc/에 위치한 inittab, login.defs 파일을 이름은 유지한 채 동시에 /backup/으로 복사
복사하고자 하는 파일이 이미 존재하는 경우, overwirte 여부를 묻는 문구가 출력된다.
y를 입력하면 기존의 파일을 덮어쓰고, 나머지 경우에는 복사를 취소한다.
옵션 -r을 사용하면 디렉토리도 복사가 가능하다.
아무런 옵션 없이 /backup/ 디렉토리를 현재 위치로 복사하려고 했을 때,
omitting directory라는 문구가 출력되며 디렉토리를 복사에서 제외시킨다.
-r 옵션을 사용한 후 backup 디렉토리가 현재 위치로 복사된 것을 확인할 수 있다.
Windows 운영체제에서 폴더를 복사하면 내용물이 함께 따라오듯이,
CLI 환경에서도 디렉토리를 복사할 경우 디렉토리 내의 파일이 함께 복사된다.
cp 실습 예제
예제 1)
현재 위치가 /home/itbank/일 때, 아래의 cp 명령어 세 줄을 경로 요소를 바꿔 입력하시오.
(절대 경로는 상대 경로로, 상대 경로는 절대 경로로 입력)
(풀이)
pwd 명령어로 현재 위치까지의 절대 경로를 확인한다.
/backup/과 함께 현재 위치인 /home/itbank/의 내용물도 살펴본다.
모두 절대 경로로 표현된 첫 번째 명령어는 모두 상대 경로로,
원본 파일은 절대 경로로, 복사할 위치는 상대 경로로 입력된 두 번째와 세 번째 명령어는
각각 상대 경로와 절대 경로로 바꾸어 입력해준다.
절대 경로를 상대 경로로 바꿀 때는 앞서 확인한 pwd 명령어의 출력 결과를 참고한다.
예제 2)
현재 위치 /home/itbank/ 내부에 위치한 파일을 /home/test/c/d/로 복사하고자 할 때,
아래의 cp 명령어 세 줄을 경로 요소를 바꾸어 입력하시오.
(풀이)
예제 3)
아래 조건에 맞추어 /home/teset/c/d/ 안의 파일 전부를 /home/itbank/a/b/로 복사하시오.
- 디렉토리를 직접 복사하지 않는다.
- 작업 위치는 /home/itbank/라고 가정한다.
- 명령어는 한 줄만 입력한다.
(풀이 1)
한 줄의 명령어에 세 개의 원본 파일을 직접 입력해준 뒤 현재 작업 위치 아래의 a/b/로 복사한다.
(풀이 2)
모든 종류와 길이의 문자를 의미하는 * 기호를 활용한다.
아래 명령어는 /home/test/c/d/ 안의 모든 파일을 ./a/b/로 복사한다는 의미이다.
'2022 데이터 사이언스 > Linux' 카테고리의 다른 글
06. 기초 명령어(3) (0) | 2022.05.19 |
---|---|
05. 기초 명령어(2) (0) | 2022.05.17 |
03. 기본 디렉토리와 경로 (0) | 2022.05.14 |
02. 서버 컴퓨터 원격 조종 (0) | 2022.05.12 |
01. 운영체제와 가상환경 (0) | 2022.05.12 |