আমি কীভাবে আমার সিস্টেমে ইনস্টল করা সমস্ত অ্যাপ্লিকেশন তালিকাভুক্ত করতে পারি?


18

আমি জানি, উবুন্টুতে সমস্ত ইনস্টল থাকা অ্যাপ্লিকেশন দেখতে আমি কেবল 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))'

এটি আপনাকে ইনস্টল করা সমস্ত প্যাকেজগুলির একটি দুর্দান্ত তালিকা পাবেন যা লাইব্রেরি নয়, কার্নেল নয়, বিকাশ প্যাকেজ নয় not

* 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এবং অন্যদের!
রাদু রেদানু

@ রদুরেদানু আমি কেবলমাত্র আমার ইনস্টলড প্যাকেজগুলির একটি অংশ দেখানোর জন্য লেজ ব্যবহার করেছি, যা জেড দিয়ে শেষ হয়, যদি আমি মাথা ব্যবহার করে থাকি তবে তারা একটি, 2 দিয়ে শুরু করবে) তিনি "ড্যাশ" এ তালিকাভুক্ত অ্যাপ্লিকেশন চান? তুমি কি নিশ্চিত?
ব্রায়াম

ব্রিয়াম, এসেছিল, z বা কোন দিয়ে শুরু হবে তা নয় ... আপনি যখন আপনার কীবোর্ডে সুপার + এ টিপুন তখন উপরের-বাম কোণ থেকে আপনি কী আপনার পর্দায় উপস্থিত হতে দেখবেন?
রাদু রেডানু

1
@ রদুরাদেনু ওপির শিরোনামে বলা হয়েছে যে তিনি লাইব্রেরি, ড্রাইভার, কার্নেল এবং অন্যান্যগুলি বাদ দিয়ে তার সিস্টেমে ইনস্টল করা সমস্ত অ্যাপ্লিকেশন তালিকাভুক্ত করতে চান .. অ্যাপ্লিকেশন-তালিকা পাওয়ার জন্য তিনি একটি উপায়ের (যা তিনি ব্যবহার করেন) উল্লেখ করেছেন যা সুপার + এ ব্যবহার করছে এবং এটি সিস্টেমে ইনস্টল থাকা অ্যাপ্লিকেশনগুলির একটি উপসেট প্রদর্শন করে; কিন্তু এই কভার সবচেয়ে যদি না সব .. উত্তর এমনকি সম্পূর্ণ হবে --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ডিরেক্টরি ভিতরে সংরক্ষণ করা হয় , যেখানে ফাইলের নামগুলি ফর্ম্যাটে থাকে names ফাইলের নাম থেকে অংশটি application-name.desktopসরানো .desktopআপনাকে ইনস্টল করা অ্যাপ্লিকেশনগুলির মোট তালিকা দেবে।

হালনাগাদ:

