Самые мощные примеры команд или скриптов Unix, которые должен знать каждый программист - PullRequest
27 голосов
/ 09 июля 2009

Есть много вещей, которые должны знать все программисты, но меня особенно интересуют команды Unix / Linux, которые мы все должны знать. Для выполнения задач, с которыми мы можем столкнуться в какой-то момент, таких как рефакторинг , отчеты , сетевые обновления и т. Д.

Мне любопытно, потому что, прежде чем я работал тестировщиком программного обеспечения в компании-разработчике программного обеспечения, пока я изучал свою степень, я заметил, что у всех разработчиков (которые разрабатывали программное обеспечение для Windows) было 2 компьютера.

Слева от них находилась машина для разработки Windows XP, а справа - коробка с Linux. Я думаю, что это была Ubuntu. Во всяком случае, они сказали мне, что использовали его, потому что он предоставлял мощные операции Unix, которые Windows не могла выполнить в процессе разработки.

Мне любопытно узнать, как инженер-программист, что, по вашему мнению, является одним из самых мощных сценариев / команд / применений, которые вы можете выполнять в операционной системе Unix / Linux, которые каждый программист должен знать для решения реальных задач что не обязательно относится к написанию кода?

Мы все знаем, что делают sed , awk и grep . Я заинтересован в некоторых реальных сценариях Unix / Linux, которые решили сложную проблему для вас, так что другие программисты могут получить выгоду. Пожалуйста, предоставьте свою историю и источник.

Я уверен, что есть множество подобных примеров, которые люди хранят в своей папке Scripts .

Обновление: Люди, кажется, неправильно истолковывают вопрос. Я не спрашиваю имена отдельных команд Unix, скорее код UNIX snippets , который решил проблему для вас.

Лучшие ответы от сообщества


Пройдите по дереву каталогов и распечатайте пути к любым файлам, которые соответствуют регулярному выражению:

find . -exec grep -l -e 'myregex' {} \; >> outfile.txt 

Вызовите редактор по умолчанию (Nano / ViM)

(работает на большинстве систем Unix, включая Mac OS X) Редактор по умолчанию любой Переменная окружения " EDITOR " установлен в. т.е.: экспорт РЕДАКТОР = / usr / bin / pico который находится в ~ / .profile под Mac OS X.

Ctrl+x Ctrl+e

Список всех работающих сетевых подключений (включая приложение, к которому они принадлежат)

lsof -i -nP

Очистить историю поиска Терминала (Еще один из моих любимых)

history -c

Ответы [ 25 ]

1 голос
/ 09 июля 2009

некоторые из вас могут не согласиться со мной, но, тем не менее, здесь есть о чем поговорить. Если кто-то изучает gawk (также и другие варианты) полностью, можно пропустить обучение и использовать grep / sed / wc / cut / paste и несколько других * nix инструментов. все, что вам нужно, это один хороший инструмент, чтобы сделать работу многих вместе взятых.

1 голос
/ 13 июля 2009

Поиск PID без отображения самого grep

export CUPSPID=`ps -ef | grep cups | grep -v grep | awk '{print $2;}'`
1 голос
/ 09 июля 2009

Сила этих инструментов (grep find, awk, sed) заключается в их универсальности, поэтому конкретный случай кажется совершенно бесполезным.

man - самая мощная команда, потому что тогда вы можете понять, что вы печатаете, а не просто слепо копировать вставку из переполнения стека.

Пример приветствуется, но уже есть темы для этого. Мое самое используемое:

grep something_to_find * -R

, который можно заменить на ack и

find | xargs 

находка с результатами, переданными в xargs, может быть очень мощной

1 голос
/ 09 июля 2009

При решении проблем с неисправными Linux-блоками, безусловно, самая распространенная последовательность клавиш, которую я печатаю, - alt + sysrq R E I S U B

1 голос
/ 14 июля 2009

Лучшие ответы от сообщества


Пройдите по дереву каталогов и распечатайте пути к любым файлам, которые соответствуют регулярному выражению:

find . -exec grep -l -e 'myregex' {} \; >> outfile.txt 

Вызовите редактор по умолчанию (Nano / ViM)

(работает на большинстве систем Unix, включая Mac OS X) Редактор по умолчанию любой Переменная окружения " EDITOR " установлен в. т.е.: экспорт РЕДАКТОР = / usr / bin / pico , который находится по адресу ~ / .profile под Mac OS X.

Ctrl+x Ctrl+e

Список всех запущенных сетевых подключений (включая приложение, к которому они принадлежат)

lsof -i -nP

Очистить историю поиска Терминала (Еще один из моих любимых)

history -c
0 голосов
/ 05 января 2015

Повторите вашу предыдущую команду в bash, используя !!. Я часто запускаю chown otheruser: -R /home/otheruser и забываю использовать sudo. Если вы забыли sudo, используя !! немного проще, чем стрелка вверх и затем домой.

sudo !!

Я также не фанат автоматически разрешаемых имен хостов и имен для портов, поэтому я держу псевдоним для iptables, сопоставленный с iptables -nL --line-numbers. Я даже не уверен, почему номера строк по умолчанию скрыты.

Наконец, если вы хотите проверить, прослушивает ли процесс порт как следует, привязанный к нужному адресу, вы можете запустить

netstat -nlp

Затем вы можете ввести имя процесса или номер порта (-n дает числовое значение).

Мне тоже нравится, когда в терминале есть помощь цветов. Мне нравится добавлять это в мой bashrc, чтобы напомнить мне, являюсь ли я пользователем root, даже не читая его. Это на самом деле мне очень помогло, я никогда не забуду sudo.

red='\033[1;31m'
green='\033[1;32m'
none='\033[0m'

if [ $(id -u) -eq 0 ];
then
    PS1="[\[$red\]\u\[$none\]@\H \w]$ "
else
    PS1="[\[$green\]\u\[$none\]@\H \w]$ "
fi

Это все очень простые команды, но я часто их использую. Большинство из них даже заслуживали псевдоним на моих машинах.

0 голосов
/ 27 августа 2014
:() { :|: &} ;: 

Fork Bomb без доступа root.

Попробуйте на свой страх и риск.

0 голосов
/ 23 мая 2013

Запустить все WebService (s)

     find -iname '*weservice*'|xargs -I {} service {} restart

Поиск локального класса в подкаталоге Java

     find -iname '*.java'|xargs grep 'class Pool'  

Поиск всех элементов из файла рекурсивно в подкаталогах текущего пути:

     cat searches.txt| xargs -I {} -d, -n 1 grep  -r {} 

P.S search.txt: первый, второй, третий, ..., миллион

0 голосов
/ 13 июля 2009

Для параллельного запуска нескольких процессов без перегрузки машины (в многопроцессорной архитектуре):

NP=`cat /proc/cpuinfo | grep processor | wc -l`
#your loop here
    if [ `jobs | wc -l` -gt $NP ];
    then
         wait
    fi
    launch_your_task_in_background&
#finish your loop here
0 голосов
/ 09 июля 2009

В некотором роде, но вы можете получить PowerShell на Windows. Он действительно мощный и может делать много вещей типа * nix. Отличительной особенностью является то, что вы работаете с объектами .net вместо текста, что может быть полезно, если вы используете конвейер для фильтрации и т.д.

В качестве альтернативы, если вам не нужна интеграция .NET, установите Cygwin на Windows. (И добавьте его каталог в ПУТЬ Windows.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...