В bash вы можете написать такую функцию-оболочку.
function scp {
if grep -q ':[^ $]' <<< "$*" ; then
command "${FUNCNAME[0]}" "$@"
else
echo "missing or invalid hostname:path in scp command"
return 1
fi
}
Это очень грубый пример, все, что он делает, это проверяет наличие :
, за которым следует хотя бы один не -символ пробела в командной строке (, что достаточно для доказательства --концептуальный пример, но неподходящий для реального -использования в мире ). Если есть, запускает команду scp
. Если нет, выводится сообщение об ошибке и возвращается с кодом выхода 1.
Или вы можете написать это в виде скрипта, -в любом случае это не имеет большого значения.
Кстати,Я сказал «В bash» выше, потому что я тестировал вышеуказанную функцию только в bash. Это не означает, что это может сделать только bash. Большинство других реализаций sh позволяют вам делать то же самое или подобное. Синтаксис может незначительно отличаться, и вам может потребоваться жесткий -код command scp...
, а не более общий command "${FUNCNAME[0]}..."
.
PS :Я не берусь судить о том, "должен ли" вести себя scp таким образом или нет. Это вам решать по вашей собственной системе. Однако зависимость от подобных вещей ставит вас в крайне невыгодное положение, когда вам приходится работать в системе без всех ваших пользовательских хаков/костылей.
Используйте опцию -P
(запретить создание маркеров линий):
gcc -P -E -xc input > output
Другими интересными опциями являются -C
и -fpreprocessed
; вы можете найти их все на справочной странице gcc(1)
.