Приведу пример интерактивной сессии:
$ echo 'a'
$ echo 'b' 'c' && echo !:1 # здесь пытаюсь получить 'b' во второй раз
В результате же будет подставлен 'a' из предыдущей команды. Как получить 'b'?
UPD1: Вопрос возник из следующей задачи: есть две команды, основная принимает 2 аргумета, вспомогательная только второй аргумент из основной и должна выполнятся только при её успешном выполнении. Появилось желание написать однострочник, в котором пришлось бы только менять необходимые аргументы и не повторять работу по набору повторяющихся аргументов.
UPD2: dojob () (echo "$1" "$2" && echo "$1"); dojob 'b' 'c'
вроде подходит под требования.