Часть трюков до меня уже описали на хабре, часть я взял из других источников, часть придумал сам. Буду благодарен если в комментариях к посту вы напишете, какие трюки используете вы.
Использование ** в zsh
Таким образом я ищу файлы в папке по расширению рекурсивно:
ls **/*.json
файлы с размером выше чем 1 мегабайт:
ls -lh **/*(Lm+1)
Быстро и уверенно удаляем мусор из репозитория в python проекте и судорожно правим. gitignore:
git rm --cached **/*.pyc
Генерация. gitignore при помощи сервиса gitgnore. io
Сначала новая команда
git config --global alias.ignore '!gi() { curl -L -s https://www.gitignore.io/api/$@ ;}; gi'
и вот мы уже можем генерировать собственный файл. И больше никаких pyc файлов!
git ignore sass,node,python,django
Пользователям Windows немного сложнее
Oh-my-zsh в Windows
Если вы не хотите читать раздел из предыдущего трюка про Windows по причинам не связанным с использованием других операционных систем, то для вас у меня есть приятный сюрприз.
Babun — вполне себе приличная реализация эмулятора терминала. Из плюсов: интеграция с oh-my-zsh и пакетный менеджер.
Разбор bash выражения при помощи сервиса explainshell.com
Очень часто пользуюсь данным сервисом. Никак не могу запомнить значения флагов. Сервис может объяснить из чего состоит например вот такая штука:
for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l 2>/dev/null; done
Быстрый запуск веб сервера из консоли
Чтобы запустить веб-сервер с корнем из текущей папки:
python -m SimpleHTTPServer 8000
или установить BrowserSync
npm i -g browser-sync && browser-sync start --server
PHP тоже работает
php -S 127.0.0.1:8000
и Ruby:
ruby -run -e httpd -- -p 5000.
и для любителей:
C:\> "C:\Program Files (x86)\IIS Express\iisexpress.exe" /path:C:\MyWeb /port:8000
Для правильной работы нужен установленный IIS и путь из корня.
Если этого разнообразия не хватило, то всегда можно найти еще
Показать клиенту результат своей работы, со своего компьютера при отсутсвии выделенного IP
Эта штука меня много раз выручала. Работает поверх SSH, создает поддомен по которому клиент может увидеть ваше веб-приложение. Работает довольно медленно. Но работает. Это главное. Есть еще нечто похожее, но платное.
Предварительно скачиваем бинарник с официального сайта. Заходим в папку с бинарником. Выполняем.
./ngrok http 3000
В ответ сервис пришлет домен, по которому приложение доступно из вне.
Использование алиасов в командной строке для работы с git.
В oh-my-zsh есть прекрасный плагин, который позволяет работать с git. Также он создает алиасы для часто используемых команд. Чтобы посмотреть полный список сокращений и их расшифровок можно сделать так.
alias | grep git
Это только малая часть того, из того, что реально использую. Если данная тема будет интересна, то я обязательно напишу вторую часть.
Полезности из комментариев
ungit — графический интерфейс с git
localtunnel.me — еще одна штука для привязывания внешнего домена через SSH, аналог ngrok
В bash тоже можно использовать синтаксис **, для этого нужно обновить версию Bash до 4.x и включить нужную опцию (shopt -s globstar)
Обновление 1: исправил ошибки, теперь все должно работать нормально
Обновление 2: добавил раздел с хаками пользователя
Комментарии (47)
extempl
27.09.2015 11:39+3Вы бы ещё уточнили там где надо, что в примере речь идёт исключительно о Python, а то складывается ощущение, что это по дефолту везде так:
Быстро и уверенно удаляем мусор из репозитория и судорожно правим. gitignore:
Чтобы запустить веб-сервер с корнем из текущей папки:
(хотя здесь, конечно, и так понятно из примера, но всё же, читается странно)mktums
27.09.2015 15:05-5Вы бы ещё уточнили там где надо, что в примере речь идёт исключительно о Python
Справедливости ради, Python есть практически везде.
extempl
27.09.2015 11:43+1Показать клиенту результат своей работы, со своего компьютера при отсутсвии выделенного IP
Вот ещё: localtunnel.me
А вот за explainshell.com спасибо.
olegcorner
27.09.2015 12:46Перефразируя Жванецкого:
$ man find
накроет ls как бык овцу.zolotyh
27.09.2015 21:12+1Я понимаю, что find гораздо мощнее и быстрее. Но как-то не складывается у меня с ним. Слишком много нужно запоминать по сравнению с ls.
silvansky
28.09.2015 11:52+1Зато есть
, что незаменимо при наличии пробелов в путях и именах файлов.-exec
Borz
28.09.2015 12:37для простого поиска ls быстрее будет чем find. А вот для применения каких-либо действий на результат поиска да, find удобнее будет. Но при чём тут пробелы в путях?
silvansky
28.09.2015 13:24Для простого — да. А пробелы как раз мешают действия выполнять:
? test echo "file 1 contents" > "file 1" ? test echo "file 2 contents" > "file 2" ? test ls -al total 16 drwxr-xr-x 4 valentine staff 136 28 сен 13:21 . drwxr-xr-x 157 valentine staff 5338 28 сен 13:20 .. -rw-r--r-- 1 valentine staff 16 28 сен 13:21 file 1 -rw-r--r-- 1 valentine staff 16 28 сен 13:21 file 2 ? test for file in $(ls); cat $file; cat: file: No such file or directory cat: 1: No such file or directory cat: file: No such file or directory cat: 2: No such file or directory ? test find . -type f -exec cat {} \; file 1 contents file 2 contents
Borz
28.09.2015 13:59+1$ grep IFS ~/.profile export IFS=$'\t\n'
избавит вас от проблемы с пробеламиsilvansky
28.09.2015 14:01Но добавит проблем с другими вещами. Я так уже делал, но ведь иногда нужно иметь массив строк, разделённых пробелами. Да, я в курсе про трюк со временным изменением IFS, но это ведь задалбывает рано или поздно. =)
Borz
28.09.2015 14:05ну, всё зависит от того, с чем вы чаще сталкиваетесь в консоли — с проблемами пробелов в путях или с массивом строк :)
silvansky
28.09.2015 14:12По совести сказать, примерно поровну. И првык уже юзать find как раз для разрешения проблем с путями. На автомате уже в скриптах пишу
find -depth 1 -iname "*.png"
вместоls *.png
. Кстати, IFS плох ещё и тем, что на сервере, где будет скрипт выполняться, он может быть задан иначе.
phikus
27.09.2015 12:59+3>Использование ** в zsh
Баш не стоял на месте и в версии 4.х вдохновлённый zsh таки взял эту фичу(рекурсивный глоббинг) на вооружениеSelf_Perfection
27.09.2015 13:44+4Уточнение: работа ** в bash регулируется опцией globstar, которая по-умолчанию выключена:
shopt -s globstar
Anisotropic
27.09.2015 13:37+2лайтовый веб-сервер:
npm install -g http-server
использовать: http-server [папка]
гуй к гиту:
npm install -g ungit
использовать: ungit в папке с нужным репозиторием.
mktums
27.09.2015 15:08Это еще npm ставить надо…
seokirill
27.09.2015 13:58+10Заявлено, что в статье будет информация о «JavaScript, HTML, CSS».
А тут только про гит и консоль. Разочарован.feedborg
27.09.2015 17:31-3Он еще и бояны запостил. Видимо человек находился в информационном вакууме и тут дорвался до хабра. Еще и вторую часть подобной чепухи писать собрался
seokirill
27.09.2015 18:24-2Хоть бы объяснил, чем пользуется, ато только строки, а куда их вводить и что для этого нужно, понятно не всем.
olegkrasnov
27.09.2015 18:36+6Начали появляться вебдевелоперы, не знающие про консоль.
seokirill
27.09.2015 18:39Я знаю про консоль и активно ее использую, но это не накладывает на меня обязательства знать, что такое zsh
feedborg
27.09.2015 19:09Начали появляться веб-девелоперы, которые надергали комманды из старых постов на хабре и постят в виде откровений. Крутой лайфхак!
zolotyh
27.09.2015 21:17В качестве шелла стоит Z Shell, также использую Oh-my-zsh. Все это бежит на OSX.
zolotyh
27.09.2015 21:15Прошу прощения, что ввел в заблуждение. Есть что сказать и по поводу HTML, CSS, и JavaScript. К сожалению, в последний момент выпилил большой кусок, так как он тянет на отдельный пост.
seokirill
27.09.2015 22:03Публикуй, я как раз хотел про HTML / CSS хаки почитать, если они не заезженные.
DeXPeriX
27.09.2015 18:10Спасибо Вам огромное человеческое за Babun. Это именно то, чего мне так не хватало в Windows.
Borz
28.09.2015 01:22Использование ** в zsh
при чём тут zsh?
и попробуйте найти командой «ls **/*.json» файлы, которые лежат не только во вложенных, но и в текущем каталоге. Уж лучше «find ./ -name *.json»
Быстро и уверенно удаляем мусор из репозитория в python проекте и судорожно правим. gitignore:
кажется вы неверно понимаете поведение и смысл это команды.
git rm --cached **/*.pyc
zolotyh
28.09.2015 02:05при чём тут zsh?
и попробуйте найти командой «ls **/*.json» файлы, которые лежат не только во вложенных, но и в текущем каталоге. Уж лучше «find ./ -name *.json»
Сейчас еще раз попробовал, работает и для текущей папки.
pepelsbey
Кажется вы оттипографили текст, теперь примеры нельзя скопировать и использовать:
C:\> «C:\Program
browser-sync start —server
Кавычки, два дефиса в тире и т.п.
extempl
ещё '. gitignore' и пробелы в URL.
zolotyh
Исправил, спасибо!