শেল স্ক্রিপ্টে মন্তব্যগুলি ব্লক করুন


249

শেল স্ক্রিপ্টে কোডের কোনও ব্লক মন্তব্য করার কোনও সহজ উপায় আছে?


2
আকর্ষণীয় কীভাবে এত সহজ এবং সাধারণ প্রশ্নের খুব আলাদা এবং জটিল উত্তর রয়েছে।
সিগুর

উত্তর:


347

ব্যাশে:

#!/bin/bash
echo before comment
: <<'END'
bla bla
blurfl
END
echo after comment

'এবং 'প্রায় ENDবিভেদক গুরুত্বপূর্ণ অন্যথায় জিনিষ ভিতরে উদাহরণস্বরূপ মত ব্লক হয়, $(command)পার্স এবং মৃত্যুদন্ড কার্যকর করা হবে না।

একটি ব্যাখ্যা জন্য, এই এবং এই প্রশ্ন দেখুন।


24
সুন্দর কৌশল - যতক্ষণ না 'এন্ড' কীওয়ার্ড (যা অবশ্যই ব্যবহারকারী চয়ন করেছেন) মন্তব্য করার জন্য উপাদানের ভিতরে নিজস্ব লাইনে উপস্থিত হবে না।
জোনাথন লেফলার

9
@ কালেঙ্গী: হ্যাঁ; উদ্ধৃতিতে ব্যবহৃত শব্দটি যে কোনও সুবিধাজনক হতে পারে; EOFএটি একটি ক্লাসিক উদাহরণ (এবং !এটির নিজস্বভাবে একটি বিস্ময় চিহ্ন), তবে আপনি মন্তব্য করতে পারেন SNURFLE_BURGERSবা classical_end_markerএমন কোনও শব্দ ব্যবহার করতে পারেন যা মন্তব্য করা আউট উপাদানগুলিতে নিজস্ব লাইনে প্রদর্শিত হবে না। আমি ফাঁকা জায়গা ইত্যাদি নিয়ে পরীক্ষার ঝাঁকিয়ে পড়েছি তবে শব্দটি তাদের সাথে খুব ভালভাবে কার্যকর হতে পারে।
জোনাথন লেফলার

4
এটি অবশ্যই কাজ করে তবে কেউ কীভাবে এটি কাজ করে তা বিশদ দিয়ে বলতে পারেন? ধন্যবাদ
mbbce

5
@MB_CE দেখুন stackoverflow.com/questions/32126653/... । এটি বলেছিল - এটি একটি কমান্ড চালাচ্ছে ( :) যা এর ইনপুটটি পড়ে না এবং সর্বদা একটি সফল মান সহ প্রস্থান করে এবং ইনপুট হিসাবে "মন্তব্য" প্রেরণ করে। এটি খুব বেশি না।
চার্লস ডাফি

2
প্যাসিভ কোড তৈরি করতে সক্রিয় কোড লিখতে আমি এটি অবিশ্বাস্যরূপে কুৎসিত এবং বিভ্রান্ত মনে করি ... কেবলমাত্র পুরানো ব্লক নির্বাচন করুন মোডটি ব্যবহার করুন এবং # টিপুন; এ নিয়ে বড় সমস্যা কী?
রাস্টি 75

90

শেল স্ক্রিপ্টে কোনও ব্লক মন্তব্য নেই।

vi(হ্যাঁ vi) ব্যবহার করে আপনি লাইন এন থেকে মি পর্যন্ত সহজেই মন্তব্য করতে পারেন

<ESC>
:10,100s/^/#/

