Linux, Bash, 파일 시스템 관련: 공백이 포함된 마운트 포인트의 전체 경로를 Bash에서 가져오는 방법

2024-07-27

Linux, Bash, 파일 시스템 관련 "How to get the mounted point full path while it has space in bash" 프로그래밍 해설 (한국어)

필수 조건:

  • Linux 시스템
  • Bash 쉘

단계:

  1. findmnt 명령 사용:

    findmnt 명령은 현재 마운트된 모든 파일 시스템을 나열하는 데 사용됩니다. 공백이 포함된 마운트 포인트를 찾으려면 다음 명령을 사용할 수 있습니다.

    findmnt -t | grep "mountpoint" | awk '{ print $6 }'
    

    이 명령은 각 마운트 포인트의 마지막 필드를 출력합니다. 공백이 포함된 마운트 포인트를 찾으려면 다음과 같이 grep 명령을 사용하여 필터링할 수 있습니다.

    findmnt -t | grep "mountpoint" | awk '{ print $6 }' | grep " "
    

    이 명령은 공백이 포함된 마운트 포인트만 출력합니다.

예제:

다음은 공백이 포함된 마운트 포인트 "My Shared Folder"의 전체 경로를 가져오는 Bash 스크립트의 예입니다.

#!/bin/bash

# `findmnt` 명령 사용
MOUNT_POINT=$(findmnt -t | grep "mountpoint" | awk '{ print $6 }' | grep " ")

# 혹은 `/proc/mounts` 파일 시스템 사용
# MOUNT_POINT=$(cat /proc/mounts | grep "mountpoint" | awk '{ print $5 }' | grep " ")

if [ -z "$MOUNT_POINT" ]; then
  echo "공백이 포함된 마운트 포인트를 찾을 수 없습니다."
else
  echo "공백이 포함된 마운트 포인트의 전체 경로: $MOUNT_POINT"
fi

위 스크립트를 실행하면 다음과 같은 출력이 나타납니다.

공백이 포함된 마운트 포인트의 전체 경로: /mnt/My Shared Folder

참고:

  • 이 스크립트는 예시일 뿐이며 사용자의 특정 요구 사항에 따라 수정될 수 있습니다.
  • 공백이 포함된 마운트 포인트를 처리할 때 특수 문자를 이스케이프해야 할 수도 있습니다. 자세한 내용은 Bash 쉘 문서를 참조하십시오.

주의:

  • 루트 권한으로 스크립트를 실행하지 않는 것이 좋습니다.
  • 스크립트를 실행하기 전에 백업을 항상 수행하십시오.



#!/bin/bash

# `findmnt` 명령 사용
MOUNT_POINT=$(findmnt -t | grep "mountpoint" | awk '{ print $6 }' | grep " ")

# 혹은 `/proc/mounts` 파일 시스템 사용
# MOUNT_POINT=$(cat /proc/mounts | grep "mountpoint" | awk '{ print $5 }' | grep " ")

if [ -z "$MOUNT_POINT" ]; then
  echo "공백이 포함된 마운트 포인트를 찾을 수 없습니다."
else
  echo "공백이 포함된 마운트 포인트의 전체 경로: $MOUNT_POINT"
fi

위 코드는 findmnt 명령 또는 /proc/mounts 파일 시스템을 사용하여 공백이 포함된 마운트 포인트의 전체 경로를 찾는 Bash 스크립트입니다.

  • findmnt -t 명령은 현재 마운트된 모든 파일 시스템을 테이블 형식으로 나열합니다.
  • grep "mountpoint" 명령은 출력 결과에서 "mountpoint" 열만 추출합니다.
  • awk '{ print $6 }' 명령은 각 행의 여섯 번째 필드 (마운트 포인트)를 출력합니다.
  • grep " " 명령은 공백이 포함된 마운트 포인트만 출력하도록 필터링합니다.

