বাশার্ক অলস বিকল্প


10

চালক সময়ে b / .bashrc কার্যকর করা (টার্মিনাল খোলার সময় ) পরিবর্তে রানের পরিবর্তে বিকল্পগুলির মূল্যায়ন~/.bashrc করার জন্য কীভাবে কোনও ব্যক্তি এলিয়াস পাবেন ?$()

আমি এই কমান্ডটি প্রায়শই চালিত করি যে আমি এর জন্য একটি উপনাম যুক্ত করতে চাই:

svn diff -r $(svn info | grep ^Revision | awk {'print $2'}):HEAD $(svn info | grep ^URL | awk {'print $2'}) | colordiff

যাইহোক, আমি যখন এটি ~/.bashrcএকটি উপনাম হিসাবে যুক্ত করব তখন আমি দেখতে পাচ্ছি যে মূল্যায়নগুলি আমি টার্মিনালটি খোলার সময় তাদের যে মূল্যবোধগুলির সাথে ছিল তা কঠোরভাবে কোডেড:

$ alias
alias svnbranch='svn diff -r 178184:HEAD svn+ssh://branches/t4252 | colordiff'

আমি যদি কোনও টার্মিনালটি খুলি ~তবে আমি ত্রুটিগুলি পেয়েছি:

svn: E155007: '/home/dotancohen' is not a working copy
svn: E155007: '/home/dotancohen' is not a working copy
svn: E155007: '/home/dotancohen' is not a working copy
svn: E155007: '/home/dotancohen' is not a working copy
$ alias
alias svnbranch='svn diff -r :HEAD  | colordiff'
$

আমি ওরফে এই দুটি প্রকরণ চেষ্টা করেছি ~/.bashrc, তাদের উভয়েরই একই প্রভাব রয়েছে (যেমনটি আমি প্রত্যাশা করেছি):

alias svnbranch="svn diff -r $(svn info | grep ^Revision | awk {'print $2'}):HEAD $(svn info | grep ^URL | awk {'print $2'}) | colordiff"
alias svnbranch="svn diff -r `svn info | grep ^Revision | awk {'print $2'}`:HEAD `svn info | grep ^URL | awk {'print $2'}` | colordiff"

রান টাইমে বিকল্প কীভাবে ~/.bashrcমূল্যায়ন করার জন্য একজন কীভাবে এলিয়াস পাবেন$() ?

অতিরিক্তভাবে, গুগলে এই পরিস্থিতিটির জন্য একজন কীভাবে অনুসন্ধান করবে ? আমি "বাশার্ক সাবস্টিটিউশন", "বাশার্ক অলস প্রতিস্থাপন" এবং অন্যান্য মূল বাক্যাংশগুলিতে গুগল করার চেষ্টা করেছি, তবে আমার পক্ষে তথ্যটি খুঁজে পাওয়ার জন্য একটি সাধারণ যথেষ্ট সমস্যা হওয়া উচিত বলে আমি কিছু পাইনি।


2
কেন এটি একটি উপনাম হতে হবে? এটি একটি শেল স্ক্রিপ্টে সরান এবং এটি দিয়ে সম্পন্ন করুন। আজকাল আপনার যদি এই জাতীয় ডিরেক্টরি থাকে তবে বেশিরভাগ * ix টাইপ সিস্টেমগুলি এতে রাখে $HOME/bininto PATH
ওয়ারেন ইয়ং

@ ওয়ারেন ইয়ং: আপনি সঠিক, এই নির্দিষ্ট উদাহরণটি একটি স্ক্রিপ্ট হতে পারে। তবে, আমি এখনও উত্তরটি জানতে চাই কারণ আমি অন্যান্য জিনিসের জন্য এলিয়াস পছন্দ করি এবং আমি অবশ্যই এটির মধ্যে চলে যাব। আমি আপনার প্রশ্নটিকে সাধারণ করতে পারি "যখন কোনও কিছু স্ক্রিপ্ট হতে পারে তখন বাশ এলিয়াসকে সমর্থন করে কেন।"
dotancohen

ডাউনটা কেন? আমি কীভাবে প্রশ্নটির উন্নতি করতে পারি? আমি উদাহরণ, ব্যর্থ প্রচেষ্টা এবং এমন কি কীফ্রেসগুলি দিয়েছি যেগুলি গুগল করার চেষ্টা করেছি।
dotancohen

@ ডটানকোহেন: আমার মনে হয় আপনার এটি আলাদাভাবে জিজ্ঞাসা করা উচিত। আমি একটি আংশিক উত্তর এখানে দেব: alias cdp="cd ~/projects"। শেল স্ক্রিপ্টে এটি করতে পারে না।
ওয়ারেন ইয়ং

উত্তর:


11

বিশেষ অক্ষরের প্রক্রিয়াকরণ দমন করতে একক উদ্ধৃতি ব্যবহার করুন । এছাড়াও আপনি পারে ব্যাকস্ল্যাশ গুলি। $

একটি জটিল কমান্ডের জন্য আপনি সম্ভবত কোনও অবস্থাতেই কোনও ফাংশন ব্যবহার করা ভাল, যার জন্য কোনও পালানোর দরকার নেই এবং পড়া এবং সম্পাদনা করা সহজ:

svnbranch() {
    svn diff -r $(svn info | grep ^Revision | awk {'print $2'}):HEAD $(svn info | grep ^URL | awk {'print $2'}) | colordiff
}

আপনি যে কোনও জায়গায় কোনও উপকরণকে সংজ্ঞায়িত করতে পারে এমন কোনও ফাংশন সংজ্ঞায়িত করতে পারেন।


2
awkপাশাপাশি একটি প্যাটার্ন স্পেস রয়েছে awk '/^Revision/{ print ...}' তাই এই ক্ষেত্রে গ্রেপের দরকার নেই।
ভ্যালেন্টাইন বাজরামি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.