если выполнение Ctrl+Q (как описано в другом Ответе) не работает, возможно, что Ваш TTY был искажен некоторой другой программой, которую Вы запустили. Попытайтесь работать reset
и затем clear
(или Ctrl+L) к initialze Ваш терминал.
$1
позиционный параметр; это расширится до первого аргумента, переданного сценарию. Существуют так же $2
, $3
...$9
, ${10}
, ${11}
,...
Специальный параметр "$@"
расширится до списка всех позиционных параметров.
Таким образом, можно сделать следующее:
sed -i 's/[ \t]*$//' "$@"
Если Вы хотите передать шарик/шаблон этому сценарию (или любой программе), этого нужно оставить или заключить в кавычки при вызове сценария - это - функция оболочки; это развернет любые шаблоны, прежде чем Ваш сценарий даже будет видеть его. Этому случаю не должно быть нужно это - оболочка может развернуть шаблон и результаты того расширения, которому все передаются sed
.
Мне легко просто использовать sed с xargs следующим образом:
find . -name "*.xml" | xargs sed -i 's/[ \t]*$//'
find . -type f | grep cc | xargs sed -i 's/[ \t]*$//'
echo "$@"
. Используя параметр не изменяет его всегда, таким образом, можно сослаться$@
(или любой другой параметр: позиционный, особенный или не) как много раз, как Вы хотите. – Shawn J. Goff 27.10.2011, 01:09-i.bak
, также... не говоря уже о том, что иногда я сталкиваюсь с некоторым вариантомsed
без-i
:)... +1, все еще. – 0xC0000022L 22.02.2013, 22:26sed
это поставлется с OS X. Вместо этого установкаgnu-sed
(brew install gnu-sed
) и заменаsed
сgsed
в команде. спасибо – Robert Audi 02.04.2014, 15:34