Три совета для фанатика Linux Shell


На этот раз у нас есть три отличных совета для любителей оболочки 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] ++’


Добавить комментарий