(যেটি পড়ছে, 10 লাইন থেকে 100 টি বিকল্প লাইন শুরু (^) একটি # চিহ্ন সহ))

এবং সাথে মন্তব্য আন

<ESC>
:10,100s/^#//

(এটি পড়েছে, 10 থেকে 100 বিকল্প লাইনের শুরু থেকে (^) নোটিং দিয়ে # অনুসরণ করেছে //))

viযেখানেই রয়েছে সেখানে প্রায় সর্বজনীন /bin/sh


লাইনের সামনে # টি রাখতে vi তে নিয়মিত প্রকাশের সাথে দুর্দান্ত কৌশল।
আতিক রহমান

5
কেবলমাত্র একটি টিপ - যদি আপনি ভিএম ব্যবহার করেন এবং এটি প্রতিটি লাইনের শুরুটি হাইলাইট করে শেষ করে যোগ করে |noh। পাইপ অতিরিক্ত কমান্ড পৃথক করে এবং nohনাইটলাইটের জন্য। অনুসন্ধান শব্দ হাইলাইটিং পরবর্তী সময় আপনি যখন কোনও কিছুর অনুসন্ধান করবেন তখন স্বয়ংক্রিয়ভাবে পুনরায় শুরু হবে। উদাহরণ::10,100s/^/#/g|noh
ম্যাথু

আমার এটি একটি স্ক্রিপ্ট থেকে স্বয়ংক্রিয় করা দরকার। মানুষের ইন্টারঅ্যাকশন প্রয়োজন না করেই ভিআই সহ কোনও ফাইল করার কোনও উপায় আছে কি?
টিমোথি সোয়ান

1
@ টিমোথিওয়ান আমি কল্পনা করেছি যে গোক বা সেড প্রোগ্রামটি এটি কোনওভাবে করতে পারে ...
বিউভুলফনোড 42

আমার পছন্দের উপায় মন্তব্য করার (বা উপসর্গ) vi সহ একটি ব্লক: আপনি মন্তব্য শুরু করতে চান সেই লাইনের শুরুতে যান (যেমন <SHIFT>+G 10 <ENTER>তারপরে 0বা নেভিগেটের অন্য কোনও উপায়ে)। তারপরে <CTRL>+Vভিজ্যুয়াল ব্লক মোডে প্রবেশ করতে ব্যবহার করুন এবং আপনি মন্তব্য করতে চান এমন সমস্ত পংক্তির শুরুটি হাইলাইট করুন (এই উদাহরণে 90 J)। তারপরে SHIFT+Iহাইলাইট করা ব্লকের আগে প্রবেশ করতে টিপুন । মন্তব্য চিহ্নটি (যেমন #) লিখুন এবং <ESC>আপনার উপসর্গটি শেষ করতে টিপুন । এই ব্যাখ্যাটি দুর্দান্ত দীর্ঘ বলে মনে হচ্ছে, তবে আমার অভিজ্ঞতায় এটি অনুশীলনে অনেক দ্রুত।
ইউফেস

52

তুমি ব্যবহার করতে পার:

if [ 1 -eq 0 ]; then
  echo "The code that you want commented out goes here."
  echo "This echo statement will not be called."
fi

14
এটি ক্লাসিক, তবে স্ট্যাকওভারফ্লো.com/a/19409316/832230 নোট হিসাবে , ঠিক if [ ];কাজ করে।
একিউম্যানাস

12
সম্ভবত পরিষ্কার: if false;stackoverflow.com/a/18019516/2097284
ক্যামিল Goudeseune

3
এটি কেবলমাত্র কাজটিই মনে হয় মন্তব্য করা পাঠ্যটি আসলে কোড। আমি পাইপ এবং সেমিকোলনগুলির সাথে মন্তব্য নিয়ে সমস্যায় পড়েছি। সানি 256 উত্তর কাজ করেছে।
swdev

আরও সংক্ষিপ্ত হবে []; যা পরীক্ষাটি ব্যবহার করে
জাস্টিন ডানকান

27

নিম্নলিখিত জন্য কাজ করা উচিত sh, bash, kshএবং zsh

মন্তব্য করা কোডের ব্লকগুলি ভিতরে রাখা যেতে পারে BEGINCOMMENTএবং ENDCOMMENT:

[ -z $BASH ] || shopt -s expand_aliases
alias BEGINCOMMENT="if [ ]; then"
alias ENDCOMMENT="fi"

BEGINCOMMENT
  echo "This line appears in a commented block"
  echo "And this one too!"
ENDCOMMENT

echo "This is outside the commented block"

উপরের কোডটি কার্যকর করার ফলাফল হবে:

This is outside the commented block

কোড ব্লকগুলি uncomment করার জন্য এইভাবে মন্তব্য করেছে, বলুন

alias BEGINCOMMENT="if : ; then"

পরিবর্তে

alias BEGINCOMMENT="if [ ]; then"

উপরের উদাহরণে।


23

আপনি যদি একক উদ্ধৃতি ডজ করতে পারেন:

__='
blah blah comment.
'

আমি এই পছন্দ। যদিও ডাবল আন্ডারস্কোর মানে? আমি যতটা সর্বোত্তমভাবে বলতে পারি কনভেনশনটি ব্যবহার করে এটি কেবল একটি পরিবর্তনশীল নাম যে এটি ব্যক্তিগত হিসাবে বিবেচনা করা উচিত?
দাবাফনার্ড

বেশিরভাগ সম্পাদকগুলিতে সিনট্যাক্স হাইলাইটিং সরবরাহ করে এবং needed __ এর সাথে প্রয়োজন হলে কলযোগ্য তবে যদিও আমি স্পষ্টতার জন্য ডকুমেন্টেশন বা ডক্সের মতো পরিবর্তনশীল নামটি প্রস্তাব করব।
জেসনলোনহার্ড


এটি সেরা উত্তর হওয়া উচিত। ডাবল আন্ডারস্কোরগুলির পরিবর্তে কিছু ডামি ভেরিয়েবলের নাম দিন
বি আবালি

এটি চেষ্টা করেও ব্যর্থ হয়েছিল কারণ সেখানে একটি -F ';' ব্লকের ভিতরে মন্তব্য করতে।
yO_

15

: 'খুলতে এবং 'বন্ধ করতে ব্যবহার করুন ।

উদাহরণ স্বরূপ:

: '
This is a
very neat comment
in bash
'

এটি এখানে পাওয়া ভেগাসের উদাহরণ থেকে পাওয়া যায়


2
হ্যাক-ইশ, তবে দুর্দান্ত
গার্গলি লুকাক্সি

এটা আমার জন্য সেরা।
ডিপালহারিনী

14

ভিমে:

  1. আপনি মন্তব্য করতে চান ব্লকের প্রথম লাইনে যান
  2. shift-V (ভিজ্যুয়াল মোডে প্রবেশ করুন), ব্লকটিতে ডাউন হাইলাইট লাইন
  3. নির্বাচনের উপর নিম্নলিখিত চালিত :s/^/#/
  4. কমান্ডটি দেখতে এইরকম হবে:

      :'<,'>s/^/#
  5. প্রবেশ করুন

যেমন

shift-V
jjj
:s/^/#
<enter>


@ হরটার উত্তরটি দেখুন: স্ট্যাকওভারফ্লো.com / a / 28376319 / 3506015 - এর চেয়ে কম কী টিপুন!
geedoubleya

4

আপনি ভিআই / ভিমের ভিজ্যুয়াল ব্লক মোড ব্যবহার করতে পারেন যা এই জাতীয় জিনিসগুলির জন্য ডিজাইন করা হয়েছে:

Ctrl-V  
Highlight first element in rows you want commented  
Shift-i  
#  
esc  

মন্তব্যগুলি হবে:

Ctrl-V  
Highlight #'s  
d  
l  

লাইন সংখ্যা গণনা বা পড়ার চেয়ে এই ধরণের জিনিসটি করা vi এর ইন্টারঅ্যাকটিভ উপায়।

শেষ অবধি, জিভিমে আপনি সিটিআরএল-ভি-র পরিবর্তে ভিজ্যুয়াল ব্লক মোডে যেতে সিটিআরএল-কিউ ব্যবহার করেন (কারণ এটি পেস্টের শর্টকাট)।


এই সরল পদ্ধতিতে ভালবাসুন। : ও)
geedoubleya

4

সমস্ত সততার সাথে, কেন এত বেশি পরিমাণে নজর রাখা ...

প্যাসিভ কোড তৈরির জন্য সক্রিয় কোড লিখতে আমি এটি সত্যই খারাপ অভ্যাস হিসাবে বিবেচনা করি।

আমার সমাধান: বেশিরভাগ সম্পাদকের ব্লক নির্বাচন মোড থাকে। আপনি মন্তব্য করতে চান এমন সমস্ত লাইনে # যুক্ত করতে এটি ব্যবহার করুন। বড় চুক্তি কি...

নোটপ্যাড উদাহরণ:

তৈরি করতে: Alt - mousedrag ডাউন, # টিপুন।

মুছতে: Alt-mousedrag ডাউন, শিফট-ডান তীর, মুছুন।


8
ব্যবহারকারী সম্ভবত টার্মিনালে আছে। মাউসের পরিবেশ অনুমান করা যায় না।
গ্যারি

তাদের কি এখনও আছে? আমি সাধারণত গ্রাফিকাল মোডে সম্পাদনা করি এবং vi ব্যবহার করে পেস্ট করি, এটি একটি সহজ কাজ হবে।
রাস্টি 75

2

সানি 256 দ্বারা গৃহীত উত্তরের এ-ডক কৌতূহলের একটি পার্থক্য মন্তব্যগুলির জন্য পার্ল কীওয়ার্ড ব্যবহার করা। যদি আপনার মন্তব্যগুলি প্রকৃতপক্ষে কোনও প্রকারের ডকুমেন্টেশন হয় তবে আপনি মন্তব্য ব্লকের অভ্যন্তরে পার্ল বাক্য গঠন ব্যবহার শুরু করতে পারেন যা আপনাকে এটিকে সুন্দরভাবে ফর্ম্যাট করে মুদ্রণ করতে, ম্যান-পৃষ্ঠায় রূপান্তর করার অনুমতি দেয় ইত্যাদি allows

যতক্ষণ শেল সম্পর্কিত, আপনার কেবল এটির 'END'সাথে প্রতিস্থাপন করতে হবে '=cut'

echo "before comment"
: <<'=cut'
=pod

=head1 NAME
   podtest.sh - Example shell script with embedded POD documentation

etc.

=cut
echo "after comment"

(" শেল স্ক্রিপ্টে এম্বেডিং ডকুমেন্টেশন " তে পাওয়া গেছে )


0

অন্য মোডটি হ'ল: আপনার সম্পাদক যদি কোনও ব্লক মন্তব্য বিকল্প না করে থাকে,

  1. সম্পাদকের দ্বিতীয় উদাহরণ খুলুন (উদাহরণস্বরূপ ফাইল => নতুন ফাইল ...)
  2. আপনি যে পূর্ববর্তী ফাইলটি নিয়ে কাজ করছেন তা থেকে আপনি যে অংশটি চান তা কেবল নির্বাচন করুন
  3. নতুন অস্থায়ী ফাইলটির উইন্ডোতে এটি অনুলিপি করুন এবং আটকান ...
  4. সম্পাদনা মেনুটি খুলুন, প্রতিস্থাপন করতে স্ট্রিং হিসাবে REPLACE এবং ইনপুট নির্বাচন করুন '\ n'
  5. প্রতিস্থাপন স্ট্রিং হিসাবে ইনপুট: '# n #'
  6. 'সব প্রতিস্থাপন' বোতাম টিপুন

সম্পন্ন

এটি কোনও সম্পাদকের সাথে কাজ করে


0

আমি একক লাইন খোলা এবং বন্ধ চাই:

if [ ]; then ##
    ...
    ...
fi; ##

'##' আমাকে সহজেই ব্লক মন্তব্যটির শুরু এবং শেষ করতে সহায়তা করে। আমি যদি কিছু সংখ্যক পাই তবে আমি '##' এর পরে একটি সংখ্যা আটকে রাখতে পারি। মন্তব্যটি বন্ধ করতে, আমি কেবল '['] 'তে একটি' 1 'রেখেছি। মন্তব্য করা ব্লকে একক-কোটাসহ কিছু সমস্যাও এড়িয়ে গিয়েছি।

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