/proc/mounts 파일 시스템 사용:

  • /proc/mounts 파일은 현재 마운트된 모든 파일 시스템에 대한 정보를 포함합니다.
  • cat /proc/mounts 명령은 /proc/mounts 파일의 내용을 출력합니다.

마운트 포인트 확인:

  • if [ -z "$MOUNT_POINT" ]; then 조건문은 마운트 포인트가 비어 있는지 확인합니다.
    • 비어 있다면 "공백이 포함된 마운트 포인트를 찾을 수 없습니다." 메시지를 출력합니다.
  • else 블록은 마운트 포인트가 비어 있지 않은 경우 실행됩니다.
    • "공백이 포함된 마운트 포인트의 전체 경로: $MOUNT_POINT" 메시지를 출력하여 찾은 마운트 포인트의 전체 경로를 표시합니다.



공백이 포함된 마운트 포인트의 전체 경로를 가져오는 다른 방법

while 루프 사용:

#!/bin/bash

while IFS= read -r line; do
  if [[ $line =~ "mountpoint" ]]; then
    MOUNT_POINT="$line"
    break
  fi
done < /proc/mounts

if [ -z "$MOUNT_POINT" ]; then
  echo "공백이 포함된 마운트 포인트를 찾을 수 없습니다."
else
  echo "공백이 포함된 마운트 포인트의 전체 경로: $MOUNT_POINT"
fi

설명:

  • 이 스크립트는 /proc/mounts 파일을 한 행씩 읽고 각 행을 $line 변수에 저장합니다.
  • [[ $line =~ "mountpoint" ]] 조건문은 해당 행에 "mountpoint" 문자열이 포함되어 있는지 확인합니다.
  • 포함되어 있으면 MOUNT_POINT 변수에 해당 행을 저장하고 루프를 벗어납니다.
  • 루프를 벗어난 후 if [ -z "$MOUNT_POINT" ]; then 조건문과 else 블록은 위 예제와 동일하게 작동합니다.

sed 명령 사용:

#!/bin/bash

MOUNT_POINT=$(sed -n 's/^.*mountpoint \([^ ]*\).*/\1/p' /proc/mounts | grep " ")

if [ -z "$MOUNT_POINT" ]; then
  echo "공백이 포함된 마운트 포인트를 찾을 수 없습니다."
else
  echo "공백이 포함된 마운트 포인트의 전체 경로: $MOUNT_POINT"
fi
  • 이 스크립트는 sed 명령을 사용하여 /proc/mounts 파일의 각 행을 다음과 같이 처리합니다.
    • ^.*mountpoint \([^ ]*\).*$ 정규 표현식은 "mountpoint" 뒤에 공백이 아닌 문자가 하나 이상 포함된 행을 선택합니다.
    • \1 백레퍼런스는 선택된 행에서 일치하는 문자열 그룹을 추출합니다.
  • 나머지 부분은 위 예제와 동일합니다.

awk 명령 사용:

#!/bin/bash

MOUNT_POINT=$(awk '/mountpoint/ { print $6 }' /proc/mounts | grep " ")

if [ -z "$MOUNT_POINT" ]; then
  echo "공백이 포함된 마운트 포인트를 찾을 수 없습니다."
else
  echo "공백이 포함된 마운트 포인트의 전체 경로: $MOUNT_POINT"
fi
  • 이 스크립트는 awk 명령을 사용하여 /proc/mounts 파일의 각 행을 다음과 같이 처리합니다.
    • /mountpoint/ 정규 표현식은 "mountpoint" 문자열을 포함하는 행을 선택합니다.
  • 위에 제시된 방법은 모두 동일한 결과를 제공하지만 작동 방식이 다릅니다.
  • 사용자의 선호와 필요에 따라 적합한 방법을 선택할 수 있습니다.

linux bash filesystems



Bash에서 구분자를 기준으로 문자열 나누기

