ব্যাশ ভেরিয়েবলের ফাঁকা জায়গা সহ একটি ডিরেক্টরি নাম সংরক্ষণ করা


1

(দ্রষ্টব্য: আরো কিছু গবেষণা পর আমি একটি আংশিক উত্তর আছে, কিন্তু আমি ভিন্নভাবে এমবেডেড শূণ্যস্থান উপর নির্ভর করে যে পরিবর্তনশীল বিরুদ্ধে প্রকৃত কমান্ড লিখতে বা না আমি ভালো পরামর্শ গ্রহণ করব না থাকার পছন্দ করি না।)

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

আমি একটি ডিরেক্টরি নাম ফাঁকা রেখে সঞ্চয় করতে চাই। আমি জানি কীভাবে ফাইল / ডিরেক্টরি নামগুলির ফাঁকা স্থানগুলি ইন্টারেক্টিভভাবে মোকাবেলা করতে হবে, হয় উদ্ধৃতি বা asedভিত্তিক অব্যাহতি ব্যবহার করে:

$ ls -1 /Users/myuser/Library/Application\ Support/ | tail -5
iTerm2
icdd
org.videolan.vlc
pip
videosubscriptionsd

অথবা

$ ls -1 "/Users/myuser/Library/Application Support/" | tail -5
iTerm2
icdd
org.videolan.vlc
pip
videosubscriptionsd

এখন আমি সেই ডিরেক্টরিটি একটি ব্যাশ vari dn ভেরিয়েবলের জন্য বরাদ্দ করতে চাই এবং এটি এতটা ভাল কাজ করছে না।

এখানে কিছু বিভিন্ন চেষ্টা আছে। উদ্দেশ্যে আমি ~-ভিত্তিক শেল এক্সটেনশন থেকে দূরে থাকি।

dn='/Users/myuser/Library/Application Support/'
echo ''
echo ''
echo $dn
ls -1 $dn

dn='"/Users/myuser/Library/Application Support/"'
echo ''
echo ''
echo $dn
ls -1 $dn

dn=/Users/myuser/Library/Application\ Support/
echo ''
echo ''
echo $dn
ls -1 $dn

dn="/Users/myuser/Library/Application\ Support/"
echo ''
echo ''
echo $dn
ls -1 $dn

এগুলির প্রতিটিতে একটি ভিন্নতা দেখা যায় ls: /Users/myuser/Library/Application\: No such file or directory

উত্তর:


1

ঠিক আছে, ম্যাক বা অক্সকে নির্দিষ্ট না করে গুগল করে এটি প্রশস্ত করে খুঁজে পেয়েছি - এটি একটি জেনেরিক বাশ ইস্যু: বাশ ভেরিয়েবলের মধ্যে স্থান সহ পথ কীভাবে যুক্ত করবেন স্ট্যাকওভারফ্লো

এবং, এটি আমার প্রশ্নের সাথে অনুবাদ করে, উভয় "ইন্টারেক্টিভ পন্থা", যেমন উদ্ধৃতি বা es -স্কেপিংয়ের কাজ, আপনি যতক্ষণ না কমান্ডগুলি চালনার সময় বাশ ভেরিয়েবলটিকে তার নিজস্ব ডাবল-কোয়েটে মুড়ে রাখবেন:

dn='/Users/myuser/Library/Application Support/'
ls -1 "$dn" | tail -5

dn=/Users/myuser/Library/Application\ Support/
ls -1 "$dn" | tail -5

উপরে একক উদ্ধৃতি ব্যবহার করবেন না - কোন ব্যাশ প্রতিকল্পন যে ক্ষেত্রে ঘটছে এবং আপনি পেতে ls: $dn: No such file or directory

এখানে অপূর্ণতা ভেরিয়েবলগুলি ডাবল-কোটগুলিতে আবৃত করতে হবে বা এম্বেড থাকা জায়গাগুলির উপর নির্ভর করে না।

dn="'/Users/myuser/Library/Application Support/'" এবং তারপরে কোট না থাকা কাজ করে না, বিটিডব্লিউ।


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

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