আমি কি সিডি ../ .. একটি উপনামের নাম হিসাবে ব্যবহার করতে পারি?


11

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

উইন্ডোজ আমি একটি করতে পারেন

C:\Users\Thomas>cd..\..
C:\>

তবে লিনাক্সে এটি ব্যাকস্ল্যাশ বা ফরোয়ার্ড স্ল্যাশ সহ কার্যকর হয় না।

21:17:10 $ cd../..
bash: cd../..: No such file or directory

যেহেতু আমি প্রায়শই সেই ভুলটি করি, সেই পরিস্থিতিতে আমি একটি উপনামের সংজ্ঞা দেওয়ার চেষ্টা করেছি .bash_aliases:

alias cd../..='cd ../..'
alias cd..\..='cd ../..'

আমি যখন নতুন বাশ শুরু করি তখন আমি পাই

21:16:26 $ bash
bash: alias: `cd../..': invalid alias name

আমি কীভাবে cd..\..এবং cd../..সঠিকভাবে উপকরণ স্থাপন করব ?

cd..\..এস্কেপ অক্ষর সংক্রান্ত সমস্যা রয়েছে বলে মনে হয়:

21:39:43 $ cd..\..
bash: cd....: command not found

এটি কার্যকর হয় না, এমনকি যদি আমি এর জন্য অন্য একটি নামও সংজ্ঞায়িত করি cd....


2
আপনি পারবেন না। একটি কমান্ড, ওরফে বা ফাইলের নামটিতে /অক্ষর থাকতে পারে না । \ সংস্করণ, অন্যদিকে, জরিমানা কাজ করা উচিত।
fkraiem

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

ওহ, সত্যিই। থেকে man bash: অক্ষর /, $, `, এবং = এবং শেল মেটাচার্যাক্টরগুলির বা উপরে তালিকাভুক্ত অক্ষরগুলির কোনও কোনও উপনামের নামটিতে উপস্থিত নাও হতে পারে।
fkraiem

অভিশাপ। আমি চেষ্টা করেছিলাম man aliasএবং এটি বিদ্যমান ছিল না। যদি আপনি এটি উত্তর হিসাবে দেন, আমি এটি গ্রহণ করব।
থমাস ওয়েলার

উপাধি একটি জিনিস, শেল ফাংশন অন্য জিনিস। অন্য চেহারা আছে।
অ্যালেক্সিস

উত্তর:


10

/এবং \এমন একটি চরিত্রের মধ্যে রয়েছে যা কোনও বাশ ওরফে নামে হাজির হতে পারে না। থেকে man bash:

