Sponsored Content
Top Forums Shell Programming and Scripting test for directory being subdir of another directory Post 302149026 by hackware on Tuesday 4th of December 2007 04:27:46 PM
Old 12-04-2007
test for directory being subdir of another directory

I've been using the following code to make sure a shell script only runs under a "safe" directory.
Comments/Improvements?
Code:
#!/bin/sh
#----------------------------------------------------------------------------#
#...[top].[ subdir.sh ]......................................................#
#----------------------------------------------------------------------------#
#.........william.o.yates...hackware.at.tru2life.net...tru2life.info.........#
#----------------------------------------------------------------------------#
if [ X"${2}" = "X" ];
then
  echo -e "\a.\n..\n...\n...subdir.sh parent subdir\n...\n..\n.";
else
  dir=${1};
  dir_size=${#1};
  sub=${2};  # oops...    2, not 1...
  sub_size=${#2}; # oops...   2, not 1...
  #---------------------------------------------------------------------------
  # if sub_size is less than dir_size, it can't be under parent.
  #---------------------------------------------------------------------------
  if [ ${sub_size} -lt ${dir_size} ];
  then
    echo -e ".\n..\n...\n... sub_size -lt dir_size\n...\n..\.";
  fi
  #---------------------------------------------------------------------------
  # substring sub to dir_size to then compare sub and dir
  #---------------------------------------------------------------------------
  xdir="$(echo ${sub} | head -c ${dir_size})";
  if [ ${dir} = ${xdir} ];
  then
    echo -e ".\n..\n...\n... ${sub} IS a subdir of ${dir}\n...\n..\n.";
  else
    echo -e ".\n..\n...\n... ${sub} is NOT a subdir of ${dir}\n...\n..\n.";
  fi
fi
#----------------------------------------------------------------------------#
#...[end].[ subdir.sh ]......................................................#
#----------------------------------------------------------------------------#


Last edited by hackware; 12-04-2007 at 11:12 PM.. Reason: # oops... 2 not 1...
 

9 More Discussions You Might Find Interesting

1. HP-UX

How to test directory availibility

Hello, I'm trying to test if a directory specified in a script parameter is available or not. I wrote a little code to do so, but there's a problem because I receive an error message. My code: #Verify command parameter if then echo 'Incorrect command parameter' echo... (3 Replies)
Discussion started by: santuna
3 Replies

2. Shell Programming and Scripting

how to test filename is file or directory

hi all plz let me how to test output of "tail -1 filelist.lst" is file or directory. regards -Bali Reddy (1 Reply)
Discussion started by: balireddy_77
1 Replies

3. UNIX for Advanced & Expert Users

test if there are files in directory

Hi, I am trying to test if there are files in a directory and if theres i want to get a list. Any ideas? Thanks in advance (1 Reply)
Discussion started by: RSAM2007
1 Replies

4. Solaris

test and .test in same directory

i am using solaris 5.10. i can create two different files "test" and ".test" in the same directory. now suppose i want to change the attribute of the hidden file .test to visible is it possible??? since "." is just an attribute to mark a file hidden why is unix allows creation of "file" and... (14 Replies)
Discussion started by: vikashtulsiyan
14 Replies

5. Shell Programming and Scripting

Problem when test to see if directory exists

Hi, I'm writing a shell script that will create a folder if it does not exist yet. Here's the script: (this if statement is inside a while loop) folderName="Pics" if ! test -d folderName then mkdir $folderName fi However, after the folder Pics has been created, every time the... (3 Replies)
Discussion started by: trivektor
3 Replies

6. UNIX for Dummies Questions & Answers

rm: Unable to remove directory /mnt/users/test/logs/: File exists

rm: Unable to remove directory /mnt/users/test/logs/: File exists ls -latr total 191208 drwxrwxrwx 6 test echo 4096 Jul 3 22:36 .. -rwxrwxrwx 1 test echo 97692804 Jul 3 22:36 .nfsDFA4 drwxrwxr-x 2 test echo 4096 Jul 3 23:00 . M not able to delete... (4 Replies)
Discussion started by: solitare123
4 Replies

7. Shell Programming and Scripting

FIle (directory) test operator (bash)

I'm almost pulling out my hair trying to figure out what's wrong with this... there's no reason I can see that it shouldn't be working. It seems that the code acts as though the conditional statement is true no matter what - I've even tried removing the negation operator, but it always goes into... (5 Replies)
Discussion started by: wildbluefaerie
5 Replies

8. Shell Programming and Scripting

Test if a script can cd into a directory

Is there a way for a bash script to test if it can cd into a directory without actually attempting to cd into it? I am looking for something along the lines of: if ;then #code to execute fi except in this case I don't want to test if the directory exists; what I want is to test... (8 Replies)
Discussion started by: dexdex200
8 Replies

9. UNIX for Dummies Questions & Answers

Extract directory name from the full directory path in UNIX using shell scripting

My input is as below : /splunk/scrubbed/rebate/IFIND.REBTE.WROC.txt /splunk/scrubbed/rebate/IFIND.REBTE.WROC.txt /splunk/scrubbed/loyal/IFIND.HELLO.WROC.txt /splunk/scrubbed/triumph/ifind.triumph.txt From the above input I want to extract the file names only . Basically I want to... (5 Replies)
Discussion started by: IshuGupta
5 Replies
echo(1B)					     SunOS/BSD Compatibility Package Commands						  echo(1B)

NAME
echo - echo arguments to standard output SYNOPSIS
/usr/ucb/echo [-n] [argument] DESCRIPTION
echo writes its arguments, separated by BLANKs and terminated by a NEWLINE, to the standard output. echo is useful for producing diagnostics in command files and for sending known data into a pipe, and for displaying the contents of envi- ronment variables. For example, you can use echo to determine how many subdirectories below the root directory (/) is your current directory, as follows: o echo your current-working-directory's full pathname o pipe the output through tr to translate the path's embedded slash-characters into space-characters o pipe that output through wc -w for a count of the names in your path. example% /usr/bin/echo "echo $PWD | tr '/' ' ' | wc -w" See tr(1) and wc(1) for their functionality. The shells csh(1), ksh(1), and sh(1), each have an echo built-in command, which, by default, will have precedence, and will be invoked if the user calls echo without a full pathname. /usr/ucb/echo and csh's echo() have an -n option, but do not understand back-slashed escape characters. sh's echo(), ksh's echo(), and /usr/bin/echo, on the other hand, understand the black-slashed escape characters, and ksh's echo() also understands a as the audible bell character; however, these commands do not have an -n option. OPTIONS
-n Do not add the NEWLINE to the output. ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Availability |SUNWscpu | +-----------------------------+-----------------------------+ SEE ALSO
csh(1), echo(1), ksh(1), sh(1), tr(1), wc(1), attributes(5) NOTES
The -n option is a transition aid for BSD applications, and may not be supported in future releases. SunOS 5.10 3 Aug 1994 echo(1B)
All times are GMT -4. The time now is 08:42 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy