Sponsored Content
Full Discussion: BASH Corrupts Files?
Top Forums Shell Programming and Scripting BASH Corrupts Files? Post 302942722 by Don Cragun on Thursday 30th of April 2015 07:16:32 PM
Old 04-30-2015
That isn't a bash ism. The set -C (aka set -o noclobber) option and its interaction with the:
Code:
fd> file

and:
Code:
fd>| file

redirection operators is required in all POSIX conforming shells...
Code:
#!/bin/bash
options=$(set +o)	# Save current shell options
set -C			# Set noclobber option (synonym for "set -o noclobber"
if > xyzzy		# Fail if file already exists
then	echo '> xyzzy succeeded'
else	echo '> xyzzy failed'
fi
if > xyzzy		# Fail if file already exists
then	echo '2nd > xyzzy succeeded'
else	echo '2nd > xyzzy failed'
fi
if >| xyzzy		# Succeed even if file already exists (as long as you
			# have write permission)
then	echo '>| xyzzy succeeded'
else	echo '>| xyzzy failed'
fi
$options		# Reset original shell options
rm -f xyzzy		# Remove test file

produces output similar to:
Code:
> xyzzy succeeded
tester: line 8: xyzzy: cannot overwrite existing file
2nd > xyzzy failed
>| xyzzy succeeded

I said similar to because the format of the diagnostic message can vary slightly from shell to shell and system to system.
These 2 Users Gave Thanks to Don Cragun For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

.bash files

i have been interacting a little with the forum in the last couple of days and to tell the truth I have learnt quite a bit from some of the posts that I have read accessed or posted.. from some of the books that I have read I have a pretty good idea about shells, profile files, .bashrc, etc, etc... (4 Replies)
Discussion started by: moxxx68
4 Replies

2. Shell Programming and Scripting

bash script working for small size files but not for big size files.

Hi, I have one file stat. Stat file contents are as follows: for example. H50768020040913,00260100,507680,13,0000000643,0000000643,00000,0000 H50769520040808,00260100,507695,13,0000000000,0000000000,00000,0000 H50770620040611,00260100,507706,13,0000000000,0000000000,00000,0000 Now i... (1 Reply)
Discussion started by: davidpreml
1 Replies

3. UNIX for Advanced & Expert Users

Secure FTP corrupts file

Sun Microsystems Inc. SunOS 5.9 I am hoping someone has come across this before. I have a script that transfers several gz files via Secure FTP across to an SFTP server on an NT machine. The transfers show as successful: pack12_200812160337.tar.gz | 768kB | 768kB/s | ETA: 00:00:01 | 37%... (5 Replies)
Discussion started by: ronnie_uk
5 Replies

4. Shell Programming and Scripting

[bash] Parse files

Hi I've 2 folder A and B, they have files with the same name but different content. I mean A contain---------> aa.txt, bb.txt, cc.txt B contain---------> aa.txt, bb.txt, cc.txt but aa.txt in A has different content from aa.txt in B. I'd like to parse the homonyms files in... (7 Replies)
Discussion started by: Dedalus
7 Replies

5. Shell Programming and Scripting

Using bash to separate files files based on parts of a filename

Hey guys, Sorry for the basic question but I have a lot of files that I want to separate into groups based on filenames which I can then cat together. Eg I have: (a_b_c.txt) WB34_2_SLA8.txt WB34_1_SLA8.txt WB34_1_DB10.txt WB34_2_DB10.txt WB34_1_SLA8.txt WB34_2_SLA8.txt 77_1_SLA8.txt... (1 Reply)
Discussion started by: Breentax
1 Replies

6. Shell Programming and Scripting

LFTP corrupts special characters

Hi, I am trying to use lftp to mirror two directories: one on my windows pc and one on a zOS system. One file within the local directory has special characters for different languages, e.g. pou¶ít (czech). When I run lftp, the characters are incorrect. I am transferring in ASCII mode, and the... (5 Replies)
Discussion started by: adam.wis
5 Replies

7. UNIX for Dummies Questions & Answers

Bash script to sort files

I've got a disorganized list of items and quantities for each. I've been using a combination of grep and sort to find out how much to buy of each item. I'm tired of having to constantly using these commands so I've been trying to write a shell script to make it easier, but I can't figure out how... (3 Replies)
Discussion started by: PTcharger
3 Replies

8. Shell Programming and Scripting

Bash: join 2 files

Hello ! I want to join 2 files. They look like this: KE340296.1 1 0/0:11 KE340296.1 2 0/0:12 KE340296.1 6 0/1:13 KE340297.1 1 0/1:14 KE340297.1 3 0/1:15 KE340297.1 4 0/1:16 and KE340296.1 1 0/0:21 KE340296.1 2 0/0:22 KE340296.1 3... (4 Replies)
Discussion started by: MumuGB
4 Replies

