প্রকৃত কমান্ডের সাহায্যে সম্পন্ন করতে পারি এমন কীভাবে [টিএবি] অ্যালিয়াসের স্বতঃসমাপ্তিতে যুক্তি দিয়ে কাজ করতে পারেন


9

আমার .bash_aliasesফাইলে আমার তৈরি অনেকগুলি উপাধি রয়েছে এবং সেগুলি খুব দরকারী, তাই যদি আমি কোনও প্যাকেজের সমস্ত তথ্য চাই তবে আমি এই জাতীয় কিছু করি:

allinfo software-center

এবং এটি সমান করে:

apt-cache show software-center

উপনামটি যেমন সেট করা আছে:

alias allinfo='apt-cache show'

তবে এর একটি অসুবিধা আছে, আমি প্রকৃত কমান্ডের পরিবর্তে TABব্যবহারের সময় স্বয়ংসম্পূর্ণ করতে অক্ষম allinfo। সুতরাং আমি ভাবছিলাম যে এই অসুবিধা অতিক্রম করার কোনও উপায় আছে এবং এটি তৈরি করা যাতে allinfo software-ce[TAB]আপনি প্রকৃত কমান্ডের সাহায্যে এটি ব্যবহার করার সময় ঠিক তেমনভাবে কাজ করবে, এবং কেবল একটি বড় ট্যাব স্থান তৈরি করবে না?

আমি ব্যবহার করছি gnome-terminal


ওএস তথ্য:

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 15.04
Release:    15.04
Codename:   vivid

প্যাকেজ তথ্য:

gnome-terminal:
  Installed: 3.14.2-0ubuntu3
  Candidate: 3.14.2-0ubuntu3
  Version table:
 *** 3.14.2-0ubuntu3 0
        500 http://gb.archive.ubuntu.com/ubuntu/ vivid/main amd64 Packages
        100 /var/lib/dpkg/status

এটা একটা ভালো প্রশ্ন। আমি এর পিছনে ধারণা পছন্দ করি। আমি সমস্ত দিকে তাকিয়ে ছিলাম, এবং আমি কয়েকটি ঘনিষ্ঠ উত্তর পেয়েছি, তবে আমি তাদের চেষ্টা করার পরে তারা ব্যর্থ হয়। আমি যদি কিছু নিয়ে আসি তবে আপনাকে জানাব will =)
টেরেন্স

উত্তর:


6

দুর্দান্ত প্রশ্ন! যদি আপনার allinfoকমান্ডটি ন্যায়বিচারের মতোই ছিল apt-cache(উদাহরণস্বরূপ, show) তবে আমরা এর সমাপ্তির দিকে নজর দিতে পারি apt-cacheএবং এটি আপনার allinfoউরফে প্রয়োগ করতে পারি ।

তবে আপনি apt-cacheসমাপ্তির একটি উপসেট চান , সুতরাং আমাদের আরও কিছু কাজ করার দরকার আছে।

যদি আমরা apt-cache- এর জন্য সমাপ্তির সংজ্ঞাটি /usr/share/bash-completion/completions/apt-cacheদেখি তবে আমরা দেখতে পাই যে showসাবকম্যান্ডের জন্য নিম্নলিখিতটি ব্যবহৃত হচ্ছে :

        COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" 2> /dev/null ) )

- এটি কেবল COMPREPLYপ্যাকেজগুলির তালিকার তালিকায় পরিবর্তনশীল সেট করে ।

সুতরাং, আমরা এটি ধার নিতে এবং আমাদের নিজস্ব ফাংশনটি লিখতে পারি এবং এটি আপনার অ্যালিনফো ওরফে আবদ্ধ করতে পারি:

# define a function to print the possible completions for
# an allinfo invocation
_allinfo()
{
    _init_completion || return
    COMPREPLY=($(apt-cache --no-generate pkgnames "$cur" 2>/dev/null))
    return 0
}

# bind the above completion function to the 'allinfo' alias
complete -F _allinfo allinfo

যদি আপনি সেই ফাইলটিকে নিজের .bashrcফাইলে যোগ করেন তবে আপনার প্রত্যাশা অনুযায়ী কাজগুলি সম্পূর্ণ করা উচিত।


0

আমার কোনও ধারণা নেই bashতবে এটি zshএবং কিছু প্লাগইন সহ কাজ করে

এর সাথে জেড-শেল ইনস্টল করুন

sudo apt-get install zsh

এবং z- শেলটিকে আপনার মানক শেল হিসাবে সেট করুন

sudo chsh "$USER" -s $(which zsh)

এবং z- শেল ব্যবহার করতে একটি নতুন টার্মিনাল শুরু করুন

যোগ এন্টিজেন v1 এ

cd
git clone https://github.com/zsh-users/antigen.git

এবং কনফিগার করুন

# path to antigen clone
source ~/antigen/antigen.zsh

# Load the oh-my-zsh's library.
antigen use oh-my-zsh

# Bundles from the default repo (robbyrussell's oh-my-zsh).
antigen bundle git
antigen bundle heroku
antigen bundle pip
antigen bundle lein
antigen bundle command-not-found
antigen bundle zsh-users/zsh-completions src

# Syntax highlighting bundle.
antigen bundle zsh-users/zsh-syntax-highlighting

# Load the theme.
antigen theme robbyrussell
# antigen bundle nojhan/liquidprompt

# Tell antigen that you're done.
antigen apply

কিছু চিত্র (প্রম্পটটি nojhan / তরল প্রম্পট)

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন


আহ, এটি কেবল তখনই কাজ করে যদি আমি ঠিক আপনার মতো করে থাকি, অন্যথায় এটি কেবল ধরে নেয় যে আমি চালাচ্ছি cdএবং ফাইলের পথটি করেছি thing আমি .bash_aliasesফাইলটি পড়তে কীভাবে এটি পাব ?

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