LINUX.ORG.RU
ФорумAdmin

РЕШЕНО Перенаправление вывода На в ввод

 , , ,


0

1

Салют ребятА ! Поскажите пж. возник вопрос но гугл к сожалению помочь не смог. вообщем в чём суть вопроса. Скачаваю скрипт с гитхаба захожу в папку с помощью команды CD, даю права на выполнение файлу установки и запускаю установщик. но ! нужно выполнить это в одну команду без постоянного ввода каждой по отдельности.

git clone " URL "; cd ' PATH NAME '; ls | grep install | «тут нужно перенапривить вывод на ввод и собственно автоматически ввести подставить впереди chmod +x 'тут сам install файл'»; ls | grep install | sudo bash 'снова перенаправленный вывод на ввод и автоматически enter'

помогите уважаемые олдфаги) и не судите строго. Это мой первый пост)



Последнее исправление: stokman (всего исправлений: 2)
Ответ на: комментарий от anc

повторю ещё раз. Ввожу: ls | grep «что-то грепаю»| «перенаправление грепа на ввод и собственно выполниение»

chmod +x указал для примера.

stokman
() автор топика
Ответ на: комментарий от mord0d

как можно продлить скрипт чтобы после выдачи прав ch'модом он выполнялся $: bash 'исполняймый файл' find -iname '*install*' -type f -exec chmod +x {} $:bash 'исполняймый файл' \;

stokman
() автор топика
Ответ на: комментарий от stokman

Замечания по твоей задаче:

  • Не все утилиты жрут STDIN;
  • Нельзя использовать STDIN где угодно (в качестве аргумента, например);
  • Не всегда можно предсказать STDIN (его может оказаться несколько строк, потому утилита может повести себя неоднозначно, если она на это не рассчитана);
  • Не всё выплёвывается в STDOUT (нужный выхлоп может оказаться в STDERR), который обычно не передаётся в STDIN через pipe;

универсальный скрипт

Во-первых это не скрипт, а просто команда; во-вторых она далеко не универсальна (хоть и часто полезна).

Спасибо большое !

Если это решает твой основной вопрос, пометь тему решённой.

mord0d ★★★★★
()
Ответ на: комментарий от stokman

А если этих файлов окажется несколько, но их нужно выполнить в строгом порядке?

Вообще, find может принимать несколько -exec (и ещё многих аргументов):

find . -iname '*install*' -type f -exec chmod +x {} \; -exec {} \;

Причём тебе совершенно не нужен bash.

mord0d ★★★★★
()

ls | grep | xargs -I{} chmod +x {}

anonymous
()
Ответ на: комментарий от stokman

просто скрипт написан на баше

Если в нём корректно прописан шебанг, скармливать интерпретатору его не нужно. Если же шебанг не указан, то да.

mord0d ★★★★★
()

РЕШЕНО

@stokman, есть же галочка [пометить тему решённой] внизу.

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Ну вот завтра ТС (или еще какой ньюфаг) на радостях что-то поядрючей «chmod +x» запихнет, то-то «весело» будет.

anc ★★★★★
()
Ответ на: комментарий от anc

Ну вот завтра ТС (или еще какой ньюфаг) на радостях что-то поядрючей «chmod +x» запихнет, то-то «весело» будет.

Я в няньки не нанимался, надо головой думать. А то многие уже разучились, остальные ещё не научились.

mord0d ★★★★★
()

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

Если скрипт лежит в репозитории одним файлом без всяких довесков, то, возможно, подойдёт это

# curl https://REPOSITORY.github.io/SCRIPT | sudo sh 

REPOSITORY - название вашего репозитория. SCRIPT - называние вашего скрипта.

Если репозиторий ваш и скрипт использует другие файлы, то можно добавить в репозиторий скрипт «start» с нижеследующим кодом. После этого достаточно набрать «curl https://REPOSITORY.github.io/start | sh» (или «curl https://REPOSITORY.github.io/start | sudo sh», если используете sudo).

Пример для Arch Linux c его пакетным менеджером pacman:

#!/bin/bash

## качаем в домашнюю директорию архив со скриптами
wget -P ${HOME}/ https://github.com/REPOSITORY/REPOSITORY.github.io/archive/master.zip

## устанавливаем unzip, если не установлен
if [[ -z "$( pacman -Qi unzip )" ]]; then
    pacman -Sy --noconfirm unzip
    UNZIP_INSTALL="ok" # пометка об инсталляции
fi

## разархивируем скаченное
unzip ${HOME}/master.zip -d ${HOME}/

## удаляем архив
rm -rf ${HOME}/master.zip

## удаляем unzip, eсли его устанавливали мы
[[ -n "${UNZIP_INSTALL}" ]] && pacman -R --noconfirm unzip

## запускаем основной скрипт
source ${HOME}/REPOSITORY.github.io-master/SCRIPT

## удаляем разархивированную директорию
rm -rf ${HOME}/install

Не знаю, насколько это по феншую, может здравые люди меня тапками закидают, но я этим периодически пользуюсь.

basarga
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.