Статьи

7 простых и полезных советов командной строки

Одним из наиболее полезных, но недостаточно используемых инструментов веб-разработчика является командная строка. Терминал часто отпугивает людей; так что здесь мы демонстрируем некоторые из самых полезных ежедневных команд.


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

Вы можете перейти в другой каталог с помощью следующего:

1
cd ../relative/path/to/other/directory/or/file
1
cd /absolute/path/to/other/directory/or/file

Если вы заблудились, вы можете вернуться в «домашний» каталог с помощью команды «cd ~».

Если вам нужно знать, какие файлы содержит конкретный каталог:

1
ls ../relative/path/to/other/directory/or/file
1
ls /absolute/path/to/other/directory/or/file

Вы можете использовать переключатель «-l» для отображения содержимого в виде списка, а параметр «-А» также для отображения скрытых файлов (на компьютерах под управлением Linux файлы и каталоги, имена которых начинаются с «.», Считаются «скрытыми» «).

Иногда вы просто хотите узнать, в каком каталоге вы сейчас находитесь!

1
pwd

Это покажет путь к вашей текущей папке.

Копирование файлов из одного места в другое выполняется быстро и просто:

1
cp /files/or/directories/to/copy /directory/to/copy/to/

Вы также можете использовать ключ «-R» при копировании, чтобы сделать его рекурсивным, поэтому все подкаталоги и файлы также копируются.

В большинстве случаев в командной строке включено завершение табуляции, поэтому вы можете начать вводить имя команды или путь к файлу, нажать клавишу табуляции, и он завершит ее для вас. Если имеется более одного варианта, он не будет завершен для вас, но если вы дважды нажмете на вкладку, он перечислит параметры.

Завершение с помощью табуляции позволяет быстрее вводить длинные пути к файлам!

Есть несколько способов определить, какие параметры есть у команды. Большинство команд имеют доступный оператор —help (или -help, или -h), в котором перечислены возможные аргументы и параметры, которые вы можете использовать:

1
cd —help

Если вы обнаружите, что краткой справки, предоставленной оператором —help, недостаточно, вы можете прочитать более подробно с помощью программы man:

1
man mysqldump

Который расскажет вам все о «нано» программе. Простые команды типа «cd» могут не иметь записи в man.


Резервное копирование базы данных — это то, что вы должны делать часто. Как и большинство вещей, есть много способов сделать это, но использование командной строки является одним из лучших. Почему? Потому что это помогает вам обойти потенциальные проблемы, такие как тайм-ауты выполнения таких инструментов, как phpMyAdmin, и потенциальные сбои в работе сети при использовании инструмента локального администрирования, такого как MySQL Workbench.

Команда для запуска резервного копирования довольно мала, но может потребовать некоторого объяснения:

1
mysqldump -u mysqluser -p mysqldatabase

Теперь, чтобы объяснить, что здесь происходит! Программа «mysqldump» — это инструмент для создания резервных копий базы данных. Используемые параметры:

  • Ключ «-u» означает, что вы собираетесь указать имя пользователя для подключения, который должен следовать, как «-u mysqluser» выше
  • Ключ «-p» означает, что вы либо собираетесь сразу указать используемый пароль (без пробела), либо он предложит вам ввести его
  • Последний параметр, использованный в приведенном выше примере, — это имя базы данных для резервного копирования (конечно!)

Если бы вы выполнили команду, указанную выше, вы бы увидели, как содержимое вашей базы данных быстро исчезает на экране. Это хорошо, потому что мы знаем, что эта часть работает (фактически подключается к базе данных), но это также плохо, потому что … куда она делась? Ответ: никуда! Это прокручивалось мимо, и на этом все. Теперь нам нужно захватить его и поместить в файл.

Чтобы поместить содержимое вывода в файл, для целей резервного копирования нам нужно использовать то, что называется перенаправлением .

1
mysqldump -u mysqluser -p mysqldatabase > db_backup.sql

Таким образом, мы добавили редиректор и имя файла, в который хотели получить вывод. Теперь вы сможете увидеть файл с именем «db_backup.sql», и если вы откроете его, вы увидите скрипт SQL со структурой и содержимым вашей базы данных, готовой для восстановления или миграции.

