Комментарии 30
1. У файла не должно быть расширения
Откуда такая информация? Всё прекрасно работает из bin с расширениями! Красивее — это да…
И вообще, как вариант, в файл gdd можно положить весь код из fast_diff.sh, а не вызов самого fast_diff.sh
Добрый день, Алексей.
Да, вы правы, работает с расширением и можно весь код запихнуть в этот файл. Без расширения, чтобы обращение к файлу выглядело как команда, а не выводило мне всякий раз расширение. По поводу положить весь код в файл gdd
. Не делаю так из соображений организации кода. Все подобные файлы располагаются в директории tools
, а те файлы которые отвечают за их вызов в директории bin
. Плюс ко всему, директория tools
находится под git'ом.
2. Если название темы не было передано, удаляем директорию _dist во всех темах
А это опасно! Лучше прописать флаг, типа --all, для удаления всего. А на отсутствие аргументов вывести help. Иначе можно случайно удалить всё, не желая того… Возможно в конкретно этом случае ничего страшного, но деструктивные действия без подтверждения это «фу-фу-фу»
Полностью согласен с вами, что это опасно ) И вы правильно заметили по поводу флага, типа --all
и help. Почти так оно сейчас и работает. На хотел перегружать пример лишним кодом. Мне хотелось, чтобы читатель заметил, где можно сделать лучше и что можно еще больше оптимизировать, защитить и т.д. Вы заметили — значит все круто.
Добрый день!
Да, согласен, есть такое. Но если у вас есть права на запись в файл .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).
Алиасы для Git, кстати, можно задавать в настройках самого Git.
Некоторые интересные идеи есть, например, вот в этой статье — Human Git Aliases
P.S. Ваш алиас 'gbd' весьма опасен. Захотите вы запустить отладчик, а вместо этого нечаянно удалите ветку (да ещё и с -D)
Добрый день, Дмитрий.
Алиасы для Git, кстати, можно задавать в настройках самого Git.
Упоминал про это в статье "Еще есть файл под названием .gitconfig
, в который можно добавлять алиасы для работы с git
.". Не стал расписывать, чтобы не перегружать статью.
P.S. Ваш алиас 'gbd' весьма опасен. Захотите вы запустить отладчик, а вместо этого нечаянно удалите ветку (да ещё и с -D)
Пока живем с ним мирно =)
подобных системах. Для пользователей, которые работают на Windows OS эти знания тоже пригодятся
Позволю себе высказать предположение, что пользователи, работающие на Windows, вряд ли будут заниматься предложенными вами по ссылкам
alias
без параметров покажет все имеющиеся alias'ы. ;)
я настороженно отношусь к введению такого количества коротких алиасов. как уже сказали выше рано или поздно оно законфликтует с каким-нибудь бинарником
гораздо лучше сохранить ваш скрипт fastdiff в файл git-fastdiff
, который точно так же положить в $PATH
и потом вызывать его как
$ git fastdiff <branch-name>
Консоль в массы. Переход на светлую сторону. Автоматизация рутинных задач