লিনাক্সে স্ক্যাপ কপির জন্য আমি কীভাবে ফাঁকা স্থানগুলি রক্ষা করব?


307

আমি লিনাক্সে নতুন, আমি দূরবর্তী থেকে স্থানীয় সিস্টেমে একটি ফাইল অনুলিপি করতে চাই ... এখন আমি লিনাক্স সিস্টেমে scp কমান্ড ব্যবহার করছি .. আমার কিছু ফোল্ডার বা ফাইলের নাম ফাঁকা আছে, যখন আমি এটি অনুলিপি করার চেষ্টা করি ফাইল, এটি ত্রুটি বার্তাটি দেখায়: "এই জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই"

আমি চেষ্টা করেছিলাম:

scp ael5105@192.168.0.200:'/home/5105/test/gg/Untitled Folder/a/qy.jpg' /var/www/try/

আমি কিছু রেফারেন্স অনলাইনে দেখেছি তবে আমি পুরোপুরি বুঝতে পারছি না, কেউ কি এই বিষয়ে সহায়তা করতে পারে?

অনুলিপি করার সময় আমি কীভাবে ফাইলের নাম বা ডিরেক্টরিগুলির নামের ফাঁকা স্থানগুলি থেকে পালাতে পারি ...


না কাজ !! ইতিমধ্যে এটি করুন ..
আলেক্সপান্ডিয়ান

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

উত্তর:


491

মূলত আপনার এটিকে দু'বার পালাতে হবে, কারণ এটি স্থানীয়ভাবে এবং তারপরে দূরবর্তী প্রান্তে পালিয়ে যায়।

কয়েকটি বিকল্প রয়েছে যা আপনি করতে পারেন (ব্যাশে):

scp user@example.com:"'web/tmp/Master File 18 10 13.xls'" .
scp user@example.com:"web/tmp/Master\ File\ 18\ 10\ 13.xls" .
scp user@example.com:web/tmp/Master\\\ File\\\ 18\\\ 10\\\ 13.xls .

11
এটি বেশ ছোটখাটো, তবে ম্যাকে এবং টার্মিনালের মতো বেশিরভাগ কনসোল অ্যাপ্লিকেশনে একটি 'পেস্ট এস্কেপড টেক্সট' বিকল্প রয়েছে। তাই আমি দ্বিতীয় বিকল্পটি ব্যবহার করেছি।
স্যাক্রিইলিস

3
"" পথ "" "" পথ "" ব্যর্থ হওয়ার সময় কাজ করেছে; উপসংহার একক উদ্ধৃতি প্রথমে এবং তারপরে ডাবল কোটগুলি চারপাশে

7
কি দারুন! এটি সম্ভবত আমি দেখেছি একক সবচেয়ে হাস্যকর প্রোগ্রাম আচরণ!
8:21

2
@ জ্যাঙ্কস এটি যোগ্যতা ছাড়াই নয়। আপনি যেটি শেল কমান্ড আর্গুমেন্ট রেখেছেন তা আপনাকে scp user@example.com:'$(ls -t | head -1)' .সার্ভারে সর্বাধিক নির্মিত ফাইলটি scp user@example.com:'dir/*.{xml,pdf}' .পেতে বা দূরবর্তী ডিরেক্টরি থেকে সমস্ত এক্সএমএল এবং পিডিএফ ফাইলগুলি পেতে স্টাফ করার অনুমতি দেয় । সাধারণভাবে, আমি ফাঁকা থাকা ফাইলগুলির সাথে সুবিধার্থে বেশি পছন্দ করি over স্পেস সহ ফাইলগুলি সর্বদা বিরক্তিকর।
জোল

1
কেন এটি 2 বার পালানো? এই আচরণ পরিবর্তন করার কোনও উপায়?
ফ্র্যাক্টেল

76

কাজ

scp localhost:"f/a\ b\ c" .

scp localhost:'f/a\ b\ c' .

কাজ করে না

scp localhost:'f/a b c' .

কারণটি হ'ল স্ক্র্যাপ কমান্ডে পাথ যাওয়ার আগে স্ট্রিংটি শেল দ্বারা ব্যাখ্যা করা হয়। সুতরাং এটি যখন রিমোটে পৌঁছে যায় তখন রিমোটটি অনাকাঙ্কিত উদ্ধৃতি সহ একটি স্ট্রিং সন্ধান করে এবং এটি ব্যর্থ হয়

