আমি কি '&&' এর পরে 'এবং&' এর আগে কোনও আদেশকে উল্লেখ করতে পারি?


10

কীভাবে প্রশ্নের বাক্যটি বানাবেন তা নিশ্চিত নন, তবে মূলত, আমি প্রায়শই নিজেকে vagrantভিএম আনার মতো একটি কমান্ড চালাচ্ছি এবং তারপরে নীচের মত এটিতে এসএসএস করব:

vagrant up && vagrant ssh

আমার নিজের ফাংশন বা স্ক্রিপ্ট লিখতে সংক্ষিপ্ত, vagrantকমান্ডের দ্বিতীয় অংশের অংশটি "পুনঃব্যবহার" করার কোন উপায় আছে ?


আপনি এই সম্পর্কিত সম্পর্কিত প্রশ্নে সহায়কটি পেতে পারেন
বার্নহার্ড

উত্তর:


23

সঙ্গে (t)csh, bashবা zshইতিহাস সম্প্রসারণ আপনি পারে লিখুন:

vagrant up && !#:0 ssh

কিন্তু, গুরুত্ব সহকারে, আপনি না


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

@glenn আপনি কি বোঝাতে পারেন দয়া করে !#:0। আমরা যদি 0, 1, 2 বা যে কোনও সংখ্যার সাথে প্রতিস্থাপন করি, তবে এটি কী বোঝায়?
র‌্যাম

4
gnu.org/software/bash/manual/bashref.html# ইতিহাস - আবিষ্কার - !#আপনি বর্তমানে যে রেখাটি টাইপ করছেন তা বোঝায় এবং লাইনটির :0প্রথম শব্দ ("ভ্যাগ্রান্ট")। সুতরাং !#:1"আপ" ইত্যাদি হবে
গ্লেন জ্যাকম্যান

4
পবিত্র গরু মানুষ। আমার উত্তর upvoting বন্ধ করুন। ক) "ভ্যাগ্রান্ট" টাইপ করুন, বা খ) প্রথমে "! #: 0" মনে রাখুন এবং তারপরে টাইপ করুন এর জন্য প্রয়োজনীয় মানসিক প্রচেষ্টা বিবেচনা করুন।
গ্লেন জ্যাকম্যান

13

আপনি করতে পারেন:

eval vagrant\ {'up &&',ssh}

তবে এটি সহজ করে তুলবে না।

আপনি সর্বদা একটি ফাংশন করতে পারে

doall() {
  cmd=$1; shift
  for arg do
    "$cmd" "$arg" || return
  done
}

এবং তারপর:

doall vagrant up ssh

চমৎকার পন্থা! আমি একাধিক অ্যাপ্লিকেশন জন্য এটি ব্যবহার করতে সক্ষম হতে ধারণা পছন্দ করি। ধন্যবাদ!
jktravis

4

সরাসরি কোনও উত্তর নয় তবে দুটি বিকল্প সম্ভবত দেখার উপযুক্ত (কোনও মন্তব্যের জন্য খুব বেশি):

  1. উপনাম

    যদি আপনি বারবার একটি কমান্ড ব্যবহার করেন তবে আপনি নিজের মধ্যে একটি উপন্যাস রাখতে পারেন ~/.bashrc

    alias vassh="vagrant up && vagrant ssh"
  2. কমান্ড লাইনের ইতিহাস

    Ctrl+ Rআসুন আপনি আপনার পূর্ববর্তী আদেশগুলি অনুসন্ধান করুন। ভেরিয়েবল ব্যবহারের চেয়ে এটি আরও দ্রুত হবে ...


4
 v=vagrant; $v up && $v ssh

এটি আপনি যা খুঁজছেন তার কাছাকাছি হতে পারে।

এখানে একটি ফাংশন যা - ইন bash- বর্তমান যৌগিক কমান্ডের জন্য কমান্ড পজিশনে প্রথম শব্দটি মুদ্রণ করবে:

rc() { $(set -f; unset IFS
        set -- $(history 1)
        IFS="(){};|'\\\"&#"
        set \ $2;IFS=\ ;set -- $*
        printf %s "$1") "$@"; }

এটি দিয়ে আপনি করতে পারেন:

vagrant up && rc ssh

একটি উদাহরণ:

echo up && rc ssh

আউটপুট

up
ssh

বা ...

set -x
(echo);rc 'times two'

আউটপুট

+ echo

+ rc 'times two'
++ set -f
++ unset IFS
+++ history 1
++ set -- 549 '(echo);rc' ''\''times' 'two'\'''
++ IFS='(){};|'\''\"&#'
++ set ' ' echo '' rc
++ IFS=' '
++ set -- echo rc
++ printf %s echo
+ echo 'times two'
times two
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.