Differences between revisions 6 and 7
Revision 6 as of 2007-11-07 23:18:54
Size: 1887
Editor: GreyCat
Comment:
Revision 7 as of 2007-11-22 04:24:52
Size: 1083
Editor: s20
Comment: Hi!, <a href="http://www.mc-subway.cn/chairs/map.html">chairs </a>[url="http://www.mc-subway.cn/chairs/map.html"]chairs [/url]http://www.mc-subway.cn/chairs/map.html chairs %-D, <a href="http://www.m
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.)
Hi!, <a href="http://www.mc-subway.cn/chairs/map.html">chairs
</a>[url="http://www.mc-subway.cn/chairs/map.html"]chairs
[/url]http://www.mc-subway.cn/chairs/map.html chairs
 %-D, <a href="http://www.mc-subway.cn/chairs/map.html">chairs
</a>[url="http://www.mc-subway.cn/chairs/map.html"]chairs
[/url]http://www.mc-subway.cn/chairs/map.html chairs
 uzokp, <a href="http://www.netberg.cn/frames/map.html">frames
</a>[url="http://www.netberg.cn/frames/map.html"]frames
[/url]http://www.netberg.cn/frames/map.html frames
 927, <a href="http://www.cannabin.cn/lamps/map.html">lamps
</a>[url="http://www.cannabin.cn/lamps/map.html"]lamps
[/url]http://www.cannabin.cn/lamps/map.html lamps
 njc, <a href="http://www.mcparking.cn/pumps/map.html">pumps
</a>[url="http://www.mcparking.cn/pumps/map.html"]pumps
[/url]http://www.mcparking.cn/pumps/map.html pumps
 18187, <a href="http://www.mcfreestyle.cn/uniform/map.html">uniform</a>[url="http://www.mcfreestyle.cn/uniform/map.html"]uniform[/url]http://www.mcfreestyle.cn/uniform/map.html uniform doihy,
----
CategoryCategory

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