시스템 장치의 파일을 보유하는 Linux 디렉터리의 파일 이름에 "tty"가 포함된 모든 파일 수를 출력하는 방법을 알 수 없습니다.
답변1
ls /dev/tty* | wc -w
답변2
먼저, 이러한 파일을 나열하는 방법을 찾아야 합니다. 장치 파일이 저장되는 디렉터리는 다음과 같습니다.
/dev
따라서 이러한 파일을 나열하는 명령은 다음과 같습니다.
echo /dev/*tty*
(여기에는 와 같은 VGA 콘솔뿐만 아니라 또는 과 같은 직렬 포트도 포함 됩니다 /dev/tty5
. )/dev/ttyS0
/dev/ttyUSB0
텍스트 입력에서 단어 수를 세는 명령이 있습니다: wc
. 따라서 다음과 같이 개수를 얻을 수 있습니다.
echo /dev/*tty* | wc
이는 파일 이름에 공백이 포함되지 않은 경우에만 작동합니다. 파일 이름을 한 줄씩 나열하고 줄 수를 세는 경우 이 명령이 더 강력할 수 있지만 여전히 파일 이름에 개행 문자가 포함된 경우에만 중단되는 것은 아닙니다.
ls /dev/*tty* | wc -l
스크립트에서 보다 안정적인 접근 방식은 파일 이름 목록을 목록으로 가져와 길이를 계산하는 것입니다. 와일드카드는 이름 목록으로 확장됩니다. 목록이 비어 있는 경우 특별한 경우가 있습니다. 와일드카드는 확장되지 않습니다.
set -- /dev/*tty*
if [ $# -eq 1 ] && ! [ -e "$1" ]; then
set --
fi
echo "There are $# matching files"
연습: 위의 코드 조각은 모든 와일드카드 패턴에서 작동합니까(즉, 파일이 하나일 때 조각이 0개의 파일을 보고하고 그 반대의 경우도 마찬가지인 와일드카드 패턴이 있습니까)?