LPIC 103.4 Использование потоков, конвейров и перенаправлений

  Рет қаралды 30,442

Kirill Semaev

Kirill Semaev

Күн бұрын

Пікірлер: 43
@KirillSemaev
@KirillSemaev 7 жыл бұрын
Свежий мануал: github.com/ksemaev
@Анечка-е4й9м
@Анечка-е4й9м 9 ай бұрын
Благодарю за урок
@TheAgressor13
@TheAgressor13 Жыл бұрын
Балдежный видос, сапсибо
@expmodish9940
@expmodish9940 Жыл бұрын
Бесценный материал!
@sapiens_life
@sapiens_life 2 жыл бұрын
большое спасибо, Кирилл
@ЮраРоршах
@ЮраРоршах 7 жыл бұрын
Просто лучший!
@carloscastaneda9018
@carloscastaneda9018 7 жыл бұрын
grep - это скорее фильтрация по содержимому, а не сортировка. Для сортировки мы юзаем sort обычно...
@mithlars
@mithlars 5 жыл бұрын
прямо не скорее, а так и есть.
@ainurkhairullin6723
@ainurkhairullin6723 Жыл бұрын
grep ищет подстроку в строке
@EugeneNuke
@EugeneNuke 8 жыл бұрын
Про xargs наврал и не привёл самые распространенные примеры. Вкратце, если find -name "*.txt" выведет 3 файла: 1.txt 2.txt 3.txt то find -name "*.txt" | xargs rm будет прямым эквивалентом команды rm 1.txt 2.txt 3.txt т.е. rm будет выполнена 1 раз, а не "построчно" как сказано в видео. Во-вторых, если имя файла содержит пробел - этот номер не пройдёт. В-третьих, длина команды и её аргументов ограничена(MAX_ARGS) и команда xargs позволяет обойти это ограничение. Грубо говоря, если в выше приведённом примере find находит не 3 файла, а миллион(M), то он вызовет команду не миллион раз, а M/MAX_ARGS раз, т.е. значительно меньше раз будет вызвана команда.
@KirillSemaev
@KirillSemaev 8 жыл бұрын
Отлично, действительно соврал, меня не так учили, а на такой важный нюанс внимания не обратил, правлю поверх видео. Спасибо!
@fedorovnikolay8033
@fedorovnikolay8033 3 жыл бұрын
Но при этом find . -name "*.txt" | xargs -I {} echo {} '---' ./lpic_1-101/homework/103_5_dz.txt --- ./lpic_1-101/homework/104_4_dz.txt --- ./lpic_1-101/homework/102_5_dz.txt --- ./lpic_1-101/homework/102_3_dz.txt ---
@vesh95
@vesh95 6 жыл бұрын
Ну тут не по именам лучше, а по датам так искать 10:00 Ибо rm, на сколько я помню, сам умеет звездочки обрабатывать
@vokalengeers4486
@vokalengeers4486 4 жыл бұрын
Объясните. Есть возможность скомбинировать команды tee и grep? Записать отфильтрованные данные в файл через grep и с помощью tee вывести на экран?
@DaggerPoison
@DaggerPoison 7 жыл бұрын
Почему нельзя просто сделать find . -name "*.txt" | rm -rf ?
@valeriytyutyunnik
@valeriytyutyunnik 4 жыл бұрын
Ключ -f глушит весь вывод. Без него в таком виде rm вернет ошибку об отсутствующем аргументе можно вызвать вовсе без find rm -rf *.txt
@Rogov_Oleg
@Rogov_Oleg 3 жыл бұрын
Это учебный пример. Он мог ещё проще rm -rf *.txt
@Ed-Bubble
@Ed-Bubble 9 жыл бұрын
На 03:15 при записи ls>list.txt в новый файл записывается также имя нашего нового файла - list.txt. Это что же получается, > опережает время и берет список из будущего?) как этого избежать? недавно сам с этим столкнулся, когда создавал txt со списком файлов, пришлось заходить и вручную удалять эту лишнюю строчку
@KirillSemaev
@KirillSemaev 9 жыл бұрын
+Eduard Bulatov ну это же не совсем из будущего)) На тот момент что вы смотрите в файл он уже находится в папке, поэтому его содержимое справедливо. Хотя конечно понимаю, в момент выполнения команды ls файла еще не было, я как-то на это никогда не обращал внимания) Можно написать скрипт простой, или функцию, которая будет выполнять тот же самый ls в файл 123213213213.txt, например, а потом находить в созданном файле эту строку "123213213213.txt" и удалять её
@Ed-Bubble
@Ed-Bubble 9 жыл бұрын
+Kirill Semaev спасибо, Кирилл! Классные уроки, так держать
@EugeneNuke
@EugeneNuke 8 жыл бұрын
Если совсем правильно, то перенаправлением потоков () занимается ваша оболочка (bash), она же вызывает набранные вами команды. Сначала происходит перенаправление (и создание файла), а потом вызов команды ls.
@KirillSemaev
@KirillSemaev 8 жыл бұрын
А почему сначала происходит перенаправление?
@EugeneNuke
@EugeneNuke 8 жыл бұрын
Оболочка (bash) обрабатывает всё что вы ему вводите с клавиатуры. Символы перенаправления - это указание для оболочки а не для команды. Команда вообще не в курсе что вы что-то изменили, она как читала со стандартного ввода, так и читает (или пишет в стандартный вывод). Вы просто изменили сам стандартный ввод/вывод на что-то другое (изменили значения "файловых" дескрипторов стандартных потоков на другие "файлы"). Соответственно, bash перед вызовом команды подготавливает её окружение - меняет значения перенаправленных дескрипторов на указанные, создаёт файлы, если их нет (чтобы получить файловый дескриптор) а затем выполняет команду.
@АлександрГаврилов-д6ж
@АлександрГаврилов-д6ж 5 жыл бұрын
А как сделать перемещение, найденных файлов командой find через конвейер с использованием xargs? в этом случае нужно команде mv уже 2 аргумента вместо одного для команды rm
@KirillSemaev
@KirillSemaev 5 жыл бұрын
не понимаю, вы их хотите в разные места двигать? Дайте пример
@АлександрГаврилов-д6ж
@АлександрГаврилов-д6ж 5 жыл бұрын
@@KirillSemaev просто вместо команды rm попробуйте применить команду mv в той же связке.
@Rogov_Oleg
@Rogov_Oleg 3 жыл бұрын
for по моему опыту существенно практичнее, чем xargs
@Ed-Bubble
@Ed-Bubble 9 жыл бұрын
Еще один вопросик - понятно что значит
@EugeneNuke
@EugeneNuke 8 жыл бұрын
@KirillSemaev
@KirillSemaev 8 жыл бұрын
Опять ютуб не оповестил о комменте(( Евгений ответил, ему - спасибо!
@KirillSemaev
@KirillSemaev 8 жыл бұрын
Я кстати так и не смог найти нормальное описание всех этих символов, может вы подскажете где их искать? Например тут ru.wikipedia.org/wiki/Bash уже даже
@EugeneNuke
@EugeneNuke 8 жыл бұрын
triple less,
@EugeneNuke
@EugeneNuke 8 жыл бұрын
@lRickl
@lRickl 8 жыл бұрын
Спасибо за урок! Вопрос по ДЗ: не разберусь как сделать это задание: 5) Вывести результат команды ping it-semaev.ru в консоль, отображая только последние пять символов каждой строки.. пните где искать ... Спасибо!
@KirillSemaev
@KirillSemaev 8 жыл бұрын
Ну можно попробовать так: stackoverflow.com/questions/9219964/bash-get-the-last-4-characters-of-output-from-standard-out-inline
@OpusPost
@OpusPost 8 жыл бұрын
Я сделал так ping -c 10 it-semaev.ru | rev | cut -c 1-5 | rev
@TyranRussian
@TyranRussian 7 жыл бұрын
Вот еще так можно: ping -c 10 it-semaev.ru | awk '{ print substr( $0, length($0) - 4, length($0) ) }'
@sergeybarmaley125
@sergeybarmaley125 Жыл бұрын
Жаль что раньше Я не видел твоих видосов !!! Другие показывают просто фуфло !!!
@vladimirkulakov8667
@vladimirkulakov8667 Жыл бұрын
я думал, зачем find . -name "*.txt" | xargs rm ... Ведь можно rm *.txt , но дело именно в количестве вызовов команды rm
LPIC 103.5 Работа с процессами в Linux
21:37
Kirill Semaev
Рет қаралды 46 М.
Players vs Pitch 🤯
00:26
LE FOOT EN VIDÉO
Рет қаралды 122 МЛН
БУ, ИСПУГАЛСЯ?? #shorts
00:22
Паша Осадчий
Рет қаралды 1,7 МЛН
Who's spending her birthday with Harley Quinn on halloween?#Harley Quinn #joker
01:00
Harley Quinn with the Joker
Рет қаралды 22 МЛН
Triple kill😹
00:18
GG Animation
Рет қаралды 18 МЛН
LPIC 103.7 Регулярные выражения в Linux
17:42
Kirill Semaev
Рет қаралды 32 М.
LPIC 103.1 Работа в командной строке Linux
25:47
LPIC 104.6 Мягкие и жесткие ссылки
15:28
Kirill Semaev
Рет қаралды 22 М.
«Осень». Самая большая загадка Windows XP
14:36
Девять десятых
Рет қаралды 1,1 МЛН
LPIC 103.6 Приоритеты процессов в Linux
12:25
Kirill Semaev
Рет қаралды 24 М.
Что такое Mikrotik?
10:21
Merion Academy
Рет қаралды 82 М.
Players vs Pitch 🤯
00:26
LE FOOT EN VIDÉO
Рет қаралды 122 МЛН