Есть ли способ перезаписать канал в linux bash?

Функция была бы более подходящей.

В Борне -как снаряды:

place() { cp -- "$1" /home/matt/thefile; }

В оболочках, отличных от bash, yashи posh, вы можете упростить его до:

place() cp -- "$1" /home/matt/thefile

Вfish:

function place
  cp -- $argv[1] /home/matt/thefile
end

в rc/es:

fn place {
  cp -- $1 /home/matt/the/file
}

Именно в (t)cshвам нужно будет использовать alias, так как эти оболочки не имеют функций (это также csh, которые в первую очередь ввели псевдонимы ). В (t)cshвы можете использовать подстановку истории, чтобы разрешить передачу какого-либо аргумента псевдонимам.

alias place 'cp -- \!:1 /home/matt/the/file'

При вызове как place myfile.txtони копировали myfile.txtв ~/thefile

.

Если вам нужно что-то, что работает независимо от оболочки пользователя, а не добавление специальной функции/псевдонима оболочки -в свой файл настройки оболочки, вы должны создать сценарий, который вы добавите в каталог, который находится в их пути поиска команд. Что-то вроде:

#! /bin/sh -
exec cp -- "${1?Please give the file to copy as argument}" /home/matt/thefile
0
09.12.2019, 17:24
1 ответ

|не является командой. Так что это невозможно.

Но вы можете имитировать то, что хотите, используя historyи злоупотребляя $PS1:

PS1="$PS1"'`(date;history | tail -n1 | perl -ne "s/\|.*// and print") >> ~/pipe.log`'
1
28.01.2020, 02:38

Теги

Похожие вопросы