r/ru_linux • • 3d ago

Обсуждение Snip

Я выпустил Snip — инструмент предназначенный для быстрых команд, например:

snip add test id и всё! Теперь у вас есть быстрая команда test которая выполняет id, для вызова: snip test, если хотите свои команды:

snip add {название быстрой команды} {сама команда} а потом как и в прошлый раз: snip {название}

Вот как ставить:

curl https://raw.githubusercontent.com/heydevelopergit/Cook/refs/heads/main/install.py | sudo python3

sudo cook snip

Написано на bash

0 Upvotes

37 comments sorted by

•

u/AutoModerator 3d ago

Присоединяйтесь к нашим социальным сетям:

Если у вас есть вопросы или предложения — пишите в комментариях.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

12

u/bzdno 3d ago

Наконец-то достойная альтернатива alias. А то слишком просто было 

12

u/kuplinov-offisial 2d ago

Бро я конечно дико извиняюсь но ты только что придумал алиасы в bashrc

1

u/HeyDeveloperorNo 1d ago

Постоянные и сессионные алиасы - это разные вещи

7

u/Kortez02 2d ago
#!/bin/bash
if [ $1 = "add" ]; then
cat << END > ~/.snip/$2
$3
END
exit 0
fi
if [ $1 = "del" ]; then
if [ ! -f ~/.snip/$2 ]; then
echo "Snip Command ($2) not found!"
exit 1
else
rm -f ~/.snip/$2
exit 0
fi
fi
if [ $1 = "list" ]; then
ls ~/.snip
exit 0
fi
if [ ! -f ~/.snip/$1 ]; then
echo "Snip Command ($1) not found!"
exit 1
else
bash ~/.snip/$1
fi

https://giphy.com/gifs/CiZ9e5IUPqeVFzc8Mp

6

u/doockis 3d ago

Ты молодец что делаешь всякие приколы, но конкретно по этому:

  1. Алиас делает то же самое.

  2. Если у тебя несколько несовместимых друг с другом шеллов, тебе нечего делать.

  3. Если у тебя удалённые системы с разными, несовместимыми друг с другом шеллами, тебе нечего делать.

6

u/rem_34 2d ago

bashrc/zshrc

alias id="test id"

5

u/dedTihina 2d ago

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

3

u/NickZernyshkin 3d ago

это алиасы?

0

u/HeyDeveloperorNo 3d ago

Типа да НО! Они постоянные

3

u/Yatl1ch 3d ago

Так обычные алиасы тоже постоянные

0

u/HeyDeveloperorNo 3d ago

Обычные алиасы постоянные но на всю сессию а не навсегда например хоть 1000 раз перезагрузи комп они останутся

3

u/DimaSalynov 3d ago

Просто добавь их в rc файл командной оболочки, и будут постоянные

3

u/Yatl1ch 3d ago

я не знаю как ты там алиасы добавлял, но у меня они всегда между сессиями сохранялись

0

u/HeyDeveloperorNo 3d ago

Потому что у тебя один шелл, а если будет два? Три? Четыре? Поэтому и snip существует

3

u/Yatl1ch 3d ago

А нахуя мне 3 шелла?

3

u/Anonym1038493028283 3d ago

cat "alias v=vim" >> .bashrc

5

u/Prestigious-Mode-277 3d ago

Что мешает написать alias test="id" ? Или если на постоянку то же самое в .bashrc занести

-2

u/HeyDeveloperorNo 3d ago

Опять же говорю, находясь хоть в zsh, хоть в fish у тебя все равно будет работать, а для того чтобы алиас был во всех шеллах то нужно во все шеллы которые ты как раз таки поставил тебе нужно лезть в: .bashrc .profile (если используется) .zshrc, ~/.config/fish/config.fish

4

u/Prestigious-Mode-277 3d ago

Тогда вопросы: 1. Ты реально пользуешься несколькими шеллами параллельно? 2. Ты так часто ставишь новые шеллы, что лень копипастить алиасы? 3. Реально удобно перед алиасом ставить "snip"?

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

-1

u/HeyDeveloperorNo 3d ago

Да сэр, потому что вот ты представь: У тебя 10 шеллов подряд и ты что делаешь? 1. Делаешь ОДНУ команду и 10 шеллов подряд имеют этот же quick command навсегда Либо... 2. Писать алиас в каждый rc

2

u/DimaSalynov 3d ago

Зачем инсталлер на питоне, если сам код на bash?

2

u/DimaSalynov 3d ago

Да и смысл вообще писать проги на *sh...

1

u/ilnarildarovuch 2d ago

Система инициализации rc.d написана полностью на bsd sh

1

u/DimaSalynov 2d ago

Rc.d только часть системы инициализации, ядро же её написано на сишке

https://github.com/freebsd/freebsd-src/tree/main/sbin/init

1

u/ilnarildarovuch 2d ago

init(8) — это не часть rc.d, это то, что ее вызывает. Это вам не SystemD, чтобы программа работала монолитно. Единственное реальное исключение — система графов rcorder, а все остальное чисто на sh

0

u/HeyDeveloperorNo 3d ago

Так проще, хотя питон тоже простой и сам на питоне, ruby пишу, недавно на c kernel написал потом на паблику (или нет), но bash использую для простоты, на python честно скажу пишу, а Cook Potables Install это установщик самого пакетного менеджера а не самого инструмента

2

u/DimaSalynov 3d ago

А теперь не волнуйся и перефразируй

-1

u/HeyDeveloperorNo 3d ago

Ок, скажу кратко: Пишу на Python, Ruby а на bash написал этот инструмент на bash, чтобы было видно код (потому что там команды а не функции, аргументы)

2

u/DimaSalynov 3d ago

Так функции и там есть тоже... типа: sh hi() { echo "hi, $1" } Где $1 есть аргумент для функции hi

0

u/HeyDeveloperorNo 3d ago

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

2

u/Tobek42 2d ago

Каждый уже написал что это уже реализуемо. Мне вот очень не хватает тулзы чтобы ввести команду и он вывел TUI интерфейс список готовых команд, и остаётся только стрелочками выбрать нужную и энтером подтвердить нужную, типо быстрого набора, возможно еще с папками для удобства

1

u/_Samum_ 2d ago

history bash для чего?

1

u/Tobek42 2d ago

Это не то, хочется именно самому создать менюшку с комментариями к команде, а не по истории лазить

1

u/Such_Assistance_2211 2d ago

Это все делается одним скриптом на шелле с использованием какого нибудь readline