Тёмный

O Bun resolveu o maior problema dos bash scripts?! (Bun Shell) 

Rocketseat
Подписаться 366 тыс.
Просмотров 17 тыс.
50% 1

Conecte-se a 500mil devs e avance para o próximo nível com a nossa plataforma: rocketseat.com.br/
Cadastre-se na nossa plataforma: app.rocketseat.com.br/signup
Junte-se a mais de 392mil devs em nossa comunidade no Discord: / discord
Acompanhe a Rocketseat nas redes sociais:
Twitter: @rocketseat
Facebook: @rocketseat
Instagram: @rocketseat

Опубликовано:

 

30 янв 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 59   
@bigbusca
@bigbusca 5 месяцев назад
Bash é o interpretador shell mais utilizado, não existem incompatibilidades para executar um script bash em um terminal bash, o que existem são incompatibilidades entre bash, zsh, fish... Pq todos são considerados shell, mas só o bash é o shell bash que é 100% compatível com ele mesmo. Shell, principalmente o bash, possui formas muito práticas de resolver problemas com muito pouco código e com uma performance muito grande, mas é difícil encontrar código em bash bem escrito, o que criou a fama de ser lento Quando pedir para o GPT escrever um script bash, peça para fazer utilizando recursos builtn, isso fará scripts muito mais rápidos Seria um verdadeiro sonho se um dia os navegadores embutissem um similar ao bash para que fosse possível não precisar mais de javascript :) O próprio script que foi adaptado já é um indicativo de como bash precisa escrever pouco, mas ali tem como simplificar, por exemplo, não tem pq utilizar o touch e não é preciso fazer o rm > concat.txt Sim, apenas o maior que direcionando para o nome do arquivo, se existir arquivo o conteúdo será apagado, se não existir o arquivo será gerado um vazio No exemplo não vai ser perceptível a diferença, mas o loop direcionando para o concat.txt, a cada passada irá fazer uma gravação em disco, incrementar os dados em uma variável ou criar um array seria muito mais rápido, em situações que o loop se repete por dezenas de milhares de vezes seguidas, é o tipo de mudanças que pode melhorar muito o desempenho var+=" file '$x'" Essa seria uma forma cada passagem do loop acrescentar conteúdo à variável
@hitalos
@hitalos 5 месяцев назад
Exato! E quando a gente faz um script, normalmente tem a "shebang" pra definir qual shell deverá executá-lo.
@cyberpunktuber
@cyberpunktuber 4 месяца назад
EMPRESA LIXO ENTREI EM CONTATO PRA FALAR SOBRE O CERTIFICADO QUE NÃO FOI EMITIDO E NÃO OBTIVE NENHUMA RESPOSTA, E NENHUMA RESOLUÇÃO DE PROBLEMA POR PARTE DELES, ESTÃO SE LIXANDO PARA OS ALUNOS, A PARTIR DE HOJE VOU FALAR PARA O MÁXIMO DE PESSOAS QUE PUDER PARA QUE NÃO SE MATRICULEM NESSA BOSTA DE ESCOLA QUE NÃO DÁ A MÍNIMA PARA OS ALUNOS
@lucasarieiv
@lucasarieiv 5 месяцев назад
Tava precisando desse conhecimento exatamente hoje. Muito bom!!! Chegou na hora
@littleghoost
@littleghoost 4 месяца назад
É mais fácil criar um binário para fazer isso em outra linguagem multiplataforma especializada em binários, como Rust, C/C++, Go, porque esse binário do Bun é quase 100MB (compila com a pasta node_modules é por isso) pra um script simples kkkk Ou faça em Python. Eu geralmente quando preciso criar scripts de automação, faço em Python.
@lennonlemos455
@lennonlemos455 5 месяцев назад
Muito top!!! Fica muito uniforme 👏👏
@leomelegari
@leomelegari 5 месяцев назад
Aguardando ansiosamente pelas aulas de bun no ignite
@JhonCruz-ki7wi
@JhonCruz-ki7wi 5 месяцев назад
Sensacional. Scripts de shell são muito úteis para estas pequenas automações. E a possibilidade de utiliza-los em qualquer plataforma com o mesmo script é muito boa.
@CyberCrowBR
@CyberCrowBR 5 месяцев назад
Pequeñas automações?? Consigo fazer até um CI/CD completo com Shell Script
@arozendojr
@arozendojr 5 месяцев назад
lembra de webview no android, tentei subir wpa, usando ServiceWorker para descobrir que esta sem internet e colocar uma tela customizada, não consegui, tem alguma dica parar ativar o ServiceWorker na webview?
@darksideeditions4251
@darksideeditions4251 5 месяцев назад
Diego, apareceu sua key do OPENAI!
@andredeoliveira8986
@andredeoliveira8986 5 месяцев назад
Que horas mais ou menos você faz as lives?? Queria assistir
@dieegosf
@dieegosf 5 месяцев назад
Depende muito, mas geralmente terça ou sexta-feira de tarde.
@victorhugo968
@victorhugo968 5 месяцев назад
@@dieegosf no youtube ou na twitch ?
@andredeoliveira8986
@andredeoliveira8986 5 месяцев назад
@@victorhugo968 acho que na Twitch
@CarlosHenriqueOliveiraS
@CarlosHenriqueOliveiraS 5 месяцев назад
diego ksksks deu certo ksks deu certo skksksksksksks mt bom ksks meus 15 minutinhos diario kkkk essas dicas que tu traz são boas pra caramba se tiver outro canal mano joga ai que eu sigo lá tbm... ce é um cara que traz muito sacada boa vlw ae
@andredesouza
@andredesouza 5 месяцев назад
Muito legal.
@k0rz4k
@k0rz4k 5 месяцев назад
Bash é bash em qualquer terminal amigo, esse resto é gambiarra rs
@joaobraz612
@joaobraz612 5 месяцев назад
Diego perdeu a oportunity de criar o comando 'bun kai'
@cyberpunktuber
@cyberpunktuber 4 месяца назад
EMPRESA LIXO ENTREI EM CONTATO PRA FALAR SOBRE O CERTIFICADO QUE NÃO FOI EMITIDO E NÃO OBTIVE NENHUMA RESPOSTA, E NENHUMA RESOLUÇÃO DE PROBLEMA POR PARTE DELES, ESTÃO SE LIXANDO PARA OS ALUNOS, A PARTIR DE HOJE VOU FALAR PARA O MÁXIMO DE PESSOAS QUE PUDER PARA QUE NÃO SE MATRICULEM NESSA BOSTA DE ESCOLA QUE NÃO DÁ A MÍNIMA PARA OS ALUNOS
@danilinholacerda
@danilinholacerda 5 месяцев назад
Alguém sabe como deixar os ícones da barra do mac daquele jeito? Conteúdo pra lá de imersivo. Parabéns, muito show!
@cyberpunktuber
@cyberpunktuber 4 месяца назад
EMPRESA LIXO ENTREI EM CONTATO PRA FALAR SOBRE O CERTIFICADO QUE NÃO FOI EMITIDO E NÃO OBTIVE NENHUMA RESPOSTA, E NENHUMA RESOLUÇÃO DE PROBLEMA POR PARTE DELES, ESTÃO SE LIXANDO PARA OS ALUNOS, A PARTIR DE HOJE VOU FALAR PARA O MÁXIMO DE PESSOAS QUE PUDER PARA QUE NÃO SE MATRICULEM NESSA BOSTA DE ESCOLA QUE NÃO DÁ A MÍNIMA PARA OS ALUNOS
@hugofonseca3665
@hugofonseca3665 5 месяцев назад
Se algo pode ser escrito em JS, eventualmente será
@Matheus-qv7yw
@Matheus-qv7yw 5 месяцев назад
MONSTRO
@mnikel
@mnikel 5 месяцев назад
Tua dock do Mac tem alguma personalização diferente?
@cyberpunktuber
@cyberpunktuber 4 месяца назад
EMPRESA LIXO ENTREI EM CONTATO PRA FALAR SOBRE O CERTIFICADO QUE NÃO FOI EMITIDO E NÃO OBTIVE NENHUMA RESPOSTA, E NENHUMA RESOLUÇÃO DE PROBLEMA POR PARTE DELES, ESTÃO SE LIXANDO PARA OS ALUNOS, A PARTIR DE HOJE VOU FALAR PARA O MÁXIMO DE PESSOAS QUE PUDER PARA QUE NÃO SE MATRICULEM NESSA BOSTA DE ESCOLA QUE NÃO DÁ A MÍNIMA PARA OS ALUNOS
@dpaulos6
@dpaulos6 5 месяцев назад
qual a extensão que coloca o tsconfig.json, etc... agrupado no package.json?
@dieegosf
@dieegosf 5 месяцев назад
É uma configuração do VSCode: gist.github.com/diego3g/b1b189063d21b96d6144ca896755be64#file-settings-json-L157
@tetheussalmazo
@tetheussalmazo 5 месяцев назад
diego, quais temas e plugins vc usa no seu fish?
@ei4189
@ei4189 5 месяцев назад
Apenas tenho certeza do Starship, porque ta no site que ele postou as config, o fala.dev
@gabtrzimajewski
@gabtrzimajewski 5 месяцев назад
Diego, como que tu deixou esses ícones dark?
@cyberpunktuber
@cyberpunktuber 4 месяца назад
EMPRESA LIXO ENTREI EM CONTATO PRA FALAR SOBRE O CERTIFICADO QUE NÃO FOI EMITIDO E NÃO OBTIVE NENHUMA RESPOSTA, E NENHUMA RESOLUÇÃO DE PROBLEMA POR PARTE DELES, ESTÃO SE LIXANDO PARA OS ALUNOS, A PARTIR DE HOJE VOU FALAR PARA O MÁXIMO DE PESSOAS QUE PUDER PARA QUE NÃO SE MATRICULEM NESSA BOSTA DE ESCOLA QUE NÃO DÁ A MÍNIMA PARA OS ALUNOS
@luishenriquequito1716
@luishenriquequito1716 5 месяцев назад
Onde acontecem essas lives ??
@dieegosf
@dieegosf 5 месяцев назад
Na twitch (usuário dieegosf)
@gabrielfranco683
@gabrielfranco683 5 месяцев назад
kkk mesma coisa q o bash script mas com "await"
@micalevisk
@micalevisk 5 месяцев назад
shell-in-js 😅
@diegomiyt
@diegomiyt 5 месяцев назад
Ontem me peguei organizando minhas series para utilizar no Plex e estava com dificuldade de renomear os eps `${serie} - s${temporada}x${episodio}.${ext}`... usei um comando do powershell, mas por algum motivo na 2' vez que roda perdia a ordenação alfabetica crescente e perdi todos os eps pois saiu de ordem e nao dava mais pra desfazer kkkkkkkkkkkkkkkkkkkkkkk com uma coisa tao simples de tudo. como eu nao queria aprender a fazer scripts powershell eu baixei de novo tudo e rodei 1 unica vez o comando e foi... Com essa solucao ai fica extremamente facil de resolver meu problema
@micaelviana
@micaelviana 4 месяца назад
Eu já tive uma vez que fazer parecido com isso aí que ce falou, minha dica eh, se vc estiver em um sistema que não tem bash, usa python, uma vez fiz um script Python pra renomear e converter arquivos recursivamente de episódios de anime em subpastas Esse lance aí de perder os arquivos por comando errado já aconteceu comigo também,se não me engano perdi meus episódios de Full Metal Alchemist numa linha de comando errada kk,
@oerickmuller
@oerickmuller 5 месяцев назад
O Bun resolveu o problema para quem está limitando a saber apenas javascript. O que não é um problema se você só consegue ou só quer saber Javascript. E quantas vezes precisou portar o mesmo script para windows?
@dieegosf
@dieegosf 5 месяцев назад
Fala Erick, aqui no canal focamos os conteúdos praticamente somente dentro de JavaScript, então nesse caso sim. Sobre compatibilidade, o próprio exemplo que mostrei no vídeo é um caso que preciso hoje dentro da Rocketseat de compartilhar scripts de edição de vídeo com outros educadores que usam outros sistemas operacionais.
@oerickmuller
@oerickmuller 5 месяцев назад
Sim @@dieegosf , eu acompanho o canal por conta disso até. Mas o meu ponto é que parece que começa a forçar a barra pra rodar com js em tudo, e vira uma espécie de antolho. E pra mim o importante é a gente entender que existem ferramentas adequadas para cada situação, entende?
@erickdeazevedolima1763
@erickdeazevedolima1763 5 месяцев назад
Cara, eu costumo fazer com bash mesmo. Quando preciso de cross-platform, faço com PHP. Isso já é realidade há bastante tempo. O legal é que tu coloca o shebang do php igual tu coloca do shell específico que tu quer, tipo assim: ``` #!/usr/bin/php unlink($_ENV['minha-var-de-ambiente']; ``` Aí tu executa isso no windows, linux, mac, qualquer coisa que tenha o interpretador do PHP instalado. Uma outra coisa aí do teu script que é parecido com bash e que no teu caso provavelmente matou a portabilidade: Quando tu faz "$`ls *.mp4`", tu tá executando um comando do SO e, portanto, este script aí não vai funcionar no Windows, que não tem o comando ls, por exemplo. A mesma coisa aconteceria com o ffmpeg, que no Windows seria um ffmpeg.exe. Depois testa isso e faz um vídeo aí dizendo se funcionou no Windows. =)
@dieegosf
@dieegosf 5 месяцев назад
Fala Erick, na verdade não, segundo a documentação do Bun Shell, alguns comandos nativos são portados para o SO de destino automaticamente, ou seja, não é a mesma coisa que rodar o comando no terminal. Sobre o executável, não precisamos que a máquina tenha o Bun instalado já que o binário vai junto com o executável, ou seja, diferente do PHP nesse caso, se enviarmos o executável para outra pessoa, ela vai poder executar normalmente.
@erickdeazevedolima1763
@erickdeazevedolima1763 5 месяцев назад
@@dieegosf Maneiro. Valeu pela resposta. \m/
@awhux
@awhux 5 месяцев назад
vazou a chave openai diegão
@dieegosf
@dieegosf 5 месяцев назад
Não é uma chave válida :)
@marcosviniciusmoreira9115
@marcosviniciusmoreira9115 5 месяцев назад
Onde que o Diego faz essas lives ?
@docarmoofficial
@docarmoofficial 5 месяцев назад
Também gostaria de saber, estava até olhando na twitch
@lucasjuan14
@lucasjuan14 5 месяцев назад
twitch.tv/dieegosf
@kekekekekekekekkk
@kekekekekekekekkk 5 месяцев назад
Na Twitch: dieegosf
@ei4189
@ei4189 5 месяцев назад
twitch dieegosf
@mp_8634
@mp_8634 5 месяцев назад
Como alguém se diz desenvolvedor nunca teve um problema deploy com uma vps que tinha alguma versão do Linux?Eu não entendo o esses devs que se dizem fodas, não sabem se quer fazer um script de automação em bash ou powershell.😮
@CyberCrowBR
@CyberCrowBR 5 месяцев назад
Calma calabreso... Pra que esse hate gratuito? Eu sou DevOps e nem por isso acho que é obrigação do dev saber Shell Script.
@sentinelaenow4576
@sentinelaenow4576 5 месяцев назад
O video e a instrução são bacanas, mas o título não, e como sempre o Bun aparece fazendo propaganda com informação equivocada para tentar se tornar relevante. Tudo que foi feito tem a mesma performance e compatibilidade multi-plataforma que o Node ou qualquer shell script, com ou sem ZX. O Bun dizer que precisa do rimraf para deletar arquivos recursivamente em várias plataformas é uma piada. O JavaScript existe como uma solução de alto nível multiplataforma, já existem APIs do Node que fazem tudo isso. Não existe maneira razoável e fácil de escrever shell script multiplataforma, pois são múltiplas camadas que podem ser incompatíveis entre si, como por exemplo o sistema operacional e o interpretador de shell. O Bun mais uma vez diz ter resolvido um problema que já estava resolvido, mas o pior é continuar recebendo palco pra essas ladainhas.
@dieegosf
@dieegosf 5 месяцев назад
Opa, obrigado pelo feedback! É, com certeza não dá pra dizer que é a solução definitiva mesmo, mas sobre a compatibilidade, teoricamente não deveria funcionar assim seguindo a documentação do Bun. A ideia é podermos justamente gerar um executável do código e não ter que instalar o Bun ou Node na máquina que hospeda o script. Quanto aos comandos como "cd", "rm" ou outros comandos comuns, eles são reescritos internamente pelo Bun para que sejam suportados em todos sistemas operacionais, ou seja, não é a mesma coisa que rodar via shell não.
@sentinelaenow4576
@sentinelaenow4576 5 месяцев назад
@@dieegosf Entendo, e nesse caso é o que potencialmente torna a questão ainda pior, pois não se trata mais de um interpretador consolidado de shell, mas sim um novo padrão de shell Bun, que tenta replicar comandos individuais. É como a piada do xkcd 927: "Situação: Existem 14 padrões concorrentes. 14?! Isso é ridículo! Não podemos ter tantos padrões concorrentes. Precisamos desenvolver um que abranja todos os casos existentes. Situação: Existem 15 padrões concorrentes." O Node oferece nativamente o método fs.unlink() para deletar arquivos recursivamente de maneira multi plataforma em alto nível por exemplo, extremamente fácil, sem dependências. Caso seja necessário acessar a camada de shell podemos escolher o shell consolidado da plataforma usando o poderoso child_process nativo, sem dependências. Já para criar um binário o Node também possui o padrão nativo SEA (Single Executable Applications) permitindo empacotar apps Node junto com a runtime em um executável para ambientes sem Node instalado. Sou muito apaixonado por JavaScript para acreditar na propaganda do Bun. Mas obrigado pelo conteúdo, tenho certeza que inspira muita gente.
@dieegosf
@dieegosf 5 месяцев назад
@@sentinelaenow4576 Boa, a discussão é sempre positiva! :) Sobre o Node em si usado para esse propósito, te falo sobre experiências pessoais que não é tão acessível, essa acho que é a maior dificuldade. Por exemplo, usando o "child_process" que você citou, é muito chato lidar com o output dos eventos, principalmente se precisarmos lidar com streaming, coisas que teoricamente devem ser mais simples com o zx ou com o Bun Shell. O ponto aqui na minha "defesa" em relação ao Node não ser a melhor opção pra isso é totalmente a falta de acessibilidade e documentação por volta disso. Não acho que o Bun Shell seja a solução final, mas o Node "puro" ainda não sinto que seja a solução ideal.
@elvitin
@elvitin 5 месяцев назад
Para Node.js existia o Nx, para Deno, existe o Dex. E realmente, a equipe do Bun lança as features fazendo tudo parecer ser uma grande novidade quando na verdade não é. É uma adição. O script shell mais compatível que existe é o script executado com o link simbólico .sh
@elvitin
@elvitin 5 месяцев назад
E sinceramente. Esse recurso de chamar comandos shell através do javascript, pode causar uma confusão danada do tipo: O que eu chamo do shell e o que eu chamo do Node.js/Bun.js/Deno, já que todos esses runtimes, tem módulos nativos para trabalhar com Filesystem, teoricamente então. Daria pra fazer quase tudo sem o script shell (90% js, 10% shell), ou então fazer quase tudo no script shell e só chamar o arquivo .sh através do js. Mas ainda sim, essas formas que citei, ainda carecem de um recurso: O transporte de dados entre JS e SHELL. Executar um sh por meio de um child process também não acho q é acessível e nem todo mundo vai entender como fazer. Na pratica, o que eu vejo é que pra quem não manja de shell igual o Diegão comentou, é poder substituir alguns comandos shell e seu jeito peculiar de funcionar, por JavaScript, e meio que fazer uma interoperabilidade entre esses dois caras podendo trafegar input e output dos script de forma mais fácil.
Далее
СКАМ НА TWITCH
14:07
Просмотров 217 тыс.
Seu primeiro servidor no Fastify com Node.js
3:06
Просмотров 12 тыс.
CHEGA de JavaScript no Client Side!
0:59
Просмотров 6 тыс.
Nix flakes explained
7:22
Просмотров 67 тыс.
СКАМ НА TWITCH
14:07
Просмотров 217 тыс.