Автоматическое монтирование и резервное копирование на любых подключенных USB-накопителях.

Многие, много способов. Вот несколько:

  1. GNU GREP

     $ ECHO 3.14.37-1-LTS |  Grep -op '^ [^ -] *'
    3.14.37.
     
  2. SED

     $ ECHO 3.14.37-1-LTS |  Sed 'S / ^ \ ([^ -] * \). * / \ 1 /'
    3.14.37.
     
  3. Perl

     $ ECHO 3.14.37-1-LTS |  Perl -lne '/^(.*?)-/ && print $ 1
    3.14.37.
     

    или

     $ ECHO 3.14.37-1-LTS |  Perl -lpe 's /^(.*?)-.*/$ 1 /'
    3.14.37.
     

    или

     $ ECHO 3.14.37-1-LTS |  Perl -f- -lane 'Print $ f [0]'
    3.14.37.
     
  4.  $ ECHO 3.14.37-1-LTS |  awk -f- '{print $ 1}'
    3.14.37.
     
  5. CUT

     $ ECHO 3.14.37-1-LTS |  Cut -D- -F1.
    3.14.37.
     
  6. Оболочка, даже!

     $ ECHO 3.14.37-1-LTS |  в то время как IFS = - прочитайте B;  сделать эхо "$ a";  Готово
    3.14.37.
     
0
06.10.2015, 16:52
1 ответ

Похоже, вам нужны только имена файлов без каких-либо расширений. Если вы ищете одну трубу, чтобы выбить это, grep не является вашим мэном. Попробуйте sed :

$ find /lib /lib64 -type f -name '*lib*' | sed 's@/.*/@@;s@\..*$@@'

Вы можете направить в sort -u для удаления дубликатов. Приведенная ниже команда была бы более точной при использовании awk и cut (или awk снова - либо/или - cut короче/красивее, IMHO):

$ find /lib /lib64 -type f -name '*lib*' | awk -F '/' '{print $NF}' | cut -d. -f1 | sort -u

Возвращает:

20-libgphoto2-6 40-либсане klibc-P2s_k-gf23VtrGgO2_4pGkQgwMY libBrokenLocale-2 libSegFault libacl libaio libanl-2 libatasmart libattr libaudit libblkid libbsd libbz2 libc-2 libcap libcgmanager libcidn-2 libcom_err libcrypt-2 libcrypto libdbus-1 libdevmapper libdl-2 libe2p libexpat libext2fs libfuse libgcc_s libgcrypt libglib-2 libgpg-ошибка libhistory libjson-c libkeyutils libkmod liblzma liblzo2 libm-2 libmemusage libmount libncurses libncursesw libnewt libnih libnih-dbus libnsl-2 libnss_compat-2 libnss_dns-2 libnss_files-2 libnss_hesiod-2 libnss_nis-2 libnss_nisplus-2 libntfs-3g libpam libpam_misc libpamc libparted libpci libpcprofile libpcre libpcsclite libply libply-boot-клиент libply-splash-core libply-splash-графика libpng12 libpopt libprocps libpthread-2 libreadline libresolv-2 librt-2 libselinux libsepol libslang libss libssl libsystemd-демон libsystemd-login libthread_db-1 libtinfo libudev libulockmgr libusb-0 либусб-1 либутиль-2 libuuid libwrap libz

В противном случае не требуется вырезать для удаления всех расширений:

$ find /lib /lib64 -type f -name '*lib*' | awk -F '/' '{print $NF}' | sort -u

Возвращает:

