অতিরিক্ত জিনিসগুলি করার জন্য আমি কি টার্মিনাল কমান্ডটি সংশোধন করতে পারি?


8

আমি এলিয়াস, ফাংশন সন্ধান করেছি ... তবে আমি সন্তোষজনক কিছু নিয়ে আসিনি। আমি আপনাকে কয়েকটা পরিস্থিতি দেই:

  • আমি cdফোল্ডারে into৫% বার ls কমান্ড দিয়ে ফলো করি ।
  • আমি mkdir, আমি cdনিজেই এর মধ্যে 90% বার ।

আপনি ধারণা পেতে।

এই আদেশগুলি একসাথে (বা অন্যান্য কার্যকারিতা) আবদ্ধ করার "পরিষ্কার" উপায় কী হবে?


5
এলিয়াস আপনার জন্য কেন কাজ করেনি?
থরবজর্ন রাভন অ্যান্ডারসন

2
সুতরাং mkdir এর সিডি ফলাফল করা উচিত তারপর এলএস উপর ট্যাক?
bmike

@ বিমাইক ওয়েল, একটি নতুন তৈরি ডিরেক্টরি খালি হবে, সুতরাং কিছু ছাপবে না।
র্যান্ডম 832

@ র্যান্ডম 832 আপনি এলএস-তে কোনও ফ্ল্যাগ ধরে নিচ্ছেন না, তবে আরও গুরুত্বপূর্ণ বিষয়টি আমার প্রশ্নটি প্রকাশ করবে যে কীভাবে ভাঙ্গা / ভারী হাতে পরিবর্তনটি কাঙ্ক্ষিত। আমি ফাংশনগুলির চেয়ে উপনাম পছন্দ করি তবে উভয়ই যা চাইবে তা চেষ্টা করতে পারে।
bmike

1
@ fd0 আমি সন্দেহ প্রকাশ করছি না যে উপনামগুলি কাজ করে না। আমি জিজ্ঞাসা করছি কেন। সমস্যার সহজ সমাধান হতে পারে।
থোরবজর্ন রাভন অ্যান্ডারসন

উত্তর:


4

আপনি এই লাইন লাগাতে পারেন আপনার .zsrhcবা.bashrc

[ -z "$PS1" ] && return
function cd {
builtin cd "$@" && ls -F
}

ফলাফল ->

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

এই উত্তর থেকে ব্যাখ্যা :

আমার .bashrc এর আগে আমার কাছে রয়েছে: [-z "$ PS1"] && রিটার্ন, এবং এই লাইনের পরে সমস্ত কিছুই কেবল ইন্টারেক্টিভ সেশনের ক্ষেত্রে প্রযোজ্য, সুতরাং সিডি স্ক্রিপ্টগুলিতে কীভাবে আচরণ করে তা প্রভাবিত করে না।

এই মন্তব্য থেকে আরও তথ্য :

[-z "$ PS1"] cks PS (ইন্টারেক্টিভ প্রম্পট ভেরিয়েবল) "শূন্য দৈর্ঘ্য" (-z) হয় কিনা তা পরীক্ষা করে। যদি এটি শূন্য দৈর্ঘ্য হয়, এর অর্থ এটি সেট করা হয়নি, সুতরাং বাশ অবশ্যই ইন্টারেক্টিভ মোডে চলবে না। এই অবস্থার অধীনে && রিটার্ন অংশটি এই মুহুর্তে .Bashrc কে স্যুরসিং থেকে বেরিয়ে আসে।

বিটিডব্লিউ, প্রশ্নের জন্য ধন্যবাদ, এটি সত্যিই দুর্দান্ত :)

সম্পাদনা করুন:

আরেকটি সমাধান হ'ল আপনার প্রম্পটে আপনার এলএস সংহত করা; আমি নিশ্চিত যে আপনি ওহমাইজ্যাশ এর সাহায্যে এটি করতে পারবেন;)