9. Shell Programming and Scripting

Bash script deleting my files, and editing files in subdirectories question

#!/bin/bash # name=$1 type=$2 number=1 for file in ./** do if then filenumber=00$number elif then filenumber=0$number fi tempname="$name""$filenumber"."$type" if (4 Replies)
Discussion started by: TheGreatGizmo
4 Replies

10. Shell Programming and Scripting

Bash Looking into files question

I have a bunch of files that are messages in my directory. Each message has a date located in the file. How can I look into each file and find the date? Thank you for any help (7 Replies)
Discussion started by: totoro125
7 Replies
SHAR(1) 						      General Commands Manual							   SHAR(1)

NAME
shar - create shell archives SYNOPSIS
shar [ options ] file ... shar -S [ options ] DESCRIPTION
Shar creates "shell archives" (or shar files) which are in text format and can be mailed. These files may be unpacked later by executing them with /bin/sh. The resulting archive is sent to standard out unless the -o option is given. A wide range of features provide exten- sive flexibility in manufacturing shars and in specifying shar "smartness". Archives may be "vanilla" or comprehensive. OPTIONS
Options have a one letter version starting with - or a long version starting with --. The exception is --help, --version, --no-i18n and --print-text-domain-dir which does not have short versions. Mandatory arguments to long options are mandatory for short options too. Options can be given in any order. Some options depend on each other: The -o option is required if the -l or -L option is used. The -n option is required if the -a option is used. See -V below. Giving feedback: --help Print a help summary on standard output, then immediately exits. --version Print the version number of the program on standard output, then immediately exits. -q --quiet --silent Do not output verbose messages locally when producing the archive. Selecting files: -p --intermix-type Allow positional parameter options. The options -B, -T, -z and -Z may be embedded, and files to the right of the option will be processed in the specified mode. -S --stdin-file-list Read list of files to be packed from the standard input rather than from the command line. Input must be in a form similar to that generated by the find command, one filename per line. This switch is especially useful when the command line will not hold the list of files to be packed. For example: find . -type f -print | sort | shar -S -Z -L50 -o /somewhere/big If -p is specified on the command line, then the options -B, -T, -z and -Z may be included in the standard input (on a line separate from filenames). The maximum number of lines of standard input, file names and options, may not exceed 1024. Splitting output: -o XXX --output-prefix=XXX Save the archive to files XXX.01 thru XXX.nn instead of sending it to standard out. Must be used when the -l or the -L switches are used. -l XX --whole-size-limit=XX Limit the output file size to XXk bytes but don't split input files. -L XX --split-size-limit=XX Limit output file size to XXk bytes and split files if necessary. The archive parts created with this option must be unpacked in correct order. Controlling the shar headers: -n name --archive-name=name Name of archive to be included in the header of the shar files. See the -a switch. -s who@where --submitter=who@where Override automatically determined submitter name. -a --net-headers Allows automatic generation of headers: Submitted-by: who@where Archive-name: <name>/part## The <name> must be given with the -n switch. If name includes a '/' "/part" isn't used. Thus: -n xyzzy produces: xyzzy/part01 xyzzy/part02 -n xyzzy/patch produces: xyzzy/patch01 xyzzy/patch02 -n xyzzy/patch01. produces: xyzzy/patch01.01 xyzzy/patch01.02 The who@where can be explicitly stated with the -s switch if the default isn't appropriate. Who@where is essentially built as `whoami`@`uname`. -c --cut-mark Start the shar with a cut line. A line saying 'Cut here' is placed at the start of each output file. -t --translate Translate messages in the script. If you have set the LANG environment variable, messages printed by shar will be in the specified language. The produced script will still be emitted using messages in the lingua franca of the computer world: English. This option will cause the script messages to appear in the languages specified by the LANG environment variable set when the script is produced. Selecting how files are stocked: -M --mixed-uuencode Mixed mode. Determine if the files are text or binary and archive correctly (default). Files found to be binary are uudecoded prior to packing (USE OF UUENCODE IS NOT APPRECIATED BY MANY ON THE NET). -T --text-files Treat all files as text. -B --uuencode Treat all files as binary, use uuencode prior to packing. This increases the size of the archive. The recipient must have uudecode in order to unpack. (USE OF UUENCODE IS NOT APPRECIATED BY MANY ON THE NET). -z --gzip Gzip and uuencode all files prior to packing. The recipient must have uudecode and gzip in order to unpack (USE OF UUENCODE AND GZIP IS NOT APPRECIATED BY MANY ON THE NET). -g LEVEL --level-for-gzip=LEVEL When doing compression, use '-LEVEL' as a parameter to gzip. Default is 9. The -g option turns on the -z option by default. -Z --compress Compress and uuencode all files prior to packing. The recipient must have uudecode and compress in order to unpack (USE OF UUENCODE AND COMPRESS IS NOT APPRECIATED BY MANY ON THE NET). Option -C is synonymous to -Z, but is being deprecated. -b BITS --bits-per-code=BITS When doing compression, use '-bBITS' as a parameter to compress. The -B option turns on the -Z option by default. Default value is 12. Protecting against transmission errors: -w --no-character-count Do NOT check each file with 'wc -c' after unpack. The default is to check. -D --no-md5-digest Do NOT use 'md5sum' digest to verify the unpacked files. The default is to check. -F --force-prefix Forces the prefix character (normally 'X' unless the parameter to the -d option starts with 'X') to be prepended to every line even if not required. This option may slightly increase the size of the archive, especially if -B or -Z is used. -d XXX --here-delimiter=XXX Use XXX to delimit the files in the shar instead of SHAR_EOF. This is for those who want to personalize their shar files. Producing different kinds of shars: -V --vanilla-operation Produce "vanilla" shars which rely only upon the existence of sed and echo in the unsharing environment. In addition, "if test" must also be supported unless the -x option is used. The -V silently disables options offensive to the "network cop" (or "brown shirt"), but does warn you if it is specified with -B, -z, -Z, -p or -M (any of which does or might require uudecode, gzip or com- press in the unsharing environment). -P --no-piping Use temporary files instead of pipes in the shar file. -x --no-check-existing Overwrite existing files without checking. If neither -x nor -X is specified, the unpack will check for and not overwrite existing files when unpacking the archive. If -c is passed as a parameter to the script when unpacking: sh archive -c then existing files will be overwritten unconditionally. -X --query-user When unpacking, interactively ask the user if files should be overwritten. (DO NOT USE FOR SHARS SUBMITTED TO THE NET). -m --no-timestamp Avoid generating 'touch' commands to restore the file modification dates when unpacking files from the archive. -Q --quiet-unshar Verbose OFF. Disables the inclusion of comments to be output when the archive is unpacked. -f --basename Restore by filename only, rather than path. This option causes only file names to be used, which is useful when building a shar from several directories, or another directory. Note that if a directory name is passed to shar, the substructure of that directory will be restored whether -f is specified or not. Internationalization: --no-i18n Do not produce internationalized shell archives, use default English messages. By default, shar produces archives that will try to output messages in the unpackers preferred language (as determined by the LANG/LC_MESSAGES environmental variables) when they are unpacked. If no message file for the unpackers language is found at unpack time, messages will be in English. --print-text-domain-dir Prints the directory shar looks in to find messages files for different languages, then immediately exits. EXAMPLES
shar *.c > cprog.shar # all C prog sources shar -Q *.[ch] > cprog.shar # non-verbose, .c and .h files shar -B -l28 -oarc.sh *.arc # all binary .arc files, into # files arc.sh.01 thru arc.sh.NN shar -f /lcl/src/u*.c > u.sh # use only the filenames WARNINGS
No chmod or touch is ever generated for directories created when unpacking. Thus, if a directory is given to shar, the protection and mod- ification dates of corresponding unpacked directory may not match those of the original. If a directory is passed to shar, it may be scanned more than once. Therefore, one should be careful not change the directory while shar is running. Be careful that the output file(s) are not included in the inputs or shar may loop until the disk fills up. Be particularly careful when a directory is passed to shar that the output files are not in that directory (or a subdirectory of that directory). Use of the -B, -z or -Z, and especially -M, may slow the archive process considerably, depending on the number of files. Use of -X produces shars which WILL cause problems with many unshar procedures. Use this feature only for archives to be passed among agreeable parties. Certainly, -X is NOT for shell archives which are to be submitted to Usenet. Usage of -B, -z or -Z in net shars will cause you to be flamed off the earth. Not using -m or not using -F may also get you occasional complaints. SEE ALSO
unshar(1) DIAGNOSTICS
Error messages for illegal or incompatible options, for non-regular, missing or inaccessible files or for (unlikely) memory allocation failure. AUTHORS
The shar and unshar programs is the collective work of many authors. Many people contributed by reporting problems, suggesting various improvements or submitting actual code. A list of these people is in the THANKS file in the sharutils distribution. REPORTING BUGS
Report bugs to <bug-gnu-utils@gnu.org>. Please put sharutils or uuencode in the subject line. It helps to spot the message. July 1, 2005 SHAR(1)
All times are GMT -4. The time now is 10:49 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy