ব্যবহারকারী যে কমান্ডটি চালাতে চায় তা চালানোর আগে আরেকটি কমান্ড চালান


9

ধরা যাক আমি এইভাবে lsসরঞ্জামটির আসল আচরণটি পরিবর্তন করতে চাই :

$ ls
Hello World
file1 file2 ...

কিভাবে আমি এটি করতে পারব?

যখন চলমান lsআমি অন্য কমান্ড আসুন বলে চালানোর জন্য চাই echo "Hello World!"

আমি যে দ্রুত সমাধানটি দেখতে পাচ্ছি তা হ'ল ওরফে ব্যবহার করা:

alias orig_ls="ls"
alias ls='echo "Hello World!"'

যাইহোক, এটি আসল সমাধান নয় কারণ আমি কখন orig_lsএটি চালাব তা আউটপুট হবে "Hello World!"


ব্যবহারকারীদের নিজস্ব পথে অন্য এলএস রাখুন এবং এটি আসলটি হুক করতে ব্যবহার করুন।
পিটারহ - মনিকা পুনরায় ইনস্টল করুন

উত্তর:


12

কখনও কখনও কোনও উপনাম আপনার ইচ্ছামতো সহজেই করতে যথেষ্ট শক্তিশালী হয় না, তাই এগুলি ব্যবহার না করেই এখানে একটি উপায়।

আপনার শেলটি শুরু হওয়ার পরে উত্সযুক্ত কিছু ফাইলে (উদাঃ .bashrc), নিম্নলিখিত ফাংশনটি যুক্ত করুন:

ls () {
    echo "Hello world!"
    command ls "$@"
}

একটি উপন্যাসের বিপরীতে, একটি ফাংশন পুনরাবৃত্তি করতে পারে। যে কারণে command lsপরিবর্তে ব্যবহৃত হয় ls; এটি আপনার শেলটিকে আপনার lsসুনির্দিষ্টভাবে সংজ্ঞায়িত ফাংশনের পরিবর্তে প্রকৃত ব্যবহার করতে বলে ।


2
প্রকৃতপক্ষে. এই সমাধানটি আরও ভাল স্কেল করে। +1
পাইথন নট

commandওএস এক্স এর বিকল্প কী ?
আয়নিক বিজাউ

@ IonicăBizău আমার কোনও ধারণা commandকাজ করেনি: / আমার কোনও ধারণা নেই এবং আমার কাছে এটি পরীক্ষা করার মতো ম্যাক নেই, দুঃখিত।
আন্ডারগ্রাউন্ডোমোনাইল

9

আপনি কল করতে ভুলবেন না ls:

alias ls='echo "Hello World!"; ls'

হা! আমার ধারণা এই একটি অসীম চক্র তৈরি করবে! তবে কেন এটি অসীম লুপ তৈরি করে না?
আয়নিক বিজাউ

1
পরিবর্তে আপনি ওরফে এলএস এর প্রতিধ্বনি "হ্যালো ওয়ার্ল্ড!" চেষ্টা করে দেখতে পারেন; / usr / bin / ls '
jamesqf

5
@ আয়নিকবিজাউ যে কোনও প্রদত্ত "ওরফে এক্সপেনশন রুল" কেবল একবার ব্যবহার করা হবে।
ডেভিড জেড

দু'এর সাথে একটি & কাজও যোগ দেবে? এটিও নিশ্চিত করবে যে ব্যবহারকারীর কমান্ড কেবল তখনই চালিত হবে যদি কাস্টমটি ঠিক কাজ করে?
মনিলির মামলা মোকদ্দমা করুন

@ কিপ্যায়েট্যাক্সস আপনি &প্রকৃতপক্ষে ব্যবহার করতে পারেন তবে আপনি এটি থেকে যুক্তিটি পাই না I
হউক লেগেছে 26'15
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.