1
সাধারণভাবে সিডি
এলএস

@ মার্ক আমি 'rm -rf ~ / *' এর জন্য সম্মত agree তবে সিডি কমান্ডের জন্য, এটি সত্যই বিপজ্জনক নয়। এবং কার্লস 'বিদ্যমান কমান্ডগুলি আপগ্রেড' করতে চান, তাই ...
স্ট্রোহারারা

আমার বলতে হবে যে @ স্ট্রাবাহারা এটি প্রকাশের পর থেকেই আমি এই সমাধানটি ব্যবহার করেছি এবং আমার 0 টি সমস্যা হয়েছে। আমি "এটি কীভাবে গেল" সরবরাহ করতে চেয়েছিলাম :) :) এবং এটি সত্যিই দরকারী; এটিই আমি এটি ব্যবহার করি (.zshrc): i.imgur.com/WHpROIE.png
কার্লস

13

আমি এই জন্য একটি নতুন কমান্ড করতে চাই। আমি তাদের একক একত্রিত এমনকি যৌক্তিক হবে বলে আমি মনে করি।

go() {
    if [ -d "$1" ]; then
        cd "$1" && ls
    else
        mkdir -p "$1" && echo "Created directory $1" && cd "$1"
    fi
}

আমি আপনার ধারণাগুলি একত্রিত করতে পছন্দ করি! :-)
মার্টিন অ্যালার্ট


1
অবশ্যই, তবে আপনি যদি গো প্রোগ্রামিং ভাষা ব্যবহার শুরু করার সিদ্ধান্ত নেন? : পি
আরক্সানাস

@ আরক্সানাস: আপনি মেকফাইল ব্যবহার করেন? ;-)
দেবসোলার

2
হুমম আমি এটি পছন্দ করি। তবে আপনি যদি ভুলক্রমে নামটি ভুল টাইপ করেন তবে আপনি একটি নতুন ডিরেক্টরি তৈরি করেন। এটি একটি ছুটি (CD উপর একটি চেক বাস্তবায়ন কঠিন /.... বা ../বা কিছু) এবং যদি এটা খালি ডিরেক্টরি মুছে ফেলতে চান? মানে আপনি যদি কোনও ডিরেক্টরি রেখে যান তবে এটি খালি কিনা তা পরীক্ষা করে দেখুন এবং যদি তা থাকে তবে এটি মুছুন। আপনি যদি এটি না চান তবে আপনি তার পরিবর্তে সিডি ব্যবহার করতে পারেন
Schwertspize

6

আমি এগুলিতে আমার মতো জিনিস যুক্ত করার চেষ্টা করেছি .bashrc:

cd() {
    command cd "$@"
    command ls
}

mkdir() {
    command mkdir "$@"
    command cd "$@"
}

যাইহোক, আমি খুঁজে পেয়েছি যে এটি স্ক্রিপ্টগুলিকে বিশৃঙ্খলা করতে পারে যা ওভাররাইড হওয়া কমান্ডগুলি ব্যবহার করে এবং অপশন হ্যান্ডলিংটি ভঙ্গুর হতে পারে (উদাহরণস্বরূপ, আপনি যদি -pউপরের mkdirকমান্ডটি পাস করতে চান তবে এটি পাসও হয়ে গেছে cd)। ভিন্ন ভিন্ন নাম (যেমন, cবা mcd) দিয়ে ডাকনীয় সংজ্ঞায়িত করা আরও ভাল ।


1
[ -z "$PS1" ] && returnফাইলের শেষে সন্নিবেশ করা, এই ফাংশনগুলির আগে, সহায়তা করা উচিত
কার্লস অ্যালকোলেয়া

5

আমি মনে করি ফাংশনগুলি যাওয়ার উপায়। কিছুটা এইরকম

chglist() {
    cd "$1" && ls
}

উদাহরণ হিসাবে।

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