02-28-2009
Exclude Certain Entries from Piped or Redirected Output?
I want to execute a command something like:
find / -name "jni.h"
and I want to direct the output of that command to some type of
filter that will leave out all the lines reporting inaccessible
directories (permission unavailable). Is this a pipe or a redirect?
For example, output like the below is not useful to me:
$ find / -name "jni.h"
find: /.fseventsd: Permission denied
find: /.Spotlight-V100: Permission denied
find: /.Trashes: Permission denied
^C
I have been looking over awk, sed, grep and the like to no avail.
I know this is possible. I did it years ago when I worked in
a command line development environment but I'm having trouble
finding it again.
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
I have an application which has a lot of cout & cerr statements.
This application also opens a log file (for eg a.log).
When this application is run from the inittab file as follows
/bin/sh -c " . /etc/timezone; exec /test"
all the cout & cerr statements are printed in the log file... (1 Reply)
Discussion started by: soorajmu
1 Replies
2. Shell Programming and Scripting
Hello Everyone,
I have an option for users in my shell script to create log file. So if user saying “yes” on it, I'm redirecting all output to log file by doing this: > /output.log. However I would like the output being displayed on the screen at the same time. Is it possible? If yes, does anybody... (2 Replies)
Discussion started by: slavam
2 Replies
3. UNIX for Dummies Questions & Answers
I have to confirm that an engine was not able to run. In the output below you see that it indeed got errors, but it didn't send those messages to the output file. When I run the same thing with a different executable it works. So does this mean something in the executable could cause it not to... (7 Replies)
Discussion started by: brdholman
7 Replies
4. Shell Programming and Scripting
Hi all,
I would like to store the output of a command in a variable and output it to the console at the same time. This is working fine using the following construct
var=`command | tee /dev/tty`
I use this in some scripts to display the output of the command on the console and, at the same... (2 Replies)
Discussion started by: script_man
2 Replies
5. Shell Programming and Scripting
Hello,
There is pipe chain and I want concacenate piped data with some variable:
balh blah| ... $var1
What command I should use instead ... to concatenate piped output with $var1. I think I coud solve this using temp var - but could it be done in one line like sample above ?
thanks... (4 Replies)
Discussion started by: vilius
4 Replies
6. Shell Programming and Scripting
Currently, i am trying to create a simple robust script that is intended to move the contents of a given source directory to a target directory. Optionally, the script should allow to either move the whole source dir content, or dotfiles only, or visible files only. I am aware the target directory... (0 Replies)
Discussion started by: shells_bells
0 Replies
7. Shell Programming and Scripting
hi
i have a script named mount.sh under the location /data/scripts/ in my aix box
i want this script this to be run everyday morning at 04:45 AM and the output of the script should be piped to a file
how to do this ? (3 Replies)
Discussion started by: samsungsamsung
3 Replies
8. UNIX and Linux Applications
Hi,
Pls check that '|' and '+' present in Step-1 are not copied to log file in Step-3.
Pls suggest how to get the exact output from Step-1 (i.e. with out losing '|' and '+') in to a log file
~Thanks
Step-1: Execute command
> mysql -utest -ptest -htesthost testdb -e "select * from... (3 Replies)
Discussion started by: newbielgn
3 Replies
9. Shell Programming and Scripting
Hello,
How can I efficiently cat piped output with another file?
> (awk command) | cat file1 (piped output)
Thanks! (11 Replies)
Discussion started by: palex
11 Replies
10. UNIX for Dummies Questions & Answers
Hi All,
Please could anyone advise what the purpose of the dot syntax in the following command means:
tar -cvf ${WORKING_BACKUP_ROOT}/${TAR_ARCHIVE_FILE} . >/${BACKUP_ROOT}/${ARCHIVE_LOG}
Many thanks (2 Replies)
Discussion started by: daveu7
2 Replies
LEARN ABOUT DEBIAN
shell-quote
SHELL-QUOTE(1p) User Contributed Perl Documentation SHELL-QUOTE(1p)
NAME
shell-quote - quote arguments for safe use, unmodified in a shell command
SYNOPSIS
shell-quote [switch]... arg...
DESCRIPTION
shell-quote lets you pass arbitrary strings through the shell so that they won't be changed by the shell. This lets you process commands
or files with embedded white space or shell globbing characters safely. Here are a few examples.
EXAMPLES
ssh preserving args
When running a remote command with ssh, ssh doesn't preserve the separate arguments it receives. It just joins them with spaces and
passes them to "$SHELL -c". This doesn't work as intended:
ssh host touch 'hi there' # fails
It creates 2 files, hi and there. Instead, do this:
cmd=`shell-quote touch 'hi there'`
ssh host "$cmd"
This gives you just 1 file, hi there.
process find output
It's not ordinarily possible to process an arbitrary list of files output by find with a shell script. Anything you put in $IFS to
split up the output could legitimately be in a file's name. Here's how you can do it using shell-quote:
eval set -- `find -type f -print0 | xargs -0 shell-quote --`
debug shell scripts
shell-quote is better than echo for debugging shell scripts.
debug() {
[ -z "$debug" ] || shell-quote "debug:" "$@"
}
With echo you can't tell the difference between "debug 'foo bar'" and "debug foo bar", but with shell-quote you can.
save a command for later
shell-quote can be used to build up a shell command to run later. Say you want the user to be able to give you switches for a command
you're going to run. If you don't want the switches to be re-evaluated by the shell (which is usually a good idea, else there are
things the user can't pass through), you can do something like this:
user_switches=
while [ $# != 0 ]
do
case x$1 in
x--pass-through)
[ $# -gt 1 ] || die "need an argument for $1"
user_switches="$user_switches "`shell-quote -- "$2"`
shift;;
# process other switches
esac
shift
done
# later
eval "shell-quote some-command $user_switches my args"
OPTIONS
--debug
Turn debugging on.
--help
Show the usage message and die.
--version
Show the version number and exit.
AVAILABILITY
The code is licensed under the GNU GPL. Check http://www.argon.org/~roderick/ or CPAN for updated versions.
AUTHOR
Roderick Schertler <roderick@argon.org>
perl v5.8.4 2005-05-03 SHELL-QUOTE(1p)