যে কোনও জায়গা থেকে স্ক্রিপ্ট চালান


8

আমার একটি স্ক্রিপ্ট রয়েছে:

#!/bin/bash
echo "$(dirname $(readlink -e $1))/$(basename $1)"

এটি এখানে বসে: /home/myuser/bin/abspath.shযা অনুমতি কার্যকর করে।

আমি যদি চালনা echo $PATHকরি তবে নিম্নলিখিতগুলি পান:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/myuser/bin

আমি চাই যে কোনও ডিরেক্টরি থেকে, কল করতে abspath <some_path_here>এবং এটি আমার স্ক্রিপ্টটিকে কল করে। আমি ব্যাশ ব্যবহার করছি, আমি কী ভুল করছি?

উত্তর:


30

আপনি টাইপ করতে চান abspath, তবে প্রোগ্রামটির নাম দেওয়া হয়েছে abspath.sh। সমস্যাটি পাঠের মধ্যে রয়েছে কিনা তা নিয়ে নয়, তবে সত্য যে আপনি এটির নামটি কল করার জন্য ব্যবহার করছেন না।

আপনার দুটি বিকল্প রয়েছে:

  1. abspath.shপরিবর্তে টাইপ করুন।
  2. প্রোগ্রামটির নতুন নামকরণ করুন abspath

1
... অথবা একটি simlink তৈরি করুন: cd $HOME/bin ; ln -s abspath.sh abspath। এটি আপনাকে স্ক্রিপ্টের জন্য সঠিক এক্সটেনশনটি রাখতে দেয় এবং আপনার পছন্দ মতো একটি সরঞ্জাম রাখে। (আপনি কিছু ফিউচারে, নিজের শেল স্ক্রিপ্টটি অজগর স্ক্রিপ্ট দ্বারা নমুনার জন্য প্রতিস্থাপন করতে পারেন ...)
এফ হাউরি

অথবা একটি উপনাম তৈরি করুন।
জেনি ডি

6

এই কোডটি যথেষ্ট ছোট যে আমি এটি শেল ফাংশন হিসাবে কোড করব:

abspath() {
    echo "$(dirname "$(readlink -e "$1")")/$(basename "$1")" 
} 

এবং হ্যাঁ আপনি এই সমস্ত উদ্ধৃতি চান।


4

.bashrc ফাইলে আপনার কমান্ড যুক্ত করে একটি উপনাম সেট করুন।

alias abspath='sh /home/myuser/bin/abspath.sh'

এবং ফাইল উত্স ভুলবেন না।


1
আপনি এখানে সুডো চান কেন?
সিভিএন

1
আমার যথেষ্ট খ্যাতি থাকলে আমি ভোটকে নামিয়ে দেব কারণ অকারণে সুডো ব্যবহার করা কেবল সাধারণ ভুল। দেখে মনে হচ্ছে কিছু লোক কখন এবং কেন এটি প্রয়োজন তা শেখার পরিবর্তে স্বয়ংক্রিয়ভাবে সমস্ত কিছুর জন্য sudo ব্যবহার করে।
স্কট সিরিয়েন্স

আপনাদের সাথে একমত এবং আমি জানি কখন সুডো ব্যবহার করতে হয়। আমি পুরো প্রশ্নটি দেখতে পেলাম না।
বালাসেখর নেল্লি

2

আমি আপনার বাশ স্ক্রিপ্টটির নাম বদলে ডিরেক্টরিতে abspathস্থানান্তরিত করব bin। আপনি যে abspathকোনও জায়গা থেকে কল করতে সক্ষম হবেন


0

তৃতীয় বিকল্পটি হ'ল অ্যাবসপথ নামে একটি উপনাম তৈরি করা যা আপনার abspath.sh স্ক্রিপ্টকে নির্দেশ করে।


5
যদি সমাধানযোগ্য সমাধান ব্যাখ্যা করে ঠিক করা হয় তবে এটির যথেষ্ট সমাধানও হয় না এবং এটি সমস্যা সমাধানের চেয়ে সমস্যাটি লুকিয়ে রাখে।
দাউদ

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