본문 바로가기
CS/Unix 시스템

리눅스 문제 풀이 - 리눅스 쉘, 파일 디렉터리 명령어

by Renechoi 2023. 11. 27.

문제: CentOs 리눅스에서 기본으로 주어지는 쉘의 종류는 무엇인가?

  1. Bourne Shell(sh)
  2. Korn Shell(ksh)
  3. Bash Shell(bash)
  4. C Shell(csh)

정답 : 3

문제: Rocky Linux에서 기본으로 주어지는 쉘의 종류는 무엇인가?

  1. Bourne Shell(sh)
  2. Korn Shell(ksh)
  3. Bash Shell(bash)
  4. C Shell(csh)

정답 : 3

문제: 리눅스 명령어의 이름, 개요, 옵션, 환경과 매개변수 등을 자세히 보여주는 명령어는?

  1. cat
  2. help
  3. info
  4. man

정답: 4
해설: 리눅스 각 명령어의 이름, 개요, 옵션, 환경과 매개변수 등을 자세히 보여주는 명령어는 man으로 온라인 매뉴얼을 제공한다.

문제: 다음 명령의 출력은? 사용자의 홈 디렉터리는 /home/linuxuser라 가정한다.

echo "'$HOME'"
  1. $HOME
  2. '$HOME'
  3. /home/linuxuser
  4. '/home/linuxuser'

