파일 시스템 탐색
파일 시스템
- 운영체제가 디스크(파티션) 상에 파일들을 구성하는 방식
- 파일과 디렉터리의 집합을 구조적으로 관리하는 체계
- 다양한 형식의 파일 시스템이 존재
- 리눅스는 전체 파일 시스템을 1개의 트리 구조로 관리(1개의 루트 디렉터리만 있음)
ls 명령
- 파일과 서브 디렉터리 목록을 나열하는 명령: 옵션에 따라 파일(또는 디렉터리)이 가지는 속성도 확인할 수 있음
- ls [options] [names]
- ls directory: 디렉터리에 존재하는 파일과 서브 디렉터리의 정보를 출력
- ls file: 해당 파일의 정보를 출력
$ ls .
file1.txt file2.jpg directory1 directory2
$ ls -l date.txt
-rw-r--r-- 1 user group 1024 Jan 1 00:00 date.txt
$ ls .
:- 이 명령은 현재 디렉토리(
.
)의 내용을 나열한다. 파일과 서브 디렉터리가 출력된다.
- 이 명령은 현재 디렉토리(
$ ls -l date.txt
:-l
옵션은 파일의 상세 정보를 나열한다. 이 경우date.txt
파일에 대한 상세 정보가 출력된다(권한, 소유자, 크기, 수정 날짜 등).
옵션
- -a = -all : 모든 파일을 보여줌, 점으로 시작ㅎ하는 숨김 파일도 보여줌
- -d = --directory: 디렉터리 자체에 대한 정보를 보여줌
- -F = --classify: 우측에 파일의 종류를 알려주는 문자를 붙임. 실행 파일은 *, 디렉터리는 /, 심볼릭 링크는 @를 붙여 보여줌
- -l = --format = long : 긴 포맷으로 결과를 보여줌
- -R = --recursive: 재귀적으로 수행되는데 서브 디렉터리의 내용도 나열함
- -S = --sort=size : 파일의 크기 순서로 결과를 보여줌
- -t = --sirt=time : 최종 순서 시간 순으로 보여줌
파일의 종류
정규 파일
- 데이터를 저장하는 데 주로 사용
- 각종 텍스트 파일, 실행 파일, 이미지 파일 등 리눅스에서 사용하는 대부분의 파일
- 실행 파일이나 이미지 파일의 경우 바이너리 형태로 저장되어 바이너리 파일이라고 함
디렉터리
- 리눅스에서 디렉터리도 파일로 취급
- 해당 디렉터리에 저장된 파일이나 하위 디렉터리에 대한 정보가 저장
심볼릭 링크
- '소프트 링크'라고도 함
- 절대 또는 상대 경로로 원본 파일을 가리키는 링크
- 윈도우의 '바로가기'와 비슷
장치 파일
- 리눅스에서 프린터, CD-ROM, 하드 디스크, 키보드 등과 같은 각종 장치를 파일로 취급
- 블록 디바이스 파일과 문자 디바이스 파일로 구분됨
file 명령
- 파일의 종류를 알려주는 명령
- file /dev/sda1
pwd 명령
- 절대 경로 방식으로 현재 작업 디렉터리를 알려주는 명령
- pwd
cd 명령
- 작업 디렉터리를 이동하는 명령
- 디렉터리를 지정하지 않으면 사용자의 홈 디렉터리로 이동함
- cd [directory]
- 디렉터리를 지정하는 방법은 절대 경로와 상대 경로가 있음
- cd /usr/bin -> 절대 경로
- cd subdir1; cd ../dir1 -> 상대경로
파일과 디렉터리 관리
Mkdir 명령
디렉터리를 만드는 명령
mkdir [options ]directories
- mkdir dir1 dir2 dir3
옵션
- -p는 필요한 경우 상위 디렉터리를 만듦
- mkdir -p backup/java
- -m은 디렉터리를 만들면서 접근권한을 설정
$ mkdir dir1 dir2 dir3
(아무런 출력 없음)
$ mkdir -p backup/java
(아무런 출력 없음)
$ mkdir dir1 dir2 dir3
:- 이 명령은
dir1
,dir2
,dir3
라는 세 개의 디렉터리를 현재 경로에 생성합니다. 명령이 성공적으로 수행되면, 아무런 출력이 없습니다.
- 이 명령은
$ mkdir -p backup/java
:-p
옵션을 사용하여backup
디렉터리 안에java
디렉터리를 생성합니다. 만약backup
디렉터리가 존재하지 않는다면,backup
디렉터리도 함께 생성됩니다. 이 명령도 성공적으로 수행되면 아무런 출력이 없습니다.
rmdir 명령
- 디렉터리 삭제하는 명령
- 비어 있는 디렉터리만 삭제할 수 있음
- 디렉터리를 무조건 삭제하려면(모든 파일과 하위 폴더를 포함)
- rm-r dir 또는 rm -rf dir를 사용해야함(주의가 필요)
- 옵션
-p는 비어 있는 디렉터리를 삭제하면서 부모 디렉터리가 비게 되는 경우 사용- Rmdir -p dir1/dir2
$ rmdir dir1
(아무런 출력 없음 또는 "rmdir: failed to remove 'dir1': Directory not empty" 에러 메시지)
$ rm -r dir2
(아무런 출력 없음)
$ rm -rf dir3
(아무런 출력 없음)
$ rmdir -p dir4/dir5
(아무런 출력 없음 또는 "rmdir: failed to remove 'dir4/dir5': No such file or directory" 에러 메시지)
$ rmdir dir1
:rmdir
명령은 비어 있는 디렉터리를 삭제.dir1
이 비어 있지 않으면, 오류 메시지가 출력.
$ rm -r dir2
:rm -r
명령은 디렉터리와 그 안의 모든 내용(파일 및 하위 디렉터리)을 재귀적으로 삭제.dir2
및 그 안의 모든 내용이 삭제.
$ rm -rf dir3
:rm -rf
명령은 디렉터리와 그 안의 모든 내용을 재귀적으로 강제 삭제. 이 때, 사용자에게 추가적인 확인을 요구하지 않는다.
$ rmdir -p dir4/dir5
:rmdir -p
옵션은 지정한 디렉터리와 그 부모 디렉터리들을 순차적으로 삭제한다, 단 모두 비어 있어야 한다.dir5
가 비어 있고 삭제된 후dir4
도 비게 되면dir4
도 삭제된다.
cp 명령
- 파일이나 디렉터리를 복샇하는 명령
- cp [options] file1 file2
- cp -i file1 file2
- 대상 파일이 존재한다면 덮어쓰기가 수행됨
- cp [options] files directory
- 마지막 인자가 디렉터리인 경우
- 여러 파일을 지정된 디렉터리에 같은 이름으로 복사
- cp file1 file2 dir1
- cp -r [options] directory1 directory2
- 디렉터리를 재귀적으로 복사할 때 -r 옵션을 사용
- 대상 디렉터리가 존재하는 경우, 그곳에 디렉터리 자체가 복사됨
$ cp -i file1 file2
overwrite 'file2'? (y/n [n])
(사용자가 'y'를 입력하면 아무런 출력 없음, 'n'을 입력하면 파일이 복사되지 않음)
$ cp file1 file2 dir1
(아무런 출력 없음)
$ cp -r directory1 directory2
(아무런 출력 없음 또는 "cp: cannot create directory 'directory2': No such file or directory" 에러 메시지)
각 명령에 대한 설명
$ cp -i file1 file2
:-i
옵션은 대상 파일(file2
)이 존재할 경우, 덮어쓰기 전에 사용자에게 확인을 요청. 사용자가 'y'를 입력하면 파일을 덮어쓰고, 'n'을 입력하면 덮어쓰기가 수행되지 않는다.
$ cp file1 file2 dir1
:file1
과file2
를dir1
디렉터리로 복사. 마지막 인자가 디렉터리이므로, 해당 디렉터리 내에 동일한 이름으로 파일이 복사.
$ cp -r directory1 directory2
:-r
옵션을 사용하여directory1
디렉터리를directory2
디렉터리로 재귀적으로 복사. 만약directory2
가 존재하지 않는다면,directory2
라는 이름의 새 디렉터리에directory1
의 내용이 복사.
mv 명령
- 파일 또는 디렉토리의 이름을 변경하는 명령, 또는 다른 디렉터리로 이동하는 명령
- mv [options] source target
- mv file1 file2
- 이름을 변경, 대상 파일이 존재한다면 덮어쓰기 수행
- mv dir1 dir2
- 디렉터리 이름을 변경. 대상 디렉터리가 존재한다면 서브 디렉터리로 이동됨
- mv [options] files directory
- 마지막 인자가 존재하는 디렉터리인 경우, 여러 파일을 지정된 디렉터리로 이동함
- mv file1 file2 dir1
$ mv file1 file2
(아무런 출력 없음 또는 "mv: 'file2'를 덮어쓰시겠습니까? (y/n)" 에러 메시지)
$ mv dir1 dir2
(아무런 출력 없음 또는 "mv: cannot move 'dir1' to 'dir2': Directory not empty" 에러 메시지)
$ mv file1 file2 dir1
(아무런 출력 없음)
각 명령에 대한 설명
$ mv file1 file2
:file1
을file2
로 이름 변경 또는 덮어쓰기 한다.file2
가 이미 존재한다면, 덮어쓰기 확인 메시지가 나타날 수 있다.
$ mv dir1 dir2
:dir1
디렉터리를dir2
로 이름 변경. 만약dir2
가 이미 존재하고 비어 있지 않다면,dir1
이dir2
의 하위 디렉터리로 이동.
$ mv file1 file2 dir1
:file1
과file2
를dir1
디렉터리로 이동.dir1
은 마지막 인자이므로 여러 파일이 해당 디렉터리로 이동.
rm 명령
- 파일을 삭제하는 명령
- 기본적으로 파일만 삭제함
- rm [options] files
- 파일을 삭제할 때 조심해야 함
- alias rm='rm -i'를 수행하여 에일리어스 설정을 하는 것도 좋은 방법임
- 옵션
- -r옵션은 디렉터리(포함된 파일과 서브 디렉터리)를 모두 함께 삭제
- -i옵션은 삭제 전에 물어봄
- -f옵션은 물어보지 않고 무조건 삭제함
파일의 접근 권한
- 권한이 없는 사용자의 접근을 막기 위해 접근권한을 설정함
- 사용자 부류에 따라 읽기/쓰기/실행 권한을 각각 설정
- 사용자 부류
- 소유자(u), 그룹(g), 기타(o)
- 권한
- 읽기(r): 파일의 내용 보기
- 쓰기(w): 파일의 내용 수정과 삭제 또는 파일 이름 바꾸기
- 실행(x): 파일을 실행
디렉터리의 접근 권한
권한
- 읽기(r): 디렉터리가 가진 파일과 서브 디렉터리의 목록 보기
- 쓰기(w): 파일과 디렉터리를 만들거나 삭제하기
- 실행(x): 디렉터리로 이동하거나 디렉터리에서 프로그램을 실행하기, 또는 파일의 메타 정보 보기
- 디렉터리를 자유롭게 사용하려면 읽기/쓰기/실행 권한을 모두 가져야 함
- 적어도 읽기와 실행 권한을 가지고 있어야, 해당 디렉터리로 이동하거나 해당 디렉터리에서 ls -l 명령을 수행할 수 있음
$ ls -ld /home ~jjpark
drwxr-xr-x 10 root root 4096 Jan 1 12:00 /home
drwxr-xr-x 35 jjpark jjpark 4096 Nov 30 08:00 /home/jjpark
$ ls -ld /home ~jjpark
:ls -ld
명령은 지정된 디렉터리에 대한 상세 정보를 보여준다./home
디렉터리의 권한, 소유자, 크기 등의 정보와 사용자jjpark
의 홈 디렉터리에 대한 정보를 출력한다.drwxr-xr-x
: 디렉터리(d)의 권한. 소유자(rwx), 그룹(r-x), 다른 사용자(r-x)의 권한을 나타낸다. 여기서rwx
는 읽기, 쓰기, 실행 권한을 모두 가진다는 의미이며,r-x
는 읽기와 실행 권한만 가진다는 의미다.10
,35
: 해당 디렉터리에 있는 항목의 수.root
,jjpark
: 디렉터리의 소유자.4096
: 디렉터리의 크기(바이트 단위).Jan 1 12:00
,Nov 30 08:00
: 디렉터리의 마지막 수정 시간.
chmod 명령
파일 소유자가 파일의 접근권한을 변경하는 명령
chmod [options] mode files
- -R 옵션을 디렉터리에 적용하면 포함된 모든 파일과 서브 디렉터리까지 권한을 변경
8진수 모드
- 읽기(r)는 4, 쓰기(w)는 2, 실행(x)은 1
- 예 wxr-xr-xr -> 111101101 -> 755
- chmod -R 755 dir1
기호 모드
- 형식은 [ugoa][+-=][rwx]
- ugoa는 각각 user, group, other, all을 의미, 생략하면 all
- +-=는 각각 권한의 추가, 제거, 지정을 의미
- chmod u+x file1
- chmod u=rwx,g=rx,0=x file2
umask 명령
- 파일이나 디렉터리 접근권한의 기본값을 출력하거나 설정하는 명령
- 보통 /etc/bashrc에 설정되어 있음
- umask [-S] [mask]
- 단순히 umask(또는 umask -S) 명령을 실행하면 현재 기본값을 알 수 있음
- -S 옵션은 기호 모드로 결과를 보여줌
- umask002
- 마스크 값이 002라는 것은 -------W-, 즉 기타 사용자에게 쓰기 권한을 부여하지 않겠다는 것
- 결국 마스크값이 002라는 것은 디렉터리에 775라는 접근권한을 주는 것
- 파일의 경우 실행 권한은 부여되지 않으며 접근권한은 664가 됨
- 참고로 tocuh file 명령은 파일의 접근/수정 시간을 현재 시간으로 변경하며 파일이 존재하지 않으면 파일을 생성함
chown 명령
- root 사용자가 파일이나 디렉터리의 소유자 또는 소유그룹을 변경하는 명령
- 파일 (또는 디렉터리)의 소유자는 파일을 생성한 사용자로, 소유 그룹은 그 사용자가 속한 그룹으로 기본 설정됨
- chown [options] newowner files
- newowner에 소유자만 주어지면 소유자만 변경하는 것
- 소유자 :그룹 또는 소유자 .그룹의 형태로 지정할 수 있음
- 소유자가 생략되면(:그룹) 변경이 없는 것이며, 그룹이 생략되면 (소유자:) 소유자와 같은 그룹으로 정해짐
- -R 옵션을 사용하여 디렉터리에 적용하면 재귀적으로 적용할 수 있음
ln 명령
파일을 다른 이름으로 연결하는 명령
ln [options] 원본 파일명 [대상 파일명]
- 기본적으로 하드 링크를 만들며, -s 옵션을 사용하면 심벌릭 링크가 만들어짐
하드 링크
- 하나의 파일에 다른 이름을 부여하는 것
- 원본 파일의 링크 카운트가 증가함
- 다른 파일 시스템에는 링크할 수 없음. 디렉터리에도 만들 수 없음
심벌릭 링크
- 윈도우의 '바로 가기'와 같은 역할의 독립적 파일
- 다른 파일 시스템에 심벌릭 링크를 만들 수 있음
- 원본을 삭제하면 심벌릭 링크는 의미가 없어짐
- 디렉터리의 경우, 심벌릭 링크만 만들 수 있음
하드 링크와 심벌릭 링크의 차이
$ ls -l file1
-rw-r--r-- 1 user user 1024 Nov 30 10:00 file1
$ ln file1 file1.hl
(아무런 출력 없음)
$ ln -s file1 file1.sl
(아무런 출력 없음)
$ ls -li file1*
12345 -rw-r--r-- 2 user user 1024 Nov 30 10:00 file1
12345 -rw-r--r-- 2 user user 1024 Nov 30 10:00 file1.hl
67890 lrwxrwxrwx 1 user user 5 Nov 30 10:01 file1.sl -> file1
$ ls -l file1
:file1
파일에 대한 상세 정보를 보여준다. 파일 권한, 링크 수, 소유자, 파일 크기, 마지막 수정 시간 등이 출력된다.
$ ln file1 file1.hl
:file1
에 대한 하드 링크file1.hl
을 생성한다. 하드 링크 생성 후에는 별도의 출력이 없다.
$ ln -s file1 file1.sl
:file1
에 대한 심벌릭 링크file1.sl
을 생성한다. 심벌릭 링크 생성 후에도 별도의 출력이 없다.
$ ls -li file1*
:file1
과 그 하드 링크, 심벌릭 링크에 대한 상세 정보를 출력한다.- 하드 링크
file1.hl
은 원본 파일과 동일한 아이노드 번호(12345)와 링크 수(2)를 가진다. - 심벌릭 링크
file1.sl
은 다른 아이노드 번호(67890)를 가지며, 원본 파일(file1
)을 가리키는 링크 정보를 포함한다.
파일의 내용 확인
more 명령
- 파일의 내용을 화면 단위로 출력하는 명령
- 한 화면을 보여주고 일단 멈춤
- more [options] files
- 한 화면에 모두 보여줄 수 없을 때 '--More--(69%)'와 같은 메시지가 나옴
- 스페이스바를 누르면 다음 화면으로 이동
- 엔터를 누르면 한 라인씩 이동
- q를 누르면 종료
- more -20 +10 /etc/services
-> 20 라인 단위로 보여주며 10번째 라인부터 보여줌
less 명령
- more 명령의 개선된 버전
- 위 또는 아래로 스크롤 가능: page up, page down, 화살표 위, 화살표 아래
- 다양한 내부 명령이 있음
- 라인/화면 단위 상대 이동, 라인/퍼센트로 지정하여 위치 이동, 검색 등
head 명령
- 파일의 맨 앞 부분을 출력하는 명령(기본은 10 라인)
- head [options] [files]
- 옵션 -n 숫자 또는 -숫자를 사용하면 보고 싶은 라인 수를 변경할 수 있음
- head -n 5 /etc/passwd
- head -3 /etc/*.conf
$ head -n 5 /etc/passwd
(첫 5줄의 내용이 출력됨)
$ head -3 /etc/*.conf
(모든 .conf 파일의 첫 3줄씩 순차적으로 출력됨)
$ head -n 5 /etc/passwd
:head -n 5
명령은/etc/passwd
파일의 첫 5줄을 출력한다. 이 파일은 시스템 사용자 계정 정보를 담고 있음.
$ head -3 /etc/*.conf
:head -3 /etc/*.conf
명령은/etc
디렉터리 내의 모든.conf
확장자를 가진 파일들의 첫 3줄을 출력한다. 와일드카드(*) 사용으로 여러 파일에 대한 출력이 가능함.
tail 명령
- 파일의 마지막 부분을 출력하는 명령(기본은 10 라인)
- tail [options] [files]
- head 명령과 같은 옵션을 사용할 수 있으며, 또 옵션 -n +숫자를 사용하면 해당 라인부터 끝까지 출력함
- -f 옵션을 사용하면 변화하는 파일의 내용을 계속 감시
- tail -f /var/log/messages
cat 명령
- 하나의 파일 또는 여러 파일을 연결시켜 화면에 출력
- cat [options] [files]
- 파일을 지정하지 않으면 표준입력으로부터 읽음
- cat >file을 수행하여 텍스트 파일을 만들 수 있음
- 여러 파일의 내용을 연결시킬 때 >를 사용할 수 있음 (리다이렉션 활용)
- 옵션 -n을 사용하면 출력 결과에 라인 번호를 붙일 수 있음
$ cat > cat1.txt
Hello World
(입력 종료 후 Ctrl+D)
$ cat cat1.txt
Hello World
$ cat cat*.txt > total.txt
(아무런 출력 없음)
$ cat > cat1.txt
:- 새로운 파일
cat1.txt
를 생성하고, 표준 입력으로부터 입력받은 내용을 저장한다. 여기서는 "Hello World"를 입력한 후 Ctrl+D로 입력을 종료한다.
- 새로운 파일
$ cat cat1.txt
:cat1.txt
파일의 내용을 화면에 출력한다. 이 경우 "Hello World"가 출력된다.
$ cat cat*.txt > total.txt
:- 와일드카드(
cat*.txt
)를 사용하여cat
으로 시작하는 모든 텍스트 파일의 내용을total.txt
파일에 연결하여 저장한다. 이 명령은 터미널에 직접적인 출력을 하지 않는다.
- 와일드카드(
요약
- 리눅스 파일 시스템에는 전체적으로 단 하나의 루트 디렉터리만 존재한다.
- 리눅스에서는 디렉터리나 디바이스를 보통의 파일인 것처럼 다룰 수 있다.
- 작업 디렉터리의 변경, 파일과 디렉터리의 상태 확인이나 조작을 위해, ls, file, pwd, cd, mkdir, rmdir, cp, mv, rm, ln 명령을 사용한다.
- 하드 링크를 만드는 것은 파일의 새로운 이름을 만드는 것이고, 심벌릭 링크는 '바로가기' 파일이다.
- chmod, umask, chown 명령을 사용하여 파일이나 디렉터리의 소유자나 접근권한을 변경시킬 수 있다.
- 텍스트 파일의 내용을 확인하기 위해 more, less, head, tail, cat 명령 등을 사용한다.
- less 명령은 긴 텍스트 파일을 보기 위한 명령이며, more 명령의 개선된 버전이다.
예상 문제
1. 리눅스 파일 시스템에서 파일과 디렉터리를 구성하는 방식의 이름은 무엇인가?
- A) 트리 구조
- B) 클러스터 시스템
- C) 블록 체인
- D) 네트워크 구조
- 정답: A) 트리 구조
- 해설: 리눅스 파일 시스템은 파일과 디렉터리를 구성하는 방식으로 트리 구조를 사용한다.
2. 'ls -R' 명령의 기능은 무엇인가?
- A) 파일의 권한을 표시
- B) 현재 디렉터리의 파일 목록을 표시
- C) 모든 서브 디렉터리의 내용을 재귀적으로 나열
- D) 숨겨진 파일을 포함하여 표시
- 정답: C) 모든 서브 디렉터리의 내용을 재귀적으로 나열
- 해설: 'ls -R' 명령은 현재 디렉터리뿐만 아니라 모든 서브 디렉터리의 내용을 재귀적으로 나열한다.
3. 리눅스에서 'file' 명령의 주요 기능은 무엇인가?
- A) 파일을 복사
- B) 파일의 종류를 확인
- C) 파일을 이동
- D) 파일을 삭제
- 정답: B) 파일의 종류를 확인
- 해설: 'file' 명령은 주어진 파일의 종류를 확인하는 데 사용된다.
4. 'cp -r' 명령의 기능은 무엇인가?
- A) 파일을 복사하고 이름을 변경
- B) 디렉터리를 재귀적으로 복사
- C) 파일의 권한을 복사
- D) 파일을 복사하고 원본을 삭제
- 정답: B) 디렉터리를 재귀적으로 복사
- 해설: 'cp -r' 명령은 디렉터리를 포함한 모든 내용을 재귀적으로 복사한다.
5. 'chmod u+x file1' 명령의 작동 방식은 무엇인가?
- A) file1의 모든 사용자에게 실행 권한을 부여
- B) file1의 소유자에게만 실행 권한을 부여
- C) file1의 그룹에게 실행 권한을 제거
- D) file1의 모든 사용자의 실행 권한을 제거
- 정답: B) file1의 소유자에게만 실행 권한을 부여
- 해설: 'chmod u+x file1' 명령은 file1의 소유자에게 실행 권한을 부여한다.
6. 'ln -s file1 file1.sl' 명령의 결과는 무엇인가?
- A) file1에 대한 하드 링크 생성
- B) file1에 대한 심벌릭 링크 생성
- C) file1을 file1.sl로 이동
- D) file1.sl 파일을 file1으로 복사
- 정답: B) file1에 대한 심벌릭 링크 생성
- 해설: 'ln -s file1 file1.sl' 명령은 file1에 대한 심벌릭 링크 file1.sl을 생성한다.
7. 리눅스에서 'more' 명령의 주요 사용 용도는 무엇인가?
- A) 파일의 내용을 화면 단위로 출력
- B) 파일을 복사
- C) 디렉터리의 내용을 나열
- D) 파일의 권한을 변경
- 정답: A) 파일의 내용을 화면 단위로 출력
- 해설: 'more' 명령은 파일의 내용을 화면 단위로 출력하며, 사용자가 내용을 차례대로 볼 수 있게 한다.
8. 'head -n 5 file1' 명령의 결과는 무엇인가?
- A) file1의 마지막 5 라인 출력
- B) file1의 첫 5 라인 출력
- C) file1의 5번째 라인만 출력
- D) file1의 내용을 5번 출력
- 정답: B) file1의 첫 5 라인 출력
- 해설: 'head -n 5 file1' 명령은 file1 파일의 첫 5 라인을 출력한다.
9. 'tail -f /var/log/messages' 명령의 목적은 무엇인가?
- A) /var/log/messages 파일의 마지막 10 라인을 지속적으로 출력
- B) /var/log/messages 파일의 내용을 모두 출력
- C) /var/log/messages 파일을 실시간으로 모니터링
- D) /var/log/messages 파일을 복사
- 정답: C) /var/log/messages 파일을 실시간으로 모니터링
- 해설: 'tail -f /var/log/messages' 명령은 /var/log/messages 파일의 내용을 실시간으로 모니터링하며, 새로운 내용이 추가될 때마다 이를 출력한다.
10. 'cat > file1' 명령을 수행하는 경우, 어떤 동작이 이루어지는가?
- A) file1의 내용을 화면에 출력
- B) 표준 입력으로부터 받은 내용을 file1에 저장
- C) file1을 삭제
- D) file1의 내용을 복사
- 정답: B) 표준 입력으로부터 받은 내용을 file1에 저장
- 해설: 'cat > file1' 명령은 사용자가 입력한 내용을 표준 입력으로 받아서 file1 파일에 저장한다.
11. 리눅스 시스템에서 디렉터리의 '실행(x)' 권한이 없는 경우, 사용자가 할 수 없는 동작은 무엇인가?
- A) 디렉터리 내 파일 목록 보기
- B) 디렉터리 내 파일 생성 및 삭제
- C) 디렉터리 내 파일 내용 보기
- D) 해당 디렉터리로 이동
- 정답: D) 해당 디렉터리로 이동
- 해설: 디렉터리에 '실행(x)' 권한이 없으면 해당 디렉터리로 이동할 수 없다.
12. 리눅스에서 'ls -a' 명령의 주된 기능은 무엇인가?
- A) 현재 디렉터리의 모든 파일과 디렉터리 나열
- B) 숨겨진 파일을 제외하고 나열
- C) 파일 크기 순으로 나열
- D) 파일의 상세 정보 나열
- 정답: A) 현재 디렉터리의 모든 파일과 디렉터리 나열
- 해설: 'ls -a' 명령은 현재 디렉터리에 있는 모든 파일과 디렉터리를 나열한다, 숨겨진 파일과 디렉터리도 포함하여.
13. 'mkdir -p path/to/dir' 명령이 수행하는 작업은 무엇인가?
- A) 'path/to/dir' 경로에 있는 모든 디렉터리를 삭제
- B) 'path/to/dir' 경로에 존재하지 않는 중간 디렉터리를 포함하여 'dir' 생성
- C) 'path/to/dir' 경로에 있는 디렉터리를 복사
- D) 'path/to/dir' 경로에 있는 디렉터리의 권한 변경
- 정답: B) 'path/to/dir' 경로에 존재하지 않는 중간 디렉터리를 포함하여 'dir' 생성
- 해설: 'mkdir -p path/to/dir' 명령은 지정된 경로에 있는 모든 중간 디렉터리가 존재하지 않으면, 그들을 생성하고 최종적으로 'dir' 디렉터리를 만든다.
14. 리눅스에서 'rmdir' 명령이 실패하는 경우는 언제인가?
- A) 디렉터리가 비어 있을 때
- B) 디렉터리가 존재하지 않을 때
- C) 디렉터리가 비어 있지 않을 때
- D) 사용자에게 충분한 권한이 없을 때
- 정답: C) 디렉터리가 비어 있지 않을 때
- 해설: 'rmdir' 명령은 디렉터리가 비어 있지 않은 경우에 실패한다. 이 명령은 오직 비어 있는 디렉터리만 삭제할 수 있다.
15. 'mv oldname newname' 명령은 무엇을 수행하는가?
- A) 'oldname'을 'newname'으로 복사
- B) 'oldname'을 삭제하고 'newname'을 생성
- C) 'oldname'의 이름을 'newname'으로 변경
- D) 'oldname'과 'newname'을 비교
- 정답: C) 'oldname'의 이름을 'newname'으로 변경
- 해설: 'mv oldname newname' 명령은 파일이나 디렉터리의 이름을 'oldname'에서 'newname'으로 변경한다.
16. 리눅스에서 'chmod 755 file' 명령의 의미는 무엇인가?
- A) file의 권한을 읽기 전용으로 변경
- B) file에 대한 모든 권한을 사용자에게 부여
- C) file의 읽기, 쓰기 권한을 모든 사용자에게 부여
- D) file의 읽기, 쓰기, 실행 권한을 소유자에게 부여하고, 나머지에게는 읽기와 실행 권한 부여
- 정답: D) file의 읽기, 쓰기, 실행 권한을 소유자에게 부여하고, 나머지에게는 읽기와 실행 권한 부여
- 해설: 'chmod 755 file' 명령은 file에 대해 소유자에게 모든 권한(7)을 부여하고, 그룹과 기타 사용자에게는 읽기(4)와 실행(1) 권한을 부여한다.
17. 'ln file link' 명령이 수행하는 작업은 무엇인가?
- A) file을 link로 이동
- B) link라는 새 파일을 file로 복사
- C) file에 대한 하드 링크 link 생성
- D) file을 link라는 이름의 디렉터리로 복사
- 정답: C) file에 대한 하드 링크 link 생성
- 해설: 'ln file link' 명령은 'file'에 대한 하드 링크 'link'를 생성한다. 이 링크는 원본 파일과 동일한 데이터를 가리킨다.
18. 'umask 002' 명령의 결과는 무엇인가?
- A) 모든 사용자에게 쓰기 권한 부여
- B) 파일과 디렉터리 생성 시 기타 사용자에게 쓰기 권한 제외
- C) 모든 사용자의 쓰기 권한 제거
- D) 파일과 디렉터리의 모든 권한 제거
- 정답: B) 파일과 디렉터리 생성 시 기타 사용자에게 쓰기 권한 제외
- 해설: 'umask 002' 명령은 새로 생성되는 파일과 디렉터리에 대해 기타 사용자의 쓰기 권한을 제외한다. 결과적으로 디렉터리는 775, 파일은 664 권한을 갖게 된다.
19. 'chown user:group file' 명령의 작업은 무엇인가?
- A) 'file'의 소유자를 'user'로, 그룹을 'group'으로 변경
- B) 'file'을 'user'와 'group' 디렉터리로 복사
- C) 'file'의 이름을 'user:group'으로 변경
- D) 'file'의 권한을 'user'와 'group'에게만 부여
- 정답: A) 'file'의 소유자를 'user'로, 그룹을 'group'으로 변경
- 해설: 'chown user:group file' 명령은 'file'의 소유자를 'user'로 변경하고, 소유 그룹을 'group'으로 변경한다.
20. 리눅스에서 'cat file1 file2 > file3' 명령의 기능은 무엇인가?
- A) file1과 file2의 내용을 합쳐 file3에 저장
- B) file1과 file2의 내용을 비교하고 결과를 file3에 저장
- C) file1과 file2를 file3으로 복사
- D) file3의 내용을 file1과 file2에 복사
- 정답: A) file1과 file2의 내용을 합쳐 file3에 저장
- 해설: 'cat file1 file2 > file3' 명령은 file1과 file2의 내용을 순서대로 합쳐서 file3에 저장한다.
21. 리눅스에서 'ls -l' 명령이 출력하는 정보에는 어떤 것들이 포함되는가?
- A) 파일 이름과 크기
- B) 파일 권한, 소유자, 크기, 수정 날짜
- C) 파일과 디렉터리의 목록
- D) 현재 디렉터리의 위치
- 정답: B) 파일 권한, 소유자, 크기, 수정 날짜
- 해설: 'ls -l' 명령은 파일의 권한, 소유자, 크기, 마지막 수정 날짜 등의 상세한 정보를 출력한다.
22. 'chmod 644 file' 명령이 file에 적용하는 권한 조합은 무엇인가?
- A) 모든 사용자에게 읽기 및 쓰기 권한 부여
- B) 소유자에게 읽기 및 쓰기, 그룹과 기타 사용자에게 읽기 권한 부여
- C) 소유자에게 모든 권한, 그룹과 기타 사용자에게 읽기 권한 부여
- D) 모든 사용자에게 읽기 권한만 부여
- 정답: B) 소유자에게 읽기 및 쓰기, 그룹과 기타 사용자에게 읽기 권한 부여
- 해설: 'chmod 644 file' 명령은 파일의 소유자에게 읽기(4)와 쓰기(2) 권한을, 그룹과 기타 사용자에게는 읽기(4) 권한만 부여한다.
23. 리눅스에서 'pwd' 명령의 주요 기능은 무엇인가?
- A) 현재 작업 디렉터리의 경로 출력
- B) 사용자의 비밀번호 변경
- C) 프로세스의 작업 디렉터리 출력
- D) 시스템의 전체 디렉터리 구조 출력
- 정답: A) 현재 작업 디렉터리의 경로 출력
- 해설: 'pwd' 명령은 사용자가 현재 위치한 작업 디렉터리의 절대 경로를 출력한다.
24. 'tail -n +5 file' 명령이 수행하는 작업은 무엇인가?
- A) 'file'의 처음 5 라인만 출력
- B) 'file'의 마지막 5 라인만 출력
- C) 'file'의 5번째 라인부터 끝까지 출력
- D) 'file'의 5번째 라인만 출력
- 정답: C) 'file'의 5번째 라인부터 끝까지 출력
- 해설: 'tail -n +5 file' 명령은 'file'의 5번째 라인부터 시작하여 파일의 끝까지의 내용을 출력한다.
25. 'rm -rf directory' 명령이 수행하는 작업은 무엇인가?
- A) 'directory'와 그 안의 모든 파일과 서브 디렉터리를 재귀적으로 삭제
- B) 'directory'의 권한을 재귀적으로 변경
- C) 'directory'를 다른 위치로 이동
- D) 'directory'의 이름을 변경
- 정답: A) 'directory'와 그 안의 모든 파일과 서브 디렉터리를 재귀적으로 삭제
- 해설: 'rm -rf directory' 명령은 'directory' 디렉터리와 그 안에 포함된 모든 파일 및 서브 디렉터리를 재귀적으로 강제 삭제한다.
26. 'chown user file' 명령이 file에 적용하는 변경 사항은 무엇인가?
- A) 'file'의 권한을 'user'로 변경
- B) 'file'을 'user' 디렉터리로 이동
- C) 'file'의 소유자를 'user'로 변경
- D) 'file'과 'user'를 연결
- 정답: C) 'file'의 소유자를 'user'로 변경
- 해설: 'chown user file' 명령은 'file'의 소유자를 'user'로 변경한다.
27. 'ln -s source target' 명령이 생성하는 링크의 종류는 무엇인가?
- A) 하드 링크
- B) 심벌릭 링크
- C) 직접 링크
- D) 간접 링크
- 정답: B) 심벌릭 링크
- 해설: 'ln -s source target' 명령은 'source' 파일에 대한 심벌릭(소프트) 링크 'target'을 생성한다.
28. 'cat file1 > file2' 명령이 수행하는 작업은 무엇인가?
- A) 'file1'의 내용을 'file2'에 추가
- B) 'file1'과 'file2'의 내용을 합침
- C) 'file1'의 내용을 'file2'로 복사
- D) 'file2'의 내용을 'file1'에 복사
- 정답: C) 'file1'의 내용을 'file2'로 복사
- 해설: 'cat file1 > file2' 명령은 'file1'의 내용을 'file2'로 복사한다. 이때 'file2'의 기존 내용은 덮어쓰기 된다.
29. 'less file' 명령을 사용할 때, 파일 내용을 아래로 스크롤하는 키는 무엇인가?
- A) Page Up
- B) Page Down
- C) 화살표 위
- D) 화살표 아래
- 정답: B) Page Down
- 해설: 'less file' 명령을 사용할 때, Page Down 키는 파일 내용을 아래로 스크롤한다.
30. 리눅스에서 'mkdir -m 777 dir' 명령이 dir 디렉터리에 적용하는 권한 조합은 무엇인가?
- A) 모든 사용자에게 읽기, 쓰기, 실행 권한 부여
- B) 모든 사용자에게 읽기 권한만 부여
- C) 소유자에게 모든 권한 부여, 그룹과 기타 사용자에게는 읽기 권한만 부여
- D) 소유자에게 읽기, 쓰기 권한 부여, 그룹과 기타 사용자에게는 읽기 권한만 부여
- 정답: A) 모든 사용자에게 읽기, 쓰기, 실행 권한 부여
- 해설: 'mkdir -m 777 dir' 명령은 'dir' 디렉터리를 생성하고, 모든 사용자에게 읽기(4), 쓰기(2), 실행(1) 권한을 부여한다.
31. 'ls -t' 명령의 기능은 무엇인가?
- A) 파일 크기 순으로 정렬하여 나열
- B) 파일 수정 시간 순으로 정렬하여 나열
- C) 파일 이름 순으로 정렬하여 나열
- D) 숨겨진 파일 포함하여 나열
- 정답: B) 파일 수정 시간 순으로 정렬하여 나열
- 해설: 'ls -t' 명령은 파일을 마지막 수정 시간 순으로 정렬하여 나열한다.
32. 'ls -F' 명령이 파일 종류를 구분하여 보여주는 방식은 무엇인가?
- A) 색상으로 구분
- B) 파일 크기로 구분
- C) 특정 문자를 파일 이름 끝에 추가하여 구분
- D) 파일 형식에 따라 아이콘으로 구분
- 정답: C) 특정 문자를 파일 이름 끝에 추가하여 구분
- 해설: 'ls -F' 명령은 파일 종류를 구분하기 위해 파일 이름 끝에 특정 문자(예: '/'는 디렉터리, '*'는 실행 파일)를 추가하여 표시한다.
33. 'chmod -R 700 directory' 명령이 directory에 적용하는 권한 조합은 무엇인가?
- A) 모든 사용자에게 모든 권한 부여
- B) 소유자에게 모든 권한 부여, 그 외 사용자에게는 접근 금지
- C) 모든 사용자에게 읽기 권한만 부여
- D) 소유자에게 읽기 권한만 부여, 그 외 사용자에게는 접근 금지
- 정답: B) 소유자에게 모든 권한 부여, 그 외 사용자에게는 접근 금지
- 해설: 'chmod -R 700 directory' 명령은 directory 디렉터리와 그 안의 모든 파일 및 서브 디렉터리에 대해 소유자에게 읽기, 쓰기, 실행 권한을 부여하고, 다른 사용자에게는 아무런 권한을 부여하지 않는다.
34. 'chmod g+w file' 명령이 file에 적용하는 변경 사항은 무엇인가?
- A) 파일의 그룹에 읽기 권한을 추가
- B) 파일의 그룹에 쓰기 권한을 추가
- C) 파일의 그룹에 실행 권한을 제거
- D) 파일의 모든 사용자에게 쓰기 권한을 추가
- 정답: B) 파일의 그룹에 쓰기 권한을 추가
- 해설: 'chmod g+w file' 명령은 file에 대해 그룹 사용자에게 쓰기 권한을 추가한다.
35. 'cat -n file' 명령의 결과는 무엇인가?
- A) 파일 내용을 그대로 출력
- B) 파일 내용을 역순으로 출력
- C) 파일 내용에 라인 번호를 추가하여 출력
- D) 파일 내용을 두 번 출력
- 정답: C) 파일 내용에 라인 번호를 추가하여 출력
- 해설: 'cat -n file' 명령은 파일의 내용을 출력할 때 각 라인 앞에 라인 번호를 추가하여 출력한다.
36. 'touch newfile' 명령이 수행하는 작업은 무엇인가?
- A) newfile이라는 이름의 새로운 파일을 생성
- B) newfile의 내용을 삭제
- C) newfile의 수정 날짜를 현재 시간으로 변경
- D) newfile의권한을 변경
- 정답: A) newfile이라는 이름의 새로운 파일을 생성
- 해설: 'touch newfile' 명령은 newfile이라는 이름의 새로운 파일을 생성한다. 파일이 이미 존재하는 경우, 파일의 수정 날짜와 시간을 현재 시간으로 변경한다.
37. 리눅스에서 'cd -' 명령의 기능은 무엇인가?
- A) 사용자의 홈 디렉터리로 이동
- B) 이전에 작업하던 디렉터리로 이동
- C) 루트 디렉터리로 이동
- D) 상위 디렉터리로 이동
- 정답: B) 이전에 작업하던 디렉터리로 이동
- 해설: 'cd -' 명령은 사용자를 이전에 작업하던 디렉터리로 이동시킨다.
38. 'ls -d */' 명령의 결과는 무엇인가?
- A) 모든 파일의 목록을 나열
- B) 모든 디렉터리의 목록을 나열
- C) 현재 디렉터리의 상세 정보 출력
- D) 모든 숨겨진 파일과 디렉터리를 나열
- 정답: B) 모든 디렉터리의 목록을 나열
- 해설: 'ls -d */' 명령은 현재 디렉터리에 있는 모든 디렉터리의 목록을 나열한다.
39. 'head -n -5 file' 명령이 수행하는 작업은 무엇인가?
- A) 'file'의 처음부터 5 라인을 제외한 나머지를 출력
- B) 'file'의 마지막 5 라인을 제외하고 출력
- C) 'file'의 처음 5 라인만 출력
- D) 'file'의 마지막 5 라인만 출력
- 정답: B) 'file'의 마지막 5 라인을 제외하고 출력
- 해설: 'head -n -5 file' 명령은 'file'에서 마지막 5 라인을 제외한 나머지 부분을 출력한다.
40. 'mkdir -p /a/b/c'와 'mkdir /a/b/c' 명령의 차이점은 무엇인가?
- A) 둘 다 동일한 작업을 수행
- B) '-p' 옵션은 중간에 없는 디렉터리도 생성
- C) '/a/b/c'는 절대 경로, 다른 하나는 상대 경로
- D) '-p' 옵션은 디렉터리에 권한을 설정
- 정답: B) '-p' 옵션은 중간에 없는 디렉터리도 생성
- 해설: 'mkdir -p /a/b/c' 명령은 중간에 없는 디렉터리(/a, /a/b)도 함께 생성한다. 반면 'mkdir /a/b/c' 명령은 중간 디렉터리가 이미 존재해야만 'c' 디렉터리를 생성할 수 있다.
강의 노트의 내용에 근거하여 예상 문제를 추가 작성하였습니다. 다음은 추가된 예상 문제들입니다:
41. 'chmod u=rwx,g=rx,o=x file' 명령이 file에 적용하는 권한 조합은 무엇인가?
- A) 모든 사용자에게 읽기, 쓰기, 실행 권한 부여
- B) 소유자에게 모든 권한, 그룹에는 읽기와 실행, 기타 사용자에게는 실행 권한만 부여
- C) 소유자에게 읽기와 쓰기, 그룹과 기타 사용자에게 읽기 권한만 부여
- D) 모든 사용자에게 읽기 권한만 부여
- 정답: B) 소유자에게 모든 권한, 그룹에는 읽기와 실행, 기타 사용자에게는 실행 권한만 부여
- 해설: 'chmod u=rwx,g=rx,o=x file' 명령은 file에 대해 소유자에게 읽기, 쓰기, 실행(7) 권한을, 그룹에게는 읽기와 실행(5) 권한을, 기타 사용자에게는 실행(1) 권한만 부여한다.
42. 'ln file1 file2' 명령이 수행하는 작업은 무엇인가?
- A) file1을 file2로 복사
- B) file1에 대한 하드 링크 file2 생성
- C) file1을 file2로 이동
- D) file2에 대한 심벌릭 링크 file1 생성
- 정답: B) file1에 대한 하드 링크 file2 생성
- 해설: 'ln file1 file2' 명령은 file1에 대한 하드 링크 file2를 생성한다. 이 링크는 원본 파일과 동일한 데이터를 가리키며, 별도의 파일로 취급되지 않는다.
43. 'umask' 명령이 기본적으로 수행하는 작업은 무엇인가?
- A) 파일과 디렉터리의 접근권한을 변경
- B) 현재 설정된 기본 접근권한 마스크를 출력
- C) 모든 파일과 디렉터리의 권한을 리셋
- D) 사용자의 비밀번호를 변경
- 정답: B) 현재 설정된 기본 접근권한 마스크를 출력
- 해설: 'umask' 명령은 현재 설정된 파일과 디렉터리 생성 시 적용되는 기본 접근권한 마스크를 출력한다. 이 마스크는 새로 생성되는 파일과 디렉터리의 권한을 결정한다.
44. 'less file' 명령을 사용할 때, 검색 기능을 사용하는 방법은 무엇인가?
- A) Ctrl+F를 누르고 검색어 입력
- B) 검색어를 입력하고 Enter 키를 누름
- C) /를 누르고 검색어 입력, 그 후 Enter 키를 누름
- D) 검색어를 입력한 후 Page Down 키를 누름
- 정답: C) /를 누르고 검색어 입력, 그 후 Enter 키를 누름
- 해설: 'less file' 명령을 사용할 때, / 키를 누르고 검색하고자 하는 단어를 입력한 후 Enter 키를 누르면 파일 내에서 해당 단어를 검색할 수 있다.
45. 'chown user1:group1 file' 명령이 file에 적용하는 변경 사항은
무엇인가?
- A) 파일의 소유자를 user1로, 그룹을 group1으로 변경
- B) 파일을 user1 사용자와 group1 그룹의 홈 디렉터리로 이동
- C) 파일의 권한을 user1과 group1에게만 부여
- D) 파일의 이름을 user1:group1으로 변경
- 정답: A) 파일의 소유자를 user1로, 그룹을 group1으로 변경
- 해설: 'chown user1:group1 file' 명령은 파일의 소유자를 user1로 변경하고, 소유 그룹을 group1으로 변경한다.
46. 'rm -i file' 명령이 수행하는 작업은 무엇인가?
- A) file을 묻지 않고 즉시 삭제
- B) file의 권한을 변경
- C) file 삭제 전에 사용자에게 확인 요청
- D) file을 다른 디렉터리로 이동
- 정답: C) file 삭제 전에 사용자에게 확인 요청
- 해설: 'rm -i file' 명령은 file을 삭제하기 전에 사용자에게 삭제를 진행할지 묻는다. 이 옵션은 실수로 중요한 파일을 삭제하는 것을 방지하는 데 도움이 된다.
47. 'chmod a-w file' 명령이 file에 적용하는 변경 사항은 무엇인가?
- A) 모든 사용자에게 쓰기 권한 부여
- B) 모든 사용자의 쓰기 권한 제거
- C) 소유자만 쓰기 권한 제거
- D) 그룹 사용자에게 쓰기 권한 제거
- 정답: B) 모든 사용자의 쓰기 권한 제거
- 해설: 'chmod a-w file' 명령은 모든 사용자(a)로부터 파일(file)의 쓰기(w) 권한을 제거한다.
48. 'more file | grep "word"' 명령의 목적은 무엇인가?
- A) 파일에서 "word"라는 단어를 삭제
- B) "word"라는 단어가 포함된 라인만 파일에서 출력
- C) 파일의 모든 내용을 출력하고 "word"라는 단어를 강조
- D) 파일을 "word"라는 이름으로 복사
- 정답: B) "word"라는 단어가 포함된 라인만 파일에서 출력
- 해설: 'more file | grep "word"' 명령은 file에서 "word"라는 단어가 포함된 라인만을 찾아서 출력한다. 여기서 '|'는 파이프라인이며, 'more' 명령의 출력을 'grep' 명령으로 전달한다.
49. 'ls -l | less' 명령의 결과는 무엇인가?
- A) 현재 디렉터리의 파일 목록을 상세 정보와 함께 페이지 단위로 출력
- B) 현재 디렉터리의 파일 목록만 출력
- C) 현재 디렉터리의 파일 크기만 페이지 단위로 출력
- D) 현재 디렉터리의 숨겨진 파일을 페이지 단위로 출력
- 정답: A) 현재 디렉터리의 파일 목록을 상세 정보와 함께 페이지 단위로 출력
- 해설: 'ls -l | less' 명령은 현재 디렉터리의 파일 목록과 상세 정보를 'less' 명령을 통해 페이지 단위로 출력한다, 이를 통해 사용자는 출력된 내용을 쉽게 탐색할 수 있다.
참고 자료: Unix 시스템 (김희천, 김진욱 공저, KNOU press 출판)
'CS > Unix 시스템' 카테고리의 다른 글
리눅스 사용자 관리, 사용자 계정 생성 및 관리 수정, GUI (1) | 2023.11.30 |
---|---|
리눅스 시작과 종료, 운영체제 부팅, 초기화 데몬, 시스템 종료 (1) | 2023.11.30 |
리눅스 저장 장치 이름과 표준 디렉터리, 셸 사용하기, 셸 명령, 명령의 연결과 확장, 셸 변수, 리눅스 예상 문제 (1) | 2023.11.29 |
유닉스와 리눅스, UNIX 발전사, 오픈소스와 라이선스, 리눅스 배포판 (1) | 2023.11.28 |
리눅스 문제 풀이 - 버전 관리와 깃, 브랜치의 생성과 병합, 스태시와 버전 되돌리기 (1) | 2023.11.28 |