The UNIX and Linux Forums  
Hello and Welcome from United States to the UNIX and Linux Forums! Thank You for Visiting and Joining Our Global Community.

Go Back   The UNIX and Linux Forums > Top Forums > Shell Programming and Scripting
.
google unix.com



Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts and shell scripting languages here.

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
HP-UX recycle Hemanth_gp UNIX for Dummies Questions & Answers 3 07-02-2008 05:28 PM
Making UNIX script executable rohitx UNIX for Dummies Questions & Answers 4 07-01-2008 01:32 PM
Path of Recycle Bin on Windows milhan Windows & DOS: Issues & Discussions 4 01-19-2007 03:31 PM
Recycle Bin Script raidersboi UNIX for Dummies Questions & Answers 6 06-04-2005 11:32 PM
error making filesystem when install UNIX jav_v Filesystems, Disks and Memory 3 08-28-2002 10:58 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Search this Thread Rate Thread Display Modes
  #1 (permalink)  
Old 04-27-2009
jzacsh jzacsh is offline
Registered User
  
 

Join Date: Apr 2009
Posts: 29
Smile intro to UNIX - making a sort-of recycle bin (for fun)

Hello, I'm only taking Intro to UNIX in school right now, so please bear with me. My problem is with a sort-of recycle-bin rig I've created for fun. I'm using Ubuntu 9.04, I am the admin. (only user, actually) of this computer. I'm using this script in ~/.bashrc

Code:
# if files exist, remove contents (of purge directory)
ls -lA ~/purge;
echo "^ this was a test, to be sure the following command should work"

purgeTest= "ls -lA ~/purge" # setting a variable to check contents of ~/purge
if [ $purgeTest -ne "total 0" ]; then
rm -r ~/purge/* 
fi
side note: I would think that checking if a directory (line 5) has contents is unnecessary, except when I just had rm -r ~/purge/* written, I'd get rm: cannot remove `/home/jzacsh/purge/*': No such file or directory BUT only when the purge directory was empty.

Here is the output I'm seeing on login:
Code:
total 0
^ this was a test, to be sure the following command should work
bash: ls -lA ~/purge: No such file or directory
bash: [: -ne: unary operator expected
jzacsh@dell8300:~$
bottom line, questions:
what am i doing wrong to get the "no such file or directory" error, in line 3 just above? (am I using variables incorrectly?)

is -ne operator only for mathematic comparisons - line 4 of error? if so, what should I use?

-thanks in advance for any suggestions!
  #2 (permalink)  
Old 04-27-2009
pludi's Avatar
pludi pludi is offline Forum Staff  
Moderator
  
 

Join Date: Dec 2008
Location: .at
Posts: 1,843
Why would you want the script to clean your "recylce bin" (doesn't GNOME have that by default?) in your login script? Lets assume that you, by accident "deleted" a file. As soon as you open a new terminal it's gone.

Aside from that, there are 3 errors in your code:
Code:
purgeTest= "ls -lA ~/purge"
if [ $purgeTest -ne "total 0" ]
First, there shouldn't be white spaces around the assignment operator. Second, double quotes won't capture the output of the command, use backticks or $( <cmd> ). Third, -ne is for numeric comparison, use != for strings.
  #3 (permalink)  
Old 04-27-2009
jzacsh jzacsh is offline
Registered User
  
 

Join Date: Apr 2009
Posts: 29
pludi: thanks for the quick reply. I actually wrote this originally for my Intro to Unix class, where I needed somewhere to stick temporary files I was working on/looking at, that I didn't want to worry about remembering to clean up. In that class we use FreeBSD. I fixed the errors you mentioned, thank you for the advice.

This is what my code looks like now:
Code:
# if files exist, remove contents of purge directory
purgeTest=`ls -lA ~/purge`
if [$purgeTest!="total 0"]; then
rm -r ~/purge/*
fi
Thisi is the error I get:
Code:
bash: [total: command not found
  #4 (permalink)  
Old 04-27-2009
pludi's Avatar
pludi pludi is offline Forum Staff  
Moderator
  
 

Join Date: Dec 2008
Location: .at
Posts: 1,843
Rewrite that if to
Code:
if [ "$purgeTest" != "total 0" ]; then
and everything should run as wanted.

As an additional learning challenge you might consider putting your code in your .bash_logout and only run it when your last terminal exits.
  #5 (permalink)  
Old 04-27-2009
jzacsh jzacsh is offline
Registered User
  
 

Join Date: Apr 2009
Posts: 29
Awesome, that worked! (I guess I got rid of the unnecessary whitespace and the necessary). Thanks.

I'm glad you mentioned that, I'm actually a bit confused with the different files. My UNIX teacher taught us ~/.profile was what you use, then the ubuntu forums explained you should use .bashrc for an assignment (like the one I did below).

Code:
alias test="cd $HOME/prog/test ; pwd ; ls -la"
My professor explained that its just because every linux/unix system is a bit unique, but I feel like there must be a more reasonable explanation for the different files - or at least a glossary/breakdown of the different ?daily-script-containers? somewhere ... no?
  #6 (permalink)  
Old 04-27-2009
Corona688 Corona688 is offline
Registered User
  
 

Join Date: Aug 2005
Location: Saskatchewan
Posts: 1,933
Different shells, more likely. Nothing but BASH uses .bashrc . Lots of linux systems use BASH, but lots of other UNIX systems generally login to ksh or others. Though I have seen situations where a read-only .bashrc exists to prevent people mucking with it, that automatically includes .profile or somesuch if present.

Last edited by Corona688; 04-27-2009 at 08:30 PM..
  #7 (permalink)  
Old 04-28-2009
pludi's Avatar
pludi pludi is offline Forum Staff  
Moderator
  
 

Join Date: Dec 2008
Location: .at
Posts: 1,843
According to the man page of bash the sequence is
  1. /etc/profile
  2. ~/.bash_profile
  3. ~/.bash_login
  4. ~/.profile
plus anything that's sourced in there. ksh only reads /etc/profile and ~/.profile

Furthermore, bash will run ~/.bash_logout whenever a login shell exits, and ~/.bashrc when running an interactive non-login shell.
Closed Thread

Bookmarks

Tags
operators, scripting

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On




All times are GMT -4. The time now is 01:13 AM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
The UNIX and Linux Forums Content Copyright ©1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant URLs by vBSEO 3.2.0