20-libgphoto2-6.hwdb 40-libsane.rules klibc-P2s_k-gf23VtrGgO2_4pGkQgwMY.so libBrokenLocale-2.19.so libSegFault.so libacl.so.1.1.0 libaio.so.1.0.1 libanl-2.19.so libatasmart.so.4.0.5 libattr.so.1.1.0 libaudit.so.1.0.0 libblkid.so.1.1.0 libbsd.so.0.6.0 libbz2.so.1.0.4 libc-2.19.so libcap.so.2.24 libcgmanager.so.0.0.0 libcidn-2.19.so libcom_err.so.2.1 libcrypt-2.19.so libcrypto.so.1.0.0 libdbus-1.so.3.7.6 libdevmapper.so.1.02.1 libdl-2.19.so libe2p.so.2.3 libexpat.so.1.6.0 libext2fs.so.2.4 libfuse.so.2.9.2 libgcc_s.so.1 libgcrypt.so.11.8.2 libglib-2.0.so.0.4000.0 libgpg-error.so.0.10.0 libhistory.so.6.3 libjson-c.so.2.0.0 libkeyutils.so.1.4 libkmod.so.2.2.5 liblzma.so.5.0.0 liblzo2.so.2.0.0 libm-2.19.so libmemusage.so libmount.so.1.1.0 libncurses.so.5.9 libncursesw.so.5.9 libnewt.so.0.52.15 libnih-dbus.so.1.0.0 libnih.so.1.0.0 libnsl-2.19.so libnss_compat-2.19.so libnss_dns-2.19.so libnss_files-2.19.so libnss_hesiod-2.19.so libnss_nis-2.19.so libnss_nisplus-2.19.so libntfs-3g.so.841.0.0 libpam.so.0.83.1 libpam_misc.so.0.82.0 libpamc.so.0.82.1 libparted.so.0.0.1 libpci.so.3.2.1 libpcprofile.so libpcre.so.3.13.1 libpcsclite.so.1.0.0 libply-boot-client.so.2.1.0 libply-splash-core.so.2.1.0 libply-splash-graphics.so.2.1.0 libply.so.2.1.0 libpng12.so.0.50.0 libpopt.so.0.0.0 libprocps.so.3.0.0 libpthread-2.19.so libreadline.so.6.3 libresolv-2.19.so librt-2.19.so libselinux.so.1 libsepol.so.1 libslang.so.2.2.4 libss.so.2.0 libssl.so.1.0.0 libsystemd-daemon.so.0.0.10 libsystemd-login.so.0.7.1 libthread_db-1.0.so libtinfo.so.5.9 libudev.so.1.3.5 libulockmgr.so.1.0.1 libusb-0.1.so.4.4.4 libusb-1.0.so.0.1.0 libutil-2.19.so libuuid.so.1.3.0 libwrap.so.0.7.6 libz.so.1.2.8

-121--166324-

То, что вы пытаетесь сделать, невозможно без повышенных привилегий или подрыва безопасности unix. У вас есть четыре варианта:

  • Получить доступ на законных основаниях, обратившись к системному администратору
  • Получить доступ на законных основаниях, обратившись к пользователю, Алиса
  • Найти бэкдор в безопасности файловой системы Unix
  • Использовать физический доступ (или, если это виртуальная машина, использовать доступ с хоста)

Если вы выберете третий вариант и добьетесь успеха, в зависимости от вашего морального компаса, вы должны сообщить о недостатке безопасности сопровождающим операционной системы. Вот несколько документов, чтобы начать: https://www.giac.org/paper/gsec/2235/quest-root-hacker-techniques-unix-security/103808

-121--174303-

Теперь я смог сделать это

использовать учебное пособие, которое опубликовал Аркадиуш Драбчик: http://www.axllent.org/docs/view/auto-mounting-usb-storage/

составляют короткий сценарий, который ищет все папки, начинающиеся с usbhd в папке мультимедиа и синхронизируются с ними. Используйте «-rtuv» для форматов жира Windows, они не поддерживают семантику ПУАС. Все это приводит к этому сценарию:

sudo find /media -maxdepth 1 -name "usbhd*" | awk '
{
    cmd = "rsync -rtuv --exclude '\''.*'\'' /home/pi/test "$0
    system(cmd)
}' > /dev/null 2>&1

Добавьте строку в crontab, чтобы сценарий вызывался регулярно. Позвоните по телефону crontab -e Добавить строку (вызывает скрипт каждый час):

0 * * * * . /scriptpath/myscript.awk

И это.

0
28.01.2020, 04:54

Теги

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