मैं अपने सिस्टम में स्थापित सभी एप्लिकेशन को कैसे सूचीबद्ध कर सकता हूं?


19

मुझे पता है, मैं सिर्फ उबंटू में सभी इंस्टॉल किए गए ऐप को देखने के लिए Super+ हिट कर सकता हूं A, लेकिन मुझे उनके नामों को सूचीबद्ध करने के लिए एक कमांड की आवश्यकता है। आदेश

dpkg --get-selections | awk '{print $1}'

यह भी एक विकल्प नहीं है क्योंकि यह सभी स्थापित पैकेज दिखाता है और इसमें ड्राइवर, गुठली और पुस्तकालय शामिल हैं।

जवाबों:


17

मैं इस जवाब के साथ उन लोगों के लिए आया हूं जो अच्छे तरीके से बैश का उपयोग करना चाहते हैं। यह स्पष्ट है कि प्रश्न का उत्तर फाइलों की लिस्टिंग से संबंधित है /usr/share/applications, लेकिन समस्या यह है कि lsकमांड को कभी पार्स नहीं किया जाना चाहिए । अतीत में, मैं एक ही गलती कर रहा था, लेकिन अब मुझे पता चला कि सबसे अच्छा तरीका है forकि आप फाइलों पर ओवररेट करने के लिए लूप का उपयोग करें, भले ही मुझे अपने कीमती कीबोर्ड से कुछ और कुंजियों का उपयोग करना पड़े:

for app in /usr/share/applications/*.desktop; do echo "${app:24:-8}"; done

मैंने पिछले कमांड स्ट्रिंग मैनिपुलेशन ऑपरेशन में भी उपयोग किया : appपहले 24 वर्णों से हटाए गए /usr/share/applications/और जो अंतिम 8 वर्ण हैं .desktop


अपडेट करें:

एक अन्य स्थान जहां आप डैश द्वारा दिखाए गए एप्लिकेशन पा सकते हैं ~/.local/share/applications/*.desktop। तो आपको निम्न कमांड चलाने की आवश्यकता है:

for app in ~/.local/share/applications/*.desktop; do echo "${app:37:-8}"; done

पिछले दो आदेशों को एकजुट करने के लिए, आप उपयोग कर सकते हैं:

for app in /usr/share/applications/*.desktop ~/.local/share/applications/*.desktop; do app="${app##/*/}"; echo "${app::-8}"; done

4

अपने सभी स्थापित अनुप्रयोगों की सूची उनके नाम के साथ प्राप्त करना, सबसे आसान तरीका है:

sudo apt-get install aptitude
aptitude -F' * %p -> %d ' --no-gui --disable-columns search '?and(~i,!?section(libs), !?section(kernel), !?section(devel))'

यह आपको उन सभी स्थापित पैकेजों की एक अच्छी सूची देगा जो पुस्तकालयों नहीं हैं, गुठली नहीं हैं, इस तरह से विकास पैकेज नहीं:

* zip -> Archiver for .zip files 
* zlib1g -> compression library - runtime 
* zlib1g-dev -> compression library - development 
* zsh -> shell with lots of features 
* zsh-common -> architecture independent files for Zsh 

यह अधिक पूर्ण है क्योंकि यह गैर-जीयूआई अनुप्रयोगों को भी सूचीबद्ध करता है जो .desktopफाइलों में दिखाई नहीं देंगे


मैं इस सवाल के जवाब से सहमत नहीं हो सकता। जवाब अच्छा है, लेकिन इस जगह में नहीं। पर्याप्त स्पष्ट है कि ओपी उन अनुप्रयोगों के साथ एक सूची चाहता है जो डैश में पाए जा सकते हैं। और वहाँ के लिए जगह नहीं है zsh, zsh-commonऔर दूसरों को!
रादु राईडेनू