Bash에서 문자열을 특정 문자나 문자열(구분자)을 기준으로 나누는 것은 텍스트 처리 작업에서 매우 일반적인 작업입니다. 이를 위해 다양한 방법을 사용할 수 있으며, 각 방법마다 장단점이 있습니다.장점: 간단하고 직관적...


Bash에서 파일 내용을 반복 처리하는 방법

Bash는 Linux 및 Unix 시스템에서 강력한 쉘 스크립팅 언어입니다. 파일의 내용을 한 줄씩 읽어 들여 각 줄에 대해 특정 작업을 반복 수행하는 것은 매우 일반적인 작업입니다. 이를 위해 Bash는 다양한 방법을 제공합니다...


Bash에서 문자열 변수 연결하기

Bash는 강력한 쉘 스크립팅 언어로, 다양한 작업을 자동화하는 데 사용됩니다. 문자열 연결은 Bash 스크립팅에서 자주 사용되는 기본적인 작업 중 하나입니다. 이 가이드에서는 Bash에서 문자열 변수를 연결하는 다양한 방법을 자세히 설명합니다...


Bash에서 명령어 출력을 변수에 할당하는 방법

Bash는 강력한 쉘 스크립팅 언어로, 시스템 관리 작업 자동화에 널리 사용됩니다. 명령어의 출력을 변수에 할당하는 것은 Bash 스크립팅에서 매우 일반적인 작업입니다. 이를 통해 명령어의 결과를 다른 명령어의 입력으로 사용하거나...


Bash에서 echo 명령과 개행 문자 (\n)에 대한 설명

Bash는 Linux 및 Unix 시스템에서 가장 많이 사용되는 셸(Shell) 프로그램 중 하나입니다. 셸은 사용자와 운영 체제 사이의 인터페이스 역할을 하며, 사용자가 명령을 입력하면 이를 해석하여 시스템에 전달합니다...



linux bash filesystems

Bash 쉘 스크립트에서 디렉토리 존재 유무 확인하기

문제: Bash 쉘 스크립트에서 특정 디렉토리가 시스템에 존재하는지 여부를 어떻게 확인할까요?해결 방법:Bash에서는 여러 가지 방법으로 디렉토리 존재 유무를 확인할 수 있습니다. 가장 일반적인 방법은 test 명령어 또는 [ ] (대괄호)를 사용하는 것입니다


Bash 스크립트에서 현재 스크립트의 디렉토리 얻기

문제:Bash 스크립트를 실행할 때, 스크립트 자신이 위치한 디렉토리를 알고 싶은 경우가 있습니다. 이 정보는 스크립트 내에서 파일을 읽거나 쓰거나, 다른 스크립트를 호출할 때 유용하게 활용될 수 있습니다.해결 방법:


Linux에서 sudo를 사용하여 쓰기 권한이 없는 위치로 출력 리디렉션하는 방법

다음은 두 가지 방법을 설명합니다.방법 1: tee 명령 사용sudo를 사용하여 명령을 실행하고 출력을 파일에 저장합니다. 예를 들어, 다음 명령은 "mycommand"의 출력을 "/root/output. txt" 파일에 저장합니다


Bash에서 문자열에 하위 문자열이 포함되어 있는지 확인하는 방법

Bash는 강력한 쉘 스크립팅 언어로, 다양한 문자열 조작 기능을 제공합니다. 그 중에서도 특정 문자열이 다른 문자열에 포함되어 있는지 확인하는 것은 매우 유용한 기능입니다. 이 글에서는 Bash에서 문자열에 하위 문자열이 포함되어 있는지 확인하는 다양한 방법을 소개하고 예시를 통해 설명하겠습니다


Bash에서 파일 존재 여부 확인하기

Bash 스크립팅에서 파일이 존재하는지 확인하는 것은 매우 일반적인 작업입니다. 이를 통해 스크립트의 동작을 조건적으로 제어하거나, 파일 처리 로직을 안전하게 구현할 수 있습니다.test 또는 [ ]: 가장 기본적인 명령어로