অক্ষর /, $, `, এবং =এবং শেল metacharacters বা মূল্য উদ্ধৃতি উপরে তালিকাভুক্ত অক্ষরের কোনো উপনাম নামে প্রদর্শিত নাও হতে পারে।

কার্যকারণ হিসাবে, আপনি Zsh এ স্যুইচ করতে পারেন, যা উভয়কে অনুমতি দেয়:

% grep 'alias.*cd' .zshrc 
alias cd../..='cd ../..'
alias cd..\\..='cd ../..'
% pwd
/Users/firas
% cd../..
% pwd
/ 
% cd
% pwd
/Users/firas
% cd..\..
% pwd
/

12

আপনি একটি উপনাম নামে স্ল্যাশ ব্যবহার করতে পারবেন না। বাশ তাদের ফাংশন নামে অনুমতি দেয়, তবে, আপনি এটি একটি ফাংশন করতে পারেন:

cd../.. () { cd ../..; }

আপনি একটি উপাধি বা ফাংশন নামে ব্যাকস্ল্যাশ ব্যবহার করতে পারবেন না। ব্যাকস্ল্যাশ অক্ষর পরবর্তী অক্ষরটি উদ্ধৃত করে, cd..\..একইভাবে পার্স করা হয় cd...., সেই স্ট্রিংটি কমান্ডের নাম হিসাবে দেখা যাওয়ার আগেই। আপনি যদি একটি কমান্ড নামে ডাকতে চান cd..\.., আপনি টাইপ করতে হবে cd..\\.., 'cd..\..', নাকি অন্যকিছু সমতুল্য। তদুপরি, কোনও কমান্ডের নাম যা কোনও উপায়ে উদ্ধৃত হয়েছিল সেটিকে উলামের অনুসন্ধানের জন্য বিবেচনা করা হয় না, সুতরাং আপনি কোনও ব্যাকস্ল্যাশযুক্ত কোনও উপনামের নাম ব্যবহার করতে পারবেন না। বাশ, হয় ফাংশন নামগুলিতে ব্যাকস্ল্যাশগুলি অনুমতি দেয় না। যেহেতু cd..\..পার্স করা হয়েছে তাই cd....আপনি cd....উপরের মতো একটি ফাংশন সংজ্ঞায়িত করতে পারেন ।

আপনি যদি cdকমান্ডটি ব্যবহার করেন , আপনাকে অন্য কমান্ডের মতোই স্থানটি টাইপ করতে হবে। তবে আপনি মোটেও টাইপ না করে টাইপিং সংরক্ষণ করতে পারেন cdautocdনিম্নলিখিত লাইনের সাহায্যে বিকল্পটি সেট করুন ~/.bashrc:

shopt -s autocd

তারপরে আপনি কমান্ড লাইনে একটি ডিরেক্টরি নাম টাইপ করতে পারেন, এবং "চালানো" ডিরেক্টরিটি এতে পরিবর্তন হবে।

~/some/sub/directory$ ../..
~/some$ 

আমি যদি shoptকাজটি করি তবে খুব শীঘ্রই আমি উইন্ডোজটিতে সেই কার্যকারিতাটি মিস করব :-)
টমাস ওয়েলার

উম, এটি সত্য নয়। স্ল্যাশগুলি ব্যাশ ফাংশনের নামে গ্রহণ করা হয়।
Alexis

@ আলেক্সিস আহ, ঠিক আছে, আপনি ব্যাশে স্ল্যাশ ব্যবহার করতে পারেন। স্থির, ধন্যবাদ।
গিলস 'দুষ্ট হওয়া বন্ধ করুন'

@ThomasW। অবশ্যই করবে। autocdআমি zsh এ সরিয়ে নিয়ে যাওয়ার অন্যতম কারণ ছিল, যখন বাশের কাছে এটি ছিল না তখন ফিরে। উইন্ডোজ ব্যবহারের একমাত্র শালীন উপায় হ'ল সিগউইনকে যাইহোক ইনস্টল করা, zsh দিয়ে সম্পূর্ণ।
গিলস 'দুষ্ট হওয়া বন্ধ করুন'

5

"আপনি কোনও নাম বা ফাংশন নামে স্ল্যাশ ব্যবহার করতে পারবেন না "? এটা আমার কাছে খবর। আমি লিনাক্স এবং ওএস এক্স ব্যাশে বছরের পর বছর ধরে নিম্নলিখিত শেল ফাংশনটি ব্যবহার করে আসছি এবং কখনই কোনও সমস্যা হয়নি:

function ../.. { cd ../..; echo "$PWD"; }

স্বাভাবিকভাবেই, cd../..পাশাপাশি একটি সূক্ষ্ম ফাংশন নাম। শেল ফাংশন নামে একটি স্ল্যাশ ব্যবহার করা যেতে পারে।

ব্যাকস্ল্যাশ সংস্করণ হিসাবে, আপনি এটি একটি নাম বা ফাংশন নাম এম্বেড করতে পারবেন না তবে আপনার দরকার নেই: আপনি টাইপ করার সময় cd..\.., ব্যাশ ব্যাকস্ল্যাশটিকে একটি পলায়ন হিসাবে ব্যাখ্যা করে এবং ফলাফলটি কার্যকর করার চেষ্টা করে cd....। সুতরাং এটি সংজ্ঞায়িত করুন এবং আপনি যা যা করতে পারেন তা করতে পারেন। আপনি স্বাগত জানাই।

function cd.... { cd ../..; } 

2

আপনি যদি এলিয়াস রাখতে চান তবে কেন শুধু করবেন না:

alias   ..='cd ..'
alias  ...='cd ../../' 
alias ....='cd ../../../'

অথবা, আপনি যেতে হবে যদি পথ ফিরে:

alias   .3='cd ../../../' 
alias   .4='cd ../../../../'
alias   .5='cd ../../../../../'
# how far back do you need to go on a normal basis..?

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

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