কেন 'নোহপ কমান্ড> & / dev / নাল' কিছু শেলগুলিতে "কাজ" করে বলে মনে হচ্ছে?


12

আমি জিজ্ঞাসা উবুন্টুতে একটি উত্তর সম্পাদনা করেছি যা নীচের পরামর্শ দিচ্ছে

nohup gedit >& /dev/null & 

যখন তারা আসলে বোঝানো হয়েছে

nohup gedit &> /dev/null & 

পরেরটি সঠিকভাবে স্ট্যাডার এবং স্টাডআউট উভয়ই পুনর্নির্দেশ করে /dev/null। আমি প্রত্যাশা করছিলাম যে প্রাক্তন হয় হয় একটি নামক একটি ফাইল তৈরি করবে &বা সম্ভবত এটি অন্য ক্ষেত্রে যেমন একটি ত্রুটি দেবে:

$ echo "foo" >& 
bash: syntax error near unexpected token `newline'

পরিবর্তে, এটি ঠিক আগের মতো কাজ করবে বলে মনে geditহচ্ছে , একটি উইন্ডো উপস্থিত হবে এবং কোনও ত্রুটি বার্তা প্রিন্ট করা হয়নি।

আমার এটিও লক্ষ্য করা উচিত যে এটি শেল নির্দিষ্ট:

  • bash(৪.২.৪৫ (১) -রিলেজ), zsh(.0.০.২), csh(ডিবে প্যাকেজ সংস্করণ: 20110502-2) এবং tcsh(6.18.01): উপরে বর্ণিত হিসাবে কাজ করে, কোনও ত্রুটি বার্তা নেই, কোনও ফাইল তৈরি হয়নি।

  • dash (0.5.7-3):

    $ nohup gedit >& /dev/null & 
    $ dash: 2: Syntax error: Bad fd number
  • ksh(93u + 2012-08-01): ব্যর্থ হয়, তবে একটি প্রক্রিয়া স্পষ্টতই শুরু হয় ( 1223) যদিও কোনও geditউইন্ডো প্রদর্শিত না:

    $ nohup gedit >& /dev/null & 
    [1] 1223
    $ ksh: /dev/null: bad file unit number
  • fish (2.0.0):

    > nohup gedit >& /dev/null & 
    fish: Requested redirection to something that is not a file descriptor /dev/null
    nohup gedit >& /dev/null & 
                   ^

সুতরাং, কেন এই কমান্ডটি কিছু শেলগুলিতে কোনও ত্রুটি (এবং কোনও আউটপুট ফাইল তৈরি হয়নি) দিয়ে চালানো হয় এবং অন্যগুলিতে ব্যর্থ হয়? >&আপাতদৃষ্টিতে বিশেষ ক্ষেত্রে কী করছেন nohup? আমি অনুমান করছি যে >& /dev/nullএটি ব্যাখ্যা করা হচ্ছে >&/dev/nullতবে স্থান কেন এই শেলগুলিতে ত্রুটি সৃষ্টি করে না?


আমার মেশিনে, উবুন্টু 12.04, এই কমান্ডটি সাধারণত চালিত হয় dash
কুওল্ম

nohup commandআমার স্মৃতি, আপনার application.According চালানো স্বাধীন TTY dashবর্ধিত ash, Debian ash, ashদ্বারা উন্নত OpenBSDএবং এটি সীমিত শেল, এমনকি Maemo অপারেটিং সিস্টেম ড্যাশ ব্যবহার (n900 মোবাইলে ডেবিয়ান বেজ) এর ashপরিবার শেল সীমিত ব্যবহার ব্যাশ বা tcsh শেল এর আশা আছে।
ফার্সিগাল্ফ

@ জ্ঞাক হাহ, সম্ভবত অন্যরকম সংস্করণ (আমি ডেবিয়ানে আছি)? আমি কীভাবে dashএটির সংস্করণটি প্রিন্ট করতে পারি তা বুঝতে পারি না তবে প্যাকেজটি কী 0.5.7-3, আপনার কী? এছাড়াও, আপনি কি নিশ্চিত যে আপনি চালাচ্ছেন dash? ওবুন্টুর ডিফল্ট shতাই না?
টেরডন

@ মোহেনপাহলেভানজাদেহ আমি নিশ্চিত নই যে আপনার বক্তব্যটি কী, আমি জানি কী nohupহয়, আমার প্রশ্নটি কেন কিছু শাঁসে নোহুপের >&সাথে একা কাজ করতে দেখা যাচ্ছে।
টেরডন

: আপনি শেল abstarct দেখার জন্য নিম্নলিখিত লিঙ্কে ব্যবহার করতে পারেন unix.stackexchange.com/questions/45684/...
PersianGulf

উত্তর:


18
nohup gedit &> /dev/null

পসিক্স সিনট্যাক্স এবং এটির মতো:

nohup gedit &
> /dev/null

এটি nohup geditব্যাকগ্রাউন্ডে চালানো হয় এবং তারপরে > /dev/nullকোনও কমান্ড না চালিয়ে পুনর্নির্দেশটি করে।

nohup gedit >& /dev/null

পসিক্স সিনট্যাক্স নয় cshএবং স্টডআউট এবং স্টার্ডার উভয়ই / dev / নালকে রিডাইরেক্ট করার উপায়। বোর্নে যেমন পাওয়া যায় cshসেই 2>&1অপারেটর নেই, সুতরাং cshস্টাডারকে পুনঃনির্দেশ করার একমাত্র উপায় ।

zsh(প্রায়শই) cshসিনট্যাক্সের সাথে সরবরাহ করে তবে এটি বোর্ন শেলের x>&y এফডি ডুপ্লিকেশন অপারেটরটিকেও সমর্থন করে যার অর্থ সেখানে দ্বন্দ্ব রয়েছে।

ls >&file

lsএর স্টাডাউট এবং স্টাডারকে পুনঃনির্দেশিত করে fileতবে ফাইলটি যদি হয় তবে 2আপনাকে সমস্যা হিসাবে দেখা দিয়েছে

ls >&2

অর্থ এডিডি 2 ( dup(2, 1)) দ্বারা নির্দেশিত সংস্থান থেকে স্টাডাউট পুনর্নির্দেশ । সুতরাং আপনার এটি লিখতে হবে:

ls >& ./2

যদি আপনি বর্তমান ডিরেক্টরিতে lsডাকা একটি ফাইলের স্টাডাউট এবং স্টারডার উভয়ই পুনর্নির্দেশ করতে চান 2; অথবা স্ট্যান্ডার্ড সিনট্যাক্স ব্যবহার করুন।

bashপ্রাথমিকভাবে কোনও বুঝতে পারেনি >&, তবে এটি &>পরিবর্তে অপারেটরটি প্রবর্তন করে , প্রসেসে POSIX সম্মতি ভঙ্গ করে (যদিও এটি কোনও স্ক্রিপ্ট ব্যবহারের সম্ভাবনা নেই cmd &> xxx)।

ksh২০০৯ সালে ksh93t + এ অপারেটরটি অনুলিপি করেছিলেন, ২০০৮ সালে আরপিএসে মোক্ষ ( posixমোডে অক্ষম ) কিন্তু নয় >&

bash>&2.05-এ সমর্থন যোগ করেছে ।

ব্যস্তবক্স shউভয়ের জন্য &>এবং >&1.13 (2008) -র জন্য সমর্থন যোগ করেছে ।

আমরাও >&না &>পুনর্নির্দেশ stdout- এ এবং দ্বারা stderr অর্থ যেমন POSIX / বোর্ন হয়।

আপনি যদি stdout এবং stderr উভয়ই পুনর্নির্দেশ করতে চান তবে সিনট্যাক্সটি

cmd > file 2>&1

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