El archivo ya tiene una nueva línea al final, terminando la línea final. Cualquier cosa que se le agregue, por lo tanto, viene en otra línea. Deberá sobrescribir la nueva línea final, lo que no puede hacer con solo una redirección >>
. Probablemente el más fácil de usarsed
:
$ seq 1 4 | sed -e '$s,$,stuff/to/append,'
1
2
3
4stuff/to/append
Para que sed
modifique un archivo en el lugar -, use
sed -i -e '$s,$,stuff/to/append,' filename
(Los signos de dólar tienen dos significados allí. El primero $
es una dirección que controla en qué línea se ejecuta el siguiente comando, aquí significa la última línea. El segundo $
es la notación de expresiones regulares para el final de la línea.)
Para agregar a alguna otra línea que no sea la última, reemplace la primera $
con un número de línea o una coincidencia de patrón. Esto agregaría una cadena a cualquier línea que contengafoo
:
sed -i -e '/foo/ s,$,stuff/to/append,' filename
Tenga en cuenta que usé comas aquí como separadores para el comando s
. Las barras serían más comunes,pero el texto que se añadirá los contiene. El comando s
permite usar (casi )cualquier carácter.
Si tiene barras en el patrón utilizado para encontrar la línea correcta, puede usar algo como \,foo,
como dirección, es decir, comenzar con una barra invertida y usar cualquier separador que sea conveniente.
Существует множество различных способов выражения кода в командной строке оболочки или в строке сценария оболочки, которые могут привести к выполнению двоичного файла. Все они просто сводятся к запуску команды оболочки. Оболочка попытается запустить файл, если команда ссылается на файл. Эта попытка будет успешной, если у вас есть разрешение на выполнение файла. Файл может быть двоичным исполняемым файлом или сценарием, который ссылается на свой интерпретатор в первой строке (, которая начинается с "#!" )или файл может быть просто данными, такими как текст. Если он исполняемый в этот момент, он будет запущен или интерпретирован. Оболочка имеет множество способов выразить команду. Возможности безграничны.
Обратите внимание, как указал Спархок в комментариях , первые два примера делают в основном одно и то же (они вызывают программу, используя ее путь вместо поиска пути )и следуя этой логике, количество способов выполнения данной программы практически бесконечно.
В любом случае, я бы сказал, что есть как минимум 4 разных способа запуска программ[1] из оболочки:
Встроенные функции оболочки:Некоторые команды, такие как сама echo
в Bash, реализованы внутри оболочки, поэтому соответствующая внешняя утилита, если она существует, не вызывается.
$ echo foo
foo
Поиск пути :, когда оболочка ищет нужную программу в каждом из каталогов, включенных в переменную среды PATH
.
$ cat <<< foo
foo
Прямой вызов :, когда программа вызывается с использованием ее полного/относительного пути.
$ /bin/echo foo
foo
$../../bin/echo foo
foo
Косвенный вызов :, когда программа вызывается другой программой (, встроенной или внешней ).
$ eval echo foo
foo
$ command echo foo
foo
$ sh -c 'echo foo'
foo
1. Я знаю, что вы сказали двоичные файлы . Я использовал более общий термин, потому что сценарии также могут выполняться из оболочки.