Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Объяснить назначение кода аwk

Bash
1
awk '/^H/{count++}!/^H/ || count != 2' source.file > result.file
Правильно ли я понял, что сначала ищутся строки которые начинаются с символа H, затем подсчитывается их количество и на печать выводятся те строки которые не начинаются с H и те для которых переменная count не равна 2
Bash
1
awk '{A[$5]++}END{for(i in A)print i, A[i]}' query1
В пятом поле содержится название должностей.

А здесь сначала подсчитывается количество сотрудников на каждой должности, затем для каждой должности печатается её название и количество сотрудников, занимающих эту должность
Ответ: Дико извиняюсь но первый пример будет читаться так:
Выводятся без фильтра все строки файла начинающиеся не на "H"
А второй шаблон не пропускает только вторую строку начинающуюся на "H"
То есть в итоге мы получим все строки кроме второй с началом на "H" (она может
быть и десятой по количеству общих строк в файле)

Добавлено через 1 час 38 минут
Только с третьего раза поняла что в строке:
"и те начинающиеся с Н для которых переменная count не равна 2"
было опущено как само собой разумеющееся.
Вопрос: Где посмотреть в ubuntu назначения горячих клавиш для работы с терминалом(работаю с xterm)

Здравствуйте, хотелось бы поменять назначения некоторых горячих клавиш в терминале xterm. Где можно посмотреть стандартные назначения и как их сменить, спасибо
Ответ:
Код Bash
1
bind -p | grep -v '^#\|self\|do-'
Вопрос: Объясните назначение команды Sudo

Что делает команда Sudo? Зачем sudo нужно, когда мы используем make program/debug? Какие две Канады мы используем, когда делаем step through ? Какая между ними разница?
Ответ:
Сообщение от Ученик незнающй
Что делает команда Sudo?
Позволяет выполнить команду с правами root-а.

Сообщение от Ученик незнающй
Зачем sudo нужно, когда мы используем make program/debug?
Хз, что такое make program.
Вопрос: Можете объяснить этот Bash код?

Можете объяснить этот Bash код? Как он работает?
Код Bash
1
grep -E '^([^!]+!){3}[0-9]{2}' file1
Ответ:
Сообщение от Lord007
[0-9] - это числа которые нельзя выбирать?
Не совсем так. Возьмем строку:
Код Code
1
2
3
100870!ACE TENNIS BALLS-3 PACK     !2.8   !2.4   !01-JAN-90
      ^                            ^      ^__
      1                            2      3дн
Первые 3 группы, заканчивающиеся "!" (помечены номерами), совпадают с ^([^!]+!){3}.
Далее, как было сказано выше, должны следовать 2 цифры подряд: символ из диапазона [0-9], и еще раз символ из этого дипазона ({2} говорит, что предыдущая маска должна быть учтена 2 раза, то есть это аналог записи [0-9][0-9]).
Первый символ после 3-го "!" -- это 2, а вот следующий за ним символ -- это ".", которая не попадает под маску [0-9], поэтому строка исключается из вывода.
Вопрос: Как в Ubuntu запустить код?

подскажите как в Ubuntu и какой командой можно запустить код:
Кликните здесь для просмотра всего текста
Код Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@set infile=0.txt
@set outfile=1.txt
@echo off
setlocal ENABLEDELAYEDEXPANSION
if exist !outfile! del /q !outfile!
for /f "tokens=* delims=" %%a in (!infile!) do (
    set line=%%a
    set newline=
    set err=0
    call :parsLine
    if !err!==0 echo !newline!>>!outfile!)
exit /b
:parsLine
set char=%line:~0,1%
set line=%line:~1%
set newline=!newline!!char!
echo.%line% | >nul findstr %char% &&set /a err+=1
if defined line goto parsLine
exit /b
Ответ:
Сообщение от gng
Скомпилированный код для Питона - неоднозначное понятие.
В байткод (.pyc) хотя бы.
А так, конечно, если программа выполняется быстро, то разница человеконеразличимая, а если долго, то время загрузки особого вклада не вносит.
Вопрос: Почему в данном коде не срабатывает присвоение

Всем привет, подскажите пожалуйста почему в данном коде не срабатывает присвоение
Bash
1
shouldStartChecks=true
и на экран всегда выводиться false?
Bash
1
2
3
4
5
6
7
8
9
10
shouldStartChecks=false
 
