리눅스 초보자를 도와주세요!
두 가지 다른 이미지의 lsinitrd 출력을 비교하고 싶습니다. 예를 들어 일부 줄은 다음과 같습니다.
-rw-r--r-- 1 root root 2146 Aug 1 01:00 usr/lib/modules/5.18.12-1-default/kernel/lib/crypto/libchacha.ko.zst
-rw-r--r-- 1 root root 2165 Oct 14 16:58 usr/lib/modules/6.0.7-1-default/kernel/lib/crypto/libchacha.ko.zst
둘 다 동일한 파일의 다른 버전을 참조하므로 해당 버전을 무시하고 한 출력에는 있지만 다른 출력에는 누락된 파일만 고려하고 싶습니다.
어떻게 해야 하나요?
답변1
다음과 같이 보일 수 있습니다:
v1="5.18.12-1-default"
v2="6.0.7-1-default"
diff \
<(lsinitrd -k "$v1" | grep ' usr/lib/modules/' | sed -e 's#usr/lib/modules/[^/]*#usr/lib/modules/version#' -e 's/^.* //') \
<(lsinitrd -k "$v2" | grep ' usr/lib/modules/' | sed -e 's#usr/lib/modules/[^/]*#usr/lib/modules/version#' -e 's/^.* //') \
| grep '^[<>]'
user로 시작 root
하거나 lsinitrd
각 명령 앞에 sudo
command를 붙입니다.
내 버전을 사용하면 다음과 같은 결과를 얻습니다.
> usr/lib/modules/version/kernel/drivers/net/mii.ko.xz
> usr/lib/modules/version/kernel/drivers/net/usb
> usr/lib/modules/version/kernel/drivers/net/usb/r8152.ko.xz
> usr/lib/modules/version/kernel/drivers/net/usb/usbnet.ko.xz
> usr/lib/modules/version/kernel/drivers/net/veth.ko.xz
> usr/lib/modules/version/kernel/net/802
> usr/lib/modules/version/kernel/net/802/stp.ko.xz
> usr/lib/modules/version/kernel/net/bridge
> usr/lib/modules/version/kernel/net/bridge/bridge.ko.xz
> usr/lib/modules/version/kernel/net/llc
> usr/lib/modules/version/kernel/net/llc/llc.ko.xz
고쳐 쓰다
버전 ID를 출력에 포함하려면 grep
명령과 해당 인수를 다음으로 바꾸십시오 awk
.
awk -v v1="$v1" -v v2="$v2" '$0 !~ /^[<>]/ {next} /^>/ {sub("/version/", "/" v1 "/"); print} /^</ {sub("/version/", "/" v2 "/"); print}'
내 결과:
> usr/lib/modules/6.0.5-200.fc36.x86_64/kernel/drivers/net/mii.ko.xz
> usr/lib/modules/6.0.5-200.fc36.x86_64/kernel/drivers/net/usb
> usr/lib/modules/6.0.5-200.fc36.x86_64/kernel/drivers/net/usb/r8152.ko.xz
> usr/lib/modules/6.0.5-200.fc36.x86_64/kernel/drivers/net/usb/usbnet.ko.xz
> usr/lib/modules/6.0.5-200.fc36.x86_64/kernel/drivers/net/veth.ko.xz
> usr/lib/modules/6.0.5-200.fc36.x86_64/kernel/net/802
> usr/lib/modules/6.0.5-200.fc36.x86_64/kernel/net/802/stp.ko.xz
> usr/lib/modules/6.0.5-200.fc36.x86_64/kernel/net/bridge
> usr/lib/modules/6.0.5-200.fc36.x86_64/kernel/net/bridge/bridge.ko.xz
> usr/lib/modules/6.0.5-200.fc36.x86_64/kernel/net/llc
> usr/lib/modules/6.0.5-200.fc36.x86_64/kernel/net/llc/llc.ko.xz