정답: 4
해설: 큰따옴표 안에서 달러 문자는 해석되므로 $변수에서 '변수 확장'이 일어난다. 큰따옴표 안에서 작은따옴표는 그대로 출력된다.

  • 문제의 명령 분석: 주어진 명령어 echo "'$HOME'"는 큰따옴표(") 안에 작은따옴표(')와 $HOME 변수를 포함하고 있다.
  • 변수 확장: 쉘(Shell)에서 큰따옴표 안에 있는 변수는 확장된다. 즉, $HOME은 사용자의 홈 디렉터리 경로로 확장된다. 이 경우 /home/linuxuser가 된다.
  • 작은따옴표의 역할: 큰따옴표 안의 작은따옴표는 문자 그대로 해석된다. 따라서 '는 명령어의 출력에 그대로 포함된다.
  • 최종 출력: 따라서, 이 명령어의 출력은 사용자의 홈 디렉터리 경로를 작은따옴표로 묶은 '/home/linuxuser'가 된다.

이와 같이 큰따옴표 안에서 변수 확장과 작은따옴표의 리터럴 해석이 결합되어 최종적으로 사용자의 홈 디렉터리 경로를 작은따옴표로 묶은 형태로 출력된다.

문제: 다음 명령의 실행 결과로 예상되는 것은 무엇인가?

echo "Today is `date`"
  1. Today is date
  2. "Today is date"
  3. Today is 2023. 12. 25. (월) 10:58:44 KST
  4. 아무것도 출력되지 않는다.

정답: 3
해설: 3번 문제와 유사하게 달러 문자는 해석되므로 큰 따옴표 안에서 역 따옴표가 해석되고, date에서 명령 치환이 수행된다.

문제: 셸에서 사용하는 특수 문자 중 표준 출력을 파일로 지정하되 파일의 기존 내용에 덧붙여서 출력되도록 하는 것은?

  1. >
  2. <
  3. >>
  4. <<

정답: 3
해설: command >> file 형태의 명령어 수행에서 나온 표준출력 결과를 화면으로 보내지 않고 지정된 파일의 끝에 덧붙일 때 사용한다.

문제: 셸의 명령 행에서 사용하는 특수 문자에 대한 설명으로 옳은 것은?

  1. & - 명령을 백그라운드로 실행
  2. ! - 바로 전에 실행한 명령
  3. ? - 임의의 문자열 패턴
  4. | - 이전 명령이 실패하면 실행하라는 조건부 실행

정답: 1

셸의 명령 행에서 사용하는 특수 문자에 대한 설명 중 옳은 것은 '1. & - 명령을 백그라운드로 실행'이다.

  1. "&" - 명령을 백그라운드로 실행: 셸에서 명령어 뒤에 "&"를 붙이면 해당 명령어는 백그라운드에서 실행된다. 이는 사용자가 다른 작업을 계속하면서 해당 명령어가 동시에 실행되도록 한다. 예를 들어, sleep 10 & 명령은 10초 동안 대기하는 작업을 백그라운드에서 실행한다.
  2. "!" - 바로 전에 실행한 명령: 이 기호는 '바로 전에 실행한 명령'을 나타내는 것이 아니라, 셸에서 히스토리 확장을 위해 사용된다. 예를 들어, !$는 이전 명령의 마지막 인자를 참조한다.
  3. "?" - 임의의 문자열 패턴: "?"는 임의의 단일 문자를 매칭하는 와일드카드 문자이다. 임의의 문자열 패턴을 나타내는 것은 "*"이다.
  4. "|" - 이전 명령이 실패하면 실행하라는 조건부 실행: "|"는 파이프라인을 의미하며, 이전 명령의 출력을 다음 명령의 입력으로 전달한다. 조건부 실행을 나타내는 기호는 "||"이다.

문제: Bash 셸의 환경 설정 파일 중에 로그인할 때 실행되는 것은?

  1. ~/.bashrc
  2. ~/.bash_profile
  3. ~/.bash_history
  4. ~/.bash_logout

정답: 2

  1. ~/.bashrc: 이 파일은 새로운 셸 세션이 시작될 때마다 실행된다. 주로 비로그인, 대화형 셸 세션(예: 새 터미널 창을 여는 경우)에 사용된다. 이 파일에는 별칭(alias), 함수, 셸 변수, 환경 설정 등이 포함될 수 있다.
  2. ~/.bash_profile: 이 파일은 사용자가 로그인할 때 실행된다. 로그인 셸 세션에 대한 사용자의 개인적인 초기화 명령어(환경 변수 설정, 프로그램 시작 등)를 포함한다. 대부분의 경우, 이 파일에서 ~/.bashrc를 호출하여 대화형 셸 세션과 로그인 셸 세션에 대해 동일한 설정을 적용한다.
  3. ~/.bash_history: 이 파일은 사용자의 셸 명령어 히스토리를 저장한다. 이 파일은 셸 세션 간에 사용자가 입력한 명령어의 기록을 유지하는 데 사용된다.
  4. ~/.bash_logout: 사용자가 로그아웃할 때 실행되는 스크립트가 포함된 파일이다. 주로 세션 종료 시 수행할 청소 작업이나 기타 명령을 여기에 포함시킨다.

따라서, 로그인할 때 실행되는 환경 설정 파일은 ~/.bash_profile이다.

문제: 파일 목록을 보여주는 ls 명령에서 숨김 파일까지 보여주는 옵션은?

  1. -a
  2. -i
  3. -l
  4. -F

정답: 1
해설: 파일 이름이 도트(.)로 시작하는 숨김 파일까지 보여주는 옵션은 -a 또는 --all 이다.

문제: ls 명령의 옵션에 관한 설명 중 옳지 않은 것은?

  1. -t: 파일 목록을 가로 방향으로 나열한다.
  2. -a: 디렉터리 내의 모든 파일 출력
  3. -l: 라인당 한 파일씩 자세한 정보 출력
  4. -s: KB 단위로 파일 크기 출력

정답: 1
해설: -t는 수정 시간을 기준으로 최근 파일부터 보여준다.

  1. -t: 이 옵션은 파일 목록을 수정 시간을 기준으로 정렬하는 기능을 한다. 파일이 마지막으로 수정된 시간 순으로 파일 목록을 보여준다. 가로 방향으로 나열하는 것은 -t 옵션의 기능이 아니다.
  2. -a: ls -a 명령은 디렉터리 내의 모든 파일, 포함하여 숨겨진 파일(이름이 '.'로 시작하는 파일)까지 출력한다. 이 설명은 정확하다.
  3. -l: 이 옵션은 파일의 자세한 정보를 보여준다. 파일의 권한, 소유자, 크기, 마지막 수정 시간 등의 정보를 포함한다. 라인당 한 파일씩 출력하는 것이 맞다.
  4. -s: 이 옵션은 파일 크기를 블록 단위로 출력한다. 할당된 블록의 수를 보여준다.

문제: cd 명령에 관한 설명 중 옳은 것은?

  1. cd ~를 실행했을 때 사용자의 홈 디렉터리로 이동한다.
  2. cd를 실행했을 때 현재 디렉터리의 위치를 출력한다.
  3. cd -al 명령을 실행하면 현재 디렉터리에 있는 파일들에 관한 모든 정보를 출력한다.
  4. Change Disk의 약자로 CD Disk 등을 바꿀 때 사용한다.

정답: 1

  1. cd ~: cd ~ 명령은 사용자의 홈 디렉터리(/home/사용자이름 또는 사용자에 따라 다른 경로)로 이동하는 명령이다. "~"는 셸에서 사용자의 홈 디렉터리를 나타내는 특수 문자이다. 따라서, 이 설명은 정확하다.
  2. cd: cd 명령 자체는 현재 디렉터리의 위치를 출력하지 않는다. 단순히 cd만 입력하면 사용자의 홈 디렉터리로 이동한다. 현재 디렉터리의 위치를 확인하려면 pwd (Print Working Directory) 명령을 사용한다.
  3. cd -al: 이 명령은 유효하지 않다. cd 명령은 디렉터리 이동을 위한 명령이며, -al과 같은 옵션을 사용하지 않는다. 디렉터리 내의 파일 정보를 보고 싶다면 ls -al과 같은 명령을 사용해야 한다.
  4. Change Disk: cd 명령의 약자는 'Change Directory'로, 디렉터리(폴더)를 변경할 때 사용하는 명령이다. CD 디스크를 변경하는 데 사용되는 명령이 아니다.

문제: 텍스트 파일 memo.txt의 내용을 스페이스 바를 누를 때마다 20줄씩 화면에 보여주는 명령어는?

  1. cat +20 memo.txt
  2. cat -20 memo.txt
  3. more +20 memo.txt
  4. more -20 memo.txt

정답:4
해설: more 명령에서 -숫자 옵션이 한 화면에 해당하는 라인 수를 지정한다. 기본 값은 10이다. more 명령의 +숫자 옵션은 해당 라인부터 보여준다.

문제: 현재 디렉터리 아래에 있는 mydir 디렉터리 안에는 mydoc 디렉터리만 있고 mydoc 디렉터리는 비어 있다. mydir 디렉터리와 mydoc 디레터리를 동시에 삭제할 수 있는 명령어는?

  1. rmdir -r mydir
  2. rmdir -p mydir
  3. rmdir -r mydir/mydoc
  4. rmdir -p mydir/mydoc

정답: 4
해설: mydir 아래에는 mydoc만 있고 mydoc이 비어 있다면 rmdir -p mydir/mydoc 명령으로 둘 다 삭제 가능하다. 비어 있지 않은 디렉터리를 삭제하려면 rm -r mydir 명령을 사용해야 한다.

문제: 현재 디렉터리에 있는 test 파일의 접근궈난으 소유자는 읽기와 쓰기 권한, 그룹은 읽기 권한, 다른 사용자는 아무 권한이 없도록 설정하는 명령어는?

  1. chmod u+rw, g+r, o-rwx test
  2. chmod 640 test
  3. chmod ug+r, u+w, o= test
  4. chmod 755 test

정답: 2
해설: 1과 3은 test 파일의 기존 권한에 소유자의 실행 권한, 그룹의 쓰기 또는 실행 권한이 있었다면 그 권한이 그대로 유지되므로 문제에서 요구하는 권한으로 설정되지 않을 수 있다. 4는 rwxr -xr -x 권한이고 2가 r -xr ----- 권한이므로 2가 정답이다.

  1. chmod u+rw, g+r, o-rwx test: 이 명령은 소유자에게 읽기 및 쓰기 권한을 부여하고, 그룹에게는 읽기 권한을 부여하며, 다른 사용자의 모든 권한을 제거한다.
  2. chmod 640 test: 이 명령은 8진수 표기법을 사용하여 권한을 설정한다. '6'은 소유자에게 읽기(4)와 쓰기(2) 권한을 부여한다. '4'는 그룹에게 읽기 권한을 부여한다. '0'은 다른 사용자에게 아무 권한도 부여하지 않는다. 따라서 이 명령은 문제의 요구사항을 정확하게 충족한다.
  3. chmod ug+r, u+w, o= test: 이 명령은 소유자와 그룹에게 읽기 권한을 부여하고, 소유자에게는 추가로 쓰기 권한을 부여한다. 'o='는 다른 사용자의 권한을 모두 제거한다. 그러나 기존 권한에 따라 최종 결과가 달라질 수 있다.
  4. chmod 755 test: 이 명령은 소유자에게 모든 권한을 부여하고, 그룹과 다른 사용자에게는 읽기와 실행 권한을 부여한다. 이는 문제의 요구사항과 다르다.

따라서, 현재 디렉터리에 있는 'test' 파일의 접근 권한을 소유자는 읽기와 쓰기 권한, 그룹은 읽기 권한, 다른 사용자는 아무 권한이 없도록 설정하려면 '2. chmod 640 test' 명령어를 사용해야 한다. 이 명령은 문제의 요구사항을 정확하게 충족시킨다.

문제: 파일의 별명을 만들 수 있는 명령어는?

  1. cp
  2. ln
  3. mv
  4. rm

정답: 2
해설: 파일의 별명을 만들 수 있는 명령은 ln이다. cp -> 복사본, mv -> 이름 변경, rm -> 삭제.

문제: 원본 파일 a에 대한 심벌릭 파일 b를 만들 때, 올바른 설명은?

  1. 추후 a를 삭제하면 b도 삭제된다.
  2. 추후 b를 삭제하면 a도 삭제된다.
  3. a의 링크 카운트 값이 1 증가한다.
  4. 원본 파일 a는 일반 파일 외에 디렉터리도 가능하다.

정답: 4
해설: a와 b는 별도로 존재하는 파일이며, a가 이동 또는 삭제되면 b의 의미는 사라진다. 디렉터리에 대한 링크를 만들 때, 하드 링크는 불가하며 심벌릭 링크는 가능하다.

  1. "추후 a를 삭제하면 b도 삭제된다.": 이 설명은 틀리다. 심벌릭 링크 b는 원본 파일 a에 대한 참조를 가지고 있지만, a가 삭제되어도 b 자체는 삭제되지 않는다. 다만, a가 더 이상 존재하지 않으므로 b는 더 이상 유효한 참조 대상이 없게 된다.
  2. "추후 b를 삭제하면 a도 삭제된다.": 이 설명도 틀리다. 심벌릭 링크 b를 삭제해도 원본 파일 a에는 영향을 주지 않는다.
  3. "a의 링크 카운트 값이 1 증가한다.": 하드 링크의 경우 링크 카운트가 증가하지만, 심벌릭 링크는 링크 카운트에 영향을 주지 않는다.
  4. "원본 파일 a는 일반 파일 외에 디렉터리도 가능하다.": 이 설명이 옳다. 심벌릭 링크는 일반 파일뿐만 아니라 디렉터리를 가리킬 수도 있다. 하드 링크는 디렉터리에 대해 사용할 수 없지만, 심벌릭 링크는 가능하다.

결론적으로, 심벌릭 링크 b는 원본 파일 a가 일반 파일이든 디렉터리이든 상관없이 생성될 수 있다. 따라서 정답은 '4. 원본 파일 a는 일반 파일 외에 디렉터리도 가능하다'이다.

문제: 다음 내용에 대한 설명으로 옳지 않은 것은?

$ ls -l ihd_test.txt
-rwxr----- 1 ihd linux 1024 Sep 11 09:22 ihd_test.txt 
  1. 이 파일은 linux 라는 사용자가 실행 권한을 가지고 있다.
  2. 일반 사용자는 이 파일에 접근할 수 없다.
  3. root 사용자는 이 파일을 수정할 수 있다.
  4. 파일의 소유자는 삭제할 수 있는 권한도 있다.

정답: 1
해설: linux는 그룹의 이름이다. Linux 그룹에 linux 사용자가 있다고 해도 읽기 권한만 가진다.

  1. "이 파일은 linux 라는 사용자가 실행 권한을 가지고 있다.": 이 설명은 잘못되었다. 출력된 -rwxr-----에서 linux는 사용자가 아니라 그룹의 이름을 나타낸다. 파일 권한 부분에서 첫 번째 rwx는 파일 소유자(여기서는 ihd)의 권한을 나타내며, 두 번째 r은 그룹(linux)의 권한을 나타낸다. 여기서 그룹 linux는 읽기 권한만 가진다.
  2. "일반 사용자는 이 파일에 접근할 수 없다.": 이 설명은 정확하다. 파일 권한 부분에서 마지막 세 문자 ---는 다른 사용자들의 권한을 나타내며, 이 경우 다른 사용자들은 어떠한 권한도 가지지 않는다.
  3. "root 사용자는 이 파일을 수정할 수 있다.": 이 설명도 정확하다. 리눅스 시스템에서 root 사용자는 모든 파일에 대한 접근 및 수정 권한을 가진다.
  4. "파일의 소유자는 삭제할 수 있는 권한도 있다.": 이 설명은 정확하다. 파일 소유자는 -rwx 권한을 가지고 있어서, 파일을 읽고, 쓰고, 실행할 수 있다. 또한, 파일 소유자는 파일을 삭제할 수 있는 권한도 가진다.

문제: 이름이 korea와 japan인 두 파일의 내용을 하나로 합쳐 이름이 asia인 파일을 만들 때 사용해야 하는 명령어는?

  1. more korea japan asia
  2. cat korea > japan > asia
  3. cat korea japan > asia
  4. cat korea japan asia

정답: 3
해설: cat korea japan 명령은 두 파일을 연결시켜 표준출력으로 내보낸다. 표준출력으로 갈 것을 리다이렉션하여 asia 파일을 만들 수 있다.

  1. more korea japan asia: more 명령어는 파일의 내용을 화면에 페이지별로 출력한다. 이 명령어는 파일을 합치거나 새 파일을 만드는 기능을 하지 않는다.
  2. cat korea > japan > asia: 이 명령어는 'korea' 파일의 내용을 'japan'에 덮어쓰고, 다시 'japan'의 내용을 'asia'에 덮어쓴다. 결과적으로 'asia' 파일은 'korea'의 내용만 가지게 되며, 이는 문제의 요구사항을 충족하지 않는다.
  3. cat korea japan > asia: cat 명령어는 여러 파일의 내용을 표준 출력(보통은 화면)으로 보내는 데 사용된다. 여기서 'korea'와 'japan' 파일의 내용을 합쳐 표준 출력으로 내보낸 후, 리다이렉션(>)을 사용하여 이를 'asia' 파일로 만든다. 이는 문제의 요구사항을 정확하게 충족한다.
  4. cat korea japan asia: 이 명령어는 'korea', 'japan', 그리고 'asia' 파일의 내용을 순서대로 화면에 출력한다. 하지만 새로운 파일을 만들지는 않는다.

따라서, 'korea'와 'japan' 두 파일의 내용을 하나로 합쳐 'asia'라는 이름의 파일을 만들기 위해서는 '3. cat korea japan > asia' 명령어를 사용해야 한다. 이 명령어는 두 파일의 내용을 합치고, 결과를 'asia' 파일에 저장한다.


참고 자료: Unix 시스템 (김희천, 김진욱 공저, KNOU press 출판)

반응형