이번 포스팅에서는 리눅스 실습 예제를 풀어보겠습니다. 답은 아래에 있습니다.
문제 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.txt가 1.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까지 디렉터리이기 때문에
하나하나 만들기보다는 mkdir의 –p 옵션을 사용하겠습니다.
(mkdir의 –p 옵션은 디렉터리를 생성할 때 상위 디렉터리가 존재하지 않을 경우 생성하는 옵션입니다.)
mkdir –p /home/test/c/d
로 한번에 d 디렉터리까지 생성합니다.
복사하려는 /backup/test 디렉터리 안에 파일들이 있기 때문에 cp의 –r 옵션을 사용하겠습니다.
(cp의 –r(-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 2월 24 22:36 grub.cfg -rw-r--r--. 1 root root 511 2월 24 22:34 inittab -rw-r--r--. 1 root root 2027 2월 24 22:33 login.defs drwxr-xr-x. 2 root root 4096 2월 24 23:10 test -rw-r--r--. 1 root root 0 2월 24 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개가 모두 복사되었음을 알 수 있습니다.
위 풀이법보다 더 좋은 방법들이 많을테지만, 그건 차츰 공부하면서 알아가야겠습니다.
위에서 언급했듯이 다음 포스팅에는 다중 명령어, 특수문자의 종류와 사용법에 대해 올리겠습니다.
'[Linux] 리눅스(CentOS7)' 카테고리의 다른 글
[Linux] 리눅스의 특수문자 종류와 사용법 (0) | 2022.02.26 |
---|---|
[Linux] 리눅스의 다중 명령어 및 사용법 (0) | 2022.02.25 |
[Linux] 리눅스 기본 사용법 및 명령어_2 (0) | 2022.02.23 |
[Linux] 리눅스 기본 사용법 및 명령어 (0) | 2022.02.22 |
[Linux] Putty로 CentOS7 ssh 원격 접속하기 (0) | 2022.02.21 |