source: vendor/bash/3.1-p17/examples/scripts/showperm.bash

Last change on this file was 3228, checked in by bird, 18 years ago

bash 3.1

File size: 1.2 KB
Line 
1#Newsgroups: comp.unix.shell
2#From: gwc@root.co.uk (Geoff Clare)
3#Subject: Re: Determining permissions on a file
4#Message-ID: <Dr79nw.DtL@root.co.uk>
5#Date: Fri, 10 May 1996 17:23:56 GMT
6
7#Here's a bit of Korn shell that converts the symbolic permissions produced
8#by "ls -l" into octal, using only shell builtins. How to create a script
9#combining this with an "ls -l" is left as an exercise...
10#
11#
12# Converted to Bash v2 syntax by Chet Ramey <chet@po.cwru.edu>
13#
14# usage: showperm modestring
15#
16# example: showperm '-rwsr-x--x'
17#
18
19[ -z "$1" ] && {
20 echo "showperm: usage: showperm modestring" >&2
21 exit 2
22}
23
24tmode="$1"
25
26typeset -i omode sbits
27typeset pmode
28
29# check for set-uid, etc. bits
30sbits=0
31case $tmode in
32???[sS]*) (( sbits += 8#4000 )) ;; # set-uid
33??????[sSl]*) (( sbits += 8#2000 )) ;; # set-gid or mand. lock
34?????????[tT]*) (( sbits += 8#1000 )) ;; # sticky
35esac
36
37omode=0
38while :
39do
40 tmode=${tmode#?}
41 case $tmode in
42 "") break ;;
43 [-STl]*) (( omode *= 2 )) ;;
44 [rwxst]*) (( omode = omode*2 + 1 )) ;;
45 *) echo "$0: first letter of \"$tmode\" is unrecognized" >&2
46 (( omode *= 2 ))
47 ;;
48 esac
49done
50
51(( omode += sbits ))
52
53printf "0%o\n" $omode
Note: See TracBrowser for help on using the repository browser.