タグ

shellに関するkirakkingのブックマーク (53)

  • Fish 4.0: The Fish Of Theseus

    About two years ago, our head maintainer @ridiculousfish opened what quickly became our most-read pull request: #9512 - Rewrite it in Rust Truth be told, we did not quite expect that to be as popular as it was. It was written as a bit of an in-joke for the fish developers first, and not really as a press release to be shared far and wide. We didn’t post it anywhere, but other people did, and we go

  • Amber The Programming Language

    A modern, type-safe programming language that catches bugs and errors at compile time.

    Amber The Programming Language
    kirakking
    kirakking 2024/05/17
    「let result = $cat file.txt | grep "READY"$」でコマンド呼び出しの結果を格納できるのか。お手軽。failed ブロックで$?>0もキャッチできると。今後に期待。
  • シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の本当の理由を知ると優れた文法が見えてくる - Qiita

    シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の当の理由を知ると優れた文法が見えてくるShellScriptBashUNIXshellPOSIX はじめに シェルスクリプトの変数代入で = の前後にスペースを置くことができない理由は、検索すれば「プログラマーの君! 勘違いするな! シェルスクリプトでは読みやすさのためにスペースを置くな!! という話」のような記事がすぐに見つかります。記事に書いてあるとおり変数代入とコマンド呼び出しと区別がつかないからです。それは間違いではないんですが、私はもう少し説明が足りないと感じています。そこで今回は = の前後にスペースを置けない当の理由を解説したいと思います。 の前に皆さんにはこの話を読みながら、自分がシェルスクリプトの言語設計者だったとしたら、どういう言語仕様にするかを考えて欲しいです。なぜかと言うとシェルスクリプトの文

    シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の本当の理由を知ると優れた文法が見えてくる - Qiita
    kirakking
    kirakking 2021/11/10
    納得。シェルスクリプトの実行ファイルも単にコマンドを列挙したものだから、このセマンティクスに自然と従うまあ。
  • Bash Scriptの作法 - Qiita

    はじめに チーム開発でシェルスクリプト(特にBash Script)を書く際に守るべきルールをまとめます。 シェルスクリプトのコードレビューをする際等にお役立てください。 スクリプト名 -区切りの小文字英数字(いわゆるkebab-case)をつける。拡張子は.sh. これは特に理由があるわけではないので_区切りでもよいし、チーム内にzshやfish等の他Shell愛好家がいる場合は拡張子は.bashでも良い。どちらにせよチーム内では統一しておかないと混乱の元となる。 改行コード LFを使用する。CRLFだと動作しないので書く際に間違うことはないが、Windows上のgitのautocrlf設定によってはご丁寧にCRLFでチェックアウトされてしまう。 避けるためにはgit config --global core.autocrlf inputとするか、.gitattributesをレポジトリ

    Bash Scriptの作法 - Qiita
    kirakking
    kirakking 2021/09/27
    whileワンライナーの仕様知らなかった。
  • POSIX 準拠のシェルスクリプトでは find | xargs よりも find -exec {} + を使うべき! - Qiita

    POSIX 準拠のシェルスクリプトでは find | xargs よりも find -exec {} + を使うべき!ShellScriptBashshellPOSIX はじめに find の出力を xargs にパイプで渡すというのはよく見かける使い方ですが、find -print0 | xargs -0 が使えない POSIX 準拠のシェルスクリプトでは find -exec {} + を使った方が良いです。安全かつ十分に速いからです。よく見かける -exec {} ; ではなく -exec {} + ですので間違えないようにしてください。多くのケースでは + の方が優れているのですが ; ばっかり使われているのを見ると、意外と知られてない気がします。 少しだけ予備知識として、-exec {} ; は -exec {} \; と ; をバックスラッシュでエスケープするのがよく見る使い方

    POSIX 準拠のシェルスクリプトでは find | xargs よりも find -exec {} + を使うべき! - Qiita
  • シェルスクリプトの [ は /bin/[ と言ったり [ "x$var" = "xval" ] と書く人はオジサン - Qiita

    ちなみに [ の外部コマンド版が /usr/bin/ と /bin/ の両方にあるのは Ubuntu 20.04 では /bin が /usr/bin へのシンボリックリンクになっているからです。Ubuntu や Solaris 10、11 などでは(ディスクサイズが大きい今では分ける理由がないから)と統合されています。Debian では統合されてない上に [ は /usr/bin 以下にあったりします。元々 /usr/bin は必要性が低いコマンドを置く場所なので、そこに [ があるというのは面白いですね。 [ が /bin/[ だったのはいつまで? この /bin/[ が使われなくなったのは今から 40 年前の Unix System III (1981) に搭載された Bourne シェルからのようです。 The Traditional Bourne Shell Family より

    シェルスクリプトの [ は /bin/[ と言ったり [ "x$var" = "xval" ] と書く人はオジサン - Qiita
  • シェル芸人に必要なのは「マスキングテープ」だったのでは

    2020/06/27 第48回シェル芸勉強会LT資料 https://www.youtube.com/watch?v=PIqx9fCSbaU&t=609s

    シェル芸人に必要なのは「マスキングテープ」だったのでは
  • HomebrewのインストーラーをRubyからBashに書き直しました! - プログラムモグモグ

    みなさんはHomebrewをお使いでしょうか。macOSをお使いの多くの開発者が使っていると思います。 HomebrewのインストーラーはRubyで書かれており、次のコマンドでインストールするようになっていました。 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" HomebrewがRubyに依存していることは良いのですが (formulaの書きやすさはRubyならでは)、インストーラーの話になると事情が変わってきます。HomebrewのインストールコマンドはmacOSの工場出荷状態でも動く必要があります。こういうものにRubyを使っているのはリスクがあります。 将来的にmacOSデフォルトにRubyPythonが含まれなくなる (参考リンク

    HomebrewのインストーラーをRubyからBashに書き直しました! - プログラムモグモグ
  • bash の危険な算術式 - どさにっき

    ■ bash の危険な算術式 _ 使ってる人がいちばん多いだろうからタイトルでは bash としてるけど、ここで取り上げることは zsh および ksh 一族(家 ksh、pdksh、mksh)にも該当する。ash、dash などでは該当しない。 _ 以下のシェルスクリプトには脆弱性がある。わかるだろうか。 #!/bin/bash # "品目,単価,個数" の形式の CSV を読んで、"品目,合計金額" の形式で出力する csv="foo.csv" while IFS=, read item price num; do echo "$item,$((price*num))" done < "$csv" これ、細工された CSV ファイルをわせることで、任意コードの実行ができてしまう。数ある脆弱性の中でもとくにヤバいやつだ。どこが穴なのかというと、タイトルにもあるとおり算術式なのだが、し

  • 遂にカーネルの脆弱性を突かれるシェル芸botとノリノリのbot作者

    恒例行事となっている、任意のコマンドを実行するbotであるシェル芸botのあら探し。 そして攻撃されるとノリノリになるbot作者。

    遂にカーネルの脆弱性を突かれるシェル芸botとノリノリのbot作者
  • yamayaさんの難読化シェル芸(フィボナッチ数列) 解説

    yamaya_fib.md yamayaさんの難読化シェル芸(フィボナッチ数列) 解説 経緯 (1) ある日、yamaya さんという怖い方がこのツイートを投稿する。 (2) シェル芸bot上で実行されたこのシェル芸は、結果として下記のようにフィボナッチ数列を出す。 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 165580141 267914296 433494437 701408733 11349031

    yamayaさんの難読化シェル芸(フィボナッチ数列) 解説
  • 世の中のエンジニアのalias設定 - Qiita

    先日、同僚と「世の中のエンジニアはターミナルにどんなalias設定をしているんだろう?」という談義になったので、GitHub上の1000リポジトリのコードから調査してみました。 2019/04/10 コメントを元に微修正しました。コメントくださった方々、ありがとうございます。 2019/04/11 こんなのも書いてみました。 よく使われているvimrcの設定ランキング 2019/04/15 プラグイン版も書きました。よく使われているvimのプラグイン top20 aliasとは wikipediaより UNIXなどにおいてコマンドを別名で登録したもの。別名を登録するコマンド名。 長いコマンドやいつも利用するオプションを毎回入力するのは手間ですよね? ターミナルの設定ファイルにaliasを記述することで、別名として定義することが可能というわけです。 調査方法 GitHub APIを利用 do

    世の中のエンジニアのalias設定 - Qiita
  • 記号と英字2文字だけでbash

    難読化シェル芸学会のみなさんこんにちは。 今回は数字を使わず、記号と英字2文字だけで任意のコマンドを実行する方法を紹介します。 (追記)完全記号化が実現されました なお、発表のコマンドはDockerのdebian:stretch-20190204(9.7)上のbash 4.4.12で検証しています。 また、OS X Sierra(10.12.60)上のbash 5.0.2でも検証しています。 Bash 4.x未満は対象外です。 研究の目的 BashはBourne系を代表するシェルであり、多くの環境で標準的に採用されています。 そして、難読化シェル芸は入力された見た目と一見反するようなコマンドによってシェルを操作する芸当です。 $(printf "%b" $(printf '%s%x' '\x' $((0x83 ^ 0xe7))))$(ls --help|grep ^G|cut -c53

    記号と英字2文字だけでbash
  • fish 3.0がやってきた - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    fish 3.0がやってきた - Qiita
    kirakking
    kirakking 2018/12/31
    やった。
  • 突然シェルのhistoryが消えてめっちゃつらい - hitode909の日記

    突然シェルのhistoryが消えてめっちゃつらかった。学生の頃に、漢のzshという連載を見て、シェルのヒストリは無限に大きくすべしというプラクティスを実践していた。それ以来、10年間くらい育ててきたけど、今朝見たら突然15KBになっていた。偶然Dropboxに残ってるのを復元したけど、直近5年分くらい消えてしまった。数ヶ月ぶりにTimeMachineのディスクをつないでみたらそもそも認識されなくて、ディスクごと壊れてるようだった。バックアップはリストアできないと意味ない。 思うのが、シェルの履歴という形で各自が有用なコマンドを保持していて、消えて困っているのがおかしい。リポジトリごとにhistory置き場となるウェブサービスを作ってどんどんpushしていくような形とか、エディタのランチャから起動するだけで開発が完結するとか、現代的な形は考えられると思う。昔はsshですばやくサーバーに接続し

    突然シェルのhistoryが消えてめっちゃつらい - hitode909の日記
    kirakking
    kirakking 2018/11/13
    失ってはじめて大切さを実感する例だ!
  • 無効なURLです

    無効なURLです。 プログラム設定の反映待ちである可能性があります。 しばらく時間をおいて再度アクセスをお試しください。

    kirakking
    kirakking 2016/12/24
    現代の魔術師たちだ。
  • シェルの展開順序に気をつけよう - Qiita

    Shell Script Advent Calendar 2016の12月17日エントリーです(途中途切れてるので日数計算は不明)。 初級者向けの基礎知識として、シェルの展開順序について書きます。ここではbashを例に説明しますが、基は各種シェルに共通していると思います。 展開と実行の順序 端末やシェルスクリプトなどでシェルを使うときには、展開順序を意識していないと思わぬ失敗をすることがあります。展開(expansion)とは、ファイル名のパターン(ワイルドカード)やシェル変数などの処理です。 展開のメカニズムは普通のプログラミング言語のモデルと大きく異なる点の一つです。たとえば、多くのプログラミング言語の文法では変数は値の一種として扱われますが、シェルの文法では変数が展開されてから実際の処理が実行されます。このあたりの感覚は、C言語のプリプロセッサマクロなどに近いかもしれません。 ba

    シェルの展開順序に気をつけよう - Qiita
  • プログラマーの君! 騙されるな! シェルスクリプトはそう書いちゃ駄目だ!! という話 - Qiita

    記事が切っ掛けとなってお声がけを頂き、記事の増補リファイン版となる記事をSoftwareDesign 2018年1月号のシェルスクリプト特集第2章として執筆しました。リファイン版には、この記事で触れていない文法面での分かりにくさについての解説が含まれています。その文法面での分かりにくさの解説の一部に相当する記事もありますので、ぜひそちらも併せてご覧下さい。 Shell Script Advent Calendarをご覧の皆様、図々しくも5日目に続く2度目のエントリーのPiroです。 前回は自作のBashスクリプト製Twitterクライアントをネタに実装を解説しましたが、今日は他の言語で多少のプログラミング経験はあるんだけど、どうにもシェルスクリプトは苦手だ……という人のための、シェルスクリプトによるプログラミングの勘所を解説してみようと思います。多分、プログラミング入門レベルの人や上級

    プログラマーの君! 騙されるな! シェルスクリプトはそう書いちゃ駄目だ!! という話 - Qiita
    kirakking
    kirakking 2016/12/08
    高階関数を知ると、mapとかfun x->eとかfilterとか使いたくなってきてオレオレコマンド作るんだけど、結局xargsに努力が吸収される。シェルスクリプトは行指向テキスト処理言語。
  • シェルとファイルデスクリプタのお話 - Qiita

    Shell Script Advent Calendar 2016が始まりました。1日目は私です。好きなシェルはBashです。 はじめに ファイルデスクリプタを知ることで、よりスマートにシェルを記述でき、シェル芸の幅も広がります。この記事はシェルとファイルデスクリプタの理解を深めることを目的としており、対象は次のような人です。 パイプ・リダイレクトをうまく使えない人 2>&1 の置き場所にいつも迷う人、そもそも2>&1が何って人? シェルの作業で中間ファイルを作成している人 ファイルデスクリプタとは ファイルデスクリプタ (FD) とは、プロセスが入出力するファイルやデバイスを扱うためのインターフェイスです。これはUNIX系OSのデバイスとファイルは透過的に扱えることと関係し、任意のファイルもデバイスも同じAPIで操作できます。 FDは扱うデバイス・ファイルごとに番号が振られ、プログラムは

    シェルとファイルデスクリプタのお話 - Qiita
  • Bash $((算術式)) のすべて - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 算術式についてまとめます! 以下の衛星記事もご参照ください。 Bash $((算術式)) のすべて - A 基編 - Qiita Bash $((算術式)) のすべて - B 罠・バグ回避編 - Qiita Bash $((算術式)) のすべて - C 応用編 - Qiita 当は どうでも良い Bash 算術式の細かいこと をメインで書きたいのですが、それだと余り役に立たない記事になってしまうので、基も網羅します! 先ず節1に基事項をまとめ、それ以降に他に書かれていない色々の注意点・応用方法などを簡潔にまとめます。ちゃんとした

    Bash $((算術式)) のすべて - Qiita