বর্তমান কমান্ডের মাঝখানে থেকে একটি সাবশেল চালানো


16

আমি এই দৃশ্যে প্রায়শই আমার আত্ম খুঁজে পাই। আমি একটি কমান্ড টাইপ করার মাঝখানে আছি এবং এটি শেষ করার আগে আমার অন্য কিছু পরীক্ষা করা উচিত।

আমার বর্তমান ইনপুটটির সাথে এখনও অবধি মনে রাখা কোন ধরণের সাবসেল খোলার কোনও উপায় আছে, তবে যখন আমি এই সাবশেলটিটি প্রস্থান করব তখন আমি যেখানে ছিলাম সেখানে ফিরে আসছি?

$ mylongcommand -n -e <SOME KEY COMBINATION WHICH OPENS A SUBSHELL>
$ date
...
$ exit
$ mylongcommand -n -e <BACK TO WHERE I WAS>

আমি ব্যাবহার করছি zsh


2
কেন শুধু অন্য টার্মিনাল উইন্ডো খুলবেন না?
বারমার

@ বারমার আমার জন্য, আমি আমার বেশিরভাগ লিনাক্স সিস্টেমে জিইউআই ব্যবহার করি না যাতে আমাকে টিটিওয়াইতে যেতে হবে। যার অর্থ আমাকে আবার প্রমাণীকরণ করতে হবে। নীচের বিকল্পগুলি আরও কার্যকর।
জাচারি ব্র্যাডি

3
আপনি কনসোলে একাধিক ভার্চুয়াল টার্মিনাল ব্যবহার করতে screenবা tmuxপেতে পারেন ।
বারমার

উত্তর:


16

কী সংমিশ্রণটি EscQকমান্ড বাফারকে সংরক্ষণ করে এবং একটি নতুন কমান্ড প্রবেশ করার অনুমতি দেয়। কমান্ডটি চালানোর পরে বাফারে আপনি যা টাইপ করেছিলেন তা এতে রয়েছে। এটি শেষ করার আগে যদি আপনাকে অন্য কমান্ড চালাতে হয় তবে আপনি EscQআবার টাইপ করতে পারেন ।

(আমি টিপার পরেও সাব-শেল খোলার চেষ্টা EscQকরিনি।)

Http://zsh.sourceforge.net/Intro/intro_10.html দেখুন এবং "এসকি-কিউ" অনুসন্ধান করুন


এটাই আমি চেয়েছিলাম, অনেক অনেক ধন্যবাদ! আমি সরাসরি এটি ফিরে আসার পরিবর্তে নেস্টেড শেলটি চালাতে পারি তবে আমার ব্যবহারের ক্ষেত্রে সরাসরি ফিরে আসা পুরোপুরি সঠিকভাবে কাজ করে।
পানায়িওটিস

19

আমি সাধারণত Ctrl+ ব্যবহার করি Uযা বর্তমান লাইনটি মুছে ফেলে এবং এটি একটি বাফারে সংরক্ষণ করে। সেখান থেকে আমি আগে যা যা করার দরকার ছিল তা করি mylongcommand। তারপরে আমি প্রস্তুত হয়ে আমার প্রম্পটে পেস্ট করতে Ctrl+ ব্যবহার করি।Ymylongcommand

আমি কিছু পরীক্ষা করার সময় একটি অর্ধ-টাইপযুক্ত কমান্ড মনে রাখবেন


7

এই জন্য আমার সমাধান নিশ্চিতভাবে কম প্রযুক্তির এবং clunky, কিন্তু কী-ক্রমের উপর নির্ভর সম্ভবত আপনি ইতিমধ্যে সাথে পরিচিত সেগুলি: হিট Ctrl+ + A, তারপর #, তারপর ENTER

এটি #লাইনের শুরুতে একটি সন্নিবেশ করানোর প্রভাব ফেলেছে , এভাবে এটি একটি মন্তব্য করে, তারপর এটি কার্যকর করে, এর ফলে এটি কমান্ডের ইতিহাসে ঠেলা দেয়। তারপরে আপনি আপনার সহায়ক কমান্ডটি প্রবেশ করতে পারেন, তারপরে কম্যান্ডের ইতিহাসের মাধ্যমে মন্তব্য করা কমান্ডটিতে স্ক্রোল করুন, অপসারণ করুন #এবং প্রয়োজনীয় কমান্ডটি সম্পূর্ণ করুন।


আপনার কীবোর্ডের "হোম" বোতামটি টিপুন, এটি 1
কীপ্রেস

@ ফেরিবিগ - হ্যাঁ, এটি বেশ ভাল, যদিও আমার প্রতিদিনের কীবোর্ডের জন্য ম্যাকবুক প্রো, যার কোনও হোম কী নেই। হোম সমতূল্য ফাঃ + + Left Arrow কিন্তু আপ টার্মিনাল শীর্ষে যে স্ক্রল।
ডিজিটাল ট্রমা

2

আমি টাইপ Ctrl+ + Zকমান্ড আমি টাইপিং আছি "স্থগিত" এবং অন্য কমান্ড টাইপ করতে। আমি এই কমান্ডটি চালানোর পরে (বা এটি Ctrl+ সহ বাতিল C) করেছি, স্থগিত কমান্ডটি সংস্করণে ফিরে আসবে (এমনকি কার্সারের অবস্থান মনে করে)। অতিরিক্ত সুবিধা হিসাবে, আমি Ctrl+ টাইপ করার সময় যদি কমান্ড লাইনটি খালি থাকে Zতবে কীটি তার bgপরিবর্তে বিল্ট- ইনকে আহ্বান জানায় (সুতরাং একটি ডাবল Ctrl+ Zসরাসরি পটভূমিতে একটি চলমান কমান্ড প্রেরণ করে)।

fancy-ctrl-z () {
  emulate -LR zsh
  if [[ $#BUFFER -eq 0 ]]; then
    bg
    zle redisplay
  else
    zle push-input
  fi
}
zle -N fancy-ctrl-z
bindkey '^Z'          fancy-ctrl-z

(পূর্বে পোস্ট দেড় টাইপ করা কমান্ড মনে রাখবেন যখন আমি কিছু পরীক্ষা যা মূলত ব্যাশ, যেখানে আপনি এখন সুবিধাজনক কিছুই করতে পারছি না জন্য সমাধান হয়েছে। এই সামান্য কল্পনাকারী সংস্করণ বিল্ট-ইন বন্ধনের M-qথেকেpush-line ।)

এটি একটি সাবশেল চালায় না: পূর্ববর্তীটি "স্থগিত" করার পরে যে কমান্ডটি টাইপ করেন তা একই শেলের মধ্যে চলে। এটি আপনাকে বর্তমান ডিরেক্টরি পরিবর্তন করার মতো জিনিসগুলি করতে দেয় যদি আপনি কোনও কমান্ড টাইপ করার পরে বুঝতে পারেন যে আপনি এটি অন্য কোনও ডিরেক্টরিতে চালাতে চান। আপনি যদি একটি নতুন শেল ইনস্ট্যান্স চালনা করতে চান তবে আপনি zshকী বাইন্ডিং থেকে চালাতে পারেন , তবে আমি এটি বিশেষভাবে কার্যকর বলে মনে করি না।

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