И последнее, что может пригодиться для резервного копирования, — это сжатие сценария SQL. В этом примере я собираюсь использовать сжатие GZip, потому что оно довольно распространенное, но вы также можете использовать Bzip2 или что-то еще.

Чтобы добавить сжатие в эту команду, мы просто делаем то, что называется конвейером . Мы направляем вывод из mysqldump через gzip, а затем перенаправляем его в нужный файл, например:

1
mysqldump -u mysqluser -p mysqldatabase |

Я также добавил «.gz» к имени файла, так что я знаю, что он сжат, а не просто текст (он также будет меньше!)


Итак, у вас есть резервная копия вашей базы данных (либо с помощью метода, описанного выше, либо каким-либо другим способом), и что-то пошло не так, и вам нужно восстановить, или вы переносите его на новый сервер. Вы можете использовать один из других инструментов, упомянутых выше, но в примере с phpMyAdmin, что если размер файла резервной копии вашей базы данных больше допустимого размера загрузки? К счастью, командная строка не против.

Команда для восстановления очень похожа на команду для резервного копирования. Во-первых, без сжатия GZip:

1
cat db_backup.sql |

Мы используем команду «cat» для вывода содержимого скрипта резервного копирования и передачи его содержимого в программу mysql. Как вы можете видеть, программа mysql использует те же опции, что и mysqldump, которая есть во втором разделе.

Теперь, если скрипт был сжат GZip, мы не можем просто вывести его содержимое в mysql, так как это будут сжатые данные вместо красивого SQL-скрипта. Итак, мы делаем следующее:

1
gunzip < db_backup.sql.gz |

Видите, это очень знакомо, просто немного переключился.

Здесь происходит то, что мы тоже запускаем «gunzip» и перенаправляем в него сценарий резервного копирования для распаковки. Затем мы передаем распакованный вывод в программу «mysql».


Иногда у вас есть большой файл, например, может быть экспорт базы данных, и вам нужно выполнить поиск / замену его … но он не откроется ни в одном из ваших текстовых редакторов, потому что на вашем компьютере не хватает памяти, пытаясь открыть Это! Хорошо, вот способ обойти это, используя командную строку и немного регулярных выражений.

Это работает так, чтобы вывести содержимое сценария SQL (или любого другого файла, который вы используете), передать его через программу «sed», которая специально предназначена для управления потоковым контентом, и затем перенаправить этот вывод в новый файл. , Звучит сложно? Ну … думаю, это немного, но сама команда выглядит просто!

1
cat original_dump.sql |

Новая часть здесь — действительно программа «sed».


Если вы работаете в командной строке и вам нужно скопировать файл, особенно если вам нужно сделать это безопасно, зачем идти и запускать ваш FTP-клиент? Просто используйте программу под названием Secure Copy или SCP, которая специально предназначена для безопасного удаленного копирования файлов. Secure Copy использует SSH для копирования файлов, поэтому вам нужно сначала убедиться, что вы можете подключиться к удаленному компьютеру через SSH (об этом я расскажу чуть позже в конце статьи, так что придерживайтесь этой мысли).

Синтаксис команды scp аналогичен синтаксису команды cp, описанной в первом разделе, с добавлением имени хоста удаляемого компьютера и имени пользователя для подключения:

1
scp /path/to/local/file username@hostname:/path/to/copy/to/

Биты, на которые следует обратить внимание: «username @ hostname:», которые, как я объяснил выше, являются именем пользователя и именем хоста, используемым при подключении. Вам будет предложено ввести пароль для этого пользователя, а также вы получите индикатор выполнения для копирования, чтобы вы могли видеть, как это происходит.

Вы можете использовать ключ «-r» (примечание: это строчные буквы для scp, прописные буквы для cp) с безопасным копированием, чтобы сделать его рекурсивным. Кроме того, если вы впервые используете SCP или SSH для подключения к удаленному компьютеру, вас могут попросить принять для безопасности отпечаток пальца RSA, который вы должны принять (если вы уверены, что подключаетесь к нужному серверу). ,

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

1
scp username@hostname:/path/to/remote/file /local/path/to/copy/to/

Если вы подключены по SSH к одному веб-серверу и хотите скопировать файлы на другой, вы можете использовать эту команду для непосредственного копирования файлов без предварительной загрузки их на локальный компьютер!


