Инструменты беспроводной связи устарели в пользу iw
, поскольку беспроводные расширения устарели в пользу нового интерфейса nl80211 для беспроводных устройств. Об этом говорится в документации ядра для iw .
Однако nl80211 находится в активной разработке, и не все драйверы были перенесены на него. Инструменты беспроводной связи по-прежнему требуются для устройств, которые не были перенесены с беспроводных расширений.
Причина, по которой Ubuntu (и почти все известные мне дистрибутивы )предоставляют бета-версию 30, заключается в том, что эта версия исправляет критическую ошибку, которая была в версии 29, которая приводила к сбою iwconfig, если было слишком много сетей. в области из-за переполнения буфера. В репозитории Github для беспроводных инструментов этого нет, но вот соответствующий патч от Arch
Вы можете попробовать почтенный RCS (пакет "rcs" ), как упоминал @steeldriver, не -современная система управления версиями, которая работает на основе -файлов практически без накладных расходов или осложнений. Есть несколько способов его использования, но один вариант:
ci -l -m -t- myfile
Если вы сохраните этот текст в своем файле:
$RCSfile$
$Revision$
$Date$
затем RCS заполнит эти строки информацией о вашей версии и ее отметке даты,как только вы зарегистрируете это в (технически, когда вы зарегистрируете это ).
Файл, хранящийся в RCS/
, будет называться myfile,v
и будет содержать различия между каждой ревизией. Конечно, есть еще что узнать о RCS. Вы можете посмотреть справочные страницы для ci
, co
, rcs
, rcsdiff
и других.
Вот еще информация:
RCS/
, то архив появится в том же каталоге, что и ваш файл. ci
, чтобы записать его версию в архив (файл *,v
в каталоге RCS/ ). Проверка -имеет странный побочный эффект удаления вашего файла, оставляя ваши данные только в архиве *,v
. Чтобы избежать этого побочного эффекта, используйте -l
или -u
с командой ci
. co
, чтобы воссоздать его из архива. ci
будет жаловаться, когда вы попытаетесь проверить изменения в (, поэтому избегайте этого ). -l
с ci
или co
блокирует его, оставляя доступным для записи.Без -l
он будет читаться -только с co
или вообще будет удален с ci
. Используйте ci -u
, чтобы оставить файл в режиме -только для чтения после проверки его содержимого в архиве. -m.
предотвратит запрос ci
сообщения о пересмотре. -t-
предотвратит ci
запрос начального сообщения (при первом создании файла архива ). -M
с ci
или co
будет синхронизировать отметку времени файла с отметкой времени файла во время проверки -в. co -r1.2 -p -q myfile
выведет версию 1.2
из myfile
на стандартный вывод. Без опции -p
и в предположении, что myfile
"разблокирован" (только для чтения -только ), тогда co -r1.2 myfile
перезапишет myfile
копией версии -только для чтения 1.2
. ] из myfile
. -q
отключает информационные сообщения. 1.3.1.1
. Я не рекомендую это, так как это быстро сбивает с толку. Я предпочитаю придерживаться линейного потока изменений. Итак, если вы предпочитаете, чтобы ваш файл всегда был доступен для записи, вы можете использовать ci -l -M -m -t- myfile
. Вы можете использовать rcsdiff myfile
, чтобы увидеть различия между текущим содержимым myfile
и самой последней проверенной версией -. Вы можете использовать rcsdiff -r1.2 -r1.4 myfile
, чтобы увидеть различия между ревизиями 1.2
и 1.4
myfile
.
Архивный файл — это просто текстовый файл, формат которого описан в man rcsfile
. Однако не пытайтесь редактировать файл архива напрямую. IMO, архивный файл на основе текста -, абсолютно минимальный дополнительный багаж (, только один архивный файл )и замена ключевых слов являются самыми сильными сторонами RCS и делают его отличным инструментом только для локальных -, одиночных -пользователь, один -файл -в -a -управление версиями времени. Если бы я переделывал RCS, я бы устранил сложности, выходящие за рамки этого сценария (, например. многопользовательский -, ветвящийся ),которые, я думаю, лучше обрабатываются более современными распределенными системами контроля версий.
Как и в любой команде, здесь есть некоторые особенности; вам следует поиграть с тестовыми файлами, пока вы не поймете, какой рабочий процесс вы хотите для себя. Затем, для достижения наилучших результатов, вставьте ваши любимые параметры в сценарий, чтобы вам не приходилось запоминать, например, такие, как -t-
.
Вы правы, что контроль версий — это то, что нужно. Да, git
слишком сложно. Есть и другие инструменты контроля версий. Современные простые в использовании — это Subversion(svn
)и Mercurial (hg
).
git
, но проще в использовании ). Оба варианта просты в использовании.
git
Многие люди отмечают, что использовать git
не сложнее, чем другие инструменты в отношении init
, add
, commit
и push
. Это почти верно (, за исключением того, что для того, чтобы git сделал фиксацию, вам нужно сделать add
, тогдаcommit
(это 200% необходимых усилий ).
Проблема возникает, когда вы начинаете делать то, для чего предназначена система контроля версий. До этого момента вы не получаете никакой выгоды. Вы только инвестируете в исправления, в надежде, что они будут полезны. Точно так же, как создание резервной копии бесполезно (, восстановление из резервной копии приносит пользу ).
Трудности связаны с анализом истории и путешествиями во времени. Здесь много подводных камней, и нет хороших бесплатных графических инструментов. svn
и hg
ведут себя намного лучше, имеют удобную командную строку и графический интерфейс.
Я использовал простой сценарий Bash, который, возможно, называется vers
. Сводка:
file.V[0-9][0-9]
. cp -p
следующая старшая версия и chmod 400
. file.V01
Полезно для определения того, что вы изменили и в какие дни.
Gitfs дает лучшее из обоих миров, по крайней мере, если это работает для вас. Он обеспечивает представление репозитория git, где вы можете редактировать файлы, и каждая версия фиксируется автоматически.
mkdir mnt
gitfs https://example.com/repo.git $PWD/mnt -o repo_path=$PWD/working_copy
После этого вы сможете редактировать файлы в mnt/current
, и каждая версия файлов будет автоматически зафиксирована в git, а также будет доступна через mnt/history/*/*
.
Обратите внимание, что первым аргументом должен быть удаленный репозиторий. Gitfs, похоже, не работает с локальным репозиторием :, если он пуст, он указывает git получить доступ к удаленному origin
, которого не существует, и если он не -гол, Gitfs пытается нажать на него, что терпит неудачу, и Gitfs не сообщит вам об этом, кроме как через отладочное сообщение, поэтому вы потеряете все свои изменения.
Предостережение. :gitfs кажется довольно глючным и плохо поддерживается. Тихие сбои являются распространенной проблемой (перейдите -o log=-,debug=true,foreground=true,…
для попытки диагностики ). Вам нужно включить user_allow_other
в /etc/fuse.conf
, потому что манипулирование аргументами содержит ошибки . Это правильная концепция, но я не могу ее рекомендовать, если кто-то не возьмет на себя сопровождение и не исправит ее (Я не добровольно ).
Есть несколько способов сделать это:
vim
emacs
git
inotify-tools
git-annex
(все -в -одно решение)Все они подробно описаны здесь:
Тогда я бы порекомендовал использовать историю отмен, которая не только (, как следует из названия, )относится к действию undo
выполнения действия в редакторе Vim, но также и к тому, которое вы сохраняете. Подробнее здесь.
Добавление следующего в ваш.vimrc
:
let vimDir = '$HOME/.vim'
let &runtimepath.=','.vimDir
" Keep undo history across sessions by storing it in a file
if has('persistent_undo')
let myUndoDir = expand(vimDir. '/undodir')
" Create dirs
call system('mkdir '. vimDir)
call system('mkdir '. myUndoDir)
let &undodir = myUndoDir
set undofile
endif
Сделает так, чтобы все изменения/отмены постоянно сохранялись в каталоге undodir
в вашем локальном каталоге vimDir
, который по умолчанию находится либо в .vim
в вашем домашнем каталоге, либо в других, упомянутых в выводе :version
или --version
в командной строке.
Для еще большего контроля над историей отмен я бы порекомендовал также использовать Undotree .
Есть пакеты с похожим названием, называемые Undotree , которые делают аналогичные вещи. Подробнее об истории отмены здесь .
Я бы рекомендовал использовать git -autocommit , который представляет собой небольшой bash-скрипт с git как единственными зависимостями, которые следят за текущим каталогом git (, где вы его запускаете )для любых новых файлов/или измененных файлов и зафиксировать их.
Учитывая природу Git
он сохраняет все изменения в файле, и хотя он не подходит для производственного/серьезного проекта, это полезное решение, если вы не возражаете против отсутствия сообщения фиксации/общего сообщение коммита (, которое вы всегда можете отредактировать/добавить позже ).
Запустите его после навигации по нужному каталогу git (, который сначала создается с помощью git init
в определенном каталоге, дополнительная информация в официальном руководстве)вот так:
screen -dmS namehere git-autocommit -i 1 -V
, если вы используете screen
, дляtmux
:
tmux new -n namehere git-autocommit -i 1 -V
иначе:
git-autocommit -i 1 -V
будет достаточно, если вы предпочитаете не использовать его в фоновом режиме.
Я бы рекомендовал использовать inotify-tools
или, точнее, inotifywatch
, который может обнаруживать и (, как следует из его названия, )отслеживать файл/каталог на наличие изменений, с которыми вы затем можете выполнять действия (например, сохранить его в другом месте и т. д. ).
Здесь флаг для использования сinotifywatch
:
inotifywait -r -m -q -e close_write --format %w%f yourdirectorypathhere
и здесь пример скрипта Bash
, использующего приведенный выше:
#!/bin/bash
inotifywait -r -m -q -e close_write --format %w%f directorytowatch | while IFS= read -r file; do
process $file
done
Где process
может быть чем угодно, например tar
, если вы хотите сделать резервную копию при изменении файла, или rclone
, если вы хотите загрузить его куда-нибудь...
Я бы рекомендовал git-annex
, который включает не только Git
, но и множество других внешних инструментов, таких как inotify-tools
, bash
, tar
, rclone
, borg
и т. д.
Подробнее о здесь .
Если вам захочется прочитать вики/форум позже, вы также можете git клонировать его локально для чтения в автономном режиме:
git clone git://git-annex.branchable.com
для веб-сайта, форума (все в уценке, поэтому скачивается очень быстро... ), а кодовая база (на Haskell! )и т. д.
Возможно, вы захотите создать функцию, которая сделает за вас утомительную часть?
Например, (примечание :Я еще не знаю git, поэтому я просто добавил «команды-заполнители git», которые вы можете изменить, чтобы заставить их работать)
myvim () { vim "$@" # put the arguments to myvim after vim (this allows you to add options, too)
# and then the auto-commit part here. Note: I do *not* know git yet... fix where needed
# I assume you are in the right directory for git init...
{ git init ; gid add ; git commit ;}
# or if git add needs the names: (may want to get rid of options in args...)
# { git init ; git add "$@" ; git commit ;}
# or
# { git init ; for f in "$@"; do git add "$f" ; done ; git commit ;}
}
Вы можете заменить ";" между командами с «&&», чтобы следующий шаг выполнялся только в том случае, если предыдущий вернул 0
Другой подход, который охватывает все файлы в данной файловой системе, заключается в использовании файловой системы с журнальной -структурой, такой как NILFS .
Такие файловые системы добавляют изменения, а не заменяют данные. Это фактически эквивалентно непрерывному созданию моментальных снимков (или, скорее, созданию контрольных точек )и позволяет вам вернуться к файловой системе в различные моменты в прошлом. Старые контрольные точки могут собираться -мусором по достижении ими определенного возраста, но контрольные точки можно превратить в постоянные моментальные снимки, и это можно автоматизировать, например, сохранять один снимок в час за последний месяц, затем один снимок в час. в день в течение шести месяцев, затем один раз в неделю и т. д.
NILFS хорошо -поддерживается в Linux и весьма эффективен при использовании для /home
.