"जो" बिना पथ में एक फ़ाइल खोजें?


12

मैं (किसी तरह) स्क्रिप्ट चलाने में सक्षम हूं:

$ assemble.sh file
... [output]

लेकिन whichयह नहीं मिल सकता है:

$ which assemble.sh
which: no assemble.sh in (/s/std/bin:/usr/afsws/bin:/opt/SUNWspro/bin:/usr/ccs/bin:/usr/ucb:/bin:/usr/bin:/usr/stat/bin:/usr/X11R6/bin:.
  1. यह कैसे संभव है?
  2. मुझे कैसे पता चलेगा कि यह फ़ाइल कहाँ है?

मैं बैश का उपयोग कर रहा हूं।


है assemble.shअपने वर्तमान निर्देशिका में?
कीथ

3
शायद एक गूंगा सवाल है, लेकिन क्या यह एक उपनाम है (यानी जब आप कमांड टाइप करते हैं तो दिखाते हैं alias ?
जेम्स मैकलियोड

@JamesMcLeod बढ़िया अनुमान! यह acme.sh ( github.com/Neilpang/acme.sh ) के लिए मेरा मामला था । स्थापित करने के बाद, acme.sh अलियास बनाया गया था और मैंने सोचा कि कैसे pmeH var में नहीं होने के बावजूद acme.sh कहा जाता है।
rlib

जवाबों:


17

इस कमांड का उपयोग करें: type assemble.sh

यह विभिन्न प्रकार के गोले में काम करता है और केवल पहला परिणाम दिखाता है।


9
या बस type assemble.sh, जो पोर्टेबल है (और केवल पहला मैच दिखाता है जबकि type -aसभी मैच दिखाने के लिए ksh / bash कंस्ट्रक्शन है)।
गाइल्स का SO- बुराई से रोकना '

6

या पथ को विभाजित करें, और इसे खोजने में उपयोग करें - पहला मैच समाधान होना चाहिए

find ${PATH//:/ } -maxdepth 1 -name assemble.sh -print -quit

type बेशक अधिक आसान है।


2
यह काफी उपयोगी है। मुझे नहीं पता था कि मैं $ PATH को इसके उप घटकों में विभाजित कर सकता हूं और प्रत्येक को एक साथ खोज सकता हूंfind
एहतेश चौधरी

1
कोशिश नहीं की लेकिन मुझे लगता है कि इस मार्ग के घटकों में रिक्तियों के साथ तोड़ सकते हैं
nhed

4

आप बैश का उपयोग कर सकते हैं, लेकिन whichआउटपुट का सिंटैक्स दिखाता है कि आप whichcsh में लिखे पुराने का उपयोग करते हैं । PATH कोष्ठकों के हवाले से पता चलता है, और PATH की निर्देशिका में प्रविष्टियों की तरह है /opt/SUNWspro/binऔर /usr/ccs/binजो केवल सोलारिस में समझ में आता है। यह सुसंगत है: सोलारिस ने csh का उपयोग किया which

यहाँ मेरा अनुमान है: आपको बैश के लिए एक पेटीएम मिला है, और दूसरे को csh के लिए। यह एक सिस्टम समस्या हो सकती है। जैसा कि मुझे याद है, सोलारिस सिस्टम-वाइड पेट सेटिंग के लिए / etc / प्रोफाइल और / etc / cshrc फाइलें रखता है। वे दो आरंभीकरण फ़ाइलें अलग-अलग गोले के लिए अलग-अलग PATH चर सेट कर सकती हैं। बैश के तहत "इको $ पाथ" करें, और देखें कि क्या यह इस बात से सहमत है कि whichकमांड पैथ स्ट्रिंग के रूप में क्या प्रिंट करता है।


4
command -v assemble.sh

जानकारी

-v 'प्रकार' के समान COMMAND का विवरण प्रिंट करें

यह भी उपयोगी होगा यदि आप पाथ के एक संशोधित संस्करण में खोजना चाहते हैंASSEMBLE=$(PATH=/usr/bin:/usr/local/opt/coreutils/libexec/gnubin command -v assemble.sh)
बजे

0

आप locate assemble.shफ़ाइल का स्थान खोजने के लिए उपयोग कर सकते हैं ।


नहीं, यह सभी (विश्व-) पठनीय फ़ाइलों का स्थान दिखाता है, जिनके नाम हैं assemble.sh, जो यहाँ अप्रासंगिक है।
गाइल्स का SO- बुराई से रोकना '

यह बिलकुल भी अप्रासंगिक नहीं है। यहां तक ​​कि अगर उसके पास ऐसी कई फाइलें थीं, जो locateउसे उस स्थान का पता देंगी जो वह चाहता है। assemble.shऐसा कोई सामान्य नाम नहीं है, इसलिए वह फ़ाइल को आसानी से ढूंढ लेगा (जो कि ओपी अनुरोध करता है)।
निको

1
परिणाम दिखाने से updatedbपहले क्या आपके पास नहीं है locate?
ग्लेन जैकमैन

1
आमतौर पर updatedbएक क्रॉन जॉब के रूप में दैनिक रूप से चलाया जाता है, लेकिन हाँ, आपको इसे मजबूर करना पड़ सकता है यदि फ़ाइल बहुत हाल ही में है।
निको
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.