Разные способы запуска бинарника? [закрыто]

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 sedmodifique 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 spermite 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.

0
18.11.2018, 06:31
2 ответа

Существует множество различных способов выражения кода в командной строке оболочки или в строке сценария оболочки, которые могут привести к выполнению двоичного файла. Все они просто сводятся к запуску команды оболочки. Оболочка попытается запустить файл, если команда ссылается на файл. Эта попытка будет успешной, если у вас есть разрешение на выполнение файла. Файл может быть двоичным исполняемым файлом или сценарием, который ссылается на свой интерпретатор в первой строке (, которая начинается с "#!" )или файл может быть просто данными, такими как текст. Если он исполняемый в этот момент, он будет запущен или интерпретирован. Оболочка имеет множество способов выразить команду. Возможности безграничны.

1
28.01.2020, 02:31

Обратите внимание, как указал Спархок в комментариях , первые два примера делают в основном одно и то же (они вызывают программу, используя ее путь вместо поиска пути )и следуя этой логике, количество способов выполнения данной программы практически бесконечно.

В любом случае, я бы сказал, что есть как минимум 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. Я знаю, что вы сказали двоичные файлы . Я использовал более общий термин, потому что сценарии также могут выполняться из оболочки.

1
28.01.2020, 02:31

Теги

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