2014-12-19 3 views
0

У меня есть тестовый файл, который уже присутствует в каталоге, когда я используюКак получить приглашение при перенаправлении файла?

`cat > test` or `ls > test` 

Содержание в файле будет усечен, и данные будут потеряны, поэтому я хочу незамедлительное сообщение перед перенаправлением файл , Ваша помощь будет полезна.

Заранее спасибо.

+1

FYI: 'установить -C' (NoClobber) предотвратит вас от перезаписи файлов, как это. Вы можете перезаписать это с помощью '> |' ... Re: Question, просто используйте 'if [-f myfile]' с 'read', чтобы получить ответ ... – Carpetsmoker

+0

Я создал более полный пример в качестве ответа ... – Carpetsmoker

+0

@Carpetsmoker - Да, его работа, есть ли другой способ? И что такое 'set -C' ?? –

ответ

0

Примером может служить следующее:

#!/bin/sh 

# Prevent > from overwriting files, use >| to overwrite files anyway 
# It's good for safety to always enable this... 
set -C 

file=xxx 

# Test if file exist with -f 
if [ -f "$file" ]; then 
    echo "Overwrite $file? [Y/n]" 

    # Read user input 
    read answer 

    # Is the answer "n" or "N", we exit 
    # The default is to continue on any other input (you could change this, of course) 
    case "$answer" in 
     [nN]) exit 2 ;; 
    esac 
fi 

# Overwrite the file, we use >| because we set noclobber 
echo 'New' >| "$file" 
Смежные вопросы