@ RaduRădeanu मैंने सिर्फ अपने स्थापित पैकेजों का एक अंश दिखाने के लिए पूंछ का उपयोग किया, जो कि z के साथ समाप्त होता है, अगर मैंने सिर का उपयोग किया था, तो वे एक, 2 के साथ शुरू करेंगे) वह "डैश" में सूचीबद्ध अनुप्रयोगों को चाहता है? क्या आपको यकीन है?
ब्रिअम

Braiam, आया, यह उस बारे में नहीं है जो z के साथ शुरू होता है ... जब आप अपने कीबोर्ड पर Super + A दबाते हैं तो आप अपनी स्क्रीन पर ऊपरी-बाएँ कोने से शुरू होते हुए क्या देख सकते हैं?
रादु रयेडेनु

1
@ RaduRădeanu ओपी के शीर्षक में कहा गया है कि वह अपने सिस्टम में स्थापित सभी एप्लिकेशन को पुस्तकालयों, ड्राइवरों, कर्नेल और अन्य को छोड़कर सूचीबद्ध करना चाहता है । वह ऐप-सूची प्राप्त करने के लिए एक तरीके का उल्लेख करता है (जो वह उपयोग करता है), जो सुपर + ए का उपयोग कर रहा है। और जो सिस्टम में स्थापित अनुप्रयोगों का सबसेट प्रदर्शित करता है; लेकिन यह सबसे अधिक कवर करता है यदि सभी नहीं .. उत्तर --no-guiहटाए जाने के साथ भी पूरा होगा ।
सटीक

1
.. मैं --no-guiभाग वापस लेता हूं, लगता है कि यह वहां नहीं है जो मैंने सोचा था कि यह था।
सटीक

3

सभी स्थापित अनुप्रयोगों को देखने के लिए नीचे दिए गए कमांड को चलाएं,

ls /usr/share/applications | awk -F '.desktop' ' { print $1}' -

यदि आप सभी स्थापित अनुप्रयोगों की सूची प्राप्त करना चाहते हैं, तो नीचे दिए गए आदेश को चलाएं,

ls /usr/share/applications | awk -F '.desktop' ' { print $1}' - > ~/Desktop/applications.txt

यह उपरोक्त कमांड आउटपुट को applications.txtआपकी ~/Desktopडायरेक्टरी के अंदर फाइल करने के लिए स्टोर करेगा ।

या

स्थापित अनुप्रयोगों को सूचीबद्ध करने के लिए टर्मिनल पर नीचे की कमांड भी चलाएं,

find /usr/share/applications -maxdepth 1 -type f -exec basename {} .desktop \; | sort

टेक्स्ट फ़ाइल में सूची प्राप्त करने के लिए, नीचे दिया गया कमांड चलाएँ

find /usr/share/applications -maxdepth 1 -type f -exec basename {} .desktop \; | sort > ~/Desktop/applications.txt

सभी स्थापित अनुप्रयोगों के लिए डेस्कटॉप प्रविष्टियों के अंदर जमा हो जाती है /usr/share/applicationsनिर्देशिका है, जहां से कोई फ़ाइल नाम प्रारूप में हैं application-name.desktop.Removing .desktopफ़ाइल नाम में से हिस्सा आप स्थापित अनुप्रयोगों की कुल सूची दे देंगे।

अपडेट करें:

जैसा कि @Radu ने सुझाव दिया है , आप ~/.local/share/applicationsनिर्देशिका के अंदर अपने अतिरिक्त स्थापित अनुप्रयोगों के लिए डेस्कटॉप प्रविष्टियां भी पा सकते हैं ।

find /usr/share/applications ~/.local/share/applications -maxdepth 1 -type f -exec basename {} .desktop \;


धन्यवाद रादु हालांकि आपने कितनी बार एक फ़ाइल नाम को एक नई पंक्ति में देखा है? कभी नहीँ? ऐसा ही सोचा था । इसलिए मुझे कभी भी किसी किनारे के मामले में बहुत उपयोगी चीज का उपयोग नहीं करना चाहिए जो कि वास्तव में कभी नहीं होता है? मुझे लगता है कि मैं lsप्रतिनिधित्व करता रहूंगा - उपदेशात्मक उद्देश्यों के लिए और ऊपर दिए गए गैर-महत्वपूर्ण कार्यों के लिए - और इस सीमा को ध्यान में रखने की कोशिश करता हूं, सिर ऊपर करने के लिए धन्यवाद!
रॉल्फ

