উত্তর:
সন্দেহ হলে, উত্স কোডটি পড়ুন। =)
shell.c
কার্যকরীভাবে 4.3, লাইন 830, টিপুনparse_shell_options()
:
/* A single `-' signals the end of options. From the 4.3 BSD sh.
An option `--' means the same thing; this is the standard
getopt(3) meaning. */
if (arg_string[0] == '-' &&
(arg_string[1] == '\0' ||
(arg_string[1] == '-' && arg_string[2] == '\0')))
return (next_arg);
অন্য কথায়, -
বলছে যে আর কোনও বিকল্প নেই । কমান্ড লাইনে আরও কোনও শব্দ থাকলে শব্দ ফাইলটি একটি দিয়ে শুরু হলেও, তাদের ফাইল নাম হিসাবে বিবেচনা করা হবে -
।
আপনার উদাহরণস্বরূপ, অবশ্যই, এটি -
সম্পূর্ণরূপে অপ্রয়োজনীয়, কারণ এটি অনুসরণ করে কিছুই নেই। অন্য কথায়, bash -
ঠিক সমানbash
।
বাশ তার আদেশগুলি গ্রহণ করে
এটি একটি ভুল ধারণা যা bash -
বাশকে তার স্ট্যান্ডার্ড ইনপুট থেকে আদেশগুলি পড়তে বলে। যদিও এটা হল সত্য যে আপনার উদাহরণে, ব্যাশ stdin থেকে তার কমান্ড পড়তে হবে, এটা কিনা একটা তাই নির্বিশেষে কাজ করবে -
কমান্ড লাইন উপর, কারণ উপরে বর্ণিত, bash -
অভিন্ন bash
।
-
স্ট্যান্ডিনের অর্থ এই নয় যে আরও চিত্রিত করুন , বিবেচনা করুন:
cat
কমান্ড একটি ব্যাখ্যা করার জন্য ডিজাইন করা -
stdin হিসাবে। উদাহরণ স্বরূপ:
$ echo xxx | cat /etc/hosts - /etc/shells
127.0.0.1 localhost
xxx
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/bin/zsh
/usr/bin/zsh
/usr/bin/screen
/bin/tcsh
/usr/bin/tcsh
/usr/bin/tmux
/bin/ksh93
এর বিপরীতে, আপনি ব্যাশ চালানো পেতে পারে না /bin/date
তারপর /bin/hostname
এই চেষ্টা করে:
$ echo date | bash - hostname
/bin/hostname: /bin/hostname: cannot execute binary file
বরং এটি /bin/hostname
শেল স্ক্রিপ্ট ফাইল হিসাবে ব্যাখ্যা করার চেষ্টা করে যা ব্যর্থ হয় কারণ এটি বাইনারি গব্বলডিগুকের একগুচ্ছ।
আপনি হয় date +%s
ব্যবহার bash -
করে নির্বাহ করতে পারবেন না ।
$ date +%s
1448696965
$ echo date | bash -
Sat Nov 28 07:49:31 UTC 2015
$ echo date | bash - +%s
bash: +%s: No such file or directory
আপনি কি xargs bash
পরিবর্তে লিখতে পারেন ? নং curl | xargs bash
কমান্ড-লাইন আর্গুমেন্ট হিসাবে স্ক্রিপ্টের বিষয়বস্তু দিয়ে বাশকে অনুরোধ করবে। সামগ্রীর প্রথম শব্দটি প্রথম যুক্তি হবে এবং এটি সম্ভবত স্ক্রিপ্ট ফাইলের নাম হিসাবে ভুল ব্যাখ্যা করা হবে।
An argument of - is equivalent to --.
xargs
পরিবর্তে সত্যই ব্যবহার করতে চেয়েছিলেন তবে এটি (একটি ছোট যথেষ্ট ইনপুট স্ক্রিপ্টের সীমিত দৃশ্যে) কাজ করবে | xargs bash -c
; তবে সত্যই, এটি কোনও কার্যকর বা অভিব্যক্তিপূর্ণ ব্যবহার নয় xargs
।