Pull to refresh

Comments 30

1. У файла не должно быть расширения

Откуда такая информация? Всё прекрасно работает из bin с расширениями! Красивее — это да…

И вообще, как вариант, в файл gdd можно положить весь код из fast_diff.sh, а не вызов самого fast_diff.sh

Добрый день, Алексей.


Да, вы правы, работает с расширением и можно весь код запихнуть в этот файл. Без расширения, чтобы обращение к файлу выглядело как команда, а не выводило мне всякий раз расширение. По поводу положить весь код в файл gdd. Не делаю так из соображений организации кода. Все подобные файлы располагаются в директории tools, а те файлы которые отвечают за их вызов в директории bin. Плюс ко всему, директория tools находится под git'ом.

Здесь логичнее было бы написать «не принято указывать». «Не должно быть» неверно.

2. Если название темы не было передано, удаляем директорию _dist во всех темах

А это опасно! Лучше прописать флаг, типа --all, для удаления всего. А на отсутствие аргументов вывести help. Иначе можно случайно удалить всё, не желая того… Возможно в конкретно этом случае ничего страшного, но деструктивные действия без подтверждения это «фу-фу-фу»

Полностью согласен с вами, что это опасно ) И вы правильно заметили по поводу флага, типа --all и help. Почти так оно сейчас и работает. На хотел перегружать пример лишним кодом. Мне хотелось, чтобы читатель заметил, где можно сделать лучше и что можно еще больше оптимизировать, защитить и т.д. Вы заметили — значит все круто.

ИМХО, у алиасов есть две стороны медали — с одной стороны удобно, очень удобно. А с другой, если ты работаешь только на своей машине то, в принципе, другой стороны нет. Но, если периодически приходиться работать с удаленными, то любое gf, gm и т.д. выливаються небольшую, совсем маленькую, но очень бесящую «боль».

Добрый день!


Да, согласен, есть такое. Но если у вас есть права на запись в файл .bashrc и на удаленном сервере все навтроено верно (каждый пользователь со своими настройками), то не составляет труда перенести туда свои алиасы. Я так и сделал. И не испытываю неудобств

Это пока Вы не поднимаете пачками инстансы, и когда нуджно каждый по своему настраивать. ДевОпс, такой ДевОпс.

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

У каждого пользователя в его домашней директории (~) располагается поддиректория bin. Если такой нет, то ее можно создать. В ней могут хранится исполняемые файлы. Удобство заключается в том, что такие файлы доступны по имени и к ним не нужно указывать относительный/абсолютный путь. В эту директорию я поместил файл gdd, который отвечает за создание diff:

Впервые слышу про ~/bin: у меня он есть, но в $path я этот каталог добавлял сам в ~/.zshrc. Как и ~/.local/bin (туда pip кладёт; может и ещё кто — каталог выглядит более стандартным, к тому же ~/.local/share является значением по‐умолчанию в XDG Base Directory Specification), ~/.luarocks/bin и ~/.gem/ruby/*/bin.


И зачем делать скрипт, вызывающий другой скрипт, есть же символические ссылки?

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

А перезапускать‐то зачем? Если ~/bin уже был в $PATH, то оно сразу работать начнёт, если нет — после того, как добавите. В zsh ещё нужно написать rehash: без него тоже работает, но автодополнения берёт данные из кэша, который не обновляется автоматически.

Может у меня с кармой что-то не так, но без перезапуска не рабоает

Не имею понятия, как получить такой же эффект неспециально.

Добрый день, Николай.


Впервые слышу про ~/bin:

Привык пользоваться этой директорией на удаленном сервере. По поводу остальных, что вы назвали затрудняюсь ответить. Подозреваю, что некоторые из них могут быть ограничены по правам.


И зачем делать скрипт, вызывающий другой скрипт, есть же символические ссылки?

Хм, интересный вопрос. С такой ссылкой останется тот же функционал, что я описал в статье?

Хм, интересный вопрос. С такой ссылкой останется тот же функционал, что я описал в статье?

Да, bash не проверяет, символическая ссылка или нет, он проверяет только можно ли выполнить файл через stat(), а stat() stat’ит файлы по ссылке. Zsh делает больше системных вызовов и других, но тоже не обрабатывает символические ссылки специальным образом. У меня ~/bin – символическая ссылка и больше половины файлов внутри символические ссылки и это работает.

Да, вы правы, все работает. Только что перепроверил. Спасибо.
Добавлю этот пункт в статью

Привык пользоваться этой директорией на удаленном сервере. По поводу остальных, что вы назвали затрудняюсь ответить. Подозреваю, что некоторые из них могут быть ограничены по правам.

Как ограничены? Либо из каталога можно читать файлы и их можно тогда выполнить, либо нет. Единственный вариант, что мне приходит в голову — монтировать с noexec, но кто и зачем будет это делать с ~/.local? Я бы не удивился, увидев на каком‐нибудь компьютере /home с noexec — требования по безопасности бывают разные, — но тогда и ~/bin не поможет (если только он не символическая ссылка куда‐то без noexec).

Это только мое предположение. Всегда пользовался домашней директорией пользователя ~/bin. Да, ее явно нужно добавлять в $PATH.

Да, ее явно нужно добавлять в $PATH.

Это хорошо бы упомянуть в статье.

Спасибо за замечания. Поправил

Алиасы для Git, кстати, можно задавать в настройках самого Git.
Некоторые интересные идеи есть, например, вот в этой статье — Human Git Aliases


P.S. Ваш алиас 'gbd' весьма опасен. Захотите вы запустить отладчик, а вместо этого нечаянно удалите ветку (да ещё и с -D)

Добрый день, Дмитрий.


Алиасы для Git, кстати, можно задавать в настройках самого Git.

Упоминал про это в статье "Еще есть файл под названием .gitconfig, в который можно добавлять алиасы для работы с git.". Не стал расписывать, чтобы не перегружать статью.


P.S. Ваш алиас 'gbd' весьма опасен. Захотите вы запустить отладчик, а вместо этого нечаянно удалите ветку (да ещё и с -D)

Пока живем с ним мирно =)

подобных системах. Для пользователей, которые работают на Windows OS эти знания тоже пригодятся

Позволю себе высказать предположение, что пользователи, работающие на Windows, вряд ли будут заниматься предложенными вами по ссылкам извращениями развлечениями, а продолжат юзать VBScript.

Одна из первых вещей, которые я делаю на Windows, куда я могу ставить ПО — это установка babun (cygwin + пачка программ, включая zsh и эмулятор терминала).

Про список алиасов:
alias

без параметров покажет все имеющиеся alias'ы. ;)

Добрый день, Денис.


Спасибо. Этот момент упустил. Обновил статью.

UFO just landed and posted this here

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


гораздо лучше сохранить ваш скрипт fastdiff в файл git-fastdiff, который точно так же положить в $PATH и потом вызывать его как


$ git fastdiff <branch-name>

Добрый день.


Все возможно. Этими алиасами пользуюсь уже больше трех лет и никаких конфликтов ). Ваш подход тоже рабочий и очень даже практичный. Но немного больше настроек.

Sign up to leave a comment.

Articles

Change theme settings