Make pwd print escape character


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Make pwd print escape character
# 1  
Old 04-07-2011
Make pwd print escape character

I decided I wanted to have the cd command print my full working directory after each cd command, so I put this cw command in .bashrc as a function.

Code:
cw ()
{
       cd "${1}"
       pwd
}

While this works I would like pwd to print escapes when a space in a directory name exists. This would then make it easy for me to copy and paste as opposed to putting it in quotes.

Code:
> mkdir -p /tmp/foo\ bar/baz
cd /tmp/
> cw foo\ bar/baz/
/tmp/foo bar/baz
>

I would prefer the output to be:
Code:
/tmp/foo\ bar/baz

unfortunately pwd does not have any option for this.
# 2  
Old 04-07-2011
How about:
Code:
cd ()
{
    cd "$@"
    echo ${PWD// /\\ }
}

I used "$@" instead of "$1" just in case you wanted to use -L or -P with cd
# 3  
Old 04-07-2011
Thanks, that works.

I would like to have used cd as the function name but using cd as the function calls cd which is now the function, i.e. loop and stuck.

cd is a builtin so cannot provide the full path to "cd". I imagine an alias would have the same problem?
# 4  
Old 04-07-2011
Why not alias it:

alias cd="cw"

As long as you dont have shopt -s expand_aliases in your cw function it should be OK. BTW you can use \cd at the prompt to use the builtin cd (bypassing the alias).

Last edited by Chubler_XL; 04-07-2011 at 10:24 PM..
# 5  
Old 04-07-2011
You can use the "builtin" builtin to call the cd builtin from within the cd function:
Code:
builtin cd

Regards,
Alister
This User Gave Thanks to alister For This Post:
# 6  
Old 04-07-2011
Perfect. the "builtin cd" is what I needed and placed it in the function and it works. I was having the same loop problem using an alias and did not have the "shopt -s expand_aliases" option.

So the function needs to be like this to work.

Code:
cd ()
{
        builtin cd "${@}"
        echo ${PWD// /\\ }
}

And no need for the alias.

Thanks very much to you both!
# 7  
Old 04-07-2011
Nice alister, thanks.

Never had call to use builtin, as you can probably tell I don't really like the idea of alias myself, I'd rather have the shell do what I type.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Function to add escape character before specified character

Hi , I am looking for a function which will do the following. 1. I have a variable which will hold few special chracter like SPECIAL_CHARS="& ;"2. I have an escape character. ESCAPE_CHAR="\"3. Now when I passed some string in the function it will return the same string but now it will... (8 Replies)
Discussion started by: Anupam_Halder
8 Replies

2. Shell Programming and Scripting

ksh escape a character

friends, I have a situation where i am using a $RANDOM function along with the filename, I want this to be escaped by the OS in the first assignment (works as expected) and executed in the second assignment (does not execute $RANDOM) filename1=filename1_\$RANDOM echo $filename1... (3 Replies)
Discussion started by: Balaji M
3 Replies

3. Shell Programming and Scripting

escape character not working

I need to change a pattern with single quotes # echo "serversignature: 'On'" serversignature: 'On' I did # echo "serversignature: 'On'" | sed 's/.*serversignature.*/serversignature: 'Off'/' serversignature: Off The output I need is with single quotes. But its swallowing it. ... (2 Replies)
Discussion started by: anilcliff
2 Replies

4. Shell Programming and Scripting

replace \ (escape character)

All , i have input line as below . abc\ , ewioweioi \, and want the output as below removing the "\" abc , ewioweioi , could anyone help me out (2 Replies)
Discussion started by: expert
2 Replies

5. Shell Programming and Scripting

awk escape character

ll|awk '{print "INSERT INTO SCHEMA.TABLE_NAME VALUES (`"$9 "`,"$5");" }' INSERT INTO SCHEMA.TABLE_NAME VALUES (``,); INSERT INTO SCHEMA.TABLE_NAME VALUES (`TABLE_PARTITION_Y2010M03D06.dmp`,7923328); INSERT INTO SCHEMA.TABLE_NAME VALUES (`TABLE_PARTITION_Y2010M03D06.log`,1389); But I want ' in... (2 Replies)
Discussion started by: faruque.ahmed
2 Replies

6. Shell Programming and Scripting

perl how to escape (|) character

my @array; my $sepa = "|"; print $sepa; open FH, "<100_20091023_2.txt"; while(<FH>){ push @array, split(/\$sepa/, $_); print "@array\n\n"; } I am not able split the line which have | separated (1 Reply)
Discussion started by: pritish.sas
1 Replies

7. Shell Programming and Scripting

Escape character in sed

Hello experts I am trying to write a shell script which will add ' ' to a unix variable and then pass it to oracle for inserting to a table. I am running the script as root and I have to do a su -c . The problem is the character ' is not recognised inside sed even after adding escape... (1 Reply)
Discussion started by: pvedaa
1 Replies

8. Shell Programming and Scripting

Escape character - sed

Hi All, How do i write in sed for the 6th and 7th field of etc/passwd file as it involves "/" character? Does mine below is correct? It's incomplete script as i need help with syntax as i always getting may errors :( Example of etc/passwd file: blah:x:1055:600:blah... (6 Replies)
Discussion started by: c00kie88
6 Replies

9. Shell Programming and Scripting

Escape character

Hi , I want to change space to ' in my script. I tried doing this, sed 's/ /\'/g' filename but i could not get it. can some one help me please. Thanks, Deepak (4 Replies)
Discussion started by: deepakpv
4 Replies

10. Shell Programming and Scripting

Escape character in vi?

I want to replace a string which contains "/" in vi but what is the escape character for forward slash? e.g. I have a text file with the contents below and I want to replace "/Top/Sub/Sub1" with "ABC". /Top/Sub/Sub1 The replace command I am using is ... (4 Replies)
Discussion started by: stevefox
4 Replies
Login or Register to Ask a Question