John Doe
John Doe

Reputation: 338

Avoid error with cat command when src file doesn't exist

I am trying to copy content of file1 to file 2 using linux command

cat file1 > file2

file1 may or may not be available depending on different environments where the program is being run. What should be added to the command in case file1 is not available so that it doesn't return an error ? I have read that appending 2>/dev/null will not give error. While that's true, and I didn't get an error the command

cat file1 2>/dev/null > file2 made file2's previous content completely empty when file1 wasn't there. I don't want to lose the content of file2 in case file1 wasn't there and don't want an error to return.

Also in what other cases can the command fail and return an error ?

Upvotes: 6

Views: 9833

Answers (4)

hek2mgl
hek2mgl

Reputation: 158100

First, you wrote:

I am trying to copy content of file1 to file 2 using linux command

To copy content of file1 to file2 use the cp command:

if ! cp file1 file2 2>/dev/null ; then
    echo "file1 does not exist or isn't readable"
fi

Just for completeness, with cat:

I would pipe stderr to /dev/null and check the return value:

if ! cat file1 2>/dev/null > file2 ; then
    rm file2
    echo "file1 does not exist or isn't readable"
fi

Upvotes: 0

user8854776
user8854776

Reputation: 201

File1 is empty

File2 consists below content
praveen

Now I am trying to append the content of file1 to file2

Since file1 is empty to nullifying error using /dev/null so output will not show any error

cat file1 >>file 2>/dev/null

File2 content not got deleted

file2 content exsists
praveen 

If [ -f file1 ]
then
cat file  >> file2
else
cat file1 >>file 2>/dev/null
fi

Upvotes: 0

xfze
xfze

Reputation: 795

elaborating on @Ignacio Vazquez-Abrams :

if (test -a file1); then cat file1 > file2; fi

Upvotes: 0

Ignacio Vazquez-Abrams
Ignacio Vazquez-Abrams

Reputation: 799140

Test for file1 first.

[ -r file1 ] && cat ...

See help test for details.

Upvotes: 11

Related Questions