alias defining problem in .cshrc file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting alias defining problem in .cshrc file
# 1  
Old 02-23-2010
alias defining problem in .cshrc file

Hi folks,

I'm trying to define the following command as alias in .cshrc file:
ls -ltr | grep ^d | awk '{print $9}' | xargs du -hs

I defined it as the following:
Code:
alias nirdirs '`ls -ltr | grep "^d" | awk "{print \\$9}" | xargs du -hs`'

I've got the following error when I've run the alias:
dwhdev > nirdirs
awk: syntax error near line 1
awk: illegal statement near line 1
2.5M: Command not found.

How to define it correctly?

Thanks in advance,
Nir
# 2  
Old 02-23-2010
Something like this:

Code:
 
alias nirdirs="ls -ltr | grep "^d" | awk '{print \$9}'|xargs du -s"

# 3  
Old 02-23-2010
Hi Panyam,

Thanks , but it still fails:
awk: syntax error near line 1
awk: illegal statement near line 1

Thanks in advance,
Nir
# 4  
Old 02-23-2010
Are you using Solaris? If so, use /usr/xpg4/bin/awk (or nawk)

Why escape the $9 as \$9? Is that a csh-ism? It shouldn't be necessary if the awk is single-quoted.

Edit: actually, with hindsight, my (first) question was dumb. Even awk on Solaris could do that!

Last edited by Scott; 02-23-2010 at 06:52 PM..
# 5  
Old 02-23-2010
Hi.

The comments show refinements and corrections:
Code:
#!/bin/csh

# @(#) s1       Demonstrate alias.

echo
setenv LC_ALL C ; setenv LANG C
echo "Environment: LC_ALL = $LC_ALL, LANG = $LANG"
echo "(Versions displayed with local utility version)"
sh -c "version >/dev/null 2>&1" && version "=o" csh
echo

# alias nirdirs '`ls -ltr | grep "^d" | awk "{print \\$9}" | xargs du -hs`'
# alias nirdirs '`ls -ltr | grep "^d" | nawk "{print \\$9}" | xargs du -hs`'
# alias nirdirs '`ls -ltr | grep "^d" | nawk "{print \$9}" | xargs du -hs`'
# alias nirdirs '`ls -ltr | grep "^d" | nawk "{print $9}" | xargs du -hs`'
alias nirdirs 'ls -ltr | grep "^d" | nawk "{print $9}" | xargs du -hs'

alias

nirdirs

exit 0

producing:
Code:
$ ./s1

Environment: LC_ALL = C, LANG = C
(Versions displayed with local utility version)
OS, ker|rel, machine: SunOS, 5.10, i86pc
csh Aug 8 2006 (SunOS 5.10)

nirdirs ls -ltr | grep "^d" | nawk "{print $9}" | xargs du -hs
   3K   .

Good luck ... cheers, drl
# 6  
Old 02-24-2010
Hi drl,

Thanks!

When I'm running this script I'm getting the following output:
Code:
 dwhdev > ./check_alias.csh

Environment: LC_ALL = C, LANG = C
(Versions displayed with local utility version)

   0K   drwxr-xr-x
   0K   2
   0K   oracle
   0K   dba
   0K   8192
   0K   May
   0K   6
   0K   2009
 376K   check_version
   0K   drwxr-xr-x
   0K   2
   0K   oracle
   0K   dba
   0K   8192
   0K   Jan
   0K   17
   0K   19:50
 608K   logs

The requested output should be:
Code:
dwhdev > ls -ltr | grep "^d" | awk '{print $9}' | xargs du -hs
 376K   check_version
 608K   logs

Thanks in advance,
Nir
# 7  
Old 02-24-2010
Hi.

I think csh is causing trouble when processing "$9". This variation seemed to work for me:
Code:
alias nirdirs 'ls -ltr | grep "^d" | tr -s " " | cut -d " " -f9 | xargs du -hs'

producing in my test directory that contains a directory "d1":
Code:
   7K   d1

Now you have an idea why people generally avoid scripting with the csh family, and use members of the Bourne shell family: sh, bash, ksh, zsh.

