Как создать файл сценария для команд терминала?

Я удивлен, что самый простой, но наиболее эффективный способ получить все включенные двоичные источники программного обеспечения вместе с указанным им файлом еще не опубликован:

grep -r --include '*.list' '^deb ' /etc/apt/sources.list /etc/apt/sources.list.d/

Из всех обработанных файлов , это напечатает каждую строку, начинающуюся с deb. Это исключает прокомментированные строки, а также строки deb-src, чтобы включить репозитории исходного кода.

Он ищет действительно только все *.list файлы, которые будут проанализированы apt, но, например, нет файлов *.list.save, используемых для резервного копирования или других с незаконными именами.

Если вы хотите, чтобы более короткий, но, возможно, только 99,9% всех случаев, корректный вывод, который может искать слишком много файлов (включая все /etc/apt/sources.list* файлы и каталоги, а не только /etc/apt/sources.list и `/etc/apt/sources.list.d/*), вы также можете использовать это:

grep -r --include '*.list' '^deb ' /etc/apt/sources.list*

файлов, которые не должны быть там, выход будет таким же.

Пример вывода на моей машине будет следующим:

/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily main restricted
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates main restricted
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily universe
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates universe
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily multiverse
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates multiverse
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-backports main restricted universe multiverse
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security main restricted
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security universe
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security multiverse
/etc/apt/sources.list:deb http://archive.canonical.com/ubuntu wily partner
/etc/apt/sources.list.d/maarten-fonville-ubuntu-ppa-wily.list:deb http://ppa.launchpad.net/maarten-fonville/ppa/ubuntu wily main
/etc/apt/sources.list.d/webupd8team-ubuntu-tor-browser-wily.list:deb http://ppa.launchpad.net/webupd8team/tor-browser/ubuntu wily main
/etc/apt/sources.list.d/fossfreedom-ubuntu-indicator-sysmonitor-wily.list:deb http://ppa.launchpad.net/fossfreedom/indicator-sysmonitor/ubuntu wily main
/etc/apt/sources.list.d/getdeb.list:deb http://archive.getdeb.net/ubuntu wily-getdeb apps
[ ! d8]

Если вы хотите получить более красивый вывод, давайте проведем его через sed:

grep -r --include '*.list' '^deb ' /etc/apt/ | sed -re 's/^\/etc\/apt\/sources\.list((\.d\/)?|(:)?)//' -e 's/(.*\.list):/\[\1\] /' -e 's/deb http:\/\/ppa.launchpad.net\/(.*?)\/ubuntu .*/ppa:\1/'

И мы увидим это:

deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily main restricted
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates main restricted
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily universe
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates universe
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily multiverse
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates multiverse
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-backports main restricted universe multiverse
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security main restricted
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security universe
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security multiverse
deb http://archive.canonical.com/ubuntu wily partner
[maarten-fonville-ubuntu-ppa-wily.list] ppa:maarten-fonville/ppa
[webupd8team-ubuntu-tor-browser-wily.list] ppa:webupd8team/tor-browser
[fossfreedom-ubuntu-indicator-sysmonitor-wily.list] ppa:fossfreedom/indicator-sysmonitor
[getdeb.list] deb http://archive.getdeb.net/ubuntu wily-getdeb apps
1
задан 13 April 2017 в 15:24

2 ответа

Эквивалент командных файлов Windows - это сценарии оболочки, а отличным руководством по началу работы является Bash Scripting.

По большей части команды, которые вы можете вводить в командной строке, можно поместить в оболочку script.

Несколько вещей, которые отличаются от командных файлов Windows:

Существуют разные интерпретаторы команд, называемые оболочками. По умолчанию используется bash, но если вас это интересует, есть другие, такие как zsh, ksh, dash, perl, python и т. Д. Для запуска сценария оболочки вам необходимо сделать исполняемый файл, который вы можете сделать с помощью В Ubuntu текущий каталог не является поисковым путем, поэтому вам нужно запустить ./<filename>, а не <filename>. Имена переменных - $<varname>, а не %<varname>%. Команды в сценарии оболочки по умолчанию не печатаются, так как в пакетном файле. Расширение имени файла может быть .sh или (более обычным), вам не нужно использовать расширение. Поместите #!/bin/bash в самую первую строку файла, которая сообщает Ubuntu, какую программу использовать для запуска файла. Комментарии начинаются с #, а не rem.

Надеюсь, что это поможет и получайте удовольствие от скриптов!

14
ответ дан 25 May 2018 в 03:49

Вы имеете в виду запись в файл с использованием сценария оболочки? Вот несколько способов:

touch file

Этот метод просто создаст файл, но если файл уже существует, он просто меняет дату модификации на время, когда вы использовали эту команду.

[ f2]

Этот метод перезаписывает содержимое file на text. Если вы хотите очистить файл, вы можете просто сделать это:

echo "" > file

Предположим, что вы хотите записать несколько строк, и вы не хотите использовать тысячи команд echo , вы должны использовать эту команду:

cat << EOF > file
test
test1
foo
bar
EOF

Это позволяет вам писать несколько строк в одной команде. Тогда содержимое file будет следующим:

test
test1
foo
bar

Если вы хотите добавить файл, замените > на >>.

Надеюсь, это поможет!

EDIT: О, я вижу, поэтому вы должны написать файл в gedit, используя расширение .sh (необязательно, но это хорошая идея), а затем на файловый менеджер, щелкните правой кнопкой мыши по файлу, выберите «Свойства -> Разрешения» и отметьте Allow executing file as program. Затем вы можете дважды щелкнуть по нему, и он запустится :). Кроме того, если вы хотите сделать это в терминале, вы можете запустить эту команду, чтобы сделать ее выполнимой (возможно, вы захотите добавить sudo, если она не принадлежит вам):

chmod +x file

И запустить:

./file
12
ответ дан 25 May 2018 в 03:49
  • 1
    Фактически, что я хочу сделать, это написать файл, например gedit, который содержит команды терминала. Затем, когда я дважды щелкните этот файл, он запустит эти команды в терминале. – Seth♦ 30 November 2012 в 09:05
  • 2
    Проверьте мой обновленный ответ :) – MiJyn 30 November 2012 в 09:07
  • 3
    Отличный ответ, внимательное обновление. Чтобы просто создать файл, я всегда использовал touch filename – TryTryAgain 30 November 2012 в 09:17
  • 4
    @TryTryAgain, да, это простой способ, возможно, быстрее, чем echo "" > file. Это нормально, если я включу этот метод в свой ответ? – MiJyn 30 November 2012 в 09:19
  • 5
    @MiJyn Абсолютно включить его, не стесняйтесь. благодаря – TryTryAgain 30 November 2012 в 10:15

Другие вопросы по тегам:

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