[macOS] Запуск веб-сервера одной командой

Чтобы поднять примитивный локальный веб-сервер на macOS, необязательно качать из сети сторонние решения (XAMPP, OpenServer…) — все что нужно, скорее всего, уже работает «из коробки».

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

Если установлен Python 2:

python -m SimpleHTTPServer 8000

Если установлен Python 3:

python3 -m http.server --cgi 8080

Если установлен PHP:

php -S localhost:2222

Сервер будет работать по адресу http://localhost:<порт>

Если установлен npm:

npm i -g serve
serve

[macOS] Operation not permitted

Захотелось мне удалить старые файлы с диска, но не тут-то было – система пишет, что удалить не могу, ибо файл заблокирован (а если через терминал, то ошибка «Operation not permitted»).

Открываю свойство файла – действительно:

Можно вручную снять галку с «Locked», но такой метод не подойдет, если файлы десятки или сотни.

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

sudo ls -laO <файл>

В моем случае было:

-rwxr--r-- 1 user staff uchg 60797 May 11 2001

Теперь осталось лишь удалить данный флаг:

sudo chflags nouchg <файл>

А если рекурсивно, то:

chflags -R nouchg <директория>

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

[Linux] Удаление файлов по расширению

Для рекурсивного удаления файлов определенного расширения можно использовать следующую команду:

find -name "*.extension" -type f -delete

Пример: в каталоге /var/www/site.com удалить все файлы с расширением .DS_Store:

find /var/www/site.com -name "*.DS_Store" -type f -delete

Для подстраховки можно сначала посмотреть, что будет удалено. Для этого:

find /var/www/site.com -name "*.DS_Store" -type f

Важно, чтобы ключ -delete был последним аргументом в команде. Если же его написать до -name, то команда удалит все содержимое.

[Git] Узнать количество коммитов за период

Узнать количество коммитов за определенный период времени можно следующим способом:

Количество коммитов в текущей ветке за указанный период времени:

git rev-list --count HEAD --since="Jan 1 2016" --before="Dec 31 2016"

Количество коммитов по всем веткам за указанный период времени:

git rev-list --count --since="Jan 1 2016" --before="Dec 31 2016" --all

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

git rev-list --count --since="Jan 1 2016" --before="Dec 31 2016" --all --no-merges

[macOS] Установка .dmg через командную строку

MacOS представляет элегантный способ установки приложений, путем простого копирования приложения в папку /Applications. Однако в некоторых случаях все еще возникает необходимость установки .dmg через командную строку. Сделать это можно четырьмя простыми командами.

Все, что необходимо, это смонтировать образ .dmg, и скопировать его содержимое в директорию, а затем размонтировать .dmg файл.

Монтируем образ:

sudo hdiutil attach [disk-image-name].dmg

Переходим в смонтированный образ:

cd /Volumes/[disk-image-name]

Копируем нужное нам приложение в папку /Applications:

sudo cp -rf [app-name].app /Applications

Размонтируем образ:

sudo hdiutil detach /Volumes/[disk-image-name]

[Git] Warning: Unprotected Private Key File!

Если при попытке выполнить команду (к примеру, git fetch) будет выведена ошибка «Unprotected Private Key File!», то значит у вас выставлены некорректные права доступа:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/path/.ssh/id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
key_load_private_type: bad permissions
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
error: Could not fetch origin

Решение:

find /path/.ssh/id_rsa -type f -exec chmod 600 {} \;
find /path/.ssh/ -type d -exec chmod 700 {} \;

Определение MD5-хэша в Windows

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

Команда:

certUtil -hashfile <путь до файла> [алгоритм]

Доступные алгоритмы: MD2, MD4, MD5, SHA1, SHA256, SHA384 и SHA512

Пример вычисления MD5-хэша у файла:

> certUtil -hashfile C:\picture.jpg MD5

Результат команды:

MD5 hash of fileC:\picture.jpg:
70 97 a3 dc 61 ec 8f 27 87 55 7e e4 a5 30 58 c9
CertUtil: -hashfile command completed successfully.

			
	

[Git] Создание удаленной ветки при пуше

Если необходимо пушнуть изменения в ветку удаленного репозитория, которой еще нет, то следующая команда поможет в решении данного вопроса:

git push <remote-name> <local-branch-name>:<remote-branch-name>

Пример:

git push origin dev:new-feature

[macOS] Установка обновлений через командную строку

Переодически возникает проблема, когда страница «Обновления» из утилиты App Store вечно висит в состоянии загрузки, и соответственно, не отображается список обновлений, доступных для OS X.

Эту проблему можно обойти, используя командную строку.

softwareupdate -l – отобразит список доступных обновлений

Пример:

Software Update Tool
Copyright 2002-2015 Apple Inc.

Finding available software
Software Update found the following new or updated software:
   * Command Line Tools (OS X 10.11) for Xcode-7.2
	Command Line Tools (OS X 10.11) for Xcode (7.2), 163222K [recommended]
   * OS X El Capitan Update-10.11.2
	OS X El Capitan Update (10.11.2), 1362174K [recommended] [restart]
   * OS X El Capitan Recovery Update-1.0
	OS X El Capitan Recovery Update (1.0), 463551K [recommended]
   * iTunesXPatch-12.3.2
	iTunes (12.3.2), 114404K [recommended]

Чтобы установить нужное обновление из списка, достаточно ввести команду:

sudo softwareupdate -i iTunesXPatch-12.3.2 – установка iTunes 12.3.2

Вывод результата команды:

Software Update Tool
Copyright 2002-2015 Apple Inc.

Downloading iTunes
Downloaded iTunes
Installing iTunes
Done with iTunes
Done.

Материал по теме: ссылка