LinuxQuestions.org
Share your knowledge at the LQ Wiki.
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Non-*NIX Forums > Programming
User Name
Password
Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.

Notices


Reply
  Search this Thread
Old 10-25-2005, 03:53 AM   #1
flavor
LQ Newbie
 
Registered: Nov 2002
Location: Republic Of China
Posts: 9

Rep: Reputation: 0
How The Unix OS translate the shell command


for example: ls -a

how the unix read "ls" and "-a"

My firend think unix read the command with regex

I don't think so.

Last edited by flavor; 10-25-2005 at 03:54 AM.
 
Old 10-25-2005, 04:53 AM   #2
murugesan
Member
 
Registered: May 2003
Location: Bangalore ,Karnataka, India, Asia, Earth, Solar system, milky way galaxy, black hole
Distribution: murugesan openssl
Posts: 181

Rep: Reputation: 29
http://<br /> http://xxki.com/note/...ms#content_1_2

Yes the shell takes the parameters as regular expressions if they are specified in correct format.

For example

Code:
int main(int argc,char*argv[])
{
        int i;
        for(i=0;i<argc;i++)
                printf("%s\n",argv[i]);
}
after compiling this program if you run

$ a.out *
the output will show the files in the current directory. This is because shell interprets *
as an operator which means

"Matches zero or more of the preceding characters or expressions. Example: ho*p matches hp, hop and hoop."
 
Old 10-25-2005, 08:58 AM   #3
bigearsbilly
Senior Member
 
Registered: Mar 2004
Location: england
Distribution: Mint, Armbian, NetBSD, Puppy, Raspbian
Posts: 3,515

Rep: Reputation: 239Reputation: 239Reputation: 239
depends which shell I should imagine.

Bash i think reads with readline
 
Old 10-25-2005, 11:51 AM   #4
jonaskoelker
Senior Member
 
Registered: Jul 2004
Location: Denmark
Distribution: Ubuntu, Debian
Posts: 1,524

Rep: Reputation: 47
bigearsbilly: I think OP meant how it's parsed, not read.

I don't know, since I haven't hacked on bash, but you could always try #bash on freenode (assuming you use bash). It is, of course, an implementation detail of the individual shell.

My best guess would be that they use flex and yacc, but I don't know.

hth --Jonas
 
Old 10-25-2005, 12:02 PM   #5
lowpro2k3
Member
 
Registered: Oct 2003
Location: Canada
Distribution: Slackware
Posts: 340

Rep: Reputation: 30
A shell is simple enough in theory, but remember over time they got the simple stuff working and added more complex features (like shell expansion).

Basically a shell runs in a loop, writing a prompt to stdout, reading a line of any length to stdin, breaking apart the command, then forks + exec's the correct process.

eg:

- step 1 (print prompt)
[user@bash ~]$

- step 2 (read a line until <ENTER> is pressed - '\n')
[user@bash ~]$ ls -l /usr/lib

- step 3 (shell determines if this is a 'built-in' or external command)
- step 4 (realizes 'ls' is an external program)
- step 5 (forks new process, exec's ls and passes all arguments to ls)
- step 6 (ls runs, processes its own arguments, prints output to stdout)
[user@bash ~]$ ls -l /usr/lib
output of all files in /usr/lib

- step 7 (bash takes over control when ls finishes executing, prints prompt)
[user@bash ~]$

- step 8 (bash waits for next command to be entered until '\n' is pressed)


Its more complex than that, but thats the jist of it. Remember bash is filled with features, so it has to determine aliases, execute programs inline, set up pipes (I think), perform wildcard expansion and more. There is an order to this, if you're really interested I learned alot of this from a shell programming book. I forget most of it because it was for school and I was never as interested in bash as I was in other languages, but a good shell book or tutorial might help you understand the process.
 
  


Reply



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 Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
UNIX shell programming Tozilla Programming 39 02-26-2009 07:29 AM
unix shell script cxy0481 Programming 9 11-20-2005 08:15 AM
Can anybody really help me to create my own shell for linux or unix. sri_hassan Programming 2 10-10-2005 07:57 AM
Unix Shell Programming If Statement ']['HeBroken Programming 2 12-06-2004 03:21 PM
A Unix shell question a2715mt Linux - General 2 08-25-2004 03:42 PM

LinuxQuestions.org > Forums > Non-*NIX Forums > Programming

All times are GMT -5. The time now is 04:02 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration