সাইগউইন - ব্যাশ স্ক্রিপ্টে সিডি


12

আমি সাইগউইন ব্যবহারে নতুন, তাই ক্ষমা চাইছি যদি এটি খুব নবাগত প্রশ্ন হয়।

আমার একটি বাশ স্ক্রিপ্ট রয়েছে যেখানে আমি একটি ডিরেক্টরিতে "সিডি" করে তারপর ডিরেক্টরিতে কিছু করি। তবে সিডি কমান্ডটি "এই জাতীয় কোনও ফাইল বা ডিরেক্টরি / সি / কোড / ব্লাহ / ব্লাহ" এর সাথে ব্যর্থ হয়।

আমি যদি শেল প্রম্পটে সরাসরি সিডি লাইনটি অনুলিপি করি তবে এটি ঠিকঠাক কাজ করে। এটি কেবল স্ক্রিপ্টে ব্যর্থ।

অনুরোধ হিসাবে [সম্পাদনা], আমি স্ক্রিপ্ট থেকে আসল লাইন যুক্ত করেছি:

#!/bin/bash
cd /c/Code/Project

থ্যানকিউ এর সাথে কোনও সহায়তার জন্য,
ড্যান।


1
আপনি কি স্ক্রিপ্ট থেকে আসল লাইন (গুলি) পোস্ট করতে পারবেন?
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

উত্তর:


18

আপনার স্ক্রিপ্টের কোন ধরণের লাইনের শেষ রয়েছে? সাইগউইন বাশ স্ক্রিপ্টটি সঠিকভাবে কাজ করার জন্য (বিশেষ বিকল্প নির্ধারণ না করে) ডস লাইন এন্ডিংস (সিআর-এলএফ) এর পরিবর্তে ইউনিক্স লাইন এন্ডিংস (এলএফ) থাকতে হবে। আপনি ডস লাইন শেষা w শ সহ স্ক্রিপ্টের সংরক্ষিত পারেন, ব্যাশ আপনার যুক্তি দেখতে হবে cdযেমন /c/Code/Project^M, যেখানে ^Mএকটি সি আর, এবং যে নামের একটি ডিরেক্টরির খুঁজে পাবে না।

লাইন শেষা w শ যা ধরনের এটা আছে, আপনি নির্বাহ করতে পারেন দেখতে file scriptname, যেখানে স্ক্রিপ্ট আপনার স্ক্রিপ্টের নাম। স্ক্রিপ্টটি রূপান্তর করতে যাতে এর ইউনিক্স লাইনের শেষ থাকে, চালান d2u scriptname

সাইগউইন বাশ স্ক্রিপ্টগুলি সম্পাদনা করতে নোটপ্যাড ব্যবহার করবেন না। এটি সর্বদা ডস লাইন সমাপ্তির সাথে ফাইলগুলি সংরক্ষণ করে।


আহা! ঐটা এটা ছিল. আমি এটি সম্পাদনা করতে ভিম ব্যবহার করছিলাম। থানকিউ :-)
ড্যান

ভিম ভাল কাজ করবে। এটি ফাইলগুলিতে ইউনিক্স বা ডস লাইন শেষ রয়েছে কিনা তা স্বয়ংক্রিয়ভাবে সনাক্ত করে এবং সেগুলি একইভাবে সংরক্ষণ করবে। ডিফল্টরূপে, সাইগউইনের ভিম ইউনিক্স লাইনের সমাপ্তি সহ নতুন ফাইল তৈরি করবে, তবে উইন্ডোজের জিভিআইএম ডস লাইন সমাপ্তি সহ নতুন ফাইল তৈরি করবে। আপনি এটি পরিবর্তন করতে পারেন। দেখুন :help ffএবং :help ffs
গ্যারিজন

ইমাকস সিআর-এলএফ দিয়েও সঞ্চয় করছিল। সম্পাদক-এ লাইন-এন্ডিং স্টাইলটি পরিবর্তন করা হচ্ছে: emacswiki.org/emacs/EndOfLineTips
jfklein

3

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

এটি চারপাশে কাজ করার দুটি উপায়। আপনি কোনও স্ক্রিপ্টের পরিবর্তে একটি উপনাম ব্যবহার করতে পারেন, যেমন আপনার। প্রোফাইলে রয়েছে

alias mycd="cd /c/Code/Project"

আর একটি উপায় বাশকে "ডট" সিনট্যাক্স ব্যবহার করে একটি সাবশেল স্পোন না করার কথা বলা

. myscript

আপনি আমার প্রশ্নটি ভুল লিখেছেন। আমি ত্রুটি বার্তাটি সম্পর্কে জিজ্ঞাসা করেছি সিডি কমান্ড দ্বারা স্ট্যান্ডআউটে লিখিত, যা স্ক্রিপ্টের মধ্যে রয়েছে। স্ক্রিপ্টটি বের হয়ে গেলে আমি বর্তমান ডিরেক্টরিটি পরিবর্তন করার জন্য বলছি না।
ড্যান

আমার ওপি তে একই সমস্যা ছিল তবে ত্রুটি ছাড়াই; এটি "100% অন টপিক" না হলেও এই উত্তরটি আমাকে অনেক সাহায্য করেছিল।
ফ্রস্টি জেড

2

আপনি আপনার ফাইলগুলি / সাইগড্রাইভ / সিতে খুঁজে পেতে পারেন ...


1

চেষ্টা করুন:

cd /cygdrive/c/code/blah/blah


এটি 'cd c:/code/blah/blah' নট ফর ' এর পক্ষে কাজ করবে 'cd /c/code/blah/blah। এছাড়াও, ' c:' ফর্মটি একটি স্ক্রিপ্ট থেকেও কাজ করে; এখানে অন্য কিছু অনুপস্থিত, প্রশ্নের আরও বিস্তৃতকরণ প্রয়োজন।
নিক

এটি কাজ করে না।
ড্যান

@ এনিক সি: ফর্মটিও কার্যকর হয়নি। কোনও স্ক্রিপ্ট থেকে আমি কাজ করার চেষ্টা করি না। তারা সবাই কমান্ড লাইন থেকে কাজ করে।
ড্যান

1

আমার মন্তব্য বা ভোট দেওয়ার খ্যাতি নেই তবে কার্লএফের উত্তর আমাকে সাহায্য করেছে।

"সুতরাং আপনার স্ক্রিপ্টের সিডিগুলি একটি নতুন ডিরেক্টরিতে রূপান্তরিত করে এবং তারপরে প্রস্থান করে, আপনাকে আসল বাশে ফিরে আসে - যা কোনও সিডি কখনও করেনি did"

একই স্ক্রিপ্ট, তবে আমার ক্ষেত্রে কোনও ত্রুটি বার্তা নেই।

এটি আমার পক্ষে কাজ করেছে:

। myscript.sh

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