Приложения для совместного использования разных дистрибутивов Linux

Попробуйте:

n=0; for f in *.jpg; do mv "$f" "$((++n)).jpeg.jpg"; done

Или то же самое, распределенное по нескольким строкам:

n=0
for f in *.jpg
do
    mv "$f" "$((++n)).jpeg.jpg"
done

Как это работает

  • n = 0

    Это инициализирует переменную n n.

  • для f в * .jpg; do

    Это запускает цикл по всем файлам в текущем каталоге, имена которых заканчиваются на .jpg .

  • mv "$ f" "$ ((++ n)). Jpeg.jpg"

    Это переименовывает файлы по вашему желанию. В bash $ ((...)) выполняет арифметические операции. Здесь он увеличивает n каждый раз при запуске.

  • done

    Сигнализирует об окончании цикла.

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

Порядок

glob test * .in разворачивается в список файлов в алфавитном порядке. Это описано в man bash :

bash сканирует каждое слово на наличие символов *,? И [. Если появляется один из этих символов , то слово рассматривается как шаблон, и заменяется отсортированным по алфавиту списком имен файлов, соответствующих шаблону ( см. Сопоставление с образцом ниже). [Курсив добавлен.]

Обратите внимание, что значение сортировки по алфавиту может зависеть от настроек вашего региона.

0
08.05.2018, 12:30
4 ответа

Нет, безопасно делиться только /usr/local и, возможно, /opt.

не /home, потому что файлы точек могут быть несовместимы в разных дистрибутивах. (но вы можете смонтировать /home в другом месте, чтобы сделать файлы доступными)

не /usr/share, потому что файлы там не зависят от архитектуры, но не от версии.

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

1
28.01.2020, 02:43

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

То, что вы хотите сделать, невыполнимо, и если бы вы попытались это сделать, вы бы потратили в 10 раз больше времени, чем на управление каждым дистрибутивом по отдельности. Вы открываете гигантскую банку с червями.

will it be possible to install a piece of software on one distro and run it on another?

В общем, нет. Исполняемые файлы Linux компилируются по-разному для каждого дистрибутива. Они зависят от конкретных версий конкретных установленных библиотек. Вы можете запускать на всех дистрибутивах стандартный двоичный файл программного обеспечения, который не зависит от -дистрибутива, но даже программа, которая не использует внешние библиотеки и полагается только на ядро, будет зависеть от версии ядра, которая сильно отличается. от дистрибутива к дистрибутиву (например Fedora использует более продвинутую версию ядра, чем RHEL или Ubuntu ). Не говоря уже о том, что одна и та же версия ядра может быть собрана с разными параметрами конфигурации в зависимости от дистрибутива.

what is required for executables to be shared among distros (permissions, UID, GID)?

Это слишком общий вопрос. Один и тот же пакет в двух разных дистрибутивах может, например, работать под разными пользователями. Так,Требования различаются в зависимости от программного обеспечения и дистрибутива.

will upgrade of a package on one distro be visible on the other distros?
will removal of the package be visible on other distros?

Нет, каждый дистрибутив имеет свой собственный менеджер пакетов и формат пакета, и они несовместимы друг с другом (см. также этот вопрос:Почему нет по-настоящему унифицированного менеджера пакетов для Linux?). Попытка смешать их приведет к беспорядку. И компилировать каждое программное обеспечение из исходного кода, чтобы избежать работы с менеджерами пакетов, означает открывать еще одну банку червей.

Что касается ваших вопросов о точках монтирования и совместном использовании разделов, обратите внимание, что достаточно сложно просто разделить раздел /homeмежду разными дистрибутивами, как показано в этом вопросе.:Разные дистрибутивы Linux используют одну и ту же папку /home?

1
28.01.2020, 02:43

Я думаю о некоторых возможностях:

• Переносимый исполняемый файл Linux в общей папке с разрешениями на выполнение. :Я полагаю, что он должен работать для двоичных файлов командной строки и сценариев оболочки. Но учтите, что не все приложения доступны в переносимых форматах tar.gz или tar.bz2.

• Межплатформенный менеджер пакетов, такой как Snapили Zero Install, с соответствующими конфигурациями.

• Может быть так -называется portable applications.

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

-1
28.01.2020, 02:43

AppImages безопасно передавать из разных дистрибутивов, поскольку они не изменяют файлы в системе. На самом деле, это один из основных моментов формата AppImage -— вы загружаете приложение один раз, а затем можете запускать его на любом из ваших дистрибутивов без необходимости повторной -загрузки того же приложения.

Вы можете хранить AppImages в любом разделе, включая общие сетевые ресурсы.

0
28.01.2020, 02:43

Теги

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