タグ

shellに関するnntsuguのブックマーク (21)

  • いちいちシェルコマンド思い出せないので、ChatGPTで自然言語からスクリプトを生成するツールつくった - Qiita

    いちいちシェルコマンド思い出せないので、ChatGPTで自然言語からスクリプトを生成するツールつくったPythonOpenAIChatGPTlangchain はじめに ChatGPT APIが出たので早速さわってみました。せっかくなので何か便利なものをということで自分向けに使えそうなツールをつくっていたら 良いかんじに動作したのでご紹介します。 つくったものは、「ChatGPTを用いた自然言語によるシェルコマンドランチャー」です。百聞は一見にしかずと言うことでまずは動作するところをみてください。 概要 wannaコマンドは、ChatGPTを用いた自然言語によるシェルコマンドランチャーです。自然言語によって、bash scriptを生成し、名付けし、管理できます。 コマンドライン上での操作は簡単に多くのことを行うことができるため、非常に便利です。しかし、多くのコマンドやオプションの組み合わ

    いちいちシェルコマンド思い出せないので、ChatGPTで自然言語からスクリプトを生成するツールつくった - Qiita
    nntsugu
    nntsugu 2023/03/08
    おもろー
  • なぜ今シェルスクリプトを学ぶのか・シェルスクリプトのTips - 理系学生日記

    会社の中でシェルスクリプトについての話をすることにしたので、このエントリはそのためのものです。 個人的な好みとかもいろいろ入ってしまっているので、そのあたりは取捨選択してください。 なぜ今シェルスクリプトを学ぶのか 公開されているSREをマルっとPDF化する SpotBugsのViolationレポートをMerge Requestのコメント投稿する ぼくの互換性についての考え方 何で書くか シェルスクリプトをうまく書くには ShellCheckを使う バッドパターンとその修正 line-by-lineの処理が多い lsを使う ls /directory | grep mystring ls | grep -v 'log$' lsの結果をループさせる 良いシェルスクリプトを書くためのTIPS set -euする 文字列は基的にクオートする 局所変数にはlocalを使う 定数は読み取り専用

    なぜ今シェルスクリプトを学ぶのか・シェルスクリプトのTips - 理系学生日記
  • シェルスクリプトを高級言語のような書き味に近づける Tips 集 | 創作メモ帳

    Bash は言わずと知れた歴史あるコマンド言語です。テキストにコマンドの羅列を記述するだけで、手軽にシェルスクリプトとして実行することができます。 シェルスクリプトの実体はシェルコマンドの羅列に過ぎませんが、手続き型プログラミング言語にあるような制御構文も備えています。変数や条件分岐、ループ、関数などです。これらを使えばシェルスクリプトでプログラミングも可能です。 もちろん、現代の一般的なプログラミング言語と比べると機能は限られます。他の言語には見られないシェルスクリプト特有の癖や記法も数多くあり、最近の言語に慣れている人ほど、つまずくポイントが多いです。 しかし、シェルスクリプトだからこその良さもあります。Bash は現在でも多くの OS で標準シェルとして採用されており、普段使っているシェルコマンドを書くだけで動かせる手軽さは何者にも代えがたいです。一度身につけておくと長く使えるお得な

    シェルスクリプトを高級言語のような書き味に近づける Tips 集 | 創作メモ帳
  • 変数を使用する | UNIX & Linux コマンド・シェルスクリプト リファレンス

    → 他のプログラミング言語と同様に = を使用する。 シェルスクリプトでも C言語などと同様に = を使用することで変数に値を設定することができる。ただし、C言語とは違い = の前後にスペースがあってはいけない。 また、変数名の大文字と小文字は区別されるため変数 VAR と変数 var は別物として扱われる。さらにシェル変数に「型」は存在しないので、文字列や数値を区別なく設定できる。 ポイントをまとめると以下のとおりとなる。 = を使う 値の設定時は変数名の先頭に $ を付けない ($ は参照時のみ) = の前後にスペースを入れない (前後にスペースがあるとエラー) 型は存在しない (declare コマンドや typeset コマンドで似たようなことができるが推奨はしない) 変数名の大文字・小文字は区別される (VAR と var は別物) 特に「2」は初心者が犯しがちなミスなので注意す

    変数を使用する | UNIX & Linux コマンド・シェルスクリプト リファレンス
    nntsugu
    nntsugu 2018/10/04
    変数操作
  • 位置パラメーターの一括展開 $* $@ "$*" "$@" の違いを知れ!! - Shell Script Advent Calendar 2016 - ダメ出し Blog

    位置パラメーターの一括展開 $* $@ "$*" "$@" の違いを知れ!! - Shell Script Advent Calendar 2016 - ダメ出し Blog Shell Script Advent Calendar 2016 の 15日目の記事です。 位置パラメーター (Positional Parameters) の紹介と、 その値をすべて展開する $*, $@, "$*", "$@" の違いについて解説します。 $*, $@, "$*", "$@" の違いを認識し使い分けできるかどうかは、 シェルをちゃんと理解しているかどうかの指標の一つと言えるのではないかと思います。 残念ながら、適切な位置パラメーター展開を用いていないシェルスクリプトが珍しくありません。 あなたのシェルスクリプトは大丈夫ですか? あなたの好きな◯◯のソースコードや配布物に付属のシェルスクリプトも要チ

  • shellcheck を使おう - Qiita

    シェルスクリプトを書くのなら shellcheck という lint ツールでチェックしましょう、というお話です。 (@znz blog の shellcheck を使おうと同じ内容です。) 題材 先月Shell Script Advent Calendar 2016 8日目のプログラマーの君! 騙されるな! シェルスクリプトはそう書いちゃ駄目だ!! という話がいいね数ランキングで上位にきていたこともあり、piroor/tweet.sh を例に使いたいと思います。 shellcheck の準備 macOS なら brew install shellcheck とか、 Debian や Ubuntu なら sudo apt install shellcheck とかでインストールできます。 ちょっと試すだけなら https://www.shellcheck.net/ でもできるようです。 ソ

    shellcheck を使おう - Qiita
    nntsugu
    nntsugu 2018/01/16
    shell check
  • GitHub - ShellShoccar-jpn/kotoriotoko: KOTORIOTOKO (little bird man) -- Extremely Compatible and Sustainable Twitter Application Written in Shell Script

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - ShellShoccar-jpn/kotoriotoko: KOTORIOTOKO (little bird man) -- Extremely Compatible and Sustainable Twitter Application Written in Shell Script
    nntsugu
    nntsugu 2016/03/22
    Shell製Twitterクライアント "怪人小鳥男"
  • 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト

    シェルスクリプトがいかに最強の言語であるかを、POSIX原理主義集団「シェルショッカー日支部」がとくと教えてやる。 ― 2016/03/20@歌舞伎座.tech#9

    恐怖!シェルショッカーの POSIX原理主義シェルスクリプト
    nntsugu
    nntsugu 2016/03/22
    錚々たる戦歴。。
  • 初心者向け、「上手い」シェルスクリプトの書き方メモ - Qiita

    ここ最近、沢山シェルスクリプトを書くようになりました。 元々あまりシェルスクリプトを書いたこと無かったので、色々と勉強しつつ書いてるのですが、 他のプログラミング言語とはちょっと違って独特なクセというか、発見の度におぉー!ってなることが沢山あって楽しいです。 そんなわけで、最近学んだり参考にした中で特に感動したシェルの上手い書き方をまとめてみます。 きっとまだ知らないこととかもっと上手くやる方法なんかが沢山見つかりそうなので、 もっといいやり方あるよ!って方はコメントください 何もしない : (コロン)コマンド シェルを書いていた時に非常に欲しかったコマンドがこれ!何もしない! : というコマンド(?)を利用すると、何もせずに終了ステータス0(つまり正常終了)を返します。 これが様々な事に使える万能コマンドで、これによって面倒なエラー処理を簡潔にできたり、 入力や出力のリダイレクト元/先と

    初心者向け、「上手い」シェルスクリプトの書き方メモ - Qiita
  • インフラエンジニアとしてよく使うコマンド集 - Qiita

    私がよく使うコマンド集となります。 参考に頂けたら幸いです。 随時更新するかと思います。 コマンドを打つ前に覚えておく事 ①サーバに負荷がかかるコマンドを打つ場合、下記をコマンドの先頭に付けましょう $ ionice -c 2 -n 7 nice -n 19 # -c 2:ディスクI/Oの実行優先度をベストエフォートで実行 # -n 7:さらにこのコマンドの優先度を低くする # -n 19:プロセスの実行優先度を一番低くする

    インフラエンジニアとしてよく使うコマンド集 - Qiita
  • 標準コマンドから乗り換えよう!より良いLinuxコマンドラインユーティリティー11選 | 俺的備忘録 〜なんかいろいろ〜

    Linuxの標準コマンドは強力なものではあるが、実際に人間が使う際にわかりやすいか、というと十分ではない。 そこで、今回はLinuxの標準コマンドから乗り換える事が可能なコマンドラインユーティリティーを調査、整理してまとめてみることにした。 1.df → dfc まずはこれ。以前にこちらでも記述している。 dfコマンドをより分かりやすくしたコマンドで、バーで利用率を認識することが出来る。 インストールは以下のコマンドで行える。 sudo apt-get install dfc (Debian or Ubuntu) 2.vmstat → dstat パフォーマンスのモニタリングでよく用いられるvmstatを、更に拡張したコマンドであるdstatにする。 dstatには、vmstatにはないネットワークに関するパフォーマンスが追加されており、見た目も見やすくなっている。 インストールは以下のコ

  • シェルスクリプトを書くときはset -euしておく - Qiita

    エラーがあったらシェルスクリプトをそこで打ち止めにしてくれる(exit 0以外が返るものがあったら止まるようになる)。「あっあれここでうまくいってないからデータ準備できてないのにあれあれっもうやめて!」ってなるのを防げる。 set -u 未定義の変数を使おうとしたときに打ち止めにしてくれる。Perlでいうuse strict 'vars';的なもの。 って気軽な気持ちで書いてしまって、「ん、やたら時間かかると思ったらスペルミスうわなにをするやめ」ってなるのを防げる。 一部だけ例外にしたい はてなブックマークのコメントより -e は command1 || command2 みたいなことが出来なくなるの使うことないな。-uは付けといて良いが。 確かにおっしゃるとおりですね。コマンドの失敗を考慮して書いている部分については(もしくはやたらexit 0以外するコマンドを呼ばないといけないときなど

    シェルスクリプトを書くときはset -euしておく - Qiita
  • 引数を処理する | UNIX & Linux コマンド・シェルスクリプト リファレンス

    引数を処理する 引数とは? 引数 (ひきすう) とはコマンド (シェルスクリプト) 実行時に、コマンドラインから渡される値のことである。 引数は実行時にプログラム内で参照され、シェルスクリプトの実行結果 (動作) に影響を与える。引数はパラメータと呼ばれることもある。 → コマンド名に続けて引数としてコマンドに渡したい値のリストを指定する。 引数はコマンド名に続けてスペース区切りで指定する。引数として指定可能な値の数は各コマンドにより異なる。 【参考】 引数とオプション コマンド実行時に指定する値には引数とオプションがある。引数は実行に使用されるファイル名や出力されるメッセージなどを指定するのに使用される。 一方、オプションは -f などのように - (ハイフン) とアルファベット1文字で表記され、主にコマンドの振る舞い方を指定する目的で使用されるものである。 また、オプションは -a -

    引数を処理する | UNIX & Linux コマンド・シェルスクリプト リファレンス
  • shとbashでの変数内の文字列置換など - ろば電子が詰まつてゐる

    シェルスクリプトで文字列を置換したい際、sedを使う手法が紹介されることが多い。が、実はsedなどの外部コマンドを使わなくても、以下のように変数展開をすることでシェル内部で文字列置換をすることができる。 ${変数名#パターン} → 前方一致でのマッチ部分削除(最短マッチ) ${変数名##パターン} → 前方一致でのマッチ部分削除(最長マッチ) ${変数名%パターン} → 後方一致でのマッチ部分削除(最短マッチ) ${変数名%%パターン} → 後方一致でのマッチ部分削除(最長マッチ) ${変数名/置換前文字列/置換後文字列} → 文字列置換(最初にマッチしたもののみ) ${変数名//置換前文字列/置換後文字列} → 文字列置換(マッチしたものすべて)この機能は記号で書かれるため非常にググりにくいことと、素のshでできること・bashでしかできないことが混在して書かれた記述も多いため、あまりネ

    shとbashでの変数内の文字列置換など - ろば電子が詰まつてゐる
    nntsugu
    nntsugu 2014/07/27
    shell 変数の部分置換などなど
  • シェルスクリプトのオプション設計ガイドライン - Qiita

    僕はコマンドラインで使うシェルスクリプトを書くことがけっこうあるんだけど、インターフェイスというか呼び出し方はとても大事だと思ってるので、そこにわりと時間をかけて考えるようにしてる。実装はいつでも変更できるけど呼び出し方を変えた時は利用者にも変更を強いるので、できれば最初から良い設計で作りたいと思っている。 そこで、僕がシェルスクリプトのオプションとか引数とかの仕様を決める上で注意していることをまとめてみた。シェルスクリプトや、その他コマンドラインのツールを作るときに参考にしてほしい。 シェルの種類は bash や zsh を想定してるけど、実装によらない話なのでどんなシェルでも使えると思う。 エラーの時に Usage (使い方ヘルプメッセージ)を表示するのはやめる エラーになった時に Usage (使い方ヘルプメッセージ) を表示するスクリプトがあるけど、やめたほうがいいと思う。例えばこ

    シェルスクリプトのオプション設計ガイドライン - Qiita
  • powerlineをいつ使う?今でしょ! - Qiita

    Vim Advent Calendar 2012 136日目 さて、便利でカッコいいpowerlineさんを使う時が来たようだ! この記事を読んでカッコいいVimにしよう! この記事で分かること。 ・最新のpowerline化 ・TabLineもpowerline化 ・powerlineを使う人のTmux powerlineとはなんぞ? 「CUIってダサいよねー。どうにかしたいねー。」 「Vimってダサいよねー。」 はい、powerlineっと。 お..お、ぉぉ...サロメ。(※1 神の雫より) 最新のpowerline化 tmux, zsh, vimのpowerlineが元々ありましたが、最近ひとつに統合されました。 多くの人がvim-powerlineを使っていますが、個人的には新しいpowerlineの方がおすすめです。 あと、この前遊んでたらtablineもpowerline化出来

    powerlineをいつ使う?今でしょ! - Qiita
  • rsyncを使って差分のあるファイルを一覧表示

    ローカルファイルとリモートファイルの差分と取って、 ファイルの比較や一覧を表示したいなぁ~って事でやりました。 「diff」だとローカルにあるディレクトリやファイルどうしならOKだけど、 リモートとだとちょっと面倒かなぁ~って思い「rsync」を使って、 下記のような感じで実行。 rsync -nav -e ssh /home/www/test_dir01/ backup.com:/home/www/test_dir02/ 「rsync -nav -e ssh (バックアップ元のディレクトリ)(バックアップ先のホスト名):(バックアップ先のディレクトリ)」って書くのかな? と不安だけどまずはやってみないとねって事で・・・ 下記が実行した結果。 %rsync -nav -e ssh /home/www/test_dir01/ backup.com:/home/www/test_dir02/

    nntsugu
    nntsugu 2014/06/25
    メモメモ。ホスト間でディレクトリの差分取りたいときはrsyncのdry-run(-n)
  • tcpdump + wireshark で https な通信を解読する - Qiita

    webアプリケーション開発者たるもの、時には https と戦わねばならぬこともあるのです。 打つ手がなくて泣きそうになっていたら同僚から救いの手が! (ただしサーバ側/クライアント側のいずれかで鍵交換アルゴリズムを変更できる場合に限る) まず、tcpdump でダンプしたものを wireshark で見るには -w FILE オプションをつけてダンプデータをファイルに書き出させます。環境によってはデフォルトで先頭数十バイトしかダンプしない (man によれば、CentOS 5.x で 68 bytes, 同じく Ubuntu 10.04 で 65535 bytes)ようなので、-s 65535 とか -s 0 などとダンプさせるサイズを指定してやるのが吉 今回は https なのでお手軽にポートで絞ることにして...こんな感じで叩けば良いかと。 出力されたファイルは普通に wiresha

    tcpdump + wireshark で https な通信を解読する - Qiita
  • http のデバッグに nc (netcat) が効く - Qiita

    Webアプリケーション開発者たるもの、時には生 http リクエストと戦わねばならない時があるのです。主に multipart とか multipart とか multipart とか。 そんな時は適当なマシンで で口を開けて待たせておいて、form の投げ先を書き換えて投げつけてやれば、request_dump.txt に 生 http リクエストがダンプされます。(ブラウザは応答待ちのままになるので、ダンプが取れたら nc を kill する) ダンプしたリクエストを以下のようにしてアプリへ投げつけてやれば、再現試験も簡単。ループでぶん回すのも自由自在。 ( Cookie や、Host など一部のヘッダは投げる前に書き換えが必要)

    http のデバッグに nc (netcat) が効く - Qiita
  • シェル芸勉強会問題一覧 | 上田ブログ

    第23回 問題のみ 解答つき 第22回 問題のみ 解答つき 第21回 問題のみ 解答つき 第20回 問題のみ:/?p=7332 解答つき:/?p=7196 第19回 問題のみ:/?p=7146 解答つき:/?p=7068 第18回 問題のみ:/?p=6877 解答つき:/?p=6836 第17回 問題のみ:/?p=6454 解答つき:/?p=6409 第16回 問題のみ:/?p=5851 解答つき:/?p=5644 第15回 問題のみ:/?p=5171 解答つき:/?p=5093 (番外編)2015年お正月用問題 問題:/?p=4852 解答:/?p=4821 第14回 問題のみ:/?p=4671 解答つき:/?p=4413 第13回 問題のみ:/?p=4051 解答つき:/?p=3792 第12回 問題のみ:/?p=3569 解答つき:/?p=3535 第11回

    nntsugu
    nntsugu 2014/04/21
    シェル芸