Submit Search
Upload
zxでシェルスクリプトから逃げよう ~javascriptでシェルを書く~
•
Download as PPTX, PDF
•
0 likes
•
14 views
T
techan555
Follow
2021年10月15日に社内でLTした内容をパブリックに公開できる形に修正したスライドです。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 11
Download now
Recommended
CoffeeScript+enchant.jsでクロージャが気持よくかけた話
CoffeeScript+enchant.jsでクロージャが気持よくかけた話
Yusuke HIDESHIMA
From Java To Clojure
From Java To Clojure
Kent Ohashi
F#+Erlangで簡単なシューティングゲームを作ってみている
F#+Erlangで簡単なシューティングゲームを作ってみている
pocketberserker
coma Creators session vol.2
coma Creators session vol.2
Atsushi Tadokoro
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6
Ransui Iso
Inside frogc in Dart
Inside frogc in Dart
Goro Fuji
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Kei IWASAKI
Vert.x.tari.tari
Vert.x.tari.tari
Takahiro Sugiura
Recommended
CoffeeScript+enchant.jsでクロージャが気持よくかけた話
CoffeeScript+enchant.jsでクロージャが気持よくかけた話
Yusuke HIDESHIMA
From Java To Clojure
From Java To Clojure
Kent Ohashi
F#+Erlangで簡単なシューティングゲームを作ってみている
F#+Erlangで簡単なシューティングゲームを作ってみている
pocketberserker
coma Creators session vol.2
coma Creators session vol.2
Atsushi Tadokoro
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6
Ransui Iso
Inside frogc in Dart
Inside frogc in Dart
Goro Fuji
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Kei IWASAKI
Vert.x.tari.tari
Vert.x.tari.tari
Takahiro Sugiura
Lightning introduction to CoffeeScript 20131005
Lightning introduction to CoffeeScript 20131005
gotohayato
JavaScript非同期処理 入門
JavaScript非同期処理 入門
Ishibashi Ryosuke
Javascriptで無限ループを実現する5つの方法
Javascriptで無限ループを実現する5つの方法
yhara
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
Yasuharu Nakano
Start!! Ruby
Start!! Ruby
mitim
Clojure
Clojure
Uehara Junji
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
Taku Miyakawa
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
Tomohiro Kumagai
らくちん Go言語
らくちん Go言語
株式会社YEBIS.XYZ
OSC Tokyo fall LT~Dockerで分散処理をやってみた
OSC Tokyo fall LT~Dockerで分散処理をやってみた
atk1234
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1
Ransui Iso
JavaScriptユーティリティライブラリの紹介
JavaScriptユーティリティライブラリの紹介
Yusuke Hirao
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
tamtam180
Getting Started GraalVM (再アップロード)
Getting Started GraalVM (再アップロード)
tamtam180
TruffleSqueakの紹介
TruffleSqueakの紹介
Masashi Umezawa
ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3
Masahiro Wakame
PlayFramework1.x基礎編
PlayFramework1.x基礎編
Asami Abe
Swiftのアプリ開発でハマったこと
Swiftのアプリ開発でハマったこと
yohei sugigami
Lxc cf201207-presen
Lxc cf201207-presen
Kouhei Maeda
キメるClojure
キメるClojure
Yoshitaka Kawashima
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
More Related Content
Similar to zxでシェルスクリプトから逃げよう ~javascriptでシェルを書く~
Lightning introduction to CoffeeScript 20131005
Lightning introduction to CoffeeScript 20131005
gotohayato
JavaScript非同期処理 入門
JavaScript非同期処理 入門
Ishibashi Ryosuke
Javascriptで無限ループを実現する5つの方法
Javascriptで無限ループを実現する5つの方法
yhara
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
Yasuharu Nakano
Start!! Ruby
Start!! Ruby
mitim
Clojure
Clojure
Uehara Junji
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
Taku Miyakawa
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
Tomohiro Kumagai
らくちん Go言語
らくちん Go言語
株式会社YEBIS.XYZ
OSC Tokyo fall LT~Dockerで分散処理をやってみた
OSC Tokyo fall LT~Dockerで分散処理をやってみた
atk1234
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1
Ransui Iso
JavaScriptユーティリティライブラリの紹介
JavaScriptユーティリティライブラリの紹介
Yusuke Hirao
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
tamtam180
Getting Started GraalVM (再アップロード)
Getting Started GraalVM (再アップロード)
tamtam180
TruffleSqueakの紹介
TruffleSqueakの紹介
Masashi Umezawa
ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3
Masahiro Wakame
PlayFramework1.x基礎編
PlayFramework1.x基礎編
Asami Abe
Swiftのアプリ開発でハマったこと
Swiftのアプリ開発でハマったこと
yohei sugigami
Lxc cf201207-presen
Lxc cf201207-presen
Kouhei Maeda
キメるClojure
キメるClojure
Yoshitaka Kawashima
Similar to zxでシェルスクリプトから逃げよう ~javascriptでシェルを書く~
(20)
Lightning introduction to CoffeeScript 20131005
Lightning introduction to CoffeeScript 20131005
JavaScript非同期処理 入門
JavaScript非同期処理 入門
Javascriptで無限ループを実現する5つの方法
Javascriptで無限ループを実現する5つの方法
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
Start!! Ruby
Start!! Ruby
Clojure
Clojure
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
らくちん Go言語
らくちん Go言語
OSC Tokyo fall LT~Dockerで分散処理をやってみた
OSC Tokyo fall LT~Dockerで分散処理をやってみた
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1
JavaScriptユーティリティライブラリの紹介
JavaScriptユーティリティライブラリの紹介
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM (再アップロード)
Getting Started GraalVM (再アップロード)
TruffleSqueakの紹介
TruffleSqueakの紹介
ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3
PlayFramework1.x基礎編
PlayFramework1.x基礎編
Swiftのアプリ開発でハマったこと
Swiftのアプリ開発でハマったこと
Lxc cf201207-presen
Lxc cf201207-presen
キメるClojure
キメるClojure
Recently uploaded
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
Recently uploaded
(9)
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
zxでシェルスクリプトから逃げよう ~javascriptでシェルを書く~
1.
zxでシェルスクリプ トから逃げよう
2.
シェルスクリプト、 辛くないですか?
3.
シェルスクリプトは辛い - 関数の返り値に制限が多い - 文字列は`echo`で返す…? -
シェルスクリプト以外の言語を知らなければいけない - awk, sed, jq ... - 総じて罠が多く、可読性が低い ※参考: シェルスクリプトを書くのをやめる
4.
google/zxを使おう
5.
今日のゴール ・zxの雰囲気を知る ・zxに逃げるという選択肢を持ってもらう
6.
google/zx - Google謹製のJavaScriptで書けるシェル - といいつつ、実態はchild_processのラッパー -
Top Level await - Markdown Script - TypeScript Support
7.
Getting Started - インストール -
$ npm i -g zx - 直接実行する - shebang(#!/usr/bin/env zx)と実行権限が必要 - $ ./hello.ts - 拡張子はjsでもmjsでもtsでもいい - (Optional) 型情報を使えるようにする - $ npm link zx - import ‘zx/globals’を追記すると型情報が入る(importしなくても実行は可能)
8.
Syntax - $`command` - 与えられた文字列を実行する -
awaitでProcessOutputを取り出せる - exitCode, stdout, stderrを持つオブジェクト - .pipe()でコマンドをProcessを繋ぐことができる - ex:
9.
Functions - cd() - 現在の作業ディレクトリを変更する。 -
ex: - fetch() - node-fetchのラッパー。HTTPリクエストができる - ex: - question() - readlineのラッパー。ユーザーからの入力を受け付ける - ex:
10.
Markdown scripts - zxでは、.mdファイルを実行できる -
sh/bash/jsコードブロックだけを実行する - その他の言語のコードブロックは無視される
11.
所感 - やっぱりJavaScriptは書きやすい!(※) - Promise.allでシェルの非同期処理がサクッと書ける -
面倒なimportなしでシェルコマンドが実行できる - $``とfetchがあれば大体なんでもできる - Python, Rubyでもいいけど、import subprocessしたくない - kotlinscriptも気軽には使いづらい - npm環境前提なのでポータビリティは悪い - Dockerfileでzxインストールしておけばコンテナでmjs実行し放題にはなる - TypeScriptが使いにくい - npm linkが必要だったり、fetchが見つけられなくてコンパイルエラーが起きる - グローバルのnpmライブラリとの相性が悪そう - TopLevel awaitもできない ※ 個人差があります
Download now