[Linux] 리눅스(CentOS7)

[Linux] 리눅스 기본 사용법 및 명령어_3

ITsubin 2022. 2. 24. 23:55

이번 포스팅에서는 리눅스 실습 예제를 풀어보겠습니다. 답은 아래에 있습니다.

 

문제 1. 다음과 같은 파일이 존재하는지 확인하시오.

/etc/login.defs
/home/passwd
/etc/inittab
/boot/grub2/grub.cfg
/bin/vsftp

 

문제 2. [문제 1]에서 존재하는 파일들을 /backup 디렉터리에 복사하시오.

 

문제 3. /backup/test 디렉터리에 [문제 2]에서 복사한 파일 3개를 각각 앞 글자 3개를 따서 이름변경 복사하시오.

 

문제 4. 한 줄 명령으로 다음과 같은 디렉터리에 test 1 ~ 3 파일을 생성해보시오.

[dir] [file]
/home test1
/back test2
/backup/test test3

 

문제 5. /backup/test 디렉터리를 /home/test/c/d/linux 이름이 되도록 이름변경 보존복사하시오.

 

문제 6. /home으로 이동한 뒤에 /sevas 디렉터리를 만드시오.

 

문제 7. pwd 입력 시 /root가 출력되는 곳에서 이동을 하지 않고 /home /backup /backup/test에 있는 test1, test2, test3 파일을 /sevas에 한 줄 명령으로 복사하시오.

 

문제 8. /backup에 있는 파일 4개를 /home/guest/a/b 디렉터리에 한 줄 명령으로 복사하시오. (단, -a 와 -r 옵션은 사용하지 않을 것)

 

[ 풀이 ]

문제 1.

cat 명령어로 하나하나 열어보기보단 ls 명령어를 통해 알아보겠습니다.

[root@localhost /]# ls /etc/login.defs
/etc/login.defs
[root@localhost /]# ls /home/passwd
ls: cannot access /home/passwd: 그런 파일이나 디렉터리가 없습니다

이처럼 하나씩 확인할 수도 있지만, 저는 세미콜론( ; )으로 명령어들을 연결하여 한 줄 명령어로 확인해보겠습니다.

[root@localhost /]# ls /etc/login.defs ; ls /home/passwd ; ls /etc/inittab ; ls /boot/grub2/grub.cfg ; ls /bin/vsftp
/etc/login.defs
ls: cannot access /home/passwd: 그런 파일이나 디렉터리가 없습니다
/etc/inittab
/boot/grub2/grub.cfg
ls: cannot access /bin/vsftp: 그런 파일이나 디렉터리가 없습니다

/home/passwd/bin/vsftp 빼고 모두 존재하는 것을 확인할 수 있습니다.

 

여기서 세미콜론(;)은 구분자의 역할을 합니다. 명령이 끝났음을 나타내고, 세미콜론으로 명령어가 연결되었을 때 앞의 명령어의 실패 여부와 상관 없이 순차적으로 실행됩니다.

이처럼 여러 명령어들을 한 번에 수행할 수 있게 해주는 명령어들을 다중 명령어라고 합니다. 다중 명령어의 종류와 사용법에 대해서는 다음 포스팅에 올리도록 하겠습니다.

 

문제 2.

우선 /backup 디렉터리가 있는지 cd /backup 또는 ls | grep backup 등으로 확인해줍니다.

없으면 mkdir /backup으로 /backup 디렉터리를 만들어줍니다.

여기서 | 역시 ;와 같은 다중 명령어입니다. 세미콜론과는 다르게 파이프 ( | ) 기준 좌측 명령어의 결과값에 대해 우측의 명령을 실행합니다. grep과 함께 자주 사용하는 다중 명령어입니다.

 

cp 명령어의 형식 : cp (option) [원본 파일명][대상 파일명] or [원본 파일명][디렉터리]

 

저는 절대 경로로 [/etc/login.defs],

상대 경로로 [/etc/inittab],

/backup 디렉터리로 직접 위치한 후 [/boot/grub2/grub.cfg]를 복사하겠습니다.

절대 경로 cp /etc/login.defs /backup
상대 경로 (cd 명령어로 /etc에 위치한 후) cp inittab /backup
/backup cp /boot/grub2/grub.cfg ./
결과 [root@localhost backup]# ls
grub.cfg inittab login.defs

 

문제 3.

cp 1.txt 2.txt1.txt 파일을 2.txt로 이름을 바꾸어 복사하는 점을 이용하면 됩니다.

 

먼저 /backup 디렉터리 아래에 test 디렉터리를 만들어줍니다.

절대 경로로 mkdir /backup/test로 만들거나,

