এর নামে বিশেষ অক্ষর সহ একটি ফাইল বা ডিরেক্টরি কীভাবে প্রবেশ করব?


44

আমি টার্মিনালে নিম্নলিখিত ফোল্ডারটি প্রবেশ করতে চাই:

Milano, Torino (Jan)-Compressed

cdএই ডিরেক্টরিতে প্রবেশ করার জন্য আমি কীভাবে কমান্ড লিখব ?

শূন্যস্থানের এবং একাধিক অন্যান্য বিশেষ অক্ষর পছন্দ \, *, ), (এবং ?কারণ সমস্যার যখন আমি তাদের কমান্ড লাইন বা স্ক্রিপ্ট, যেমন ব্যবহার করার জন্য চেষ্টা করুন:

$ cd space dir
bash: cd: space: No such file or directory

$ cat space file
cat: space: No such file or directory
cat: file: No such file or directory

$ cat (
bash: syntax error near unexpected token `newline'

$ echo content >\
> ^C

$ ls ?
(  )  *  ?  \

আমি কীভাবে ফাইল বা ডিরেক্টরিগুলির নাম লিখব যেখানে সাধারণভাবে টার্মিনালে বিশেষ অক্ষর রয়েছে?


উত্তর:


43

এই কমান্ডটি অস্পষ্ট কারণ স্পেসগুলি সাধারণত যুক্তি পৃথক করার জন্য ব্যবহৃত হয়। আপনি কী করতে চান তা সিডি জানে না তবে এটি সমাধানের জন্য আপনার কাছে দুটি সম্ভাবনা রয়েছে:

হয় আপনি ফাঁকা স্থানগুলি (এবং অন্যান্য সমস্ত বিশেষ অক্ষর) " মাস্কিং " করুন যাতে টার্মিনালটি জানে যে আপনি স্পেসটিকে একটি চরিত্র হিসাবে বোঝাচ্ছেন, বিভাজক হিসাবে নয়:

cd Milano\,\ Torino\ \(Jan\)-Compressed

অথবা আপনি আপনার ফোল্ডারের নাম বা পথ উদ্ধৃতিতে রেখেছেন :

cd "Milano, Torino (Jan)-Compressed"

26

সামান্য টিপ: ট্যাব সমাপ্তি ;-)

  1. কেবল প্রথম অক্ষরটি টাইপ করুন cd Mi(অথবা প্রয়োজনে আরও বেশি অক্ষর) এবং টিপুন Tab। টার্মিনাল বাকী শব্দগুলি সম্পূর্ণ করে আপনাকে সহায়তা করবে।

আরেকটি উপায়: ড্র্যাগ এবং ড্রপ

  1. আপনি যদি ডিরেক্টরিটি দেখতে পারেন এবং যদি আপনি এটি টার্মিনাল ব্যবহার করে অ্যাক্সেস করতে চান তবে কেবল টাইপ করুন: cdপ্রথমে এবং তারপরে টার্মিনালে ডিরেক্টরিটি টানুন এবং হিট করুন enter

24

এটি লিখুন:

cd 'Milano, Torino (Jan)-Compressed'

অন্যথায় এটি Milano,ফোল্ডারের নাম হিসাবে বিবেচনা করে। ফোল্ডারের নামে ফাঁকা থাকার কারণে এটি ঘটে। বিকল্পভাবে কয়েকটি বিশেষ চরিত্রের পালাতে:

cd Milano\,\ Torino\ \(Jan\)-Compressed/

22

tl; dr : একটি বিশেষ চরিত্রের উদ্ধৃতি দিতে হয় হয় এটি একটি ব্যাকস্ল্যাশ দিয়ে এড়িয়ে যায় \বা ডাবল " "বা একক উদ্ধৃতিতে এটি বন্ধ করে দিন ' 'Tab ↹সমাপ্তি সঠিক উদ্ধৃতি যত্ন নেয়।


আপনি যেটির জন্য জিজ্ঞাসা করছেন তাকে উদ্ধৃতি বলা হয় :

শেলটির নির্দিষ্ট অক্ষর বা শব্দের বিশেষ অর্থ সরিয়ে দিতে উদ্ধৃতি ব্যবহার করা হয়। (…) এখানে তিনটি উদ্ধৃতি ব্যবস্থা রয়েছে: পালানোর চরিত্র , একক উদ্ধৃতি এবং ডাবল উদ্ধৃতি[উদ্ধৃতি থেকে নেওয়া man bash]

পালানোর চরিত্রটির সাথে উদ্ধৃতি দেওয়া হচ্ছে \

একটি অ-উদ্ধৃত ব্যাকস্ল্যাশ ( \) হ'ল পালাবার চরিত্র। এটি বাদে পরবর্তী চরিত্রের আক্ষরিক মান সংরক্ষণ করে <newline>

সুতরাং একটি বিশেষ অক্ষর সহ ডিরেক্টরি বা একটি ফাইল প্রবেশ করতে \, উদাহরণস্বরূপ:

cd space\ dir      # change into directory called “space dir”
cat space\ file    # print the content of file “space file”
echo content > \\  # print “content” into file “\”
cat \(             # print the content of file “(”
ls -l \?           # list file “?”

bashএর প্রোগ্রামেবল কমপ্লিটেশন (ওরফে Tab ↹কমপ্লেশন) স্বয়ংক্রিয়ভাবে পালানোর অক্ষরের সাথে বিশেষ অক্ষরগুলি থেকে পালিয়ে যায় \

ডাবল উদ্ধৃতি সহ উদ্ধৃতি " "

ডবল কোট অক্ষর আবদ্ধ কোট মধ্যে সব অক্ষরের আক্ষরিক মান অপরিবর্তিত, ব্যতিক্রম $, `, \, এবং, যখন ইতিহাস সম্প্রসারণ সক্ষম হলে, !

সুতরাং একটি বিশেষ অক্ষর সহ ডিরেক্টরি বা একটি ফাইল প্রবেশ করতে, অন্ততপক্ষে দ্বিতীয়টি বা আপনার ফাইলের নাম বা পথের একটি বৃহত অংশটি ডাবল উদ্ধৃতি সহ পালাতে পারেন, যেমন:

cd space" "dir     # change into directory called “space dir”
cd spac"e di"r     # equally
cd "space dir"     # equally
cat "space file"   # print the content of file “space file”
cat "("            # print the content of file “(”
ls -l "?"          # list file “?”

হিসাবে $, `এবং !ডবল কোট, ভিতরে তাদের বিশেষ অর্থ রাখা প্যারামিটার সম্প্রসারণ , কমান্ড উপকল্পন , পাটিগণিত সম্প্রসারণ এবং ইতিহাস সম্প্রসারণ ডাবল উদ্ধৃতিচিহ্ন সহ পংক্তি উপর সঞ্চালিত হয়।

একক উদ্ধৃতি দিয়ে উদ্ধৃতি ' '

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

সুতরাং একটি বিশেষ অক্ষর সহ ডিরেক্টরি বা একটি ফাইল প্রবেশ করতে, অন্ততপক্ষে দ্বিতীয়টি বা আপনার ফাইলের নাম বা পথের একটি বৃহত অংশটি ডাবল উদ্ধৃতি সহ পালাতে পারেন, যেমন:

cd space' 'dir     # change into directory called “space dir”
cd spac'e di'r     # equal
cd 'space dir'     # equal
cat 'space file'   # print the content of file “space file”
cat '('            # print the content of file “(”
ls -l '?'          # list file “?”
echo content > '\' # print “content” into file “\”

আপনি বরাত দিয়ে সম্পর্কে আরো জানতে পারেন man bash/ বরাত দিয়ে উপর, wiki.bash-hackers.org এবং এর tldp.org


10

সি-এর মতো স্ট্রিং এবং string 'স্ট্রিং'

অন্যান্য বিষয়গুলির মধ্যে, কেউ $'...'এএনএসআই-সি ব্যাকস্ল্যাশ অক্ষর যেমন \nএবং \tআপনি উল্লেখ করেছেন সেগুলি ব্যবহার করতে ধরণের উদ্ধৃতি ব্যবহার করতে পারে । বাশ ৪.৩ ম্যানুয়াল থেকে:

ফর্মের শব্দগুলি 'স্ট্রিং' বিশেষভাবে বিবেচনা করা হয়। শব্দটি স্ট্রিংয়ে প্রসারিত হয়, এএনএসআই সি স্ট্যান্ডার্ড অনুসারে ব্যাকস্ল্যাশ-পলায়নযুক্ত অক্ষর প্রতিস্থাপন করা হয়েছিল।

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

উদাহরণস্বরূপ, এই জাতীয় ফাইলগুলি তৈরি এবং তালিকাবদ্ধকরণ:

$ touch a$'*'b  c$'\n'd                                                     
$ ls  a$'*'b  c$'\n'd                                                       
a*b  c?d

আপনি অক্ষর হেক্স মান ব্যবহার করতে পারেন, যেমন:

$ touch 'file(name'
$ ls file$'\x28'name
file(name

printf,

আগের মত একই ধারণা - অব্যাহতি অক্ষরের সুবিধা নিন:

$ ls "$(printf "file\x28name")"                                             
file(name
$ echo "Hello World"  >  c$'\n'd                                            
$ cat "$(printf "c\nd")"                                                    
Hello World

ইনোডগুলি ব্যবহার করুন:

প্রতিটি ফাইল বা ডিরেক্টরিতে এটির সাথে যুক্ত বিশেষ ডেটা কাঠামো থাকে যা একটি নির্দিষ্ট দশমিক সংখ্যার দ্বারা রেফারেন্স করা হয়। সুতরাং আপনি findকমান্ডের মাধ্যমে পরোক্ষভাবে নির্দিষ্ট ইনোড সহ ফাইলটি সনাক্ত করতে এবং এটি দিয়ে কিছু করতে পারেন:

$ echo "This is a test" > file$'('name1
$ ls -i
5898996 file(name1  5898997 file?name2
$ find -type f -inum "5898996" -exec cat {} \;
This is a test

যখন আপনি গ্লোব ব্যবহার করতে পারেন তখন পৃথক ফাইলগুলির সাথে ডিল করবেন না

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

$ for f in ./*; do echo "$f" ; done
file    name2
file(name1

./ফাইলের নামের বিরুদ্ধে একটি সুরক্ষার - এর ব্যবহারটি লক্ষ্য করুন যাতে সেগুলির মধ্যে নেতৃস্থানীয় থাকতে পারে -


6

একটি স্থান রয়েছে এমন কোনো ফোল্ডার খোলার জন্য মত উদ্ধৃতির মধ্যে ঘিরা cd "Some Directory"বা ব্যাকস্ল্যাশ সঙ্গে স্থান অব্যাহতি, মত: cd /home/kudic/Radna\ površina


3
অথবা ব্যাকস্ল্যাশ সহ স্থানটি ছেড়ে যান, যেমন:cd /home/kudic/Radna\ površina
টিমো

দুর্দান্ত পয়েন্ট! আমি এটা উল্লেখ করতে ভূলে গেছি। আমি সাধারণত অভ্যাসের বাইরে উদ্ধৃতিগুলি ব্যবহার করি তবে ব্যাকস্ল্যাশটি দীর্ঘকালীন সময়ে ব্যবহার করা ভাল।
কোরি হুইটেকার

1
অথবা একক উদ্ধৃতি ( 'Radna površina') ব্যবহার করুন , যদি আপনি পরিবেশের ভেরিয়েবলগুলি ( $VARNAME) প্রসারিত করতে না চান এবং ব্যাকটিক্সে কমান্ডগুলি $()চালিত করতে চান বা চালানো হয় (অথবা যদি ফাইলের নামটিতে ডাবল-কোট থাকে)।
এলিয়াহ কাগন

3

যদি এই ডিরেক্টরিটি আপনার হোম ফোল্ডারে থাকে তবে টাইপ করুন:

cd "Milano, Torino (Jan)-Compressed"

অন্যথায় নিখুঁত পথ দিন:

cd "/…/…/Milano, Torino (Jan)-Compressed"

যদি ফাইলের নামে ডাবল উক্তি থাকে তবে তা দিয়ে পালাতে পারেন \"


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

@ আইস্যাকলিউ যে কারণে তিনি এটিকে নিখুঁত পথ হিসাবে দায়ের করেছেন: পি

1
আহ, এটি তিনটি বিন্দু, একটি "ভেরিয়েবল" ফোল্ডারটি নির্দেশ করে। আমি ধরে নিয়েছি এটি দুটি বিন্দু, "প্যারেন্ট ফোল্ডার" নির্দেশ করে। দুঃক্ষিত।
isaaclw

3

এই ক্ষেত্রে সেরা না হলেও আরেকটি বিকল্প হ'ল ওয়াইল্ডকার্ড ব্যবহার করা। আপনি চেষ্টা করতে পারেন:

cd *Torino*

অন্যের দ্বারা ভাগ করা হয়নি এমন ডিরেক্টরিতে নামে কোনও পৃথক শব্দ বা বাক্যাংশ থাকলে এই পদ্ধতিটি ব্যবহার করা ভাল। উদাহরণস্বরূপ আমার কাছে মাউন্ট পয়েন্ট / মিডিয়া / ডেটাএসএসডি এবং / মিডিয়া / ডেটাএইচডিডি রয়েছে। আমি এইচডিডি বিভাজনে পৌঁছানোর জন্য নামটির প্রায় অর্ধেক টাইপ না করা পর্যন্ত স্বতঃপূরণ কাজ করে না

cd /media/*HD*

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