echo * question


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers echo * question
# 1  
Old 03-08-2011
echo * question

Hi all and tks in advance

I am working my way through 'Learning the bash Shell'. I cannot be sure if I really understand why "echo *" (my double quotes) returns all the files in the current directory.

I get the * ( wildcard) expansion of "*", and I think I understand that "echo" returns it's argument/s to the standard output. But, somehow, I do not see **why** the wildcard * would return all the current working directory files.


Thanks again.
# 2  
Old 03-08-2011
echo means - display the characters in the argument(s) the arguments in this case are filenames.

what were you expecting?
# 3  
Old 03-08-2011
echo doesn't return them, it prints them. Minor but important difference. Programs return a number that you don't see but can check for to see if the program succeeded or failed... 0=success, anything else means error.

Shell expansion (often called globbing) happens before the program is run, the same way it substitutes variables. This means you can drop a * almost anywhere you like and it will become a list of files -- not just into shell commands but also shell builtins, lists, arrays, and operators... To make * not expand you have to put it in quotes like "*" or '*'

So when you do "echo *", the * becomes a list of files before echo is run at all, and echo doesn't have to do anything special to do what you'd expect it to. Do an echo "*" though and the shell will not substitute for *, and echo just prints it unchanged.
This User Gave Thanks to Corona688 For This Post:
# 4  
Old 03-08-2011
Yes...thanks for the semantics...as you say, a perhaps trivial but important distinction.

What I was missing was the fact that the '*' ( unquoted) expands to a list of files in the current directory. It had been mentioned up to now as a "simple" wild card, without the implication you mention. So ls * would match any string in the current directory. But, using * on it's own is what I was missing.

thank you.
# 5  
Old 03-08-2011
It also means that in places you might think of using ls * or echo * you can rip out ls or echo and use * by itself. You can use it almost anywhere a list of filenames makes sense, and you can also use it in places that make no sense if you're not careful. The shell's flexible enough to understand its own substitutions like that.
This User Gave Thanks to Corona688 For This Post:
# 6  
Old 03-09-2011
echo *

For additional detail, check the bash man page sections on special characters and expansions. The technical term is "globbing", and is also referred to in nearly any discussion of "regular expressions".
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

need simple echo question

Hi I want to use echo command as below echo 'dir=' $1 ' dir|file|home' i need output like below : echo 'dir=' $1 ' dir|file|home' pp13dff Output dir=pp13dff dir|file|home (4 Replies)
Discussion started by: asavaliya
4 Replies

2. Shell Programming and Scripting

Simple cat and echo question

Apologies, probably a really simple problem: I've got a text file (nh.txt) with this in it: user1 email1 email2 user2 email1 email2 etc With the following basic script: for tline in $(cat nh.txt) do echo "**********" echo $tline done ... (3 Replies)
Discussion started by: nelmo
3 Replies

3. Shell Programming and Scripting

Quick Question on Echo

Hey all, so I wrote a pretty simple script. It's viewable here: #!/bin/sh FILE=`ls $1` for filename in $FILE do echo $filename `echo $filename | tr e 5 ` doneSo, as you can see it gets the list from a command line specified directory. It then loops through, echoes the filename, and then... (7 Replies)
Discussion started by: lowExpectations
7 Replies

4. UNIX for Advanced & Expert Users

echo date question

Whats the difference between using date in these 2 methods? How exactly does the shell handle the first one different from the second one? $ echo $date $ echo $(date) Tue Aug 16 03:10:25 EDT 2011 (5 Replies)
Discussion started by: cokedude
5 Replies

5. Shell Programming and Scripting

With that logic this echoes "echo". Question about echo!

echo `echo ` doesn't echoes anything. And it's logic. But echo `echo `echo ` ` does echoes "echo". What's the logic of it? the `echo `echo ` inside of the whole (first) echo, echoes nothing, so the first echo have to echo nothing but echoes "echo" (too much echoing :P):o (2 Replies)
Discussion started by: hakermania
2 Replies

6. Shell Programming and Scripting

Echo question

How can I get the following to prompt me for new values for the dacsrtrspans? example I want to change the span #, sinktermmod, sinktermport, srctermdev and srctermport to new values. old: ADD DACSRTRSPAN-1-840 SINKTERMMODULE=8 SINKTERMPORT=94 SRCTERMDEV=1 SRCTERMPORT=1 SPANTYPE=T1_2... (0 Replies)
Discussion started by: tadzooks
0 Replies

7. OS X (Apple)

Question about cat and echo

Hello, I am trying to send text to a USB to serial adaptor and then to an external speech synthesizer. I tried using the cat and echo commands with no luck. I have gotten some audio output from my synthesizer using Kermit a terminal emulator, so I am pretty sure my synthesizer and my USB to serial... (1 Reply)
Discussion started by: jamesapp
1 Replies

8. Shell Programming and Scripting

An echo question

Why do get 0 when i enter " echo $? " (1 Reply)
Discussion started by: JamieMurry
1 Replies

9. UNIX for Dummies Questions & Answers

Simple 'echo' question

Hi, I would like to output the identical line to 2 text files, ie output='blah' echo $output > test1.txt echo $output > test2.txt Is there a way I could do that output with ONE command, ie output='blah' echo $output > test1.txt & test2.txt (I know that doesn't work) Thanks for any... (1 Reply)
Discussion started by: msb65
1 Replies

10. Shell Programming and Scripting

question about echo $$

hi all i have script echo $$ >tmp i understand thatecho $$ display some process id which is unique is that correct ? and my othere question is what is the maximum length that process-id can be ? the reason that i'm asking this is because i have a program which need to read the number of the... (1 Reply)
Discussion started by: naamas03
1 Replies
Login or Register to Ask a Question