Еще одна идея добавить к уже широкому набору опций из превосходного ответа Сержа.
Возможно, вы сможете использовать alias для этого - возможно, с некоторыми небольшими изменениями в том, как вы сейчас это делаете вещи.
alias - это просто слово, которое вы выбираете для сопоставления с большей строкой, которую оболочка будет расширять каждый раз, когда она встречается с ней. Возможно, наиболее часто используемым случаем является применение «по умолчанию» к существующей команде, например:
alias ls='ls -a --color=auto'
Однако нет необходимости, чтобы ваш alias был назван в честь существующей команды - или даже короче, чем шаблон назначения - так что вы могли бы, например, alias tgzcreator='tar -czvf'
alias es используют ресурс с оболочкой, в которой они определены. «Persistent» alias es для вас можно настроить в ~/.bash_aliases, который должен быть автоматически загружен с помощью наиболее хорошо написанных сценариев .bashrc по умолчанию.
Обратите внимание на пару советов: [ ! d6] Вместо того, чтобы беспокоиться в конкретном сценарии, будет ли ранее установленный alias мешать вашему коду, вы можете префикс его с обратной косой чертой, чтобы предотвратить пропущение alias. например Обычно я alias cp до cp -i, чтобы случайно не перезаписывать вещи, но в некоторых сценариях я явно хочу перезаписать вещи. (Я не собираюсь использовать какое-то ужасное обходное решение, например, создание известного пользователя un alias ed!) Итак, в этом скрипте я буду использовать \cp src dst alias. Возможно, по умолчанию не найдены источники в сценариях оболочки , которые запускают свою собственную неинтерактивную копию оболочки. Вы можете убедиться, что они расширены, установив опцию expand_aliases в вашем скрипте. Я получил это от: https://stackoverflow.com/questions/2197461/how-to-set-an-alias-inside-a-bash-shell-script-so-that-is-it-visible-from-the -ou
Итак, исходя из ограниченного контекста, доступного в вашем сообщении, вы можете сделать что-то , если вот так:
shopt -s expand_aliases
alias get_etc_dir='find /etc -type d'
alias get_etc_fil='find /etc -type f'
Для вас , это может не работать без настройки, например изменение вашего параметризованного типа inode в суффикс с псевдонимом. Это просто еще один вариант того, как пользователи могут сократить фрагменты кода в целом. В любом случае, я попытался объяснить подробно на основе того, что знаю, и надеюсь, что это где-то полезно.
(Также я бы предложил переместить это в Unix / Linux SE, считая, что это идеальный вариант для вещи, которые не являются специфичными для Ubuntu?)
APT-Clone используется ubiquity (установщик Ubuntu) для процесса обновления. Это намного лучше, чем решение dpkg --get-selections, потому что:
Он сохраняет всю информацию о репозиториях. Он отслеживает, какие пакеты были автоматически установлены. Он позволяет переупаковывать локально установленные файлы DEB.Как использовать
Он сохраняет всю информацию о репозиториях. Сделать резервную копиюsudo apt-clone clone path-to/apt-clone-state-ubuntu-$(lsb_release -sr)-$(date +%F).tar.gz
Он отслеживает, какие пакеты были автоматически установлены. Он делает простой gzipped tar-файл, который можно легко отредактировать и просмотреть перед восстановлением на других машинах. Вот пример его структуры:
/
├── etc
│ └── apt
│ ├── preferences.d
│ ├── sources.list
│ ├── sources.list.d
│ │ ├── anton_-ubuntu-dnscrypt-vivid.list
│ │ ├── maarten-baert-ubuntu-simplescreenrecorder-vivid.list
│ │ └── megasync.list
│ ├── trusted.gpg
│ └── trusted.gpg.d
│ ├── anton__ubuntu_dnscrypt.gpg
│ ├── anton__ubuntu_dnscrypt.gpg~
│ ├── maarten-baert_ubuntu_simplescreenrecorder.gpg
│ └── maarten-baert_ubuntu_simplescreenrecorder.gpg~
└── var
└── lib
└── apt-clone
├── extended_states
├── installed.pkgs
└── uname
В Unix StackExchange объясняется, как использовать aptitude для отображения пакетов, не установленных в качестве зависимостей, и как сравнить этот список со списком пакетов по умолчанию для вашей версии Ubuntu.
Чтобы получить файл манифеста для настольных версий 12.04 и новее, посетите отличное объяснение в Unix StackExchange , выберите свою версию и прокрутите вниз ниже изображений компакт-диска в раздел файлов. Вы найдете что-то вроде «ubuntu-12.04.4-desktop-amd64 + mac.manifest», который соответствует вашей архитектуре.
Для версий сервера вам нужно будет получить файл манифеста из ISO, который был используется для установки исходной системы. Для сервера VPS или облака ваш провайдер может сделать изображения доступными или вам может потребоваться связаться с ними.
Вот пример использования кода из указанной ссылки, а также изменения для установки на новый сервер.
Старый сервер (код из другого сообщения, вывод сохранен в файл):
aptitude search '~i !~M' -F '%p' --disable-columns | sort -u > currently-installed.list
wget -qO - http://mirror.pnl.gov/releases/precise/ubuntu-12.04.3-desktop-amd64.manifest \
| cut -f1 | sort -u > default-installed.list
comm -23 currently-installed.list default-installed.list > user-installed.list
На новом сервере скопируйте файл с помощью scp, затем используйте команду sed для добавления 'install' для каждой строки (-i выполняет inline-replace). Затем вы можете использовать список в качестве входа в «dpkg -set-selections» и установить пакеты с помощью apt-get:
scp user@oldserver:user-installed.list .
sed -i 's/$/\tinstall/' user-installed.list
sudo dpkg --set-selections < user-installed.list
sudo apt-get dselect-upgrade
Перед тем как начать эту задачу, я рекомендую прочитать и понять все части сообщение, упомянутое в начале, а затем обратитесь к справочному руководству по aptitude для получения подробной информации о шаблонах поиска.
Чтобы сохранить список установленных пакетов в файле с именем installed_packages.txt, просто запустите:
dpkg-query --list >> installed_packages.txt
Создайте резервную копию установленных пакетов:
dpkg --get-selections > list.txt
Затем (в другой системе) восстановите установки из этого списка:
dpkg --clear-selections
sudo dpkg --set-selections < list.txt
Чтобы избавиться от устаревших пакеты:
sudo apt-get autoremove
Чтобы установить, как во время резервного копирования (то есть установить пакеты, установленные dpkg --set-selections):
sudo apt-get dselect-upgrade