0

अगर आपको हिट होने पर Super+ दिखाए गए एप्लिकेशन की सूची की आवश्यकता है A, तो आप उपयोग कर सकते हैं ls /usr/share/applications। केवल एक चीज जो आपको करनी चाहिए, वह .desktopसमाप्त होने की जगह है जो काफी सरल कार्य है। मैं इसके साथ करता हूं sed:

ls /usr/share/applications | sed s/.desktop// - > installed-apps.txt

लेकिन आप पाठ संपादक का उपयोग करके सूची प्राप्त करने के बाद इसे कर सकते हैं।



2
@Radu, वास्तव में, /usr/share/application/*.desktopफ़ाइलों में कोई विशेष वर्ण नहीं है, इसलिए lsविशेष रूप से इस मामले में पार्स करने की अनुमति है।
दनाटेला

जब आप सुपर + ए को हिट करते हैं तो यह सभी एप्लिकेशन को सूचीबद्ध नहीं करता है ।
रादु राईडेनू

4
@ अर्ध-बिट आप मान रहे हैं कि कुछ भी गलत नहीं हुआ है। क्या होगा अगर मैं एक बेवकूफ हूँ और bad name.desktopउदाहरण के लिए एक फ़ाइल बनाई है ? यहां जोखिम का कोई कारण नहीं lsहै।
टेराडॉन

0

निश्चित नहीं है कि पोस्ट किए गए अधिकांश उत्तरों में .desktop शॉर्टकट का फ़ाइल नाम शामिल करना शामिल है। आपका .desktop शॉर्टकट फ़ाइल नाम कुछ भी हो सकता है लेकिन Nameशॉर्टकट फ़ाइल के अंदर फ़ील्ड क्या मायने रखती है । यदि आप डैश में दिखाए जाने वाले इंस्टॉल किए गए एप्लिकेशन नामों की सूची बनाना चाहते हैं, तो उस फ़ील्ड के नीचे "grep" करें[Desktop Entry]

बेसिक कोड, बैश के साथ

#!/bin/bash

for file in /usr/share/applications/*.desktop;
do
    while IFS== read -r key val
    do
        if [[ -z $key ]]; then
            continue
        else
            if [[ $key =~ ^\[Desktop\ Entry ]]; then
                interesting_field=1
            elif [[ $key =~ ^\[ ]]; then
                interesting_field=0
            fi
        fi
        [[ $interesting_field -eq 1 ]] && [[ $key == "Name" ]] && echo $val
    done < $file
done

लेकिन यह उन शॉर्टकट्स को ध्यान में नहीं रखता है जो डैश में दिखाए जाने से छिपे हुए हैं। बेहतर .desktop कल्पना के साथ कोई व्यक्ति शॉर्टकट के उन प्रकार को बाहर करने के लिए इस कोड को और विस्तारित करना चाह सकता है

संपादित करें: पायथन के साथ एक और प्रयास

#!/usr/bin/python

from os import listdir
from os.path import isfile, join
import ConfigParser

SHORTCUTDIR = "/usr/share/applications/"

shortcuts = [ file for file in listdir(SHORTCUTDIR) if isfile(join(SHORTCUTDIR, file)) and file.endswith(".desktop") ]
dash_shortcuts = []

for f in shortcuts:
    c = ConfigParser.SafeConfigParser()
    c.read(SHORTCUTDIR + f)

    try:
        if c.getboolean('Desktop Entry', 'NoDisplay') is True:
            continue
    except ConfigParser.NoOptionError:
        pass

    try:
        if "unity" in c.get('Desktop Entry', 'NotShowIn').lower():
            continue
    except ConfigParser.NoOptionError:
        pass

    try:
        if "unity" not in c.get('Desktop Entry', 'OnlyShowIn').lower():
            continue
    except ConfigParser.NoOptionError:
        pass

    dash_shortcuts += [ c.get("Desktop Entry", "Name") ]

for s in sorted(dash_shortcuts, key=str.lower):
    print s

3
आपको वास्तव में उत्तर के अधिक होने के लिए अपने उत्तर का विस्तार करना चाहिए।
सेठ

@ सेठ मैंने बहुत जल्द पोस्ट किया, क्षमा करें। मैं अपना सिर खुजला रहा था कि कैसे बासी के साथ इस्सी को पार किया जाए
फ्लिंट

@AvashRaj मुझे लगता है कि यह सरल है, लेकिन ini को पार्स करने का यह उचित तरीका नहीं है। यदि Nameआपके पास पार्सिंग में एक से अधिक प्रविष्टियाँ हैं, तो कोड में विस्फोट होगा और शोर होगा , जो हमेशा होता है। इसके अलावा, आपको तय लाइन नंबर
फ्लिंट

@AvinashRaj अभी भी खराब है: पी आपने इस बात पर ध्यान नहीं दिया कि Nameविकल्प लाइन नंबर की सीमा के बाहर हो सकता है, विशेष रूप से बहुत सारे विकल्प या रिक्त लाइनों के साथ [Desktop\ Entry ]। और .desktop फ़ाइल एक ini फ़ाइल है
Flint

0

प्रश्नकर्ता सभी स्थापित "ऐप्स" के नामों को सूचीबद्ध करना चाहता है।

.Desktop फ़ाइलों के साथ ऐप्स के बारे में :

  • Danatela द्वारा जवाब उन ऐप्स के साथ है जिनके पास .desktop फाइलें हैं/usr/share/applications
  • जैसा कि राडू ने बताया , .desktop फ़ाइलों वाली ऐप्स भी इसमें मिल सकती हैं~/.local/share/applications
  • इस बिंदु पर, यह ध्यान दिया जा सकता है कि .desktop फ़ाइलों वाले ऐप में दो नाम हो सकते हैं
    • एक "नाम" एकता में डैश या Xubuntu (उदाहरण के लिए) में मेनू से उपलब्ध है। यह नाम Name=संबंधित .desktop फ़ाइल में पंक्ति से लिया गया है । एक उदाहरण "चरित्र मानचित्र" है।
    • दूसरा "नाम" टर्मिनल से ऐप चलाते समय इस्तेमाल किया जाने वाला एक शब्द है और इसके बाद पहला शब्द है Exec=। "चरित्र मानचित्र" के मामले में, यह होगा gucharmap
  • दो नामों (और .desktop फ़ाइल) का उपयोग करके संबंधित किया जा सकता है :
    • sed -ns '1F;/^\[Desktop Entry\]/,/^\[/{/^Name=/p;/^Exec=/h};${z;x;G;p}' /usr/share/applications/*.desktop
    • तथा
    • sed -ns '1F;/^\[Desktop Entry\]/,/^\[/{/^Name=/p;/^Exec=/h};${z;x;G;p}' $HOME/.local/share/applications/*.desktop

.Desktop फ़ाइलों के बिना ऐप्स के बारे में :

"ऐप" को कैसे परिभाषित करता है, इसके आधार पर, कुछ के पास .desktop फाइलें नहीं होती हैं।

  • की तरह कुछ चाहेंगे conky, poppler-utils, qpdf, xdotoolऔर wmctrlविचार किया जाना "एप्स"? इन्हें कैसे पहचाना और इनके नाम से जाना जाता है (यह मानते हुए कि इन्हें स्थापित किया है)?
  • के बारे में क्या awk, find, grep, lsऔर sedकुछ और नाम के लिए? क्या वे ऐप हैं या वे नहीं हैं?

यदि किसी भी चीज की कमांड होती है, तो उसे ऐप के रूप में सोचा जाता है, तो सभी उपलब्ध कमांड और उपनामों को सूचीबद्ध करने के लिए लिनक्स कमांड और यह उत्तर उन्हें पहचानने में मदद करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.