2013-05-20 66 views
3

我希望能夠在我的home目錄在任何操作系統上的操作系統例如翻譯某個目錄的實際絕對路徑(make-pathname :directory '(:absolute :home "directoryiwant")應翻譯爲「/家庭/ weirdusername/directoryiwant」一類UNIX系統的系統。如何翻譯(補充路徑:目錄「(:絕對:首頁‘directoryiwant’)轉換成絕對路徑

什麼會選擇這樣做的作用?作爲

(directory-namestring 
     (make-pathname :directory '(:absolute :home "directoryiwant")) 
> "~/" 

實際上並沒有做這筆交易。

回答

6

如果你需要的東西相對於您的家庭直ORY,在Common Lisp的功能user-homedir-pathnamemerge-pathnames可以幫助您:

CL-USER> (merge-pathnames 
      (make-pathname 
      :directory '(:relative "directoryyouwant")) 
      (user-homedir-pathname)) 
#P"/home/username/directoryyouwant/" 

namestring functions(例如,namestring目錄namestring)如預期在這個路徑工作:

CL-USER> (directory-namestring 
      (merge-pathnames 
      (make-pathname 
      :directory '(:relative "directoryyouwant")) 
      (user-homedir-pathname))) 
"/home/username/directoryyouwant/" 
1
CL-USER > (make-pathname :directory (append (pathname-directory 
               (user-homedir-pathname)) 
              (list "directoryiwant")) 
         :defaults (user-homedir-pathname)) 

#P"/Users/joswig/directoryiwant/" 

NAMESTRING返回作爲一個字符串的函數。

CL-USER > (namestring #P"/Users/joswig/directoryiwant/") 
"/Users/joswig/directoryiwant/"