Debian

perl 在 debian 中寫了多少程式碼?

  • October 15, 2022

我的Debian作業系統:

cat   /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye

Debian woody中有 計算perl寫的程式碼,os中計算程式碼

例如,在 Debian woody 中它大約是 400-500 Mbs,試試這個:

size=0
for i in `grep -A 1 -B 1 "^Section: base" /var/lib/dpkg/available | grep -A 2 "^Priority: required" |grep "^Installed-Size" |cut -d : -f 2
`; do size=$(($size+$i)); done
echo $size
47762

我複制所有程式碼並在我的作業系統中執行:

debian@debian:~$ size=0
debian@debian:~$ for i in `grep -A 1 -B 1 "^Section: base" /var/lib/dpkg/available |
 grep -A 2 "^Priority: required" |grep "^Installed-Size" |cut -d : -f 2
 `; do size=$(($size+$i)); done
debian@debian:~$ echo $size
0

為什麼大小為零?

錯誤程式碼

如果我按照您的連結,程式碼是:

for i in /bin/* /sbin/* /usr/bin/* /usr/sbin/*; do
   [ -f $i ] && {
       type=`file $i | grep -il perl`
       [ -n "$type" ] && echo $i;
   }
done

此外,在您的嘗試中(見上圖),您正在嘗試從文件中訪問grepbase部分,就像在我的 debian 上一樣,該部分不存在,因此零結果是正常的。

解決方案

#!/bin/bash

size=0
for i in /bin/* /sbin/* /usr/bin/* /usr/sbin/*; do
   [[ -x $i ]] &&
   file -i $i |
   grep -q perl &&
   ds=$(du $i | awk '{print $1}')
   ((size+=ds))
done
echo "$((size/1024))MB"

引用自:https://unix.stackexchange.com/questions/721044