আমাকে কেন "বিন্দু" থেকে দু'বার পালাতে হবে?


13

আমি জানি যে আমরা মত একটি বিশেষ অক্ষর বাঁচা যায় *(){}$সঙ্গে \তাই হিসাবে বিবেচিত লিটারেল যাবে।
উদাহরণস্বরূপ \*বা\$

তবে .আমার ক্ষেত্রে এটি দু'বার করতে হবে, \\.অন্যথায় এটি বিশেষ চরিত্র হিসাবে বিবেচিত হয়। উদাহরণ:

man gcc | grep \\.

এটা এমন কেন?


আপনি কি মামলা দিতে পারেন যে আপনি দুবার পালাতে হবে?
cuonglm

man bash|grep \\.একটি উদাহরণ হতে পারে।
নিবন্ধিত ব্যবহারকারী

3
আরো সঠিকভাবে, আপনি দুইবার ডট অব্যাহতি করবেন না, আপনি এস্কেপ অক্ষর অব্যাহতি যাতে এটি, grep প্রেরণ পরার
Cthulhu

5
আপনি ব্যাকস্ল্যাশ অক্ষর পলায়নের এড়াতে উদ্ধৃতি চিহ্ন ব্যবহার করতে পারে: man gcc | grep '\.'
লিওনিড বেসচাস্টনি

1
আমি যা করতে চলেছি তা আরও পরিষ্কার হওয়ার কারণে @ লিওনিডবেছস্টনির পরামর্শটিকে দৃ strongly়ভাবে পছন্দ করি
ইজকাটা

উত্তর:


24

আক্ষরিক বিবেচিত বিশেষ চরিত্রটি তৈরি করার জন্য সাধারণত আপনাকে একবারে পালাতে হবে। একসময় আপনাকে এটি দু'বার করতে হবে, কারণ আপনার নিদর্শন একাধিক প্রোগ্রাম ব্যবহার করে।

আপনার উদাহরণটি বাদ দিন:

man gcc | grep \\.

এই কমান্ডটি দুটি প্রোগ্রাম দ্বারা ব্যাখ্যা করা হয়, bashদোভাষী এবং grep। প্রথম পালানোর কারণগুলি bashজানে \আক্ষরিক, তাই দ্বিতীয়টি পাসের কারণ grep

আপনি যদি শুধুমাত্র একটি সময় অব্যাহতি পারেন, \., bashজানবে এই ডট আক্ষরিক, এবং পাস .করার grep। এটি grepদেখলে .এটি মনে করে যে বিন্দুটি বিশেষ অক্ষর, আক্ষরিক নয়.

আপনি যদি দু'বার পালাতে পারেন তবে এতে bashপ্যাটার্নটি পাস হবে । এখন জেনে রাখুন এটি একটি আক্ষরিক বিন্দু।\.grepgrep


: সুতরাং, বিন্দুর জন্য পালানোর চরিত্রটি আমরা যে পাইপগুলি ব্যবহার করি তার উপর নির্ভর করে?। উদাহরণস্বরূপ সিএমডি | সেমিডি | সেমিডি | সেমিডি \\\\। এটা কি ঠিক????
থিশি

6
@ থুশি: না This এটির কোনও সম্পর্ক নেই যে আপনি কোনও (বা বেশ কয়েকটি) পাইপ অক্ষর ব্যবহার করছেন তবে এটি এমনকি প্রয়োগ করে grep \\. my_file। কমান্ডলাইনটি শেল দ্বারা ব্যাখ্যা করা হয়, প্রথমটি \ দ্বিতীয়টি থেকে বাঁচার জন্য ব্যবহার করে , সুতরাং \ একটিটি আক্ষরিক অর্থে গ্রেপতে পাস হয়। বিন্দুটি .শেলের জন্য বিশেষ নয়, সুতরাং এটি যেভাবেই ভারব্যাটিম পাস করা হয়েছে। গ্রেপ তারপরে (একক) পড়ে \ এবং বিন্দু থেকে বাঁচতে এটি ব্যবহার করে .
আনসার এস্জেটারম্যান

@ অ্যাঙ্গারএজটারম্যান: হ্যাঁ। এটি সত্য। এটি পরীক্ষা করে দেখুন। ধন্যবাদ :)
থিশি

2
আমি বিশ্বাস করি উত্তরটি কিছুটা ভুল যা বলে যে "প্রথম পলায়নের ফলে বাশ জানে। আক্ষরিক, দ্বিতীয়টি গ্রেপের জন্য।" প্রকৃতপক্ষে, প্রথম পালানো বাশকে জানতে দেয় যে le ল্যাটারাল, এবং পাস \ গ্রেপ করা
চথুলহু

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