Best wishes ... cheers, drl
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Solaris

CSHRC and PATH problem please help

I'm doing some IVR programming and it uses Solaris 10. I know little about Unix, or CSH, but I think it's a problem with my .cshrc file. I was getting an error: "nstancehomedir/sqllib/bin/db2fupdt: Command not found" and also "set: Syntax error" when I log in. I found db2fupdt in 2 directories,... (2 Replies)
Discussion started by: jstevanus
2 Replies

2. UNIX for Dummies Questions & Answers

Defining variable problem

Hi I'd say I'm having this weird problem where my script isn't taking the value off a variable or printing it. My code is like this: set count_C= `grep -c C mols` set count_H= `grep -c H mols` set count_O= `grep -c O mols` sed -i '7,7 s/$/ $count_C $count_O $count_H/g' input It... (8 Replies)
Discussion started by: saleheen
8 Replies

3. Programming

Problem defining a struct

I have the following code and getting the compilation errors baseLib/DynBaseObj.h:80: error: expected constructor, destructor, or type conversion before ‘(' token baseLib/DynBaseObj.h:89: error: expected constructor, destructor, or type conversion before ‘(' token baseLib/DynBaseObj.h:101:... (0 Replies)
Discussion started by: kristinu
0 Replies

4. UNIX for Dummies Questions & Answers

Defining an alias FreeBSD

I have defined this alias as quick way to find out which mount point to use for a USB drive after inserting it: # alias da='dmesg | grep da | grep MB' However, when invoking it, it states the following: # da da: Command not found. Can someone explain what is the issue here and how it can be... (3 Replies)
Discussion started by: figaro
3 Replies

5. Shell Programming and Scripting

Problem with my .cshrc

Hello everyone, I write a ~/.cshrc for set class path to run my java application. The file is listed below. setenv YFILTER_HOME ~/yfilter-2.0 setenv PATH "$YFILTER_HOME/bin:$PATH" setenv CLASSPATH... (1 Reply)
Discussion started by: perl0101
1 Replies

6. Virtualization and Cloud Computing

.cshrc file

Hi All, I was hoping someone could help me with the following query I have please in relation to NX Nomachine. Is there a way to get my .cshrc file in say my “US” home dir” to run when I login to another server e.g say a UK server? Any advise would be much appreciated, thanks (3 Replies)
Discussion started by: zainster
3 Replies

7. Solaris

Problem defining remote printers on solaris 10

Good morning, I have a server with solaris 10 that I want to intall remote printers. I started lpsched deamon without problems with command: svcadm enable application/print/server I want to install printers that are defined locally on print server, so: lpadmin -p <device> -s <print... (2 Replies)
Discussion started by: bonovox
2 Replies

8. UNIX for Dummies Questions & Answers

word too long..problem while sourcing .cshrc

I am setting my PATH & LD_LIBRARY_PATH through .cshrc file while sourcing it on a old shell i am getting the error word too long .and the changes which i anm doing doesn't get updated . i am in a multi user environment so the only way to do the changes only for my shell is to do it that way. ... (1 Reply)
Discussion started by: mobydick
1 Replies

9. Shell Programming and Scripting

Sorting/Filed Defining/Output problem

need a little help with a few tid bits. I wrote a script that checks the resoluion of image files and writes them out to a file then sorts the resolutions by largets Width. Then take the sorted files information and toss all the 835 widths into a seperate file. Ignore the redundancies its a... (1 Reply)
Discussion started by: TiredOrangeCat
1 Replies

10. UNIX for Dummies Questions & Answers

How to set the CVSROOT in the .cshrc file?

I am learning the CVS in Unix now, but in the book it said I need to add the CVSROOT to the end of the .cshrc file. I had use emacs to edit it and add CVSROOT=/CVS, but when I run script .cshrc then it said CVSROOT=/CVS: Command not found. I had already think that for a hour, so could any person... (1 Reply)
Discussion started by: a8111978
1 Replies
Login or Register to Ask a Question