LPIC-1 시험을 준비하고 있는데 다음 명령어 컷 예시를 이해할 수 없습니다.
ifconfig enp3s0f2
다음과 같은 결과가 생성됩니다.
enp3s0f2: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 00:90:f5:e5:e4:7c txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ifconfig enp3s0f2 | grep ether | cut -d " " -f 10
그런 다음 MAC 주소를 분리하기 위해 이 출력을 표시하는 명령을 실행합니다 .00:90:f5:e5:e4:7c
하지만 저는 -f
값이 10인 매개변수만 사용했습니다. 왜 다른 숫자가 아니고 10인지 이해가 안 됩니다. 다양한 매개변수와 함께 cut 명령을 사용하는 방법에 대한 여러 페이지의 예제를 살펴봤지만 이 예제에서는 전혀 이해가 되지 않습니다.
이 MAC 주소를 분리하는 방법은 -f에 할당된 값 10이어야 합니까?
답변1
이는 앞에 8개의 공백이 오는 구분 기호를 사용했기 때문입니다.ether
아래 코드를 사용하여 이를 확인할 수 있습니다.
ifconfig enp3s0f2 | grep ether | sed 's/ether.*//' |grep -o ' ' | wc -l
8
따라서 9번째 필드는 이고 ether
, 10번째 필드는00:90:f5:e5:e4:7c
답변2
에서 man cut
:
-d, --delimiter=DELIM
use DELIM instead of TAB for field delimiter
-f, --fields=LIST
select only these fields; also print any line that contains no delimiter character, unless the -s option is specified
따라서 각 구분 문자(귀하의 경우 공백)로 출력을 분할합니다. 그러면 필드 배열이 생성됩니다. 이 -f
옵션은 cut에게 10번째 필드만 반환하도록 지시합니다.