상대 경로로 mkdir test로 만들어주시면 됩니다. (, 상대 경로는 /backup 안에 새로운 디렉터리를 만드는 것이기 때문에 현재 위치가 /backup이여야 합니다.)

 

방법은 2번과 같기 때문에 설명은 생략하겠습니다.

절대 경로 cp /backup/grub.cfg /backup/test/gru
상대 경로 (cd 명령어로 /backup에 위치한 후) cp inittab /backup/test/ini
/test (/test에 위치한 후)cp /backup/login.defs ./log
결과 [root@localhost test]# ls
gru ini log

문제 4.

역시 먼저 디렉터리가 존재하는지 확인합니다.

[root@localhost /]# ls | grep home ; ls | grep back
home
backup

/back 디렉터리만 없기 때문에 mkdir /back으로 디렉터리를 생성해줍니다.

touch 명령어를 사용하면 빈 파일을 생성할 수 있습니다.

touch /home/test1 ; touch /backup/test2 ; touch /backup/test/test3
또는
touch /home/test1 /backup/test2 /backup/test/test3도 가능합니다.

 

문제 5.

/home/test/c/d/linux에서 linux는 파일명, /home/test/c/d까지 디렉터리이기 때문에

하나하나 만들기보다는 mkdirp 옵션을 사용하겠습니다.

(mkdirp 옵션은 디렉터리를 생성할 때 상위 디렉터리가 존재하지 않을 경우 생성하는 옵션입니다.)

 

mkdir p /home/test/c/d

로 한번에 d 디렉터리까지 생성합니다.

 

복사하려는 /backup/test 디렉터리 안에 파일들이 있기 때문에 cpr 옵션을 사용하겠습니다.

(cpr(-R) 옵션은 하위 디렉터리 및 파일까지 모두 복사하는 옵션입니다.)

cp rp /backup/test /home/test/c/d/linux

 

문제 6.

cd /home | mkdir /sevas

설명은 따로 하지 않겠습니다.

 

문제 7.

pwd는 현재 위치한 디렉터리를 절대 경로로 나타내는 명령어입니다.

cd /root로 이동한 후 현재 디렉터리를 확인해보면

[root@localhost /]# cd /root ; pwd
/root
[root@localhost ~]#

홈 디렉터리(~)로 이동한 것을 확인할 수 있습니다.

파일들이 각각 어디에 위치하는지 다시 확인해줍니다.

[root@localhost ~]# ls /home/test? ; ls /backup/test? ; ls /backup/test/test? /home/test1
/backup/test2
/backup/test/test3

(여기서 ?는 하나의 문자를 나타내는 데 사용되는 특수문자입니다, 특수문자에 대해서도 다음 포스팅에 올리겠습니다.)

cp /home/test1 /sevas ; cp /backup/test2 /sevas ; cp /backup/test/test3 /sevas

로 한번에 복사할 수 있습니다.

문제 8.

먼저 /backup에 있는 파일들을 ls l /backup 명령으로 알아보겠습니다.

[root@localhost /]# ls -l /backup
합계 20
-rw-r--r--. 1 root root 4241 224 22:36 grub.cfg
-rw-r--r--. 1 root root 511 224 22:34 inittab
-rw-r--r--. 1 root root 2027 224 22:33 login.defs
drwxr-xr-x. 2 root root 4096 224 23:10 test
-rw-r--r--. 1 root root 0 224 23:10 test2

d로 시작하는 test 디렉터리를 제외하고 나머지는 모두 일반 파일인 것을 알 수 있습니다.

 

먼저 /home/guest/a/b 디렉터리가 존재하는지 확인해줍니다.

/home디렉터리 안의 guest 디렉터리가 없으므로 /home/guest, /home/guest/a, /home/guest/a/b 디렉터리를 만들어줘야 합니다.

 

파일을 복사할 때 cp 명령어는 옵션을 사용하지 않으면 파일만을 복사하기 때문에 특수문자 *을 사용하겠습니다.

[root@localhost /]# mkdir /home/guest; mkdir /home/guest/a; mkdir /home/guest/a/b; cd /home/guest/a/b; cp /backup/* ./
cp: omitting directory `/backup/test'

디렉터리를 복사하지 못했다는 에러는 나오지만, ls 명령어를 통해 파일 4개가 모두 복사되었음을 알 수 있습니다.

 

위 풀이법보다 더 좋은 방법들이 많을테지만, 그건 차츰 공부하면서 알아가야겠습니다.

위에서 언급했듯이 다음 포스팅에는 다중 명령어, 특수문자의 종류와 사용법에 대해 올리겠습니다.