洛陽網(wǎng)站推廣方式今日軍事頭條
讀 Jetson 腳本
把腳本設(shè)置為可執(zhí)行
假設(shè)要將腳本 test.sh
設(shè)置為可執(zhí)行,需要:
- 使用
chmod +x test.sh
改變文件模式為可執(zhí)行; - 使用
./
指定路徑,比如先將當(dāng)前工作區(qū)設(shè)置為腳本所做位置(使用cd
命令),然后:./test.sh
如果執(zhí)行時(shí)出現(xiàn)異常信息:
/bin/sh^M: bad interpreter: No such file or directory
原因:
是我們?cè)?windows 下編寫的腳本文件,直接放到 Linux 默認(rèn)的是 dos 模式的文本,不被識(shí)別,需要處理下。
解決辦法有 3 種:
- 用 vim 打開腳本文件,在命令模式下輸入:
:set ff=unix
, 然后輸入:wq
保存退出就可以了。(set ff=unix
是告訴 Vim,將文件的換行符從原來的格式轉(zhuǎn)換為 Unix 格式。)- 在 windows下轉(zhuǎn)換腳本格式,用 Notepad 改變文件格式即可。File–>Conversions–>DOS->UNIX
- 在 Linux 下新建一個(gè) .sh 文件,然后復(fù)制粘貼過去也是可以的。
感謝網(wǎng)友 QC(_) 的博文。
2、在 windows下轉(zhuǎn)換腳本格式,用 Notepad 改變文件格式即可。File–>Conversions–>DOS->UNIX。
3、在 Linux 下新建一個(gè) .sh 文件,然后復(fù)制粘貼過去也是可以的。
————————————————
版權(quán)聲明:本文為CSDN博主「QC(_)」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_27195727/article/details/115698995
腳本參數(shù) ${0}
、${1}
、${2}
、${3}
、${#}
、${@}
${0}
表示腳本或函數(shù)的名稱。
${1}
、${2}
、${3}
等表示腳本或函數(shù)的第一、第二、第三個(gè)參數(shù),以此類推。
${#}
表示傳遞給腳本的參數(shù)個(gè)數(shù)
`${@} 表示列出所有參數(shù)
舉一個(gè)例子:
#!/bin/bashecho "Shell name: ${0}."
echo "Number of parameters: ${#}."
echo "The first parameter is ${1}."
echo "The second parameter is ${2}."
echo "The parameter list is ${@}."
exit 0
腳本命名為 shell_arg.sh,運(yùn)行這個(gè)腳本:
./shell_arg.sh 1 2 3
輸出內(nèi)容為:
Shell name: ./shell_arg.sh
.
Number of parameters: 3
.
The first parameter is 1
.
The second parameter is 2
.
The parameter list is 1 2 3
.
注意的是,¥{0}
會(huì)包含腳本的路徑。
命令替換 $()
與命令 basename
$()
表示命令替換。這是一種特殊的變量,它會(huì)將括號(hào)內(nèi)的命令執(zhí)行的結(jié)果賦值給變量。
#!/bin/bashscript_name="$(basename "${0}")"
echo "${script_name}"
exit 0
運(yùn)行這個(gè)腳本:./shell_arg.sh
輸出內(nèi)容為:shell_arg.sh
在這個(gè)例子中,命令 basename
用于提取文件路徑中的文件名,并顯示基本文件名。
具體而言,basename命令從文件路徑中刪除目錄路徑和符號(hào)鏈接,只保留文件名部分。這對(duì)于提取文件名而不需要完整的文件路徑非常有用。
比如 basename /path/to/file.txt
,輸出的內(nèi)容為 file.txt
。
命令 readlink
和 dirname
readlink
命令用于讀取符號(hào)鏈接(symbolic link)所指向的實(shí)際文件路徑。
符號(hào)鏈接是一種特殊類型的文件,它包含了另一個(gè)文件或目錄的引用。當(dāng)讀取符號(hào)鏈接時(shí),實(shí)際上讀取的是鏈接目標(biāo)文件的路徑,而不是鏈接文件本身。readlink命令允許用戶通過解析符號(hào)鏈接來獲取實(shí)際文件的路徑。語法為:
readlink [-fhlnr] [-m pattern] [file...]
主要選項(xiàng)和功能如下:
-f:解析路徑名中的符號(hào)鏈接,并將其替換為實(shí)際路徑。
-l:將輸入作為符號(hào)鏈接對(duì)待,而不是普通文件。
-n:不進(jìn)行換行處理,將輸出直接打印到標(biāo)準(zhǔn)輸出。
-r:遞歸解析符號(hào)鏈接,直到找到最終目標(biāo)。
-m:使用模式匹配來解析符號(hào)鏈接。
dirname
是一個(gè)常用的命令行工具,它用于提取文件路徑中的目錄部分。
具體來說,dirname
命令接受一個(gè)文件路徑作為參數(shù),并返回該路徑所在的目錄路徑。它刪除了文件名和文件擴(kuò)展名部分,只保留目錄路徑。
#!/bin/bashscript_name="$(basename "${0}")"
script_path="$(readlink -f "${0}")"
script_dir="$(dirname "${script_path}")"
echo "${script_name}"
echo "${script_path}"
echo "${script_dir}"
exit 0
運(yùn)行這個(gè)腳本:./shell_arg.sh
輸出內(nèi)容為:
script_name is shell_arg.sh
script_path is /home/zhzhchang/Documents/Vscode-shell-test/shell_arg.sh
script_dir is /home/zhzhchang/Documents/Vscode-shell-test
if
語句的測(cè)試條件
在Linux shell編程中,if
語句可以用于進(jìn)行條件測(cè)試。以下是常見的測(cè)試條件:
-
文件測(cè)試:
-f
:檢查文件是否存在且是一個(gè)普通文件。-d
:檢查目錄是否存在。-e
:檢查文件或目錄是否存在。-r
:檢查文件是否可讀。-w
:檢查文件是否可寫。-x
:檢查文件是否可執(zhí)行。-h
:文件或目錄是否是符號(hào)鏈接
-
字符串測(cè)試:
-z
:檢查字符串是否為空。-n
:檢查字符串是否非空。
-
整數(shù)比較:
-eq
:等于-ne
:不等于-lt
:小于-gt
:大于-le
:小于等于-ge
:大于等于
-
邏輯測(cè)試:
-a
:與(AND)-o
:或(OR)!
:非(NOT)
-
字符串比較:
=
:字符串相等!=
:字符串不相等-z
或!=
非空字符串(長度為零)-n
或!=
空字符串(長度非零)
-
數(shù)值比較(需使用雙括號(hào)):
((a == b))
:等于((a != b))
:不等于((a < b))
:小于((a > b))
:大于((a <= b))
:小于等于((a >= b))
:大于等于需要使用雙括號(hào)來表示數(shù)值比較。
set -e
與 set +e
set -e
是一個(gè)用來設(shè)置腳本行為的命令。當(dāng)腳本遇到任何錯(cuò)誤時(shí),它將會(huì)立即終止腳本的執(zhí)行。set -e
通常用在腳本的開始部分,以確保腳本在遇到任何錯(cuò)誤時(shí)能夠立即停止,這樣可以幫助開發(fā)者更快地定位和修復(fù)問題。
set +e
用于取消上述設(shè)置。
退出狀態(tài)碼:$?
在Unix和類Unix系統(tǒng)中,每個(gè)運(yùn)行中的進(jìn)程都有一個(gè)退出狀態(tài)碼(也稱為返回值),當(dāng)進(jìn)程結(jié)束時(shí)返回給操作系統(tǒng)。這個(gè)退出狀態(tài)碼可以用來表示進(jìn)程是否成功地完成了它的任務(wù),或者是否遇到了錯(cuò)誤。在 shell 腳本中,你可以使用 $?
來檢查上一條命令的退出狀態(tài),以此為基礎(chǔ)來決定下一步的操作。通常,0
表示成功,非零值
表示錯(cuò)誤。
延時(shí):sleep
和 usleep
Linux shell環(huán)境下,常用的延時(shí)函數(shù)包括:
- sleep:秒延時(shí)。函數(shù)原型為
unsigned int sleep(unsigned int seconds)
。例如:sleep(1) 表示延時(shí)一秒。 - usleep:微秒延時(shí)。函數(shù)原型為
int usleep(useconds_t usec)
。注意,usec 需要小于 1000000。例如,usleep(1000) 表示延時(shí) 1 秒(1000 微秒)。
捕獲和處理信號(hào) trap
function cleanup() {
# ...
}
trap cleanup EXIT
在Shell腳本中,trap
是一個(gè)內(nèi)置命令,用于捕獲和處理信號(hào)。這里的 trap cleanup EXIT
意味著當(dāng)腳本收到 EXIT 信號(hào)(通常是在腳本完成或由于某種錯(cuò)誤導(dǎo)致腳本中斷時(shí)發(fā)送的)時(shí),它會(huì)執(zhí)行 cleanup
函數(shù)。
信號(hào)的名字定義在頭文件 signal. h
中,
EXIT
:退出,在腳本完成或由于某種錯(cuò)誤導(dǎo)致腳本中斷時(shí)發(fā)送的退出信號(hào)。INT
:中斷,當(dāng)用戶按下Ctrl+C時(shí),會(huì)發(fā)送中斷信號(hào)。QUIT
:退出,當(dāng)用戶按下Ctrl+\時(shí),會(huì)發(fā)送退出信號(hào)。ABRT
:中止,通常印某些嚴(yán)重的錯(cuò)誤而引發(fā)ALRM
:報(bào)警,通常用于處理超時(shí)TERM
:終止,通常在系統(tǒng)關(guān)機(jī)時(shí)發(fā)送
參數(shù)列表左移動(dòng):shift
在Shell腳本中,shift
命令用于將參數(shù)列表向左移動(dòng)。shift 2
的意思是將參數(shù)列表向左移動(dòng)兩位。舉個(gè)例子,如果你有如下的參數(shù)列表:arg1 arg2 arg3 arg4
,執(zhí)行 shift 2
后,原來的 arg1
和 arg2
會(huì)被丟棄,新的參數(shù)列表變成:arg3 arg4
。
內(nèi)置命令 source
作用有點(diǎn)類似于 C 中的 #include
指令,具體來說,當(dāng)你在 source
命令后指定一個(gè)文件名(例如 source test.sh
),Shell 會(huì)首先讀取 test.sh 文件中的所有命令,然后將這些命令插入到當(dāng)前 Shell 環(huán)境中執(zhí)行。這意味著,文件中定義的任何變量或函數(shù)都可以在當(dāng)前 Shell 環(huán)境中直接使用。
source
命令的一個(gè)常見用途是加載環(huán)境變量。如果你修改了 .bashrc 或其他配置文件,你可以使用 source
命令讓這些修改立即生效,而無需重新登錄。例如,你可以在 .bashrc 文件中設(shè)置某些環(huán)境變量,然后在你需要這些環(huán)境變量的 Shell 會(huì)話中使用source
命令加載它們。
當(dāng)前目錄壓棧并切換到新目錄:pushd
在 Shell 中,pushd
是一個(gè)命令,用于將當(dāng)前目錄壓入目錄棧,并切換到指定的目錄。具體而言,pushd
會(huì)將當(dāng)前目錄的路徑保存到棧中,然后通過改變當(dāng)前工作目錄來切換到指定的目錄。
以通過 popd
命令返回之前的目錄。
需要注意的是,pushd
和 popd
命令是針對(duì)當(dāng)前 Shell 會(huì)話的,而不是針對(duì)腳本本身。這意味著在腳本中執(zhí)行這些命令只會(huì)影響當(dāng)前 Shell 會(huì)話中的工作目錄,而不會(huì)影響腳本執(zhí)行完畢后的工作目錄。
重定向標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤
- 將標(biāo)準(zhǔn)輸出重定向到文件:
command > output.txt
這將執(zhí)行 command
并將輸出寫入 output.txt
文件中。如果文件不存在,則會(huì)創(chuàng)建該文件;如果文件已存在,則會(huì)覆蓋其內(nèi)容。
- 將標(biāo)準(zhǔn)輸出追加到文件的末尾:
command >> output.txt
類似于上面的方法,但是輸出將追加到 output.txt
文件的末尾,而不是覆蓋文件內(nèi)容。
- 將標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出同時(shí)重定向到文件:
command > output.txt 2>&1
這會(huì)將標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出都重定向到 output.txt
文件中。2>&1
表示將標(biāo)準(zhǔn)錯(cuò)誤(file descriptor 2)重定向到標(biāo)準(zhǔn)輸出(file descriptor 1)。
- 將標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出都重定向到
/dev/null
,也就是說,不顯示任何輸出信息:
command > /dev/null 2>&1
取出等號(hào)前的內(nèi)容
cut -d'=' -f1
是一個(gè)用于處理文本的命令。這個(gè)命令的作用是按等號(hào)( ‘=’ )作為分隔符( -d
選項(xiàng)指定),選擇每行的第一個(gè)字段( -f1
選項(xiàng)指定)。通常,這個(gè)命令用于處理鍵值對(duì)文本,例如在處理 INI 文件或環(huán)境變量導(dǎo)出時(shí),它能提取出等號(hào)前的鍵。
生成隨機(jī)密碼
user_pass="$(date +%s | sha256sum | base64 | head -c 8)"
這段代碼是在 Bash shell 環(huán)境中生成一個(gè)用戶密碼。它的工作方式如下:
-
date +%s
:這部分生成一個(gè)當(dāng)前時(shí)間的 Unix 時(shí)間戳。 -
sha256sum
:這個(gè)命令對(duì)前面生成的時(shí)間戳進(jìn)行 SHA-256 哈希運(yùn)算。 -
base64
:這個(gè)命令將上一步的哈希結(jié)果進(jìn)行 Base64 編碼,使其變成一個(gè)可打印的字符。 -
head -c 8
:最后這個(gè)命令從編碼后的結(jié)果中選取前8個(gè)字符。
因此,這段代碼生成的是一個(gè)8個(gè)字符長度的Base64編碼的SHA-256哈希值,它基于當(dāng)前的Unix時(shí)間戳。這樣的用戶密碼由于其隨機(jī)性和基于時(shí)間的特性,可以提供較好的安全性。
獲取參數(shù)列表中最后一個(gè)參數(shù)
nargs=$#;
target_rootdev=${!nargs};
$#
是特殊的Shell變量,代表命令行參數(shù)的個(gè)數(shù),這就是nargs
的值。${!nargs}
是間接引用,它引用的是nargs
變量的值所代表的變量。在這個(gè)上下文中,nargs
的值是$#
,代表命令行參數(shù)的個(gè)數(shù),因此${!nargs}
就引用了第$#
個(gè)參數(shù)。
解析命令行參數(shù)
opstr+="b:c:d:e:f:h:i:k:m:n:o:p:rs:t:u:v:w:x:z:B:C:F:G:I:K:L:M:N:P:R:S:Z:-:";
while getopts "${opstr}" OPTION; docase $OPTION inb) BCTFILE=${OPTARG}; ;;Z) zflag="true"; ;; # cmdline only-) case ${OPTARG} inno-root-check) no_root_check=1; ;;no-flash) no_flash=1; ;;esac;;*) usage allunknown 1; ;;esac;
done
opstr+="b:c:d:e:f:h:i:k:m:n:o:p:rs:t:u:v:w:x:z:B:C:F:G:I:K:L:M:N:P:R:S:Z:-:";
:這一行定義了一個(gè)字符串opstr
,并向其添加了多個(gè)字符,每個(gè)字符后面都有一個(gè)冒號(hào)。這些字符將作為選項(xiàng)用于后面的getopts
命令。while getopts "${opstr}" OPTION; do
:這是一個(gè)while
循環(huán),它將遍歷通過opstr
定義的每個(gè)選項(xiàng)。getopts
命令將解析命令行參數(shù),并將每個(gè)選項(xiàng)的名稱存儲(chǔ)在變量OPTION
中。case $OPTION in
:這是一個(gè)case
語句,它將根據(jù)OPTION
的值來執(zhí)行不同的操作。
接下來,代碼定義了與每個(gè)選項(xiàng)對(duì)應(yīng)的操作。例如,當(dāng)選項(xiàng)是 b
時(shí),將把變量 BCTFILE
設(shè)置為命令行參數(shù)的值。類似的,對(duì)于其他選項(xiàng)也有類似的操作。
*) usage allunknown 1; ;;)
:這是一個(gè)通配符模式,用于處理不匹配任何特定選項(xiàng)的情況。在這種情況下,將執(zhí)行usage allunknown 1
命令,但該命令在給定的代碼段中沒有定義。esac; done
:這是case
語句和while
循環(huán)的結(jié)束標(biāo)記。
另外,在選項(xiàng) -
的情況下,根據(jù)命令行參數(shù)的值,將執(zhí)行不同的操作。例如,如果參數(shù)是 no-root-check
,則將變量 no_root_check
設(shè)置為1,以此類推。
這個(gè)腳本主要用于處理命令行參數(shù),并根據(jù)參數(shù)的值執(zhí)行相應(yīng)的操作。
檢查函數(shù)是否存在
declare -F -f process_fuse_level > /dev/null 2>&1;
這段代碼用于檢查是否存在一個(gè)名為 process_fuse_level
的函數(shù)。
declare -F -f process_fuse_level
這句代碼會(huì)檢查是否存在名為 ‘process_fuse_level’ 的函數(shù),如果存在,該函數(shù)會(huì)被聲明為只讀。
然后 /dev/null 2>&1
將標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出都重定向到 /dev/null
,也就是說,不顯示任何輸出信息。
總的來說,這段代碼用于在不產(chǎn)生任何輸出(包括錯(cuò)誤)的情況下檢查一個(gè)函數(shù)是否存在。
查找并分割字符串
tegrarcm --uid | grep BR_CID | cut -d' ' -f2
- 命令
tegrarcm --uid
輸出的信息為:BR_CID: 0x32101001642a170814000000120204c0 grep
命令用于搜索文本,在給定的文件或標(biāo)準(zhǔn)輸入中搜索匹配 ‘BR_CID’ 的行,其輸出通過管道傳送給cut
命令cut
命令用于從文本中提取字段,這里的-d' '
指定了字段分隔符為空格,-f2
表示提取第二個(gè)字段。因此,cut
命令將從grep
命令輸出的每一行中提取第二個(gè)字段(以空格分隔),并將其輸出到標(biāo)準(zhǔn)輸出。- 最終輸出為:0x32101001642a170814000000120204c0
字符串切片
ECID="0x32101001642a170814000000120204c0";
flval="${ECID:2:1}"
- 第一行定義了一個(gè)名為
ECID
的變量,并賦值為一個(gè)十六進(jìn)制的字符串。 flval="${ECID:2:1}"
:這一行使用了字符串切片操作。${ECID:2:1}
表示從 ECID 的第 2 個(gè)字符開始(索引從 0 開始計(jì)算),截取長度為 1 的片段。所以這行代碼將 ECID 的第 3 個(gè)字符(在 ECID 中索引為 2 的字符)賦值給flval
。
這段代碼在 ECID 為 “0x32101001642a170814000000120204c0” 的情況下,flval
的值將是 “3”。
默認(rèn)參數(shù)擴(kuò)展 :-
ROOTFS_TYPE="${ROOTFS_TYPE:-ext4}";
這行 Shell 代碼定義了一個(gè)變量 ROOTFS_TYPE
,如果 ROOTFS_TYPE
這個(gè)變量在之前已經(jīng)定義過,并且其值不是空字符串,那么這行代碼就不會(huì)改變 ROOTFS_TYPE
的值。但如果 ROOTFS_TYPE
這個(gè)變量之前沒有定義,或者其值為空字符串,那么這行代碼就會(huì)將其值設(shè)置為 ext4
。這是 Shell 中的默認(rèn)參數(shù)擴(kuò)展(Parameter Expansion)的用法。
執(zhí)行存儲(chǔ)在字符串中的命令:eval
eval
命令用于執(zhí)行存儲(chǔ)在字符串中的命令,并返回結(jié)果。
這個(gè)命令會(huì)解析并執(zhí)行其參數(shù)指定的字符串中的命令,然后將結(jié)果輸出到標(biāo)準(zhǔn)輸出。例如,如果你有一個(gè)字符串包含了一個(gè)命令,你可以使用 eval
來執(zhí)行那個(gè)命令。
注意,由于 eval
會(huì)執(zhí)行字符串中的任意命令,因此在使用時(shí)需要特別小心,避免執(zhí)行不安全的命令。
定義空數(shù)組
pre_deb_list=()
最小化 Jetson 磁盤
負(fù)載測(cè)試:fio
#讀測(cè)試
fio -filename=test2g -direct=1 -rw=read -bs=1M -size=2G -numjobs=64 -runtime=10 -group_reporting -name=file1#寫測(cè)試
fio -filename=test2g -direct=1 -rw=write -bs=1M -size=2G -numjobs=64 -runtime=10 -group_reporting -name=file1
-filename=test2g
: 指定測(cè)試的文件名為’test2g’。注意會(huì)在工作目錄下生成 test2g 文件,測(cè)試完成后要手動(dòng)刪除-direct=1
: 直接I/O模式,繞過頁緩存。-rw=read
: 測(cè)試讀取操作,替換之前的write。-rw=write
表示這是寫入測(cè)試-bs=1M
: 塊大小設(shè)為1M。-size=2G
: 測(cè)試的文件大小為2G。-numjobs=64
: 同時(shí)進(jìn)行的作業(yè)數(shù)設(shè)為64。-runtime=10
: 每個(gè)作業(yè)運(yùn)行10秒。-group_reporting
: 啟用組報(bào)告模式,可以同時(shí)報(bào)告所有作業(yè)的總體情況。-name=file1
: 給這個(gè)測(cè)試任務(wù)命名為’file1’。
fio-3.1
Starting 64 processes
file1: Laying out IO file (1 file / 2048MiB)
Jobs: 64 (f=64): [R(64)][100.0%][r=88.0MiB/s,w=0KiB/s][r=88,w=0 IOPS][eta 00m:00s]
file1: (groupid=0, jobs=64): err= 0: pid=4780: Thu Mar 2 15:07:30 2023read: IOPS=88, BW=88.8MiB/s (93.1MB/s)(952MiB/10722msec)clat (msec): min=14, max=10702, avg=695.81, stdev=2470.19lat (msec): min=14, max=10702, avg=695.81, stdev=2470.19clat percentiles (msec):| 1.00th=[ 22], 5.00th=[ 23], 10.00th=[ 23], 20.00th=[ 23],| 30.00th=[ 23], 40.00th=[ 23], 50.00th=[ 23], 60.00th=[ 23],| 70.00th=[ 23], 80.00th=[ 23], 90.00th=[ 372], 95.00th=[ 9597],| 99.00th=[10537], 99.50th=[10671], 99.90th=[10671], 99.95th=[10671],| 99.99th=[10671]bw ( KiB/s): min= 2048, max=47772, per=25.31%, avg=23012.47, stdev=21602.27, samples=80iops : min= 2, max= 46, avg=22.20, stdev=20.83, samples=80lat (msec) : 20=0.11%, 50=88.97%, 500=2.10%, 750=2.31%, >=2000=6.51%cpu : usr=0.00%, sys=0.07%, ctx=1095, majf=0, minf=17569IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%issued rwt: total=952,0,0, short=0,0,0, dropped=0,0,0latency : target=0, window=0, percentile=100.00%, depth=1Run status group 0 (all jobs):READ: bw=88.8MiB/s (93.1MB/s), 88.8MiB/s-88.8MiB/s (93.1MB/s-93.1MB/s), io=952MiB (998MB), run=10722-10722msecDisk stats (read/write):mmcblk0: ios=1886/1, merge=0/3, ticks=1126360/4332, in_queue=1321704, util=98.65%
統(tǒng)計(jì)根目錄下所有文件夾的大小
sudo du -ah --max-depth=1 /
-a
:顯示所有的文件和目錄,而不是只顯示目錄的總大小-h
:以人類可讀模式顯示(使用 K、M、G 等單位)--max-depth
:限制遞歸深度為 1。/
:從根目錄開始計(jì)算
列出已經(jīng)安裝的軟件包(帶大小)
dpkg-query -Wf '${Installed-Size;8} KiB \t${Package;-30}\t${binary:Summary}\n'
按照軟件包大小排序列出所有已經(jīng)安裝的軟件
dpkg-query -Wf '${Installed-Size;8} KiB \t${Package;-30}\t${binary:Summary}\n' | sort -n -t$'\t' -k 1,1