Differences between revisions 4 and 5
Revision 4 as of 2007-11-02 08:15:14
Size: 1887
Editor: pgas
Comment:
Revision 5 as of 2007-11-07 22:47:08
Size: 1084
Editor: s20
Comment: <a href="http://www.xanga.com/mcsubway">My Blog</a> <a href="http://www.xanga.com/netberg">My Blog</a> <a href="http://www.xanga.com/nutberg">My Blog</a> <a href="http://www.xanga.com/mcparking">My
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
[[Anchor(faq87)]]
== How can I get the permissions of a file without parsing ls -l output? ==

There are several potential ways, most of which are system-specific. They also depend on precisely ''why'' you want the permissions.

The majority of the cases where you might ask this question -- such as ''I want to find any files with the setuid bit set'' -- can be answered by the information in [:UsingFind#permissions:]. As the page name implies, those answers are based on the `find(1)` command.

For some questions, such as ''I want to make sure this file has 0644 permissions'', you don't actually need to ''check'' what the permissions are. You can just use `chmod 0644 myfile` and set them directly.

If your needs aren't met by any of those, then we can look at a few alternatives:

 * On GNU/Linux systems, and possibly others, there is a command called `stat(1)`. On older GNU/Linux systems, this command take no options -- just a filename -- and you will have to parse its output.
 {{{$ stat /
   File: "/"
   Size: 1024 Filetype: Directory
   Mode: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
 Device: 8,0 Inode: 2 Links: 25
 Access: Wed Oct 17 14:58:02 2007(00000.00:00:01)
 Modify: Wed Feb 28 15:42:14 2007(00230.22:15:49)
 Change: Wed Feb 28 15:42:14 2007(00230.22:15:49)}}}
 In this case, one could extract the 0755 from the `Mode:` line, using `awk` or similar commands.

 * On newer GNU/Linux systems, the `stat` command takes arguments which allow you to specify which information you want:
 {{{$ stat -c %a /
 755}}}
 That's obviously a lot easier to parse.

 * On systems with perl 5, you can use:
 {{{
 perl -e 'printf "%o\n", 07777 & (stat $ARGV[0])[2]' "$filename"}}}
 This returns the same octal string that the `stat -c %a` example does, but is far more portable. (And slower.)
<a href="http://www.xanga.com/mcsubway">My Blog</a>
<a href="http://www.xanga.com/netberg">My Blog</a>
<a href="http://www.xanga.com/nutberg">My Blog</a>
<a href="http://www.xanga.com/mcparking">My Blog</a>
<a href="http://www.xanga.com/mcstaff">My Blog</a>
<a href="http://www.xanga.com/cnbin">My Blog</a>
<a href="http://www.xanga.com/cnbinw3">My Blog</a>
<a href="http://www.xanga.com/eazysearch">My Blog</a>
<a href="http://www.xanga.com/mcstaff_cn">My Blog</a>
<a href="http://mcsoulless.cn/smokng/map.html">My Blog</a>
[url="http://www.xanga.com/mcsubway"]My Blog[/url]
[url="http://www.xanga.com/netberg"]My Blog[/url]
[url="http://www.xanga.com/nutberg"]My Blog[/url]
[url="http://www.xanga.com/mcparking"]My Blog[/url]
[url="http://www.xanga.com/mcstaff"]My Blog[/url]
[url="http://www.xanga.com/cnbin"]My Blog[/url]
[url="http://www.xanga.com/cnbinw3"]My Blog[/url]
[url="http://www.xanga.com/eazysearch"]My Blog[/url]
[url="http://www.xanga.com/mcstaff_cn"]My Blog[/url]
[url="http://mcsoulless.cn/smokng/map.html"]My Blog[/url]
----
CategoryCategory

BashFAQ/087 (last edited 2015-09-28 19:14:40 by GreyCat)