На этот раз у нас есть три отличных совета для любителей оболочки Linux, три сайта, которые повысят вашу продуктивность и сэкономят драгоценное время при повседневном взаимодействии с оболочкой.
Первый — ok-b.org. Это поисковая система по фрагментам оболочки, в которой вы можете описать задачу на естественном английском языке, а взамен вам будут представлены тесно связанные фрагменты.
Например, при поиске «Как вывести список только файлов?» Отобразится:
Bash: Как вывести список только файлов?
найти . -maxdepth 1 -тип f
ls -l | egrep -v ‘^ d’
ls -l | grep -v ‘^ d’
Список только общих родительских каталогов для файлов
читать -r FIRSTLINEDIR = $ (имя каталога «$ FIRSTLINE»)
при чтении -r NEXTLINE; делать до [[«$ {NEXTLINE: 0: $ {# DIR}}» = «$ DIR» || «$ DIR» = «/»]]; do DIR = $ (dirname «$ DIR») donedone
echo $ DIR
Как вывести список файлов в каталоге с помощью bash?
для файла в / source / directory / * сделать, если [[-f $ file]]; затем # копировать материал …. фидоне
Тогда как при поиске «Как рекурсивно скопировать каталог?» Появится:
Как рекурсивно найти файлы по типу файлов и скопировать их в каталог, находясь в ssh?
найти . -name «* .pdf» -type f -exec cp {} ./pdfsfolder \;
ssh user@ip.addr ‘find -type f -name «* .pdf» -exec cp {} ./pdfsfolder \;’
найти . -name «*. *» -type f -exec cp {} ./pdfsfolder \;
Рекурсивно копировать содержимое вложенных папок в одну папку (терминал)
tar cvfp `find. -name «* .jpg» `| (cd <новая папка>; tar xfp -);
cp `find. -name «* .jpg» `<новая папка>;
найти . -type f -name \ *. jpg -exec cp \ {\} $ TARGETFOLDER \;
Или в «заменить фрагмент текста в нескольких файлах»
sed -i ‘s / old_link / new_link / g’ файл …
perl -p -i -e <регулярное выражение> <папка>
Второй — объясняетhell.com. Эта поисковая система использует подход, прямо противоположный ok-borg, в котором вы можете ввести команду оболочки или последовательность команд, и пусть объясняет, что оболочка проанализирует их на их необработанные токены и объяснит каждую в соответствии с ее вводом man. Полезно при поиске отрывков в Интернете, но понятия не имею, что они делают.
Например, поиск:
«find. -type f -print0» возвращает:
«find. -type f -iname ‘* .cpp’ -exec mv -t ./test/ {} \ +» среди прочего, имеет следующее, что сказать в части \ +, прямо из статьи find man:
-exec command {} + Этот вариант действия -exec запускает указанную команду для выбранных файлов, но командная строка строится путем добавления каждого выбранного имени файла в конце; общее количество вызовов команды будет намного меньше количества совпадающих файлов. Командная строка строится почти так же, как xargs строит свои командные строки. В команде разрешен только один экземпляр `{} ‘. Команда выполняется в стартовом каталоге.
Последний — cmdchallenge.com. Его цель образовательная, так как он ставит перед вами задачи, чтобы отточить ваши навыки, но также может выступать в качестве хорошего набора фрагментов для различных задач.
Существует ограниченное количество задач, требующих от вас ввода правильной команды в интерактивной веб-оболочке.
Например вызов на
«# Распечатать текущий рабочий каталог»
требуется ввести pwd рядом с bash (0)>
Если вы поняли это правильно, он продолжит просить вас выполнить более «сложные» задачи:
# У вас новая задача! # Вывести список имен всех файлов в текущем # каталоге, по одному файлу в строке. # Bash (0)>
Вы можете найти все ответы на все проблемы в области «Просмотреть решения этой проблемы, представленные пользователями», что в этом случае предложит ряд альтернатив:
lsdirls * ls .ls -cls -bls -kls ./ls -hls -recho * ls | morels | катехо | lsecho `ls`ls -p | grep -v / ls | awk ‘{print $ 1}’ ls —format = single-columnfor A in *; do echo $ A; donefind -type f | вырезать -d ‘/’ -f2ls -l | awk ‘{print $ NF}’ | хвост -n +2
как уже было сказано, количество испытаний невелико, но, тем не менее, вы также можете найти несколько сложных задач, например:
«Распечатайте файл faces.txt, но только первый экземпляр каждой повторяющейся строки, даже если дубликаты не отображаются рядом друг с другом. Обратите внимание, что порядок имеет значение, поэтому не сортируйте строки перед удалением дубликатов».
Ответ здесь более сложный:
awk! x [\ $ 0] ++ f * awk ‘! a [$ 0] ++’ f * awk ‘! a [$ 0] ++’