जवाबों:
यहां से: https://stackoverflow.com/a/4031502/804713
macports और homebrew greadlink (GNU readlink) युक्त कोरूटिल्स पैकेज प्रदान करते हैं। mackb.com में माइकल कल्लवीट पोस्ट को श्रेय
काढ़ा स्थापित coreutils
greadlink -f file.txt
ऐसा करने के कई तरीके हैं; यहाँ एक उदाहरण है जो आपके लिए काम कर सकता है:
claw:~ jonv$ echo `pwd`/`ls config.in.php`
/Users/jonv/config.in.php
यदि आप अधिक उदाहरण चाहते हैं, तो इस पोस्ट पर स्टैकओवरफ़्लो पर एक गुच्छा है ।
आप संपूर्ण पथ के साथ सभी फ़ाइलों को सूचीबद्ध करने के लिए "खोज" कमांड का भी उपयोग कर सकते हैं:
find DirectoryName -type f
या सिर्फ निम्नलिखित:
find . -type f
दिए गए किसी भी समाधान को पसंद नहीं किया, इसलिए मैंने https://stackoverflow.com/a/22684652/953327 पर आधारित अपना स्वयं का बनाया
उपनाम बनाएं जो बस एक फ़ंक्शन कॉल है जो जोड़ती है pwd
और ls $1
। .bash_profile
यदि आप चुनते हैं तो आप इसे अपने साथ जोड़ सकते हैं।
alias lsf='function _lsf(){ echo "$(pwd)/$(ls $1)"; };_lsf'
उपयोग का उदाहरण:
lsf registry.lock
-> /tmp/registry.lock
मैंने lsf
"सूची पूर्ण" या "सूची फ़ाइल" के लिए चुना, मेरे लिए समझ में आता है लेकिन संशोधित करने के लिए स्वतंत्र महसूस करता है।
अद्यतन (धन्यवाद @ सैंटियागो-arizti) संबंधित पथ के साथ इस का उपयोग करने में सक्षम होने के (जैसे lsf ../../readme.md
)
alias lsf='function _lsf(){ (cd $(dirname "$1") && echo $(pwd)/$(basename "$1")) };_lsf'
lsf ../../readme.md
इसलिए मैंने आपके संस्करण को थोड़ा बदल दियाalias lsf='function _lsf(){ (cd $(dirname "$1") && echo $(pwd)/$(basename "$1")) };_lsf'
मुझे आपकी आवश्यकता से अधिक चाहिए था, मुझे एक रिश्तेदार निर्देशिका में फ़ाइलों के बारे में पूछने में भी सक्षम ../../readme.md
होना चाहिए , जैसे , और परिणाम कुछ ऐसा होना चाहिए/Users/santi/readme.md
इसलिए मैंने एक फ़ोल्डर में एक (निष्पादन योग्य) स्क्रिप्ट बनाई है जो निम्नलिखित सामग्रियों के साथ $PATH
बुलाया lsf
गया है:
#!/bin/bash
F=${1:?'usage lsf ../../readme.md'}
( cd $(dirname "$F") && echo $(pwd)/$(basename "$F") )
तो आप इसे इस तरह से उपयोग कर सकते हैं:
santi@santis-mac:~/p/dir1/dir2$ lsf ../../readme.md
/Users/santi/p/readme.md
कोई भी पैरामीटर आपको चेतावनी नहीं देता है
santi@santis-mac:~/p/dir1/dir2$ lsf
/Users/santi/bin/lsf: line 3: 1: usage lsf ../../readme.md
नकली निर्देशिका आपको चेतावनी देती है (क्योंकि dirname
)
santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakedir/readme.md
/Users/santi/bin/lsf: line 5: cd: ../../fakedir: No such file or directory
नकली फ़ाइल लेकिन वास्तविक निर्देशिका चेतावनी नहीं देती है (यदि आपको आवश्यकता हो तो सत्यापन जोड़ सकते हैं)
santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakefile.md
/Users/santi/p/fakefile.md
निम्न कार्यशील निर्देशिका के भीतर एक फ़ाइल मिलेगी जो मेल खाती है file.txt
और इसके पूर्ण पथ को वापस करती है
find `pwd` -name file.txt
उपयोग realpath
उदाहरण के लिए:
$ realpath README.md
/Users/joe/my/long/directory/structure/README.md
स्टैकओवरफ़्लो पर यहाँ उत्तर दिया गया: https://stackoverflow.com/a/3915075/441960
FYI करें, MacOS का मेरा संस्करण (OSX):
$ uname -a
Darwin my-machine 18.7.0 Darwin Kernel Version 18.7.0: Tue Aug 20 16:57:14 PDT 2019; root:xnu-4903.271.2~2/RELEASE_X86_64 x86_64
-f
गैर-जीएनयू पर काम क्यों नहीं किया जाएगा और यह कैसे काम करेगा। यह काम। धन्यवाद