এটি কার্যকরভাবে দেখতে, -vx বিকল্পগুলি দিয়ে শেল শুরু করুন bash -vx এটি কমান্ডের ইন্টারপোল্টেড সংস্করণ প্রদর্শন করবে।


একক উদ্ধৃতি ব্যবহার করা এবং পালানো আমার পক্ষে কাজ করেছে তবে ডাবল উদ্ধৃতি নয়
মরিসিও ট্রাজানো

1
@ মরিসিসিও ট্রাজানো gnu.org/software/bash/manual/html_node/Quoting.html এ দেখুন সমস্ত উদ্ধৃতিটি বিভিন্ন কাজ করে। উপরের সরল ক্ষেত্রে ডাবল "বা একক 'কাজ একই
Vorsprung

34

এছাড়াও আপনি যেমন কিছু করতে পারেন:

scp foo@bar:"\"apath/with spaces in it/\""

প্রথম স্তরের উদ্ধৃতিগুলি স্কিপ দ্বারা ব্যাখ্যা করা হবে এবং তারপরে দ্বিতীয় স্তরের উদ্ধৃতিগুলি স্থানগুলি সংরক্ষণ করবে।


4
এটি একই পরিমাণে পালিয়ে যাওয়া অক্ষরের সাথে কত স্পেস পরিচালনা করতে পারে তা বিবেচনা করে এই উত্তরটি নিম্ন-রেটযুক্ত। ধন্যবাদ!
মাইকেল

20

ডিরেক্টরিগুলির নামে স্পেস থেকে বাঁচতে 3 ব্যাকস্ল্যাশ ব্যবহার করুন:

scp user@host:/path/to/directory\\\ with\\\ spaces/file ~/Downloads

কল করা দূরবর্তী ডিরেক্টরি থেকে আপনার Downloadsডিরেক্টরিতে অনুলিপি করা উচিত ।filedirectory with spaces


উবুন্টু 19.10-এ আমার পক্ষে এটিই কাজ করেছিল। কোনও ডাবল কোটস, কোনও নরম এবং শক্ত উক্তি ভিতরে এবং বাইরে নেই, কোনও পালানো উদ্ধৃতি নেই। কেবল ট্রিপলব্যাকল্যাশড স্পেস। খুবই অদ্ভুত. ধন্যবাদ!
uldics

9

শ্বেত স্পেস সহ একটি ফাইলের নামযুক্ত শেল ভেরিয়েবলের কাজ করতে আমার এটি পেতে খুব সমস্যা হয়েছিল । কিছু কারণে ব্যবহার

file="foo bar/baz"
scp user@example.com:"'$file'"

@ অ্যাড্রিয়ান এর উত্তর ব্যর্থ বলে মনে হচ্ছে

সর্বাপেক্ষা সক্রিয় যেটি সবচেয়ে ভাল কাজ করে তা হ'ল হোয়াইট স্পেসে ব্যাকস্ল্যাশগুলি প্রিপেন্ড করতে প্যারামিটার এক্সপেনশন ব্যবহার করে।

file="foo bar/baz"
file="${file//\ /\\\ }"
scp user@example.com:"$file"

আমি আরও শক্তিশালী 'সকলের বিকল্প' সম্প্রসারণের পরামর্শ দেব: file="${file//\ /\\\ }"
ট্রয়ফোলগার

এই পার্থক্যটি ভুলে গেছি - আমি আমার প্যারামিটারের বিস্তৃতিতে মরিচা। ধন্যবাদ!
লুক ডেভিস

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

1

উইন্ডোজ 10 এ পাওয়ারশেলের জন্য এই টিপটি রাখার জন্য এই লিনাক্স প্রশ্নটি ব্যবহার করার জন্য দুঃখিত: ব্যাকস্ল্যাশ সহ বা উদ্ধৃতি সহ আশেপাশের স্পেস চারটি আমার পক্ষে কার্যকর হয়নি। দক্ষ নয়, তবে আমি "" ব্যবহার করে এটি সমাধান করেছি? পরিবর্তে চর:

"Tasks.txt Jun-22.bkp" ফাইলটির জন্য আমি এটি "Tasks.txt? জুন -22.bkp" ব্যবহার করে ডাউনলোড করেছি

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