Linux와 커맨드 라인 기초

if [ -f "$f" ]; then
  echo "found"
fi

셸 스크립트에서 위의 if 조건이 참이 되는 경우로 올바른 것은?

  1. A변수 f에 든 이름의 일반 파일이 존재하는 경우
  2. B변수 f에 든 이름의 파일이 존재하고, 크기가 0보다 큰 경우
  3. C변수 f에 든 이름의 파일이나 디렉터리가 존재하는 경우
정답과 해설 보기

정답: A. 변수 f에 든 이름의 일반 파일이 존재하는 경우

[ ]는 test 명령의 다른 표기로, 조건이 성립하면 종료 상태 0(참)을 돌려주며, if는 그것을 보고 분기합니다. -f는 '그 이름의 일반 파일이 존재한다'는 것을 조사하며, 디렉터리인 경우에는 거짓이 됩니다. 존재하는지만 볼 때는 -e, 디렉터리인지는 -d, 크기가 0보다 큰지는 -s를 사용합니다. [ 뒤와 ] 앞에는 공백이 필요하며, 변수는 "$f"처럼 큰따옴표로 감싸 두면 공백을 포함한 이름이라도 올바르게 조사할 수 있습니다.

이 분야 연습하기 분야로 돌아가기

Linux와 커맨드 라인 기초의 다른 문제

  1. 위의 조작 후에 디렉터리에 있는 파일로 올바른 것은?
  2. 현재 디렉터리에 있는, 실행 권한이 붙은 스크립트 run.sh를 'run.sh'라고 입력하여 실행하려고 하면 'command not found'가 되고, './run.sh'라고 입력하면 실행할 수 있었다. 이유로 올바른 것은?
  3. 위의 명령을 순서대로 실행했을 때, 두 bash -c의 출력의 조합으로 올바른 것은?
  4. Linux의 패키지 관리 시스템(Debian 계열의 apt, Red Hat 계열의 dnf 등)의 주된 역할로 올바른 것은?
  5. systemd를 사용하는 Linux에서, 서비스 license.service에 대한 'systemctl start license.service'와 'systemctl enable license.service'의 차이로 올바른 것은?