ฉันจะแสดงรายการโปรแกรมทั้งสองที่มาพร้อมกับการแจกจ่ายและที่ฉันติดตั้งด้วยตนเองได้อย่างไร
ฉันจะแสดงรายการโปรแกรมทั้งสองที่มาพร้อมกับการแจกจ่ายและที่ฉันติดตั้งด้วยตนเองได้อย่างไร
คำตอบ:
ขึ้นอยู่กับการกระจายของคุณ
dpkg -l
rpm -qa
pkg_info
equery list
หรือeix -I
pacman -Q
cygcheck --check-setup --dump-only *
slapt-get --installed
ทั้งหมดเหล่านี้จะแสดงรายการแพคเกจมากกว่าโปรแกรมอย่างไร หากคุณต้องการแสดงรายการโปรแกรมอย่างแท้จริงคุณอาจต้องการแสดงรายการไฟล์โปรแกรมในโปรแกรม$PATH
ซึ่งสามารถทำได้โดยใช้ bash's compgen
:
compgen -c
หรือถ้าคุณไม่มีcompgen
:
#!/bin/bash
IFS=: read -ra dirs_in_path <<< "$PATH"
for dir in "${dirs_in_path[@]}"; do
for file in "$dir"/*; do
[[ -x $file && -f $file ]] && printf '%s\n' "${file##*/}"
done
done
rpm -qa
dkpg -l | grep ^ii
คือ
ตอบคำถามในส่วนที่สอง (ไม่มีอะไรให้เพิ่มเข้าไปในคำตอบของ Chrisสำหรับส่วนแรก) :
โดยทั่วไปจะไม่มีวิธีในการแสดงรายการโปรแกรมที่ติดตั้งด้วยตนเองและส่วนประกอบต่างๆ สิ่งนี้จะไม่ถูกบันทึกไว้ที่ใดถ้าคุณไม่ได้ใช้ตัวจัดการแพคเกจ ทั้งหมดที่คุณสามารถทำคือการหาไบนารีในสถานที่มาตรฐาน (เช่นคริสแนะนำ) และในลักษณะที่คล้ายกันคาดเดาที่บางห้องสมุดหรือบางหน้าคู่มือ ฯลฯ มาจาก นั่นคือเหตุผลที่เมื่อใดก็ตามที่เป็นไปได้คุณควรติดตั้งโปรแกรมโดยใช้ตัวจัดการแพคเกจของคุณ
โปรแกรมควรสามารถเข้าถึงได้ผ่านทาง PATH ดังนั้นเพียงแสดงรายการทุกอย่างในเส้นทาง:
ls ${PATH//:/ }
คาดว่าผลลัพธ์ของโปรแกรมประมาณ 3k-4k
ในการยกเว้นส่วนน้อยที่เป็นไปได้ของการบวกผิดคุณอาจปรับแต่งวิธีการ:
for d in ${PATH//:/ } ; do
for f in $d/* ; do
test -x $f && test -f $f && echo $f
done
done
มันไม่ได้สร้างความแตกต่างให้ฉัน
$PATH
เป็นต้น)
คำตอบอื่น ๆ ทั้งหมด (จนถึง) จัดการกับแพ็คเกจและไบนารี หากคุณหมายถึง "แอปพลิเคชันเดสก์ท็อป" สิ่งที่ปรากฏในเมนูเริ่มของคุณคุณสามารถลอง:
ls /usr/share/applications | awk -F '.desktop' ' { print $1}' -