Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 History  





2 Usage  





3 Performance  





4 Misconceptions  





5 See also  





6 References  





7 External links  














dirname






العربية
Čeština
Deutsch
Ελληνικά
Español
فارسی
Français

ि
Italiano
Magyar

Polski
Русский
Türkçe

 

Edit links
 









Article
Talk
 

















Read
Edit
View history
 








Tools
   


Actions  



Read
Edit
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Cite this page
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 
















Appearance
   

 






From Wikipedia, the free encyclopedia
 


dirname
Developer(s)Various open-source and commercial developers
Operating systemUnix, Unix-like, IBM i
PlatformCross-platform
TypeCommand
Licensecoreutils: GPLv3+

dirname is a standard computer programonUnix and Unix-like operating systems. When dirname is given a pathname, it will delete any suffix beginning with the last slash ('/') character and return the result. dirname is described in the Single UNIX Specification and is primarily used in shell scripts.

History

[edit]

The version of dirname bundled in GNU coreutils was written by David MacKenzie and Jim Meyering.[1] The command is available as a separate package for Microsoft Windows as part of the UnxUtils collection of native Win32 ports of common GNU Unix-like utilities.[2] The dirname command has also been ported to the IBM i operating system.[3]

Usage

[edit]

The Single UNIX Specification for dirname is:

dirname string
string
Apathname

$ dirname /home/martin/docs/base.wiki /home/martin/docs

$ dirname /home/martin/docs/. /home/martin/docs $ dirname /home/martin/docs/ /home/martin $ dirname base.wiki . $ dirname / /

Performance

[edit]

Since dirname accepts only one operand, its usage within the inner loop of shell scripts can be detrimental to performance. Consider

 while read file; do
     dirname "$file"
 done < some-input

The above excerpt would cause a separate process invocation for each line of input. For this reason, shell substitution is typically used instead

 echo "${file%/*}";

or if relative pathnames need to be handled as well

 if [ -n "${file##*/*}" ]; then
     echo "."
 else
     echo "${file%/*}";
 fi

Note that these handle trailing slashes differently than dirname.

Misconceptions

[edit]

We might think that paths that end in a trailing slash are a directory. But actually, the trailing slash represents all files within the directory.

/home/martin/docs/.

The correct way to represent a path as a directory is with a trailing slash and a period.[according to whom?][citation needed]

See also

[edit]

References

[edit]
  1. ^ "Dirname(1) - Linux man page".
  • ^ "Native Win32 ports of some GNU utilities". unxutils.sourceforge.net.
  • ^ IBM. "IBM System i Version 7.2 Programming Qshell" (PDF). IBM. Archived (PDF) from the original on 2020-09-18. Retrieved 2020-09-05.
  • [edit]
    Retrieved from "https://en.wikipedia.org/w/index.php?title=Dirname&oldid=1199938803"

    Categories: 
    Standard Unix programs
    Unix SUS2008 utilities
    IBM i Qshell commands
    Hidden categories: 
    All articles with specifically marked weasel-worded phrases
    Articles with specifically marked weasel-worded phrases from September 2019
    All articles with unsourced statements
    Articles with unsourced statements from September 2019
     



    This page was last edited on 28 January 2024, at 09:24 (UTC).

    Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



    Privacy policy

    About Wikipedia

    Disclaimers

    Contact Wikipedia

    Code of Conduct

    Developers

    Statistics

    Cookie statement

    Mobile view



    Wikimedia Foundation
    Powered by MediaWiki