タグ

shellscriptに関するMakotsのブックマーク (30)

  • macOS のデフォルト状態でコマンドラインからOCR処理を行う - TeX Alchemist Online

    macOS 12 Monterey では,OSビルトインでのOCR機能が搭載されました。Preview.app で,画像やスキャンPDF(中身がスキャン画像のPDF)に対して,ただマウスでドラッグするだけで,中身の文字を認識して選択し,コピーできるようになっています。さらに,macOS 13 Ventura では,それが日語にも対応しました。 たとえば,(今や入手困難となってしまった)The TeXbook のアスキーによる日語版をスキャンしたものを Preview.app で開くと,何もしなくても,文字選択できます。 これをコピーして他のエディタにペーストすると, TEXの名称で気をつけなければならないことがほかにもある。Eの文字が不揃いになっていることだ。Eの文字を少し下げてあるのは、TeXが組版のためのシステムであることを印象づけるためであり、またほかのシステムの名称と区別するた

    macOS のデフォルト状態でコマンドラインからOCR処理を行う - TeX Alchemist Online
  • なぜ今シェルスクリプトを学ぶのか・シェルスクリプトの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 - 理系学生日記
  • bash スクリプトの実行中上書き動作について

    を設定してから再度試した所 bar が表示された。backupcopy は編集中のファイルによって自動で判別する auto がデフォルトになっている為、試す際には明示的に yes に設定しないといけない。 bash の実装確認 evalstring.c の parse_and_execute でコマンドが処理されており、input.c の with_input_from_buffered_stream で読み込みの準備が行われている。バッファの読み込みの体は y.tab.c つまりパーサから直接呼ばれており、このパーサは fgets(3) で読み込まれつつ実行される為、一括でファイルが読み込まれている訳ではない。 while/do でループ実行した際に、ファイルを書き換えられたら戻り先はどうなるか、についてはスクリプトはバッファ付きで読み込まれており、そのバッファがファイルシステムから読

    bash スクリプトの実行中上書き動作について
  • GitHub - koalaman/shellcheck: ShellCheck, a static analysis tool for shell scripts

    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 - koalaman/shellcheck: ShellCheck, a static analysis tool for shell scripts
  • Minimal safe Bash script template - Better Dev

    Minimal safe Bash script templatePublished by Maciej Radzikowski on December 14, 2020December 14, 2020 Bash scripts. Almost anyone needs to write one sooner or later. Almost no one says “yeah, I love writing them”. And that’s why almost everyone is putting low attention while writing them. I won’t try to make you a Bash expert (since I’m not a one either), but I will show you a minimal template th

    Minimal safe Bash script template - Better Dev
  • 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 ファイルをわせることで、任意コードの実行ができてしまう。数ある脆弱性の中でもとくにヤバいやつだ。どこが穴なのかというと、タイトルにもあるとおり算術式なのだが、し

  • なんでも自動化するエンジニアが残していったライフハック・スクリプト

    元々はロシア語の掲示板に出ていた、職場での小さなことをなんでも自動化していたハッカーの話が英語に翻訳され、Hacker News等で話題になっています。 xxx(ハンドル名): オーケー、ビルド担当エンジニア転職で辞め […] 元々はロシア語の掲示板に出ていた、職場での小さなことをなんでも自動化していたハッカーの話が英語に翻訳され、Hacker News等で話題になっています。 xxx(ハンドル名): オーケー、ビルド担当エンジニア転職で辞めちまった。当にターミナルに住んでるようなやつだった。わかるだろ、Vimが大好きで、.dotファイルで図を描いて、Markdownでwikiに投稿するようなタイプさ… もし何か、そう何でも、90秒以上掛かるようなことがあったら、スクリプトで自動化しちゃうんだ。 xxx: そういうわけで我々はここにいて、彼の、そう、「遺産」を見てるところだ。 xxx

    なんでも自動化するエンジニアが残していったライフハック・スクリプト
    Makots
    Makots 2015/11/27
    スクリプト名のセンス
  • Bash用ユニットテストフレームワーク作りました - Folioscope

    Bash用テストフレームワークに、Batsやshunit2がありますが、イケてないなーと思ってたら、気づいたら自分で作ってました。 github.com テストの結果はモダンなテストフレームワークのように、カラフルに表示します。 またFAIL時は、FAILしたテストの結果を表示します。 自分の Arch Linux 上の Bash 4.3.42 および、Travis CI 上で動作することを確認しています。 インストール curl -o ~/bin/bashtub https://raw.githubusercontent.com/ueokande/bashtub/v0.1/bin/bashtub chmod +x ~/bin/bashtub です。ただし~/binはパスが通ってるとします。 これでターミナルから bashtub と打つことで実行できます。 bashtub テストを書く 各

    Bash用ユニットテストフレームワーク作りました - Folioscope
  • bash スクリプトの先頭によく書く記述のおさらい - Money Forward Developers Blog

    こんにちは。 マネーフォワードでアグリゲーション開発を担当しています中川です。 今回のブログは、私が bash スクリプトを書く際に心がけている事のおさらいをします。 知ってて当たり前のことかも知れませんが、意外と理解されていないアレです。 では、私が bash スクリプトを書く際によく使う記述を一つずつ紹介します。 2種類の shebang シェルスクリプトの一行目に必ず記述する #! で始まる行を shebang と言います。 bash スクリプトの shebang は、bash を絶対パスで指定する方法と、env を使って指定する方法の二種類あります。 bash を絶対パスを指定する方法 #!/bin/bash env を使ってを指定する方法 #!/usr/bin/env bash 前者は /bin/bash が使われます。 (/bin/bash が存在しなければスクリプトの起動時に

    bash スクリプトの先頭によく書く記述のおさらい - Money Forward Developers Blog
  • 初心者向け、「上手い」シェルスクリプトの書き方メモ - Qiita

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

    初心者向け、「上手い」シェルスクリプトの書き方メモ - Qiita
    Makots
    Makots 2015/02/02
    べんりだ
  • cron上でのコマンド実行を再現する - Qiita

    シェル上だと動くのにcron上だと動かない。 よく聞くお話ですよね。 大体はcron上と普段のシェル上で環境変数が違うために起こる問題です。 そういう時に使えるtipsを共有します。 個人のマシン上で適当に動かすようなcronだと みたいにしてログインシェルを間に噛まして環境変数を上書きして実行することでごまかしたりもできます。 これまた別の依存する箇所を増やすので 個人のマシンかrcファイルがちゃんと管理されているような状況以外ではオススメできません。 なのでcron上で実行される状況とほぼ同じ状況でスクリプトを実行してみましょう。 cron上では環境変数はほぼ空なので環境変数を空にしてみましょう。

    cron上でのコマンド実行を再現する - Qiita
  • 使いやすいシェルスクリプトを書く

    できればシェルスクリプトなんて書きたくないんだけど,まだまだ書く機会は多い.シェル芸やワンライナーのような凝ったことではなく,他のひとが使いやすいシェルスクリプトを書くために自分が実践していることをまとめておく. ヘルプメッセージ 書いてるシェルスクリプトが使い捨てではなく何度も使うものである場合は,体を書き始める前に,そのスクリプトの使い方を表示するusage関数を書いてしまう. これを書いておくと,後々チームへ共有がしやすくなる.とりあえずusage見てくださいと言える.また,あらかじめ書くことで,単なるシェルスクリプトであっても自分の中で動作を整理してから書き始めることができる.関数として書くのは,usageを表示してあげるとよい場面がいくつかあり,使い回すことができるため. 以下のように書く. function usage { cat <<EOF $(basename ${0})

  • ssig33.com - Docker をプロダクトのデプロイに使う

    コミケの列に並んでたあたりのころから Docker 格的に使ってます。このサイトもさっき Docker でデプロイするような感じにしました。 Docker の利点と欠点で 開発環境の配布が容易にできる プロダクトのデプロイにつかうにはなにかとキツい みたいな意見をわりと頻繁にみかけるのですが、逆じゃねえかと思ってます。これ開発環境の配布に使うの無理でしょ。各コンテナ使い捨て前提なんだし。 Docker をデプロイに使う際の問題点としては以下があります Dockerfile に 42 個しか命令かけないみたいなやつ なんだかんだでコンテナのビルドに時間がかかる コンテナの管理とかどうするのか リバースプロキシの設定とかどうするのか 一個目に関しては頑張ってください。僕はセットアップ用やデプロイ用のシェルスクリプトを ADD して RUN させるようにしてます。シェルスクリプトセットアップ

  • コマンド実行でシェルが怖いなら使わなければいいじゃない - 拡張 POSIX シェルスクリプト Advent Calendar 2013 - ダメ出し Blog

    http://blog.ohgaki.net/os-command-escape-shell-spec-command-implementation 「えすけーぷじゅうよう!!」を強調して言いたいからなのかシェルの理解が足りないからなのか、 意図がよくわからない文言やら説明が散見されますが、きりがないのでそれらはスルーします。 (シェルについては、なんで関係ない tcsh の話が出てくるんだとか、 位置パラメーター展開に $* 使うなとか、色々) 特に気になったのが以下の文章です。(強調は私によるもの) OSコマンドはOSが提供するシェルで実行されます。 シェルはテキストインターフェースを持ち、 テキストでコマンドとオプションを受け取り実行します。 例示した脆弱なPHPプログラムの場合、 ユーザーからの入力に対しセキュリティ処理を一切してないため、 簡単にサーバーを乗っ取られる可能性があり

  • Shell Script Testing Framework shunit2

    社内勉強会用 shunit2の紹介 https://github.com/YudaiSuzuki/shunit2_demo ※注意 「ファイルをincludeしてください」とありますが、正しくはsourceです。ご指摘ありがとうございました。 https://twitter.com/sora_h/status/380858331746689024 テストの結果に色をつける https://github.com/YudaiSuzuki/shunit2_demo/commit/62fdb8bc13073267a1cb8c72a7df7eb8ce7bcddb 参考: shiratori(@shitai246_)さんのブログ シェルスクリプトでユニットテストを書いてみよう #TddAdventJp http://a4p.me/archives/1157 作った人 https://github.co

    Shell Script Testing Framework shunit2
  • 私が他人のシェルスクリプトから学んだこと | Yakst

    私はシェルスクリプトの大ファンで、他人のスクリプトから面白い方法を学ぶのが大好きだ。最近、SSHサーバの2要素認証を簡単にするためのauthy-sshスクリプトに出会った。このスクリプト群を見まわしていて、みんなと共有したいたくさんのクールなことを見つけた。 出力に色付けする 出力文字列を、成功した時は緑に、失敗した時は赤に、警告は黄色に色づけしたいと思うことはたくさんあるだろう。 NORMAL=$(tput sgr0) GREEN=$(tput setaf 2; tput bold) YELLOW=$(tput setaf 3) RED=$(tput setaf 1) function red() { echo -e "$RED$*$NORMAL" } function green() { echo -e "$GREEN$*$NORMAL" } function yellow() { e

    私が他人のシェルスクリプトから学んだこと | Yakst
    Makots
    Makots 2013/08/22
    良い学び
  • GitHub - mame/quine-relay: An uroboros program with 100+ programming languages

    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 - mame/quine-relay: An uroboros program with 100+ programming languages
  • シェルスクリプトを書く時に気をつけている事など - Qiita

    あくまでも個人的な意見であって、自分がシェルスクリプトを書く時に気をつけている事を備忘録的に列挙しているだけです。 「こうするべきだ」と押しつけている訳ではありません。 勿論「私はこうしている」とか「こうすると良いよ」という意見や議論は大歓迎です。 export (1) しないシェル変数は全て小文字で書く。 PATH や HOME などは環境変数なので大文字で。 スクリプト内で使っているのは単なるシェル変数なので小文字で。 使い方をちゃんと区別する事は重要だと思う。 シェルの変数展開を活用しよう

    シェルスクリプトを書く時に気をつけている事など - Qiita
  • シェルスクリプトを書く際に気を付けていること8箇条 - カイワレの大冒険 Third

    エンジニアという職業柄かシェルスクリプトを書くことはちょくちょくあるのですが、自分なりに気を付けていることを備忘録&自分への戒めも含めて、簡単に書いてみたいと思います。 変数は大文字 シェルスクリプト書いていれば変数の出番は至るところであるでしょう。その際、可読性を増すように、変数は大文字を使っています。 RET=`cmd1`みたいに。好みの問題もあるでしょうが、分かりやすいので。 クオテーションは選ぶ クオテーションにはシングルだったり、ダブルだったり色々ありますが、使い分けておいたほうがよいでしょう。 変数の展開がないようであれば、シングルクオーテーションのほうがスマートでしょうし、展開があるのならダブルクオーテーションを使えばと。 ダブルクオーテーションを使うのにも意味があって、変数は「$RET」のようにクオテーションで囲まなくても動作はたいていするのですが、 echo "${RET

    シェルスクリプトを書く際に気を付けていること8箇条 - カイワレの大冒険 Third
  • シェルスクリプトはエレガントでなければならない

    UNIX系OSのユーザーなら、何らかの形で「シェルスクリプト」を使ったことがあるはずだ。人からもらったスクリプトを意味も分からずに使っているとか、コマンドを並べただけのスクリプトを使っているという人は多いだろう。この連載では、そのようなシェルスクリプト初心者を脱出して、すべてを知り尽くしたシェルスクリプトマスターとなるための手助けをしたい。(編集部) コマンドを並べる? それだけではダメだろう 世界にはシェルスクリプトをマスターした凄腕の紳士が存在する。彼らにとってOSやディストリビューションはあくまで道具であり、シェルスクリプトはその道具を効率よく活用するための道具だ。彼らの指が紡ぎ出すスクリプトは実に合理的で、読みやすく、分かりやすく、そして効率良く動作する。そう、彼らこそシェルスクリプトマスターという名の紳士だ。 そんな紳士にあこがれを抱かずにはいられない人も多いだろう。一般人がター

    シェルスクリプトはエレガントでなければならない