|
Как получать ответы на вопросы по программированию прямо из командной строки или редактора (доп. ссылка 1) |
Автор: igor_chubin
[комментарии]
|
| В [[https://www.opennet.dev/tips/3018_help_cheat.shtml прошлой заметке]] было показано как, пользуясь сервисом cheat.sh, можно получить краткую справку практически по любой популярной команде UNIX/Linux. Сервис использует для этого популярные репозитории шпаргалок (cheat sheets), такие как tldr, cheat и прочие.
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Обходной способ запуска программ, скрытых в блочном устройстве |
Автор: 赤熊
[комментарии]
|
| Предположим у нас нет программы super_mega_ls, а на компьютере нет доступа на
установку ПО и запись файлов, но программой воспользоваться нужно. Wget не
работает, curl огорожен, Flash-накопители монтировать прав нет.
Допустим, у нас есть неформатированная флешка. На своём компьютере запишем
нужную программу в "raw-режиме", не создавая файловую систему и разделы:
dd if=/bin/ls of=/dev/sdb
Приходим на целевую машину, на которой нужно запустить программу. Помним про
версию ведра/ядра/libc/статическую сборку.
Вставляем флешку. И далее в зависимости от версии системы творим зло. В Debian
Jessie это будет выглядеть так:
/lib64/ld-2.13.so /dev/sdb
Далее происходит магия (см. исходники exec). Много думаем...
|
|
|
|
|
Использование zsync для минимизации трафика при синхронизации больших файлов, например, ежедневных сборок Ubuntu (доп. ссылка 1) |
[комментарии]
|
| Для пользователей, желающих минимизировать сетевой трафик и ускорить загрузку ежедневных тестовых снапшотов Ubuntu, предоставлена возможность загрузки только изменившихся с момента прошлой загрузки частей iso-образа. Для загрузки только изменений вместо полной копии следует использовать утилиту [[http://zsync.moria.org.uk/ zsync]].
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Монтирование устройств Android 4 в Ubuntu Linux при помощи go-mtpfs (доп. ссылка 1) (доп. ссылка 2) (доп. ссылка 3) |
[комментарии]
|
| Начиная с третьей ветки в платформе Android изменился метод организации внешнего доступа к накопителю мобильного устройства. Если раньше устройство маскировалось под USB-накопитель, который воспринимался внешними системами как обычный USB Flash, то начиная с выпуска Android 3 для доступа к данным предлагается использовать разработанный компанией Microsoft протокол [[http://ru.wikipedia.org/wiki/Media_Transfer_Protocol MTP]] (Media Transfer Protocol), поддержка которого в большинстве Linux-дистрибутивов недоступна из коробки. Причиной перехода на MTP является желание избавиться от основного недостатка старой реализации - необходимости размонтирования раздела перед его экспортом, из-за чего во время подключения раздела к ПК он становился недоступным для мобильного устройства.
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Организация файлового хранилища на базе Git-репозитория при помощи Sparkleshare (доп. ссылка 1) |
[комментарии]
|
| В рамках проекта [[http://www.sparkleshare.org/ Sparkleshare]] развивается свободный движок для организации похожих на Dropbox online-хранилищ, непосредственное хранение данных в которых осуществляется в любом Git-репозитории. Использование Git позволяет задействовать элементы версионного контроля для отслеживания изменений в файлах, давая возможность отследить все изменения и при необходимости вернуться к состоянию определенного файла в прошлом.
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Преобразование CHM в PDF (доп. ссылка 1) |
Автор: pavlinux
[комментарии]
|
| Для преобразования формата CHM в PDF существует утилита chm2pdf, написанная на языке Python.
Если Python нет, можно пойти в обход:
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Использование unison для двусторонней синхронизации файлов |
[комментарии]
|
| Для решения задачи по синхронизации данных между двумя машинами, в ситуации когда изменения могут появиться на каждом из компьютеров, прекрасно подходит утилита unison (http://www.cis.upenn.edu/~bcpierce/unison/). При синхронизации между удаленными машинами в качестве транспорта может использоваться ssh. При обнаружении конфликтов, например, когда на обоих машинах отредактирован один и тот же файл, unison пытается разрешить конфликт автоматически, а если это не удается предоставляет пользователю интерфейс для принятия решения.
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Монтирование Flash-накопителей с FAT в XFCE, работающем во FreeBSD (доп. ссылка 1) |
Автор: bu7cher
[комментарии]
|
| Инструкция для тех, кому лень набирать "sudo mount_msdosfs /dev/da0s1 ..." и хочется, чтобы при подключении USB Flash на рабочем столе XFCE для монтирования автоматически появлялась иконка, корректно работающая с русскими именами файлов и не требующая для своей работы повышенных прав доступа.
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Перемещение всех пользовательских файлов конфигурации в отдельную директорию (доп. ссылка 1) (доп. ссылка 2) |
Автор: Мищенков Михаил
[комментарии]
|
| Чтобы принудительно переместить все пользовательские файлы конфигурации из
корня домашней директории в отдельный каталог (допустим ~/.config) можно
воспользоваться библиотекой libetc (http://ordiluc.net/fs/libetc/). libetc
подгружается к приложениям через механизм LD_PRELOAD, подменяя собой некоторые
библиотечные вызовы и самостоятельно обрабатывая ситуацию открытия файлов и
директорий, начинающихся с точки. Базовый путь берется из переменной окружения
$XDG_CONFIG_HOME, определенной для этих целей в стандарте http://standards.freedesktop.org/basedir-spec/
Пример использования, в ~/.bashrc, ~/.zshrc или ~/.xsession добавляем:
# загружаем библиотеку
export LD_PRELOAD=libetc.so.0
# список игнорирования
export LIBETC_BLACKLIST=/bin/ls:/bin/mv:/bin/cp:/bin/ln:/usr/bin/find:/bin/rm
# Перемещаем файлы конфигурации в директорию /home/luc/config
export XDG_CONFIG_HOME=/home/luc/config
Если явно не определена переменная окружения XDG_CONFIG_HOME, в качестве
базового пути будет использована директория ~/.config/
Работа libetc проверена в таких программах, как OpenOffice.org, KDE, Gnome,
Firefox, Mutt, vim, Thunderbird, Sylpheed, Gimp.
|
|
|
|
|
Монтирование ftp и ssh в локальную директорию |
[комментарии]
|
| Дл монтирования будем использовать FUSE модули curlftpfs (http://curlftpfs.sourceforge.net/)
и sshfs (http://fuse.sourceforge.net/sshfs.html).
curlftpfs хорош тем, что поддерживает шифрование (SSLv3/TLSv1), может работать поверх HTTP-прокси
и автоматически обрабатывает ситуации разрыва соединения. Sshfs интересен возможностью кэширования содержимого директорий.
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Выборка и копирование файлов по дате в Linux |
Автор: Sclif13
[комментарии]
|
| Столкнулся с такой задачей: из каталога необходимо выбрать и скопировать кучу
файлов за один месяц.
Вооружившись командами cp, ls и awk я приступил и вот что получилось:
cp $(ls -l | grep 2009-01 | awk '{print $8}') /home/temp/
ls -l выводит содержимое каталога с датой
grep соответственно выбирает файлы за месяц
awk '{print $8}' выводит имя файла для команды cp
Дальше больше ...
Есть каталог в котором куча подкаталогов и в которых соответственно файлы,
которые надо скопировать.
Тут на помощь приходит утилита du:
cp $(du -a --time | grep 2009-01 | awk '{print $4}') /home/temp/
|
|
|
|
|
Быстрый обмен файлами в Linux без задействования Samba, ftp и т.п. (доп. ссылка 1) (доп. ссылка 2) |
Автор: airat
[комментарии]
|
| Для быстрого обмена файлами между рабочими станциями под Linux удобно использовать десктоп
приложение Giver (http://code.google.com/p/giver/), которое не требует каких-либо настроек и
автоматически определяет запустившие Giver машины в локальной сети.
Достаточно выбрать файл/директорию и машину пользователя в списке.
В Ubuntu 8.10 программа присутствует в стандартном репозитории пакетов:
sudo apt-get install giver
Другой вариант настройки быстрой передачи файлов - привязка дополнительных скриптов к Nautilus.
Например скрипт nautilus-share (http://gentoo.ovibes.net/nautilus-share/) позволяет
динамически открывать доступ к определенным каталогам через samba.
В Ubuntu устанавливается через
sudo apt-get install nautilus-share
|
|
|
|
|
Составление списка мертвых символических ссылок (доп. ссылка 1) |
Автор: pavlinux
[комментарии]
|
| Находим файлы символических ссылок, которые никуда не указывают.
find / -noleaf -type l -print | perl -nle '-e || print'
Эта команда выведет все мертвые ссылки на стандартные вывод.
Можно перевести вывод в файл, для изучения и исправления.
Или просто удалить, добавив конвейер: "| xargs rm", то есть так:
find / -noleaf -type l -print |perl -nle '-e || print' | xargs rm
PS. В BSD системах нужно отбросить опцию -noleaf, которая реализована только в GNU find.
|
|
|
|
|
Добавление информации для восстановления к архивам. |
Автор: mahoro
[комментарии]
|
| Утилита par2 позволяет добавлять к файлам информацию для восстановления по алгоритму Рида-Соломона.
Это позволяет восстанавливать исходный файл в случае небольших (или даже серьезных) повреждений.
Делается это следующим образом:
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Переименований группы файлов с перекодированием имени |
[обсудить]
|
| Для переименования группы директорий первого уровня вложенности с
перекодированием из cp1251 в koi8-r:
find . -type d -maxdepth 1 -exec sh -c 'np=`echo {}|iconv -t koi8-r -f cp1251`; mv "{}" "$np"' \;
Для переименования иерархии файлов:
find . -type f -exec sh -c 'dn=`dirname "{}"`;bn=`basename "{}"`; np=`echo
$bn|iconv -t koi8-r -f cp1251`; mv "{}" "$dn/$np"' \;
|
|
|
|
|
Быстрая передача файла через псевдо-HTTP |
Автор: mahoro
[комментарии]
|
| Когда есть необходимость передать файл с одной машины на другую, а под рукой нет общедоступных ресурсов, можно сделать так: ... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Контроль целостности системы штатными средствами |
Автор: Avatar
[комментарии]
|
| Что делать если под рукой нет tripwire или osec, а кривой aide вы пользоваться не хотите.
Часть функций , таких как проверка прав доступа и изменение файлов, можно реализовать штатными стедствами.
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Как найти все файлы определенного размера |
[обсудить]
|
| Найти все файлы размером более 10 Мб.
find / -size +10240k
Более 500 Кб, но менее 600 Кб
find . -size +500k -a -size -600k
Файлы менее 128 байт, модифицированные последние 10 мин.
find . -type f -a -size -128c -a -mmin -10
|
|
|
|
|
Как переименовать имена файлов из одной кодировки в другую (доп. ссылка 1) |
[комментарии]
|
| Если не переименовывать каталоги:
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Скрипт для удаленного редактирования файлов |
Автор: spanka
[комментарии]
|
| #!/bin/sh
tmp_file=`mktemp /tmp/scp_vi.XXXXXXXXXX`
cp /dev/null $tmp_file
scp $1 $tmp_file
vi $tmp_file
scp $tmp_file $1
rm -f $tmp_file
запускать так: rvi login@host:/patch/to/file
В vim можно писать "vim scp://user@host.ru:/home/user/file"
|
|
|
|
|
Полный бэкап на дополнительный диск при помощи rsync (доп. ссылка 1) |
[комментарии]
|
| Резервный диск монтируем как /backup в read-only режиме.
По крону еженощно запускаем скрипт следующего содержания:
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Почему на разных машинах скрипт генерирует файлы с разными правами доступа |
[обсудить]
|
| > На одной машине создается файл с правами -rw-rw-r--, а на другой -rw-r--r--.
man 2 umask
В первом случае используется umask 002, а во втором umask 022.
|
|
|
|
|
Есть ли простой способ в уме высчитать права доступа ? 764 как высчитывается ? |
[комментарии]
|
| 764 является комбинацией из цифр UserGroupOther.
В 90% случаев нужно всего три цифры запомнить 7 - rwx, 6 - rw, 4 - r, (1 - x, 5 - rx и т.д. ).
Можно писать сразу: chmod u=rw file; chmod g=rx,o=rx file, chmod o-w file и т.д.
|
|
|
|
|
|
Как вывести сколько раз встречаются 15 самых частовстречающихся IP в логе |
[обсудить]
|
| Предположим, IP во втором столбце лога.
cat log_file | awk '{print $2}'| sort| uniq -c| sort -r -n| head -n 15
|
|
|
|
|
Как определить сумму столбца цифр в файле. |
[обсудить]
|
| Суммируем 3-й столбец из лог файла.
cat logfile| awk '{s += $3} END {print s}'
|
|
|
|
|
Как разбить файл на части. |
[комментарии]
|
| split -b 5m file - разбить на файлы по 5 Мб, (5k - по 5 Кб, 5 - по 5 байт).
split -l 1000 file - разбить файл на файлы по 1000 строк.
|
|
|
|
|
Как автоматически удалять все файлы в каталоге, созданные позднее N дней |
[комментарии]
|
| удаляем старше 1 часа:
find /var/tmp_log/ -type f -mmin +60 -exec rm -f {} \;
удаляем старше 10 дней:
find /var/tmp_log/ -type f -mtime +10 -exec rm -f {} \;
|
|
|
|
|
|
Как посмотреть список расшаренных ресурсов на Windows машине |
[обсудить]
|
| IP машины - 1.2.3.4
smbclient -I 1.2.3.4 -L NAME_SERVER
или: nmblookup -r -A 1.2.3.4
или: smbclient -N -L hostname -I 1.2.3.4
или скрипт: smbfind или findsmb
|
|
|
|
|
Как найти все SUID программы на машине |
[обсудить]
|
| Все SUID и SGID программы:
find / \( -perm -04000 -o -perm -02000 \) -exec ls -ald {} \;
Только SUID ROOT:
find /sbin \( -perm -04000 -a -user 0 \) -exec ls -ald {} \;
|
|
|
|
|
Как скопировать группу файлов на удаленную машину. |
[комментарии]
|
| С локальной на удаленную:
tar czvf - список_файлов_и_директорий | ssh remote.test.ru tar xzf - -C /home/user/куда_копировать
Скопировать группу файлов с удаленной машины на локальную.
ssh remote.test.ru tar czf - -C стартовая_директория какие_файлы_копировать
|tar xzf - -C директория_куда_копировать.
|
|
|
|
|
Скрипт для конвертации архива gz в lzma |
Автор: john_erohin
[комментарии]
|
| Скрипт для преобразования архива .gz в .lzma с сохранением времени изменения/создания файла и прав доступа, а также с минимальным влиянием на производительность.
Для переименования группы файлов можно использовать конструкцию вида:
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|
Контроль прогресса выполнения pipe-операции при помощи PV (доп. ссылка 1) (доп. ссылка 2) |
Автор: Mac3k
[комментарии]
|
| Для наглядного просмотра динамики выполнения пересылок через неименованный канал удобно использовать утилиту pv (Pipe Viewer, http://www.ivarch.com/programs/pv.shtml), которая позволяет примерно оценить время выполнения таких операций как "cat file| filter"
... [Слишком большой объем текста. Скрыт. Для просмотра см. продолжение]
|
|
|
|
|