ইউনিক্সে বহু-শব্দযুক্ত কমান্ডের উপাধি দেওয়ার কোনও উপায় আছে কি?


11

আমি কমান্ডটি উরফ করার চেষ্টা করছি sudo shutdownকিন্তু আমার .profileকাজটি আমি ঠিক করতে পারি না alias "sudo shutdown"="my command"। ইউনিক্সে মাল্টি-ওয়ার্ড কমান্ডের উপাধি দেওয়ার অন্য উপায় আছে কি?


আমি এই সমস্ত কৌশল চেষ্টা করেছিলাম এবং তারা সব কাজ করেছে! ধন্যবাদ সবাইকে!
এজেন্টবঙ্ক 217

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

উত্তর:


19

উপনামের নামটি বাম দিকে রয়েছে, সুতরাং ডানদিকে আপনার কোনও বহুমুখী কমান্ড থাকতে পারে:

alias my_alias="multi worded command"

সম্পাদনা করুন: তবে, যদি আপনি সত্যিই একাধিক শব্দের নামের নাম রাখতে চান - উদাহরণস্বরূপ, আপনি যদি সত্যিই "সুডো শাটডাউন" উপনাম হতে চান তবে নীচের উপন্যাস বৈশিষ্ট্যটি ব্যবহার করে (ব্যাশ ম্যানুয়ালটিতে) আপনি এটিকে ঘিরে কাজ করতে পারেন ):

A trailing space in  value causes the next word to be checked for
alias substitution when the alias is expanded.

সুতরাং, আপনি যদি এখনও sudoঅন্য কমান্ডের সাথে ব্যবহার করতে চান তবে না দিয়ে থাকেন shutdownএবং যদি আপনি shutdownঅন্য কোনও কিছুর সাথে উরফ দিতে সক্ষম হন তবে আপনার কাছে এটি থাকতে পারে :

alias sudo='sudo '
alias shutdown="echo nope"

এখন, sudo anything_elseআশানুরূপভাবে কাজ করবে (ধরে নিও যে আপনার কোনও উপাধি নেই anything_else, তবে আপনার যদি এটি থাকে তবে এটির আগেও কাজ করা হত না); তবে এর sudo shutdownসমতুল্য হবে sudo echo nopeএবং এটি স্ট্রিংটি মুদ্রণ করবে।


2
ধন্যবাদ, আন্ডাররেটেড উত্তর; আমি আরও সহজেই এক জায়গায় থেকে আরও লাফিয়ে লাফিয়ে alias cd="cd "ফেলার alias X="<directory-with-long-name>"জন্য একক-বর্ণের উপকরণ ব্যবহার করেছি using
লুক ডেভিস

সম্মত হন, এটি আসলে অত্যন্ত দরকারী। আমি গিট কমান্ডগুলি ভুল টাইপ করি, এটি আমার পক্ষে এটি সমাধান করে: alias gti="git "এবংalias lgo="log"
কলানিল

4

একটি ফাংশন ব্যবহার করুন:

foo() { if [ "$1" = "bar" ]; then echo "doing something..."; fi; }

আপনি সম্ভবত একটি elseকেস চান যাতে দ্বিতীয় প্যারামিটারটি না থাকলে আসল কমান্ডটি চলতে পারে bar:foo() { if [ "$1" = "bar" ]; then echo "doing something..."; else command foo "$@"; fi; }
ডেভিডগ

2

থেকে উদ্ধৃতি: বাশ: ওরফে নামে ফাঁকা স্থান

ব্যাশ ডকুমেন্টেশন যুক্তরাষ্ট্র "প্রায় প্রতিটি কাজের জন্য, শেল ফাংশন alias লেখা বেশী প্রাধান্য পাচ্ছে।" এখানে একটি শেল ফাংশন যা প্রতিস্থাপন করে lsএবং আউটপুটটি পাইপ করাতে দেয় moreযদি আর্গুমেন্টটি (কেবল) থাকে -la

ls() {
    if [[ $@ == "-la" ]]; then
        command ls -la | more
    else
        command ls "$@"
    fi
}

ওয়ান-লাইনার হিসাবে:

ls() { if [[ $@ == "-la" ]]; then command ls -la | more; else command ls "$@"; fi; }

স্বয়ংক্রিয়ভাবে পাইপ আউটপুট:

ls -la

1

আপনি চারপাশের কাজ হিসাবে ড্যাশ ব্যবহার করতে পারেন: alias sudo-shutdown="your command"


1

আমি কেবলমাত্র / ইউএসআর / লোকাল / বিনে একটি এক্সিকিউটেবল ফাইল স্থাপন করতে পছন্দ করি (নিশ্চিত হন যে এটি আপনার পথে রয়েছে) যাতে আমি চালাতে চাই এমন কমান্ড রয়েছে। স্ক্রিপ্টের নামটি যে কমান্ডটি আসবে তা হবে। chmod + x / usr / স্থানীয় / বিন / আপনার_স্ক্রিপ্ট নিশ্চিত করুন।

সুতরাং স্ক্রিপ্টটিকে 'শাটডাউন' বলা যেতে পারে

ফাইল শাটডাউন এর বিষয়বস্তু হবে:

#!/bin/sh
sudo shutdown

এটি একটি সম্পূর্ণ নতুন বিশ্ব উন্মুক্ত করে। তারপরে আপনার কাছে কয়েকটি কমান্ড বা এমনকি একটি স্ক্রিপ্ট থাকতে পারে:

#!/usr/bin/env python
print "hi"
# more stuff. ....
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.