माता-पिता निर्देशिका को पूर्ण पथ पर वापस लाने वाला कार्य


11
    (parent-dir "/home/sk/parent/ab.el")

देता है

    "/home/sk/parent"

फिर,

(parent-dir "/home/sk/parent")

देता है

"/home/sk"

किसी भी तरह के फंक्शन के रूप में parent-dirजो फ़ाइल पथ और dir पथ दोनों के लिए बेसपाथ देता है?

जवाबों:


14

file-name-directory जो आप अनुरोध करते हैं।

हालाँकि, (file-name-directory "/home/sk/parent/")(अनुगामी स्लैश के साथ) उसी निर्देशिका को लौटाता है, उसके माता-पिता को नहीं।

यह वही है जो मैं अनुमान लगा रहा हूं कि आप वास्तव में चाहते हैं:

(file-name-directory (directory-file-name "/home/sk/parent/ab.el")) ; => "/home/sk/parent/"
(file-name-directory (directory-file-name "/home/sk/parent/")) ; => "/home/sk/"
(file-name-directory (directory-file-name "/home/sk/parent")) ; => "/home/sk/"

और लाइब्रेरी Dired + इस फ़ंक्शन का उपयोग करता है:

(defun diredp-parent-dir (file &optional relativep)
  "Return the parent directory of FILE, or nil if none.
Optional arg RELATIVEP non-nil means return a relative name, that is,
just the parent component."
  (let ((parent  (file-name-directory (directory-file-name (expand-file-name file))))
        relparent)
    (when relativep
      (setq relparent  (file-name-nondirectory (directory-file-name parent))))
    (and (not (equal parent file))  (or relparent  parent))))

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