Sponsored Content
Top Forums UNIX for Advanced & Expert Users What's your most useful shell? Post 302081628 by phrazz on Wednesday 26th of July 2006 04:01:56 PM
Old 07-26-2006
KornShell/BASH/perl rule, others drool

Ya know when you ask "most useful", it brings up the YMMV disclaimers. Anyhow, I've been programming shells for a couple dozen years or so and I've used all of the ones listed and about that many more. You can write programs in all the shells, but you'll have the best durability and portability by sticking with Bourne-flavored shells (KornShell, BASH and Bourne if you're hard-core).

Shell comparisons get "religious" and UNIX bigots like me are always going to emphasize why the other shells suck. So, my disdain of the C Shell may be a little overblown, but it's based on many years of trying to work around limitations of C Shell that don't exist on KornShell (et al.).

BASH is becoming more ubiquitious (since it's the standard on Linux), but KornShell is now a standard on AIX, Solaris, HP/UX, and most other major UNIX flavors. BASH is slightly more feature-laden than Kornshell, but at a certain point when you get really tricky, you'll want to use Perl (fancy data structures, infinite variety of modules, more powerful parser and definitely better performance for complex algorithms).

One of the most infamous treatises on shell flavor comparisons is by the illustrious Tom Christiansen. This is somewhat outdated, but really fun to read:

http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/

Anyhow, many of these problems are fixed in T Shell, Z Shell and Whatever Shell, but the point is if you want a standard shell, stick with POSIX (ie KornShell). Anyways, Real programmers use perl. Smilie

If you go the KornShell route, pick up "The New KornShell Command and Programming Language (by Bolsky & Korn). If you're running Linux, keep it easy and start with BASH (various O'Reilly books on shells are superb also).

-Phrazz
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to run unix commands in a new shell inside a shell script?

Hi , I am having one situation in which I need to run some simple unix commands after doing "chroot" command in a shell script. Which in turn creates a new shell. So scenario is that - I need to have one shell script which is ran as a part of crontab - in this shell script I need to do a... (2 Replies)
Discussion started by: hkapil
2 Replies

2. AIX

Difference between writing Unix Shell script and AIX Shell Scripts

Hi, Please give me the detailed Differences between writing Unix Shell script and AIX Shell Scripts. Thanks in advance..... (0 Replies)
Discussion started by: haroonec
0 Replies

3. Linux

How to Start a Shell as Login shell instead of ordinary shell

Hi I tried with bash --login option. but the output is siva:~$ bash --login siva:~$ is there any way to make the shell ask for user id and password ( and login as different user instead of using sudo / su ) Thx in advance Siva (3 Replies)
Discussion started by: Sivaswami
3 Replies

4. Shell Programming and Scripting

Help need to make a shell script run for ffmpeg vhook watermaking in shell

i have a small problem getting a batxh shell script to run in shell this is the code the problem seems to be centered around the ffmpeg command, something maybe to do with the ' ' wrapping around the vhook part command this is a strange problem , if i take the ffmpeg command and... (1 Reply)
Discussion started by: wingchun22
1 Replies

5. Shell Programming and Scripting

How to run cmds after changing to a new env (shell) in a shell script

Hi, I am using HP-UNIX. I have a requirement as below I have to change env twice like: cadenv <env> cadenv <env> ccm start -d /dbpath ccm tar -xvf *.tar ccm rcv .... mv *.tar BACKUP but after I do the first cadenv <env> , I am unable to execute any of the later commands . ... (6 Replies)
Discussion started by: charlei
6 Replies

6. Shell Programming and Scripting

simple shell - how to get a parameter typed in a shell script

Hi, I am new to unix and using linux 7.2. I would like to create a script that would make it easyer for me to run my java programms. At the moment I have to type java myJavaprogram I am trying to write a script that will allow me to type something like this "myscript myJavaprogram" or maybe... (4 Replies)
Discussion started by: cmitulescu
4 Replies

7. Shell Programming and Scripting

calling 'n' number of shell scripts based on dependency in one shell script.

Hello gurus, I have three korn shell script 3.1, 3.2, 3.3. I would like to call three shell script in one shell script. i m looking for something like this call 3.1; If 3.1 = "complete" then call 3.2; if 3.2 = ''COMPlete" then call 3.3; else exit The... (1 Reply)
Discussion started by: shashi369
1 Replies

8. Shell Programming and Scripting

Any shell or hack that makes the shell command line take vi commands?

basically i'm tired of hitting the left arrow a few dozen times when correcting a mistake or modifying a history command i'd like to use vim style key shortcuts while on the command line so that a 55 moves the cursor 55 places to the left... and i want all the other vi goodies, search of... (3 Replies)
Discussion started by: marqul
3 Replies

9. UNIX for Dummies Questions & Answers

Shell script to read lines in a text file and filter user data Shell Programming and Scripting

sxsaaas (3 Replies)
Discussion started by: VikrantD
3 Replies

10. Shell Programming and Scripting

Pass C shell array to another C shell script(csh) and shell(sh)

Dear Friends, Please help me on this my script name is send.csh In this i have written the statement like this set args = ( city state country price ) I want to pass this array to another c shell called receiver.csh. and i want to use it in this c shell or how to pass to... (2 Replies)
Discussion started by: SA_Palani
2 Replies
FG(P)							     POSIX Programmer's Manual							     FG(P)

NAME
fg - run jobs in the foreground SYNOPSIS
fg [job_id] DESCRIPTION
If job control is enabled (see the description of set -m), the fg utility shall move a background job from the current environment (see Shell Execution Environment ) into the foreground. Using fg to place a job into the foreground shall remove its process ID from the list of those "known in the current shell execution envi- ronment''; see Asynchronous Lists . OPTIONS
None. OPERANDS
The following operand shall be supported: job_id Specify the job to be run as a foreground job. If no job_id operand is given, the job_id for the job that was most recently sus- pended, placed in the background, or run as a background job shall be used. The format of job_id is described in the Base Defini- tions volume of IEEE Std 1003.1-2001, Section 3.203, Job Control Job ID. STDIN
Not used. INPUT FILES
None. ENVIRONMENT VARIABLES
The following environment variables shall affect the execution of fg: LANG Provide a default value for the internationalization variables that are unset or null. (See the Base Definitions volume of IEEE Std 1003.1-2001, Section 8.2, Internationalization Variables for the precedence of internationalization variables used to determine the values of locale categories.) LC_ALL If set to a non-empty string value, override the values of all the other internationalization variables. LC_CTYPE Determine the locale for the interpretation of sequences of bytes of text data as characters (for example, single-byte as opposed to multi-byte characters in arguments). LC_MESSAGES Determine the locale that should be used to affect the format and contents of diagnostic messages written to standard error. NLSPATH Determine the location of message catalogs for the processing of LC_MESSAGES . ASYNCHRONOUS EVENTS
Default. STDOUT
The fg utility shall write the command line of the job to standard output in the following format: "%s ", <command> STDERR
The standard error shall be used only for diagnostic messages. OUTPUT FILES
None. EXTENDED DESCRIPTION
None. EXIT STATUS
The following exit values shall be returned: 0 Successful completion. >0 An error occurred. CONSEQUENCES OF ERRORS
If job control is disabled, the fg utility shall exit with an error and no job shall be placed in the foreground. The following sections are informative. APPLICATION USAGE
The fg utility does not work as expected when it is operating in its own utility execution environment because that environment has no applicable jobs to manipulate. See the APPLICATION USAGE section for bg . For this reason, fg is generally implemented as a shell regular built-in. EXAMPLES
None. RATIONALE
The extensions to the shell specified in this volume of IEEE Std 1003.1-2001 have mostly been based on features provided by the KornShell. The job control features provided by bg, fg, and jobs are also based on the KornShell. The standard developers examined the characteristics of the C shell versions of these utilities and found that differences exist. Despite widespread use of the C shell, the KornShell versions were selected for this volume of IEEE Std 1003.1-2001 to maintain a degree of uniformity with the rest of the KornShell features selected (such as the very popular command line editing features). FUTURE DIRECTIONS
None. SEE ALSO
Asynchronous Lists , Shell Execution Environment , bg , kill() , jobs , wait() COPYRIGHT
Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1, 2003 Edition, Standard for Information Technol- ogy -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group. In the event of any discrepancy between this version and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at http://www.opengroup.org/unix/online.html . IEEE
/The Open Group 2003 FG(P)
All times are GMT -4. The time now is 05:14 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy