02-14-2012
Thank you chihung for the fix.
So let me see if I understand this. I need to play tokenizer in my head to see this.
The parser sees the redirect token and sees that it is followed by a substitution string instead of something else like a directory path. Tokenizing on white-space (with parphrasing) it sees
... <stdout-redirect-append> <substitution-string>
instead of
... <stdout-redirect-append> <file-path> <stderr-redirect> <to-whereever-stdout-goes>
the <substitution-string> is internally processed as a <file-path> and since most characters, including spaces, can be in file names, the file name is "null 2>&1".
Subtle. A second parsing, after all string substitution would have reworked it, hence "eval".
Did I kinda get this right?
Thanks
John Morrison
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
First of all, hello there cOmMuNity ! :cool:
Well, I've got two basic questions:
1) In how many ways it's possible to create a file ?
I know one manner using "touch", other typing something like echo "" > file ...
The fact is that I need to overwrite the file if it exists, and touch... (8 Replies)
Discussion started by: 435 Gavea
8 Replies
2. UNIX for Advanced & Expert Users
when i write the following two statements :
cp /dev/NULL /clocal/mqbrkrs/user/mqsiadm/sanjay/dspmq_temp
cat /dev/NULL > /clocal/mqbrkrs/user/mqsiadm/sanjay/dspmq_temp
its gives me errors like :
cp: /dev/NULL: A file or directory in the path name does not exist.
cat : /dev/NULL can't open... (2 Replies)
Discussion started by: varungupta
2 Replies
3. Solaris
Hi, Anyone can help
My solaris 8 system has the following
/dev/null , /dev/tty and /dev/console
All permission are lrwxrwxrwx
Can this be change to a non-world write ??
any impact ?? (12 Replies)
Discussion started by: civic2005
12 Replies
4. Shell Programming and Scripting
Hi,
I am new into UNIX shell scripting and I am wondering what is the meaning of the below text which appears at the end of each line in the ".sh" file:
> /dev/null 2>&1
For example, the line below:
sh $HOME/stats/Rep777/Act_777.sh omc omc > /dev/null 2>&1
I know for sure what "sh... (10 Replies)
Discussion started by: salanalani
10 Replies
5. Shell Programming and Scripting
Does >/dev/null 2>&1 and 2>&1 >/dev/null mean the same? (4 Replies)
Discussion started by: proactiveaditya
4 Replies
6. UNIX for Dummies Questions & Answers
How are these two different? They both prevent output and error from being displayed. I don't see the use of the "&"
echo "hello" > /dev/null 2>&1
echo "hello" > /dev/null 2>1 (3 Replies)
Discussion started by: glev2005
3 Replies
7. Shell Programming and Scripting
why is this giving me errors?
i type this in: find / -name "something.txt" 2>/dev/null
i get the following error messages:
find: bad option 2
find: path-list predicate-list
:confused: (5 Replies)
Discussion started by: magiling
5 Replies
8. UNIX for Dummies Questions & Answers
Hi,
I'm currently using the following command to wipe clean a log file which can't be straight out RM'd:
cat /dev/null > server.log
I'm building this into a script and I'm current working on a command to run on each machine to do this automatically however I have multiple files so I need... (11 Replies)
Discussion started by: Deehem
11 Replies
9. UNIX for Dummies Questions & Answers
Hello.
When I run a .ksh that contains the command below, and there is no file available in the source location the "FILE_NAME_*.CSV not found" error is still being displayed.
FILEN=$(ssh ${SOURCE_SERV} "cd ${SOURCE_LOCATION} ;ls ${FILES}") 2> /dev/null.
This is interfering with the rest... (4 Replies)
Discussion started by: jimbojames
4 Replies
10. AIX
Hi Experts,
I Have a query. In one of my server I just came to know that there was /dev/null file which is a not a character file. Its just a normal file. I know the command to create the character file (/dev/null) but what is the procedure. Like should i delete /dev/null and create or... (7 Replies)
Discussion started by: jayadeava
7 Replies
LKSH(1) BSD General Commands Manual LKSH(1)
NAME
lksh -- Legacy Korn shell built on mksh
SYNOPSIS
lksh [-+abCefhiklmnprUuvXx] [-+o opt] [-c string | -s | file [args ...]]
DESCRIPTION
lksh is a command interpreter intended exclusive for running legacy shell scripts. It is built on mksh; refer to its manual page for details
on the scripting language.
LEGACY MODE
lksh has the following differences from mksh:
o lksh is not suitable for use as /bin/sh.
o There is no explicit support for interactive use, nor any command line editing code. Hence, lksh is not suitable as a user's login
shell, either; use mksh instead.
o The KSH_VERSION string identifies lksh as ``LEGACY KSH'' instead of ``MIRBSD KSH''.
o Some mksh specific extensions are missing; specifically, the -T command-line option.
o lksh always uses traditional mode for constructs like:
$ set -- $(getopt ab:c "$@")
$ echo $?
POSIX mandates this to show 0, but traditional mode passes through the errorlevel from the getopt(1) command.
o lksh, unlike AT&T UNIX ksh, does not keep file descriptors > 2 private.
o lksh parses leading-zero numbers as octal (base 8).
o Integers use the host C environment's long type, not int32_t. Unsigned arithmetic is done using unsigned long, not uint32_t. Neither
value limits nor wraparound is guaranteed. Dividing the largest negative number by -1 is Undefined Behaviour (but might work on 32-bit
and 64-bit long types).
o lksh only offers the traditional ten file descriptors to scripts.
SEE ALSO
mksh(1)
https://www.mirbsd.org/mksh.htm
https://www.mirbsd.org/ksh-chan.htm
CAVEATS
lksh tries to make a cross between a legacy bourne/posix compatibl-ish shell and a legacy pdksh-alike but ``legacy'' is not exactly speci-
fied. Parsing numbers with leading zero digits or ``0x'' is relatively recent in all pdksh derivates, but supported here for completeness.
It might make sense to make this a run-time option, but that might also be overkill.
The set built-in command does not have all options one would expect from a full-blown mksh or pdksh.
Talk to the MirOS development team using the mailing list at <miros-mksh@mirbsd.org> or the #!/bin/mksh (or #ksh) IRC channel at
irc.freenode.net (Port 6697 SSL, 6667 unencrypted) if you need any further quirks or assistance, and consider migrating your legacy scripts
to work with mksh instead of requiring lksh.
MirBSD February 11, 2013 MirBSD