বাশে ডিফল্ট অনুলিপি এবং আটকানো আচরণ অক্ষম করুন


9

আমি যখন আমার টার্মিনাল সেশনে পেস্ট করি তখন শেলটি তত্ক্ষণাত আমাকে প্রবেশ কী টিপুন না করে কমান্ডটি কার্যকর করে।

আমি জানি না কীভাবে সেই আচরণটি অক্ষম করতে হয়।

আমি ম্যাকোস ইয়োসেমাইটে প্রিনস্টিনাল টার্মিনালটি ব্যবহার করছি।


9
এটি কেবলমাত্র তা করে, অবশ্যই, যদি পেস্ট বাফারটিতে একটি নতুন লাইন থাকে। এটির (প্রায়) বাশের সাথে কোনও সম্পর্ক নেই। (এটি কেবলমাত্র যদি রিডলাইন গ্রন্থাগারটি ব্যবহার করে এবং যতদূর পীড়িত হয় তা নিয়ে উদ্বেগ রয়েছে concerns)
পিটার - মনিকা

... এবং তবুও bash(এর সহায়তায় readline) একটি ঠিক আছে।
অ্যালেক্সিস

উত্তর:


16

সঙ্গে bash4.4 অথবা ঊর্ধ্বতন সংস্করণ এবং টার্মিনাল মধ্যে বন্ধনী করা যে সমর্থন একটি লা পেস্ট xterm, আপনি করতে পারেন:

bind 'set enable-bracketed-paste'

(বা set enable-bracketed-pasteআপনার যুক্ত ~/.inputrc)

যে কারণ হবে কপি-পেস্ট বাফার এতে অক্ষরের পরিবর্তে প্রম্পটে সন্নিবেশিত করা ব্যাখ্যা করা যেন টাইপ করা (যদি আপনি এখনও সমস্যা হতে পারে যদি সেই বাফার মত অক্ষর রয়েছে ^C, ^Zএবং আপনার ই-মেইল ক্লায়েন্ট তাদের ফিল্টার করে বের করে না) ।

zsh সংস্করণ 5.1 থেকে ডিফল্টরূপে এটি করে।

অন্যান্য শেল বা টার্মিনালের জন্য, আরও দেখুন: আমি কীভাবে এই জাতীয় ক্লিপবোর্ড অপব্যবহার থেকে নিজেকে রক্ষা করতে পারি?


আমি ঠিক এটি দেখতে যাব
ওপালডেস

বুথের উপায়গুলি কাজ করছে বলে মনে হচ্ছে না
ওপালডেস

@ ওপালডিস, আপনি কি চেষ্টা করেছেন? কোন শেলটির কোন সংস্করণ এবং কোন টার্মিনালের সাথে? আমি ওএস / এক্স এর সাথেও জাহাজ চালাই xterm, আপনি তার পরিবর্তে চেষ্টা করতে পারেন। perlলিঙ্কিত প্রশ্নে আপনি কি স্ক্রিপ্টটি চেষ্টা করেছেন ?
স্টাফেন চেজেলাস

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

1
বাশ / রিডলাইনে এই দরকারী বৈশিষ্ট্যটি যুক্ত করার জন্য আমরা ড্যানিয়েল কলাসিওনকে ধন্যবাদ জানাতে পারি: gnu-bash.2382.n7.nabble.com/…
অ্যান্টনি

6

আপনি যখন "নিউলাইন" চরিত্রটি পেস্ট করেন তখন এটি ঘটে। উদাহরণস্বরূপ, আপনি যদি একাধিক লাইন পেস্ট করছেন বা আপনি অজানাভাবে লাইনের শেষে একটি ক্যারেজ রিটার্ন অনুলিপি করছেন। এএফআইএকে আসলে এই আচরণটি অক্ষম করার কোনও উপায় নেই তবে এটি প্রশমিত করার উপায় রয়েছে।

সবচেয়ে সহজ উপায় হ'ল একবারে কেবল একটি লাইন অনুলিপি করা এবং ম্যানুয়ালি পরে এটি যুক্ত করে শেষ অক্ষরটি বাদ দেওয়া।

বা, যেমন_ভালোয়ার_ফোগটি নীচে দেখায়, আপনি এটিকে এডিটরেও আটকে দিতে পারেন যা মুদ্রণবিহীন অক্ষরগুলি দেখায় এবং নিউলাইন ছাড়াই পুনরায় নির্বাচন করতে পারে।

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


আমি কেবল এটিকে এমন একটি সম্পাদকে
আটকালাম

ভাল পরামর্শ, অন্তর্ভুক্ত সম্পাদিত।
I_GNU_it_ সমস্ত_আলোং

এটি জেনে রাখা ভাল যে এটি সমস্ত সময় হয় না not আমি আপনার উত্তরটি উন্নত করেছিলাম তবে এটি আমার কাছে সমাধান হিসাবে আরও কার্যকর।
ওপালডেস

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

আমার "সলিউশন" হ্যাক ওয়ার্কআরাউন্ডের ধরণের, তবে আলাদাভাবে নির্বাচন করার চেয়ে দ্রুত, আইএমও।
পিটার কর্ডস

5

আটকানোর আগে, একক-উদ্ধৃতি টাইপ করুন , তারপরে পেস্ট করুন। এটিকে এক বিশাল লাইন হিসাবে সম্পাদনা করতে নিয়ন্ত্রণ-সি এবং আপ-এ্যার করুন।

ডাবল-কোটগুলিও কাজ করে, ক্ষেত্রে যদি পাঠ্যে একক থাকে তবে ডাবল কোট থাকে না। এটিতে যদি এটি থাকে $বা ডাবল কোটসের অভ্যন্তরে প্রসারিত অন্যান্য জিনিস থাকে তবে আপনি ঠিক একটি আদেশ হিসাবে উদ্ধৃত জায়ান্ট লাইনটি চালাচ্ছেন না ok


আপনি ঠিক সেখানে পুরো জিনিসটি সম্পাদনা করতে পারবেন না, কারণ নতুন লাইনগুলি একটি বড় দীর্ঘ লাইন তৈরির পরিবর্তে একটি ধারাবাহিকতা প্রম্পট (অফিসিয়াল পরিভাষা নয়) শুরু করে।

এই 4 লাইন দেওয়া:

echo
ls
foo
bar

আমার পরামর্শ অনুসারে আটকানোর ফলে এটি আপনার পর্দায় আসবে:

$ 'echo 
> ls
> foo
> bar        <or cursor here if you didn't include a trailing newline
> [cursor here]

তারপরে আপনি কন্ট্রোল-সি এবং উপরের তীর টিপতে পারেন। (কন্ট্রোল-সি কার্সারের মতো একই লাইনের সমস্ত কিছুকে ধ্বংস করে দেয়, সুতরাং সেখানে দরকারী পাঠ্য থাকলে প্রথমে রিটার্ন টিপুন।)

বিকল্পটি হল উদ্ধৃতিটি বন্ধ করা এবং রিটার্ন টিপুন, তারপরে এটি আপ-তীর।

যাইহোক, আপ-তীর পরে

$ 'echo
ls
foo
bar

নিয়ন্ত্রণ-ক এবং নেতৃস্থানীয় অপসারণ '। পেস্ট ব্লক (শব্দ দ্বারা) মাধ্যমে দ্রুত স্থানান্তর করতে নিয়ন্ত্রণ-বাম এবং নিয়ন্ত্রণ-ডান ব্যবহার করুন। অথবা যদি আপনার টার্মিনাল সেটআপটি নিয়ন্ত্রণ-তীর-কীগুলি, Alt-b এবং Alt-f সমর্থন করে না।


আক্ষরিক নতুন লাইন আসলে কমান্ড আলাদা না এবং এই 4 লাইন আপনার আদেশ ইতিহাস মধ্যে আলাদাভাবে যাব । আপনি তাদের এ ;বা পরিবর্তন করতে চাইতে পারেন &&। (আমি এর জন্য কোন কৌশল জানি না, কেবলমাত্র সেখানে এগিয়ে যেতে এবং নিজে নিজেই তা করতে কেবল-পুনরাবৃত্তি ব্যবহার করুন forward)


2

এটি ঘটেছিল কারণ আপনার পেস্টটি একটি নতুন লাইন দিয়ে শেষ হয় এবং টার্মিনাল এমুলেটরগুলি মূলত অক্ষর দ্বারা অক্ষরে অক্ষরে পেস্টটি খাওয়ান। এই প্রক্রিয়াতে, বাশ সত্যই কোনও মেশিন থেকে মানব টাইপস্টকে জানেন না।

