কেন বন্ধনী সম্প্রসারণ সমর্থন করা হয় না?


9

ব্রেস প্রসারণ শুরু করার জন্য আমাকে কি কোনও কনফিগারেশন করতে হবে? আমি যখন দৌড়ে যাই mkdir {1..10}, এটি কেবল একটি নামকরণ তৈরি করে {1..10}


mkdir {1..10}আমার জন্য কাজ করে, এটি দশটি ডায়ার তৈরি করে।
সন্দেহভাজন

2
আমি echo ${SHELL}একটি দরকারী উত্তর পেতে সক্ষম এই প্রশ্নের রেন্ডার যোগ করার পরামর্শ ।
ড্যান

উত্তর:


11

ব্রেস-এর মতো সম্প্রসারণ যেমন 70 এর দশকের শেষের দিকে {1,2}শুরু হয়েছিল cshএবং 90s এর দশকের শেষদিকে bash/ zsh/ বোর্ন-এর মতো শেলগুলিতে তার পথটি খুঁজে পেয়েছিল pdksh, {n1..n2}বৈকল্পিকটি পরে zsh1995 সালে এসেছিল (2.6-বিটা 4)।

bashএটি 2004 (3.0) এবং ksh932005 ( ksh93r) এ অনুলিপি করেছে ।

সম্ভবত শেল আপনি এই চেষ্টা করছেন যারা তন্ন তন্ন বা একটি পুরোনো সংস্করণ bashএবং ksh93


তিনি কী ধরণের শ্যাব্যাঙ্ক শেল ব্যবহার করেছেন তা আমাদের উচিত। / আমার সন্দেহ হয় #!/bin/sh...
পোলেমন

3
@ পোলেমন, এটি অগত্যা সহায়তা করবে না। উদাহরণস্বরূপ, কিছু সিস্টেমে /bin/shহয় bashবা ksh93
স্টাফেন চেজেলাস

2
আমি আসলে মনে করি এটি হবে: আমন্ত্রণের উপর নির্ভর করে শাঁসগুলি historic তিহাসিক হিসাবে /bin/sh কাজ করেছে sh(এটি বাশ ম্যান পৃষ্ঠাটি যাই হোক না কেন বলে)। kshম্যান পৃষ্ঠাটি যাচাই করা হয়নি , তবে আমি নিশ্চিত যে এটি সে অনুযায়ী আচরণ করবে।
পোলেমন

1
@ ব্যবহারকারী43312: আপনি এখনও আরএইচ 9 ব্যবহার করছেন? এটি বহু বছরের জন্য অবিরাম ছিল। এএস স্টিফেন লিখেছেন এটি সাম্প্রতিক ব্যাশ সংস্করণগুলির একটি বৈশিষ্ট্য। সুতরাং আপনার বাশ সংস্করণ এটি সমর্থন করে এমনটি খুব সম্ভব নয়। আপনি বাশ - রূপান্তরটি ব্যবহার করে সংস্করণটি পরীক্ষা করতে পারেন। এবং কেবল আপনি শেল ভেরিয়েবলটি পরীক্ষা করে বা কেবল পিএস পি চালিয়ে বাশ শেলটি চালাচ্ছেন কিনা তা নিশ্চিত হয়ে নিন। এই বৈশিষ্ট্যটি ব্যবহার করতে আপনি zshপ্রথমে একটি zsh শেল ( ) শুরু করার চেষ্টা করতে পারেন । আনোথরের কাজটি "এমকেডির $ (সিক 1 1)" এর মতো কিছু ব্যবহার করা হবে।
ব্রাম

1
@ পোলেমন অন্য শেলের প্রারম্ভিক আচরণ (উদাহরণস্বরূপ, এটি সূচনা করার সময় এটি ফাইলগুলি উত্স করে), অন্য শেলের অনুকরণ নয়।
ক্রিস ডাউন

4

{x..y}রেঞ্জ ব্রেস সম্প্রসারণ ব্যাশ 3.0-আলফাতে প্রয়োগ করা হয়। আমাদের এবং নিজেকে সহায়তা করতে দয়া করে আপনার echo "$BASH_VERSION"আউটপুটটি দেখান ।

তারপরে উত্তর: যদি mkdir {1..10}নামের সাথে একটি dir তৈরি করে {1..10}তবে আপনি আগে বাশ সংস্করণ ব্যবহার করছেন bash 3.0-alpha। সেক্ষেত্রে আপনি লুপ নির্মাণের জন্য একটি ব্যবহার করতে পারেন:

for ((i=1;i<=10; i++)); do mkdir "$i"; done


1

আপনার বাশ সংস্করণ পরীক্ষা করুন:

$ bash -version
GNU bash, version 4.1.7(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

এছাড়াও এটি পরীক্ষা করে দেখুন যে mkdirকোনও অদ্ভুত উপায়ে এলিয়াস হয়নি:

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