@ রাদুর পরামর্শ অনুসারে , আপনি ~/.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
@ রাদু, আসলে /usr/share/application/*.desktopফাইলগুলিতে কোনও বিশেষ অক্ষর থাকে না, তাই lsবিশেষত এই ক্ষেত্রে পার্স করার অনুমতি রয়েছে।
দানাতেলা

আপনি সুপার + এ হিট করার সময় প্রদর্শিত সমস্ত অ্যাপ্লিকেশনকে এটি তালিকাভুক্ত করে না ।
রাদু রেডানু

4
@ সেমি-বিট আপনি ধরে নিচ্ছেন যে কোনও কিছুই ভুল হয়নি। আমি যদি একজন নির্বোধ এবং bad name.desktopউদাহরণস্বরূপ একটি ফাইল তৈরি করে থাকি তবে কী হবে ? এখানে ঝুঁকি নেওয়ার কোনও কারণ lsনেই।
টেরডন

0

নিশ্চিত নয় কেন পোস্ট করা বেশিরভাগ উত্তরগুলির মধ্যে .ডেস্কটপ শর্টকাটগুলির ফাইল নাম আহরণ জড়িত। আপনার .ডেস্কটপ শর্টকাট ফাইলের নাম শর্টকাট ফাইলের মধ্যে Nameক্ষেত্রটি বাদে কিছু হতে পারে । আপনি যদি ড্যাশ-এ প্রদর্শিত ইনস্টল করা অ্যাপ্লিকেশন নামের তালিকা তৈরি করতে চান তবে সেই ক্ষেত্রের নীচে কেবল "গ্রেপ" করুন[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

তবে এটি অ্যাকাউন্ট শর্টকাটগুলিতে নেয় না যা ড্যাশ-এ দেখানো থেকে গোপন রয়েছে। .ডেস্কটপ স্পেস সম্পর্কে আরও ভালভাবে বুঝতে পারে এমন শর্টকাটগুলি বাদ দিতে এই কোডটি আরও প্রসারিত করতে পারে

সম্পাদনা করুন: পাইথনের সাথে আরেকটি প্রচেষ্টা

#!/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
উত্তরের উত্তর হওয়ার জন্য আপনার উত্তরটি সত্যই প্রসারিত করা উচিত।
শেঠ

@ আমি খুব তাড়াতাড়ি পোস্ট করেছি, দুঃখিত। আমি বাশ দিয়ে কীভাবে পার্স করবেন তা ভেবে আমার মাথা আঁচড়ান
ফ্লিন্ট

@ অভিনাশরাজ আমি আশা করি এটি সহজ তবে এটিআই পার্স করার উপযুক্ত উপায় নয়। কোডটি বিস্ফোরিত হবে এবং শোরগোল ছুঁড়ে ফেলবে যদি Nameআপনি পার্স করছেন। ডেস্কটপটিতে একাধিক এন্ট্রি রয়েছে যা সর্বদা ক্ষেত্রে থাকে। এছাড়াও আপনার যে সমস্ত লাইন আপনার আগ্রহী সেগুলি স্থির রেখা নম্বরে থাকবে তা ধরে নেওয়া উচিত নয়
ফ্লিন্ট

@ অবিনাশরাজ এখনও খারাপ: পি আপনি এই বিষয়টি বিবেচনা করেন নি যে Nameবিকল্পটি লাইন সংখ্যার বাইরে থাকতে পারে, বিশেষত প্রচুর বিকল্প বা খালি লাইনগুলির সাথে [Desktop\ Entry ]। এবং .ডেস্কটপ ফাইলটি একটি আইএনআই ফাইল
ফ্লিন্ট

0

প্রশ্নকর্তা সমস্ত ইনস্টল থাকা "অ্যাপস" এর নাম তালিকাবদ্ধ করতে চান।

.ডেস্কটপ ফাইল সহ অ্যাপ্লিকেশন সম্পর্কিত :

  • দানেটেলার উত্তর অ্যাপ্লিকেশনগুলির সাথে ডিল ফাইলগুলিতে থাকে/usr/share/applications
  • যেমন Radu দ্বারা নির্দিষ্ট , .desktop ফাইলগুলির সাথে অ্যাপস এছাড়াও পাওয়া যেতে পারে~/.local/share/applications
  • এই মুহুর্তে, এটি লক্ষ্য করা যেতে পারে যে .ডেস্কটপ ফাইলগুলির সাথে অ্যাপ্লিকেশনগুলি থাকতে পারে দুটি নাম থাকতে পারে
    • ড্যাশ ইন ইউনিটিতে বা জুবুন্টুতে মেনু থেকে উদাহরণ হিসাবে একটি উদাহরণ "নাম" পাওয়া যায় (উদাহরণস্বরূপ)। এই নামটি Name=সম্পর্কিত .ডেস্কটপ ফাইলের লাইন থেকে নেওয়া । একটি উদাহরণ "চরিত্রের মানচিত্র"।
    • টার্মিনাল থেকে অ্যাপটি চলাকালীন অন্য "নাম" ব্যবহার করা হয় এবং এটি পরে প্রথম শব্দ Exec=। "চরিত্রের মানচিত্র" এর ক্ষেত্রে এটি হবে gucharmap
  • দুটি নাম (এবং .ডেস্কটপ ফাইল) ব্যবহার করে সম্পর্কিত হতে পারে :
    • 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

.ডেস্কটপ ফাইল ছাড়াই অ্যাপ্লিকেশন সম্পর্কিত :

কীভাবে একজন "অ্যাপ" সংজ্ঞায়িত করে তার উপর নির্ভর করে কারও কারও কাছে .ডেস্কটপ ফাইল নেই।

  • হায় কিছু conky, poppler-utils, qpdf, xdotoolএবংwmctrl বিবেচনা করা "অ্যাপস"? এগুলি কীভাবে তাদের নামের দ্বারা চিহ্নিত করা হবে এবং তালিকাভুক্ত করা হবে (ধরে নিলে কোনও এগুলি ইনস্টল করেছে)?
  • কি awk, find, grep, lsএবং sedআরো কিছু নাম রাখবে? তারা অ্যাপস না তারা না?

কমান্ড থাকা যে কোনও কিছুকে যদি অ্যাপ হিসাবে ভাবা হয়, তবে লিনাক্স সমস্ত উপলব্ধ কমান্ড এবং উপাত্ত তালিকাবদ্ধ করতে আদেশ দেয় এবং এই উত্তরটি সেগুলি সনাক্ত করতে সহায়তা করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.