Задать вопрос
  • Почему wc -l выдает на 1 строку меньше?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Потому что считается количество переводов строки, а у вас последняя строка заканчивается концом файла, а не переводом.
    Ответ написан
  • Как в bash полностью сохранить многострочное содержимое файла в переменную?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Закодировать в base64, при применении раскодировать
    Ответ написан
    4 комментария
  • Как в bash полностью сохранить многострочное содержимое файла в переменную?

    @SunTechnik
    Как костыльный вариант:
    file_content="$(cat /etc/hosts ; echo Y)"

    Помним, что последняя строка- мусор. При обработке ее убираем:
    echo "$f" | sed '$d'
    Ответ написан
    Комментировать
  • Почему при ls с указанием пути получаю Permission denied, но находясь в этой же папке и выполнив ls без указания пути - команда работает?

    При указании полного пути требуются execute права ("x") на каждую папку в цепочке родителей.
    Ответ написан
    Комментировать
  • Какие логи показывает приложение Консоль в macOS и как отправить log из скрипта, чтобы увидеть его в Console.app?

    @elbrus56
    Рекомендую ознакомиться с материалом - Extra Logging for My Great App.mobileconfig
    Ответ написан
    Комментировать
  • Как в Powershell быстро определить заблокирован ли .exe с помощью Windows Firewall?

    @MaxKozlov Куратор тега PowerShell
    медленно, ну потому что медленно :)

    Для доступа к правилам оно использует всякие DCOM интерфейсы, что небыстро по определению
    Вон как там всё непросто

    Для ускорения можно попробовать в обратную сторону

    Get-NetFirewallApplicationFilter | Where-Object { $_.Program -eq $exePath } | Get-NetFirewallRule


    Причём мой вариант будет правильнее. потому что он на выходе получает не ApplicationFilter, а правило, которое можно проверить. Может оно вообще разрешающее, а не запрещающее и его надо менять/удалять.

    А проверка нескольких exe должна делаться не через цикл, как может показаться на первый взгляд, а через массив

    $progs = 'exe1.exe', 'exe2.exe'
    Get-NetFirewallApplicationFilter | Where-Object { $_.Program -in $progs } | Get-NetFirewallRule


    P.S. А вот от такого вообще надо избавляться
    | Where-Object { $_ }
    Это бессмысленный код в данном контексте
    Ответ написан
    Комментировать
  • Почему в Powershell ошибки прав доступа при выполнении New-Item и Remove-Item не попадают в блок catch?

    @MaxKozlov Куратор тега PowerShell
    Drovosek01, в catch{} не попадает потому что ошибка не блокирующая
    Remove-Item [-Path] <System.String[]> ....
    За раз можно удалять несколько объектов. и при ошибке удаления одного процесс не прерывается, а продолжается, если об этом не попросить

    -ErrorAction Stop правильный ответ
    Ответ написан
    Комментировать
  • Почему Set-Content в Powershell сохраняет строку текста с CRLF на конце и как это изменить?

    black1277
    @black1277
    Вольный стрелок
    Этот код в Powershell:
    'тестовая string' | Set-Content -NoNewline test.txt -Encoding 'UTF8'

    создает только строку 'тестовая string' без всяких CRLF символов!
    Это можно проверить, открыв файл в любом другом текстовом редакторе в режиме показа всех символов(к примеру Notepad++)
    А то что вы видите в VScode - зависит от его собственных настроек.
    Ответ написан
    Комментировать
  • Как обезопасить программу С# от взлома?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    Взломать можно все, что угодно - это лишь вопрос объема прикладываемых усилий/времени/денег для этого. Со стороны разработчика можно только осложнить этот процесс, но не предотвратить. Стандартная практика - осложнить взлом ровно на столько, чтобы объем затрачиваемых на взлом усилий себя не окупил или получаемая выгода была минимальна. Для начала вам следует определиться с ценностью того, что вы хотите защитить в своих приложениях и определиться с бюджетом времени/денег для затрат на защиту этих важных для вас данных, процессов и прочего. А уже потом прорабатывать меры защиты. Судя по вашим вопросам вам потребуется нанять консультанта, который поможет подобрать оптимальные для вас меры защиты.
    Ответ написан
    6 комментариев
  • Зачем в cmd bat (командной строке) создали режим enabledelayedexpansion?

    @res2001
    Developer, ex-admin
    Как я себе это понимаю:
    cmd подставляют значения переменных до выполнения команды и формируют очередную командную строку, затем ее выполняют.
    При этом команда for ... () со всем ее содержимым интерпретируется первоначально как одна команда (это можно увидеть если убрать echo off), соответственно переменные во внутренних командах цикла не могут быть подставлены в этот момент, т.к. они просто не имеют нужного значения в начале цикла.
    Затем, когда выполняется цикл, запускается вложенный cmd и уже ему нужно подставлять переменные в команды.
    Для того чтобы переменные не подставлялись перед выполнением цикла используется другой синтаксис обращения к переменным.

    То же самое происходит и с if, видимо.
    Ответ написан
    Комментировать
  • Какие есть аналоги сервиса gitbook?

    @daniil_kulikov
    Есть классный проект от наших ребят, очень актуально в пору импортозамещения - Gramax
    Ссылку вставить не даёт, думаю, можно легко найти самому
    Ответ написан
    Комментировать
  • Функционал vs Функциональность?

    @rromm
    А я не понимаю использования слова функционал как синонима функциональности потому, что мне кажется очевидным, что функционал – это набор функций, а функциональность – свойство объекта, характеризующее наличие/количество этих функций (объём функционала) – как канал и канальность, т.е. функционал – это, грубо говоря, содержание функциональности.
    пример: тут вон какой функционал, а там какая функциональность? (про объём функциональности)
    пример: функциональная вещь. (про наличие функциональности вообще, т.е. некого объёма функционала, в отличие от вещей с одной или стандартным кол-вом функциий).
    Ответ написан
    Комментировать
  • Почему команда ls -l возвращает только total 0?

    saboteur_kiev
    @saboteur_kiev Куратор тега bash
    software engineer
    ls -ld testdir

    по умолчанию, команда ls выводит указанные файлы, если же указаны директории, то их содержимое.
    Чтобы "залочиться" в текущей папке, нужно использовать опцию -d
    Ответ написан
    Комментировать
  • Почему неправильно считается количество строк глобами?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    myvar=$(find "/tmp/folders" -iname "App *" -type d -maxdepth 1)
    count=${#myvar[@]}
    echo $count


    И в ответ получаю число 120, которое означает количество символов, а не строк

    И это верно.

    2. Почему в моем примере выводится количество символов в переменной, а не количество строк?

    Потому что ${#myvar[@]} -- это длина массива. Если идея была создать в первой строке массив из имён файлов, то там не хватает пары скобок:
    myvar=( $(find "/tmp/folders" -iname "App *" -type d -maxdepth 1) )

    С таким определением myvar становится массивом а ${#myvar[@]} выведет длину этого массива, т.е. количество строк в нём.
    spoiler
    Имена файлов с пробелами, кстати, эту стройную картину малость испортят.
    С вашим определением выводится длинна массива, но в качестве массива выступает одна строка, так что это длина строки в символах.

    1. Реально ли подсчитать количество строк в файле или переменной с помощью глобов, как показано тут - https://stackoverflow.com/a/32727260 ?

    Да. Но использование для этой цели массивов оболочки выглядит странно и расточительно. В shell канонично считать строки командой wc -l.
    Ответ написан
    1 комментарий
  • Почему в терминале перенаправление вывода команды man в текстовый файл дает "битый" текст?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    0x08 - BS - BackSpace
    Используется для перемещения каретки на одну позицию назад и печати символов поверх уже напечатанных.
    При выводе на терминал последовательность <символ><0x08><символ> эмулируется жирным шрифтом.
    Кроме этого могут использоваться ESC-последовательности.
    Ответ написан
    Комментировать
  • Почему в терминале перенаправление вывода команды man в текстовый файл дает "битый" текст?

    @dronmaxman
    VoIP Administrator
    Вывод команды man в файл привела к захвату некоторых управляющих символов форматирования, в частности символов, обозначающих полужирный или подчеркнутый текст. Команда man использует эти управляющие символы для форматирования текста для отображения в терминале, но они некорректно отображаются в обычных текстовых файлах.
    Ответ написан
    Комментировать
  • Как лучше всего хранить многострочный текст в .cmd или .bat файле?

    wisgest
    @wisgest
    Не ИТ-специалист
    Вкратце (возможно, когда-нибудь дополню ответ, если вспомню какие либо тонкости и соберусь с силами).

    Чтобы разбить команду на несколько строк надо в конце каждой строки добавить символ ^. Если после него будет идти пустая строка, то в команду будет вставлен перевод строки.

    Пример.
    echo ^
    Hello,^
    
        world!

    выведет
    Hello,
        world!

    Если использовать отложенное раскрытие переменных, то можно вывести текст, сохранённый в переменной:
    setlocal enabledelayedexpansion
    set A=^
    Hello,^
    
      world!
    echo !A!

    В тексте надо удваивать знаки процента, экранировать символом ^ специальные символы (его самого, символы перенаправления, соединения команд, закрывающую скобку (внутри составных команд), желательно, кавычку…), дважды экранировать восклицательные знаки при отложенном раскрытии переменных, если текст между ними может быть воспринят как имя переменной… В общем, упражняйтесь.

    Ещё можете посмотреть тему CMD/BAT: Возможность создания heredoc. Также, например, в теме CMD/BAT: Пакетные макросы с параметрами рассматривается создание переменных (CR и LF), содержащих символы перевода строки и возврата каретки:
    spoiler
    :: Определяет переменную ВОЗВРАТ КАРЕТКИ (используется как !CR!)
    for /f %%a in ('copy /Z "%~dpf0" nul') do set "CR=%%a"
    
    :: Определяет переменную ПЕРЕВОД СТРОКИ (используется как !LF!)
    set LF=^
    
    
    :: Две пустые строки сверху важны - не удалять!
    Ответ написан
    Комментировать
  • Почему у root нет Корзины (Trash)?

    @vadimr
    Потому что root, как и другие служебные учётные записи Darwin, не является пользователем macOS. А Корзина – это объект macOS, как пользовательской среды, а не Darwin (Unix).
    Ответ написан
    Комментировать
  • Как правильно узнать истинный объем SSD?

    @Johar-tumen
    Могут, хотя не часто такое бывает.

    Часто, особенно когда дело касается внешних накопителей и когда цена в разы меньше чем в среднем по рынку.
    не изобретайте велосипед, вы подключите SSD к ПК контроллеры обменяются информацией и вы получите всю инфу через оснастку diskmgmt.msc

    Не поможет. там в контроллере записано что диск на 1, 2 или 4 терабайта, а в реальности может быть 32, 64 Гб
    Может помочь программа ValiDrive (или еще тысячи других на просторах интернета), которая опросит все сектора вашего диска и выдаст вердикт о его реальной емкости.
    А вот уже после этого зайдете в diskmgmt.msc и сделайте на этом диске единственный том с таким объемом, оставив фейковый объем в нераспределенной области
    Ответ написан
    Комментировать