इस शेल कमांड में "-" (डबल डैश) का क्या अर्थ है?


14

मेरे पास यह शेल कमांड है:

kill `cat -- $PIDFILE`

क्या डबल - यहाँ करता है? सिर्फ उपयोग क्यों नहीं

kill `cat $PIDFILE`

जवाबों:


21

--बताता catनहीं पार्स करने के लिए क्या आदेश पंक्ति विकल्प के रूप में यह बाद आता है की कोशिश करना।

एक उदाहरण के रूप में, दो मामलों में क्या होगा अगर चर के $PIDFILEरूप में परिभाषित किया गया था PIDFILE="--version"। मेरी मशीन पर, वे निम्नलिखित परिणाम देते हैं:

$ cat $PIDFILE
cat (GNU coreutils) 6.10
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Torbjorn Granlund and Richard M. Stallman.

$ cat -- $PIDFILE
cat: --version: No such file or directory

3
यह ध्यान देने योग्य है कि यह व्यवहार (जबकि बहुत आम) प्राप्त कार्यक्रम (यानी cat) द्वारा परिभाषित किया गया है और शेल द्वारा नहीं।
dmckee --- पूर्व-संचालक बिल्ली का बच्चा

क्या आपकी स्वयं की शेल स्क्रिप्ट लिखने पर कोई दस्तावेज या ट्यूटोरियल है जो समझता है कि --कमांड लाइन विकल्पों का अंत है? मैंने गेटअप और अन्य तकनीकों के साथ लोगों को देखा है, लेकिन कुछ भी चर्चा नहीं कर रहा है --
CMCDragonkai

3
@CMCDragonkai आपको getopt(1)मैन पेज की तुलना में और अधिक देखने की आवश्यकता नहीं है : "एक '-' पैरामीटर के बाद प्रत्येक पैरामीटर को हमेशा गैर-विकल्प पैरामीटर के रूप में व्याख्या की जाती है"।
मिकेल औनो

1

POSIX.1-2017

POSIX इसे यहां भी निर्दिष्ट करता है: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02

12.2 उपयोगिता सिंटेक्स दिशानिर्देश

दिशानिर्देश 10:

पहला - तर्क जो विकल्प-तर्क नहीं है, उसे विकल्प के अंत का संकेत देने वाले परिसीमन के रूप में स्वीकार किया जाना चाहिए। किसी भी निम्नलिखित तर्क को ऑपरेंड के रूप में माना जाना चाहिए, भले ही वे '-' चरित्र से शुरू हों।

इसे भी देखें: /unix/11376/what-does-double-dash-mean-also-ogn-as-bare-double-dash

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.