আমি সাধারণত অনুলিপি-পেস্ট করার সময় অতিরিক্ত মনোযোগ দিই যে এতে কোনও নতুন লাইন অন্তর্ভুক্ত নয়, তবে একটি কৌশল আছে যা আপনি চেষ্টা করতে পারেন: পেস্টের আগে, ব্যাশে টাইপ করুন C-x C-e। এটি $EDITORখালি ফাইলের সাথে চালু করা উচিত । আপনি এই ফাইলটিতে যা কিছু সঞ্চয় করুন এবং প্রস্থান করুন, বাশ কার্যকর হবে। সুতরাং আপনি এখন আপনার আদেশটি সম্পাদকের কাছে পেস্ট করতে পারেন, সম্ভবত জিনিসগুলি আরও চালিত করতে পারেন এবং তারপরে সেগুলি সমস্ত একসাথে চালাতে পারেন।


-1

আমি না কোম্পানী এর সাথে সম্পর্কিত, আমি একটি খুব সন্তুষ্ট গ্রাহক। এই টার্মিনাল প্রোগ্রামটি ব্যবহার করে দেখুন: http://www.emtec.com/zoc/index.html । এছাড়াও একটি ম্যাক সংস্করণ উপলব্ধ।

যদি আমি এই উত্তরটির সাথে কোনও এসই বিধি লঙ্ঘন করি তবে দয়া করে আমাকে জানান এবং আমি উত্তরটি মুছি।

সম্পাদনা:

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

হালনাগাদ:

টার্মিনাল প্রোগ্রামে একটি বিকল্প রয়েছে Paste without final 'newline'। এই সাহায্য হতে পারে।


3
দয়া করে কমপক্ষে এটি কীভাবে প্রশ্নের উত্তর দেয় তা বলুন
স্টাফেন চেজেলাস

আপনি যদি সেই টার্মিনালে চলমান শেলের প্রম্পটে নতুন লাইন বা ক্যারিজ-রিটার্ন অক্ষর যুক্ত স্ট্রিংটি পেস্ট করেন তবে কী ঘটে? যদি শেলটি সরাসরি-কমান্ডগুলি কার্যকর করতে (এখানে যেমন জিজ্ঞাসা করা হয়) সৃষ্টি না করে, এটি কীভাবে এটি করে? এটি নির্বাচন থেকে এই অক্ষরগুলি সরিয়ে দেয়? এটি বাশের জন্য বাঁচার আগে কোনও ^ ভি অক্ষর সন্নিবেশ করায়?
স্টাফেন চেজেলাস

2
যেমনটি, এটি আরও স্প্যামের মতো দেখাচ্ছে (যদিও আমি নিশ্চিত যে এটি এই সাইটের স্প্যাম করার আপনার উদ্দেশ্য নয়)) এটি প্রশ্নের উত্তর দেয় না এবং এটি সম্পর্কিত কোনও বাণিজ্যিক পণ্যের বিজ্ঞাপন মাত্র।
স্টাফেন চেজেলাস

2
@AlBundy, জানতে যদি আপনার প্রিয় টার্মিনাল ক্লায়েন্ট সমাধান কীর্তিকলাপ আলোচনা করে দেখার দ্বারা এই সমস্যা security.stackexchange.com/q/39118 (স্টিফেন এর উত্তর উল্লেখিত), এবং লিঙ্ক আপনি সেখানে পাবেন। যদি এটি আপনাকে সুরক্ষা দেয় তবে আপনার এটির প্রস্তাব দেওয়ার ভাল ভিত্তি রয়েছে (আপনার উত্তরে আপনার পরীক্ষাগুলির বিশদ সরবরাহ করুন do)
অ্যালেক্সিস

সাধারণত সমস্যাটি হ'ল আপনি যা নির্বাচন করেছেন তার মধ্যে একটি নতুন লাইন অন্তর্ভুক্ত রয়েছে। অন্য কোনও টার্মিনাল এমুলেটরের স্বাভাবিক আচরণের থেকে আলাদা "কীভাবে আপনি নির্বাচিত পাঠ্য আটকান"?
পিটার কর্ডেস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.