Хотите найти конкретный файл, но не знаете, где он скрывается во многих каталогах вашего проекта? (или даже если их больше одного!)

1
find ./ -iname «index.php»

Команда «find» предназначена для поиска файлов в иерархии каталогов. У него много вариантов, поэтому его использование довольно разнообразно. Здесь я указал поиск в текущем каталоге с помощью «./» и использовал ключ «-iname», что означает поиск файла с именем, аналогичным указанному мной. Также есть ключ «-name», но ключ «-iname» нечувствителен к регистру, поэтому он также найдет INDEX.php.

Вы когда-нибудь знали, что вы написали функцию для чего-то, но не можете вспомнить, в каком файле это было?

1
grep -iR myFunction ./

«grep» — это программа для печати линий, которые соответствуют определенному шаблону. Вы можете снабдить его некоторыми переключателями, такими как «-i», чтобы сделать его нечувствительным к регистру, и «-R», чтобы сделать его рекурсивным в моем примере. Затем укажите шаблон и путь для поиска (здесь я ищу текущий каталог с помощью «./»). В этом примере будет показано имя файла и строка в этом файле для любых совпадений, которые он найдет для «myfunction» (case-insensitve из-за «-i»).

Если ваши проекты являются рабочими копиями Subversion, вы можете обнаружить, что раздражает видеть результаты из каталогов «.svn». Чтобы исключить определенные каталоги из поиска, используйте переключатель «—exclude-dir =», например «—exclude-dir = .svn».


Теперь мы знаем, как найти конкретные файлы; Что делать, если мы хотим сделать определенные вещи с этими файлами? Например, я часто работаю на Mac и обнаруживаю, что когда я сохраняю файлы в общих папках Windows или Linux Samba в сети, Mac OS X любезно засоряет файлы «._filename» повсюду. Поэтому мне нравится, когда я могу регулярно их чистить.

Чтобы найти такие файлы, я использую оба метода из предыдущего раздела для поиска файлов с определенным именем:

1
find ./ |

Мы находим способ вывести все файлы в текущем каталоге (рекурсивно), а затем передаем вывод в grep, который гарантирует, что он соответствует моему регулярному выражению. Регулярные выражения просто говорят: «Сопоставьте все, что начинается с литерала. За ним следует литерал _ с последующим 0 или более чем-либо еще» Запустите его так, чтобы убедиться, что вы видите нужные файлы.

Теперь, чтобы сделать что-то со всеми файлами, которые вы захватили с помощью этой команды, вы заключаете это в кавычки («). Если бы я хотел удалить их все:

1
rm -f `find ./ |

У меня есть команда «rm» (для удаления или удаления файлов) с переключателем «-f» (что означает принудительное удаление без запроса подтверждения), и она будет выполняться для каждого файла, возвращаемого командой в конце -цитаты!

Я чувствую, что было бы безответственно не упомянуть здесь, что вы должны быть очень осторожны, используя команду «rm». Если вы используете команду «rm» с ключом «-f», убедитесь, что вы точно знаете, что собираетесь удалять, и что вы действительно хотите, чтобы это произошло! Если вы используете «-f», у вас не будет второго шанса.


Ранее я упоминал в статье о подключении к удаленному компьютеру через SSH. Многие из этих команд наиболее полезны при использовании на вашем веб-сервере, который, вероятно, работает под управлением Linux, поэтому вам необходимо иметь возможность подключиться к командной строке. Способ сделать это — использовать программу SSH, которая делает это безопасно.

В Mac OS X или в Linux вы можете запустить SSH из приложения Terminal:

1
ssh username@hostname

Если вы работаете в Windows, вам нужно использовать свободно доступную программу PuTTY .

Вам будет предложено ввести пароль при подключении.

Если у вас уже нет SSH-доступа к вашему веб-хостингу, вы, скорее всего, сможете запросить его, и он настроит его для вас.


Как и большинство вещей, «вы не знаете, что вы не знаете». Может показаться сложным обнаружить, как использовать командную строку; но у вас есть огромное количество энергии, когда вы обернетесь вокруг него! Надеюсь, эта статья поможет вам начать изучение! Любые вопросы?