Поиск соответствия файлам с подстановочными знаками без использования находит в сценарии удара

Более старая информация: Debian Jessie x64 KDE (когда это было еще «тестирование»)

Эти команды работают для меня:

$ wget -O skype-install.deb http://www.skype.com/go/getskype-linux-deb
# dpkg --add-architecture i386
# aptitude update
# dpkg -i skype-install.deb
# aptitude install -f libc6:i386 libc6:i386 libgcc1:i386 libqt4-dbus:i386\
  libqt4-network:i386 libqt4-xml:i386 libqtcore4:i386 libqtgui4:i386\
  libqtwebkit4:i386 libstdc++6:i386 libx11-6:i386 libxext6:i386 libxss1:i386\
  libxv1:i386 libssl1.0.0:i386 libpulse0:i386 libasound2-plugins:i386

Некоторые из вышеперечисленных пакетов зависят друг от друга, поэтому это немного избыточно, но в любом случае это то, что skype-install.deb утверждает как отсутствующие зависимости в моей системе.


Обновленная информация: Debian Jessie x64 (который является «стабильным» atm)

Более простой и общий набор команд, который работает для KDE наверняка, но должен работать для любой среды:

$ wget -O skype-install.deb http://www.skype.com/go/getskype-linux-deb
# dpkg --add-architecture i386
# aptitude update
# gdebi skype-install.deb

Дополнительную информацию можно найти на вики-странице debian .

-121--47847-

for d in /*/
do  [ -d "$d" ] || break
    f=$d/docs/doc1.txt    
    mkdir -p -- "${f%/*}"
    touch -- "$f"
done

Я думаю, что это соответствует вашим целям. Может, мне чего-то не хватает.

Иначе можно:

set -- /*/
[ -d "$1" ] && 
printf 'd=$%d
    mkdir -p -- "$d/docs" && 
    touch -- "$d/docs/doc1.txt"
' $(seq "$#") | sh -s -- "$@"

Или:

set -- /*/
while [ -d "$1" ] 
do  mkdir -p -- "$1"/docs
    touch -- "$1"/docs/doc1.txt
shift ; done

-121--78167-

Возможно, да и нет.

Да, вероятно, вы можете загрузить образ (или что-либо, что выполняется в системе для этого) - просто загрузите «необработанные» данные /dev/mtdblock * . В большинстве случаев вы получите изображение SquashFS , которое вы сможете монтировать и исследовать локально.

Нет, вы не собираетесь получать исходный код таким образом, за исключением любого (обычно shell) сценария. Значительная часть данных, которые вы получите, будут скомпилированы (и почти наверняка удалены ) двоичные файлы.

Это означает, что если вы хотите увидеть, как работает загрузка на уровне init , вы получите то, что хотите. Если вы хотите исходный код для программного обеспечения, которое работает в системе, вам не повезло (если он не пришел с аппаратным обеспечением, которое, конечно, должно быть). Если вы действительно хотите источники, спросите поставщика системы - они должны дать вам исходный код, в противном случае они нарушают GPL (что используется для большинства программного обеспечения, работающего на Linux boxen в наши дни) - см. GPL Нарушения страницы для получения более подробной информации и списка судебных исков. Это, конечно, относится только к лицензионному программному обеспечению GPL (или аналогичным образом) - если вы находитесь после их проприетарного программного обеспечения, вам, скорее всего, не повезло, хотя иногда можно убедить их предоставить вам некоторый доступ к нему.

1
25.02.2015, 12:46
2 ответа

Позвольте мне попробовать точку что-то простое.

1.

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

for i in * ; do for p in <patterns> ; do
        if [[ $i == $p ]]
        ...
        fi
done ; done

2.

Для анализа командной линии BASH имеет встроенные Hotopts, обратитесь к руководству.

3.

Для массивов см. Руководство.

0
28.01.2020, 01:45

Я не знаю, как выделить день в календаре года cal -y только регулярными выражениями, но причина, по которой ваш пример не работал для однозначных дат , заключается в том, что $ (дата +% е) добавляет космос к

Это будет работать:

cal | grep --color -EC6 "\b$(date +%e | sed "s/ //g")"
-121--291798-

С socat на сервере:

socat tcp-listen:8001,reuseaddr,fork tcp:localhost:8000

По умолчанию socat прослушивает порт TCP 8001 на любом IPv4 или IPv6 адресе (если поддерживается) на компьютере. Вы можете ограничить его IPv4/6, заменив tcp-listen на tcp4-listen или tcp6-listen , или на определенный локальный адрес, добавив , bind = that-address .

Для подключения сокета, к которому выполняется прокси, можно использовать любой адрес вместо localhost и заменить tcp на tcp4 или tcp6 , если требуется ограничить разрешение адреса IPv4 или IPv6 адресами.

Обратите внимание, что для сервера, прослушивающего порт 8000, подключение будет отображаться как исходящее от прокси (в случае localhost , то есть localhost ), а не от исходного клиента. Необходимо использовать DNAT-подходы (но которые требуют привилегий суперпользователя), чтобы сервер мог определить, кто является клиентом.

-121--4952-

Грязное решение выглядит следующим образом:

boolRememberNext=0
rememberString=""

for arg in $*; do
   if [ ${boolRememberNext} -eq 1 ]; then
      rememberString="${rememberString} ${arg}"
   fi
   if [ "${arg}" = "-name" ]; then
      boolRememberNext=1
   else
      boolRememberNext=0
   fi
done

echo ${rememberString} | while read filemask; do
   unquotedFile=$(echo "$filemask" | tr -d "'")
   ls -R1 ~/homedir/ | grep ":" | cut -d: -f1 | while read dir; do
      ls ${dir}/unquotedFile
   done
done

Почему оно грязное?

  • Много циклов, доступ к файловой системе осуществляется многократно
  • Неправильный синтаксис командной строки игнорируется
  • директория и имена файлов могут не иметь: внутри
  • разгерметизация var с tr не будет обрабатывать * комбинаций
    Я не хочу использовать eval для этого

Что можно сделать для улучшения решения?

Вы можете хранить промежуточные результаты в локальных var, улучшить обработку специальных символов и проверить синтаксис.

Можно также выполнить ls ~/homedir/* и добавить звездочку к пути поиска, пока файлы не будут найдены. Разбор всех файлов с помощью какого-либо фильтра (awk?). Проверьте найденные файлы, что они являются файлами, а не каталогами.

0
28.01.2020, 01:45

Теги

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