সিডি এবং এলএসের জন্য আমি কীভাবে একটি উপকরণ তৈরি করতে পারি?


32

আমি প্রায়শই lsকমান্ডটি চালানোর পরে কমান্ডটি চালাই cdcsএই অপারেশনের জন্য আমি কীভাবে একটি উপনাম (পছন্দ ) তৈরি করতে পারি ?

উত্তর:


35

থেকে ব্যাশ টিপস এবং ট্রিকস: শৈলী সঙ্গে 'সিডি' :

অবশেষে, আমি আপনাকে সিডি কমান্ডের নিজস্ব কাস্টম প্রতিস্থাপনটি কীভাবে লিখব তা আপনাকে দেখাতে চাই।

আপনি কি নিজেকে সর্বদা ডিরেক্টরিতে পরিবর্তন করার পরে একই জিনিস টাইপ করতে দেখেন? আপনি সম্ভবত প্রতিবার সেখানে ফাইলগুলি তালিকাভুক্ত করবেন, সম্ভবত এত বেশি যে আপনার হাতগুলি প্রতিটি 'সিডির পরে' ls 'টাইপ করে।

ঠিক আছে, আমি যেভাবে ভাবতে পারি সে চেষ্টা করেই এটি সন্ধান করে যে আমরা যে লক্ষ্যটি খুঁজছি তা সঠিকভাবে সম্পাদন করার একমাত্র উপায় আছে। আমাদের একটি শেল ফাংশন তৈরি করতে হবে।

শেল ফাংশনগুলি শেল প্রোগ্রামিংয়ের অংশ। সংকলিত প্রোগ্রামিং ভাষার মতো ফাংশনগুলি এক প্রকারের প্রক্রিয়াগত মডুলারিজেবিলিটি সরবরাহ করে। বিভিন্ন পরামিতিগুলির সাথে প্রায়শই ব্যবহৃত বিট বা গণনা সম্পাদনের জন্য কেউ জেনেরিক ফাংশন তৈরি করতে পারে। এই ক্ষেত্রে, প্যারামিটারটি বর্তমান কার্যক্ষম ডিরেক্টরি।

এখানে একটি সহজ:

function cs () {
    cd $1
    ls
}

@ গিরিহার কৃত্রিমভাবে দ্রষ্টব্য হিসাবে , আপনি যদি কোনও নামের সাথে কোনও ডিরেক্টরিতে ডিরেক্টরিতে স্যুইচ করার চেষ্টা করেন তবে উপরের ফাংশনটি ব্যর্থ হবে:

$ cs A\ B/
-bash: cd: A: No such file or directory
<current directory listing>  

পরিবর্তে আপনার নিম্নলিখিত ফাংশনটি ব্যবহার করা উচিত:

function cs () {
    cd "$@" && ls
    }

আপনি একবার সেই কোডটি আপনারটিতে যুক্ত করলে ~/.bashrc, আপনার এটি করা উচিত:

hello@world:~$ cs Documents/
example.pdf tunafish.odt
hello@world:~/Documents$

1
এটি সাদা স্থানযুক্ত ডিরেক্টরিগুলির জন্য ব্যর্থ হবে। Dv3500ea এর উত্তর মন্তব্য দেখুন।
গিরিহা

24

আপনি builtinকমান্ডটি ব্যাশে ব্যবহার করতে পারেন :

function cd() {
    new_directory="$*";
    if [ $# -eq 0 ]; then 
        new_directory=${HOME};
    fi;
    builtin cd "${new_directory}" && ls
}

2
এটি বেশ চতুর। আমার .বাশার্কে আমার খুব দীর্ঘ সময়ের জন্য @ ফ্লোরিয়ানের মতো একটি সমাধান ছিল, তবে যখন আমি ভুলে যাই যে সহকর্মীদের কম্পিউটারে আমার 'সিএস' ওরফে নেই, তখন এটি অনেক বেশি সন্তোষজনক।
ডিনো 12

আমার এই উত্তরটি সবচেয়ে ভাল লেগেছে। কোনও কারণে, আপনি কমান্ডটি ওভাররাইট করার জন্য এলিয়াস ব্যবহার করতে পারবেন না, সুতরাং আপনাকে এই উত্তরের মতো একটি ফাংশন তৈরি করতে হবে। : ডি
trusktr

কিন্তু নন-বিল্টিন কমান্ডগুলি সম্পর্কে কী? উদাহরণস্বরূপ, উপরেরগুলি ls কমান্ড ওভাররাইট করার জন্য কাজ করবে না। "বিল্টিন" এর পরিবর্তে কিছু কীওয়ার্ড ব্যবহার করার আছে?
trusktr

এর জন্য পুরো পথটি ব্যবহার করুন, উদাহরণস্বরূপ:function ls() { /usr/bin/ls $* }
ওয়ানওফোন

আমার নতুন সংজ্ঞা দিতে সমস্যা হয়েছিল cdকারণ rvmআমার cdসংজ্ঞাটিও পরিবর্তন করে। দেখুন stackoverflow.com/a/19941991/1601989
DavidG


9

ফাংশনটি ব্যবহারের পরামর্শের জন্য ফ্লোরিয়ান ডিয়েচকে ধন্যবাদ । আমি csনাম হিসাবে ব্যবহার করতে পারি না কারণ সাসাউন্ড প্যাকেজে একটি csকমান্ড রয়েছে , তাই আমি ব্যবহার করেছি ।lc

আমি এটি ~/.bash_aliases( nano ~/.bash_aliases) এ যুক্ত করেছি:

function lc () {
    cd $1;
    ls 
}

এটি resetকার্যকর হওয়ার জন্য টার্মিনালটি হওয়া দরকার ।


8
ডিরেক্টরিতে $1শ্বেত স্পেস থাকলে এটির মতো অচিহ্নযুক্ত হওয়া এটি ব্যর্থ করে দেবে। এছাড়াও, আপনার ফেরতের মূল্য পরীক্ষা করা উচিত cd; যদি এটি ব্যর্থ হয় (যেমন অনুমতি অস্বীকার), তবে এটি চালানোর কোনও মানে নেই lslc() { cd "$@" && ls; }
গিরিহা

1

এই ফাংশন একটি সম্প্রসারণ হিসাবে: cs() { cd "$1" && ls; }, আপনি ফাংশনের এর সব আর্গুমেন্ট পাস করতে পারেন cdব্যবহার করে $@পরিবর্তে "$1"যেমন: cs() { cd $@ && ls; }


1

আমার নতুন সংজ্ঞা দিতে সমস্যা হয়েছিল cdকারণ rvmআমার cdসংজ্ঞাটিও পরিবর্তন করে। Https://stackoverflow.com/a/19941991/1601989 দেখুন । আমি সত্যিই ব্যবহার করতে চাইনি builtinকারণ যা rvmকিছু করছে তা এড়িয়ে যাবে ।

আমি আমার সাথে নিম্নলিখিতগুলি যুক্ত করেছি .bashrc:

# cdd allows you to cd to the directory of the given file or directory
function cdd()
{
  if [[ $# -eq 0 ]]; then
    cd
  elif [[ -d "$*" ]]; then
    cd "$*"
  elif [[ -f "$*" ]]; then
    echo "WARNING: file given, cd to file's dirname" 1>&2
    local dir=$(dirname "$*")
    cd "$dir"
  else
    cd "$*"
  fi
}

function cs()
{
  cdd $* && ls
}

এবং তারপরে rmvলাইনের পরে .bashrc:

alias cd='cdd'
# Use bash built in completion for cd to allow for filenames to be used
complete -r cd
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.