git diff --cached --name-status | while read st file; do
        if [ "$st" == 'D' ]; then continue; fi      
        if [[ "$file"=~".ts$" ]] || [[ "$file"=~".tsx$" ]]; then
            shouldStartChecks=true
        fi
        done
        
echo $shouldStartChecks
Не судите строго, в баше я полный 0
Ответ: Прежде чем «корячить» чужой код, неплохо бы разобраться что и почему там сделано… Для начала хотя бы разницу между $(…) и <(…)
Сообщение от JFF_by
чтобы не падало ошибок
Достаточно не набирать код в Виндовом блокноте, потому как в Вин и Лин разные переводы строк… И вообще принято показывать ошибки.
Вопрос: назначение прав на монтир-ый диск

Здравствуйте.
Монтирую диск в папку /var/www/folder, при запуске системы в этой папке появляется все файлы и папки что на отдельном винчестере, так и должно быть конечно. При установки владелец и группа получается что root, в общем поменять бы права, ни как не могу сделать, через терминал под рутом тоже пробывал с помощью комманды chmod, тоже не получилось.

Код

UUID=(номер)       /var/www/folder        vfat        defaults        0         0

Менять defaults  нужно ?
Ответ:
А как такой вариант: владелец ROOT, группа www-data.
Почему www-data, потому что апач у меня работает под этой группой. Далее сделал Рут само собой все может, полные права на монтируемый диск не хочу давать, там файлы автоматом у меня создаются, поэтому сделал что группа www-data папки могут создавать файлы, а файлы только считывать можно ... вроде так если не ошибаюсь. на исполнение ни чего там нет. А на другие папки на сайте ставить 755 (757), на файлы 644 ... нормально думаю так будет ? исхожу из своих ситуаций.
Вопрос: Объясните как работает

Здравствуйте, объясните пожалуйста поэтапно, как работают данные коды

1) nl -bp'^H' -s'^' source.file | sed '/^\s*2^/d;s/^\s*[0-9]*^H/H/' > result.file

2) awk '/^H/{count++}!/^H/ || count != 2' source.file > result.file

3) awk '{DEP[$6]=1}$5=="MANAGER"{MAN[$6]=1}END{for(d in DEP)if(!(d in MAN))print d}' query1

4) awk '{A[$5]++}END{for(i in A)print i, A}' query1
Ответ:
Bash
1
2
3
man awk
man nl
man sed
Вопрос: Получить код выхода из процесса, при использовании zenity progress

Вопрос к знатокам Bash. Использую scp в bash скрипте для копирования файлов на удалённый сервер, попутно хочу на время копирования показать progressbar zenity.

Проблема заключается в том, что после завершения копирования, хотелось бы знать завершилось оно успешно или нет, проверив код выхода из scp. Разумеется до вставки в код zenity всё работало как нужно, но теперь $? это код выхода из zenity, который никак не зависит от кода выхода из scp.

Какие есть предложения, чтобы обойти данный нюанс?

Bash
1
2
3
4
5
6
7
8
9
10
11
scp * username@host:/folder/ |
        zenity --progress \
          --title="Upload" \
          --text="scp is running..." \
          --pulsate
        
#сейчас это условия работает неправильно
if [[ "$?" != "0" ]]
then
    scp завершился с ошибкой 
fi
Заранее спасибо за ответы.
Ответ: вы не очень любезны, но всё равно огромное спасибо

Дальше я должен справиться сам

Для людей оставляю ссылку
Вопрос: Открыть порт 5000 из С-кода или Войти в root из С-кода

Пишу код, работающий с TCP-протоколом. По ходу дела надо отерыть доступ 5000-ному порту. Начал копать этот вопрос и созрела не очень удачная идея открыть порт используя команду system (). Вроде можно сделать так:
Bash
1
2
3
system ("iptables -A INPUT -p tcp --dport 5000 -j ACCEPT");
system ("service iptables save");
system ("service iptables restart");
Но тогда надо каким то образом запустить это в root'e из самого кода. Может это можно сделать иначе?
Ответ: Спасибо. Второй и третий варианты заинтересовали. Буду разбираться.

Добавлено через 4 часа 0 минут
Спасибо. Третий вариант сработал.