/bin/bash -c "$(curl -fsSL https://githubusercontent.com/Homebrew/install/HEAD/install.sh)"
【2022-01-22追記】簡易版のLISP処理系をPOSIX準拠シェル(+sed)で作成する様子の動画を作成してみました. この記事は,筆者がシェルスクリプトで簡易実装している純LISP処理系の開発についてまとめたものです.『PureLISP.sh』と呼んでおり,次のGitHubリポジトリでパブリックドメインとして開発・公開しています. 基本的には,上記リポジトリのREADMEの内容を記事として膨らませたような構成です.このことから,今回の記事内容に関するコメント等だけでなく,『PureLISP.sh』そのものへの御意見等(GitHubのIssues/Forkを含む)も受け付けます.ただし,開発の経緯・目的から,次の3点は維持します. 最低限必要な要素で構成されたLISP処理系を志向すること POSIX準拠のシェルスクリプトで実装すること パブリックドメインにて開発・公開すること なお,
-eオプションでmysql -uroot -e "show tables" -eオプションはトランザクションに注意。 以下はトランザクションは効いていません。 mysql -uroot -e "begin;" date mysql -uroot -e "insert into hoge values(1, 2, 3);" date mysql -uroot -e "commit;" トランザクションが効かない理由は簡単です。 mysqlコマンド毎にコネクションが切れているからです。 従って、-eオプションでトランザクションを有効にするには、以下のようにワンライナーにするしかありません。 mysql -uroot -e "begin; insert into hoge values(1, 2, 3); commit;" bashの変数を
LinuxなどのUNIXマシンを操作する際、SSH接続でコンソールからリモート操作を行うのが一般的だろう。 で、そのSSH接続をWebページ上から行えるツール『Shell In A Box』というものがあるらしいので使ってみることにした。 1.インストール 当然、まずはインストールから。 各ディストリビューション別に、以下のコマンドを実行してインストールを行う。 Debian/Usudo apt-get install openssl shellinabox RHEL系 sudo yum install openssl shellinabox 2.設定 次に設定作業から。 設定ファイルについてはデフォルトのままでいくが、その場所と内容についてを以下に記載する。 Debian/U
パイプライン は、最近のソフトウェアエンジニアリングにおいて、非常に便利な(そして驚くほど活用されていない)アーキテクチャパターンです。ソフトウェアでデータの流れを制御するためにパイプとフィルタを用いる考え方は、最初のUNIXシェルが作られた1970年代からあります。もしターミナルエミュレータでパイプ” | ”を使ったことがあるなら、”パイプとフィルタ”を活用できていることになります。以下の例を見てみましょう。 cat /usr/share/dict/words | # Read in the system's dictionary. grep purple | # Find words containing 'purple' awk '{print length($1), $1}' | # Count the letters in each word sort -n | # Sort l
以前作ったplenvsetupというツールについて簡単なテストをかいた話(もしくはTravisでshell scriptをテストする方法についての試行錯誤) 相当前の話ではあるけど、ぼくはplenvsetupというツールを作って公開している。 これが何をするものなのかについては上記のブログ(ぼくの旧ブログ)を参照していただくとして、ツールとしては幸せな事に、Perl入学式の環境構築ツールとしてご利用いただいている。大変ありがたい話である。 Perl入学式での失敗 が、実は先日このPerl入学式で、このplenvsetupがうまく動かない、ということがあった。tsucchiさんをはじめとした様々な方のご協力を受け調査した結果、bashで実行すべきところが、shで実行されてしまっていたことがわかった。 直接的な原因としては、Perl入学式のドキュメントがそうなっていたため、ということではあるの
pecoというインタラクティブに入力をフィルタして出力するコマンドがあって、使い始めてからシェルの操作方法が大幅にかわり、だいぶライフチェンジングだった。 最近このへんが流行ってるのでやたら記事あるけど、せっかくなので僕も使い道を紹介しようと思う。 pecoをzshで使う 1. peco ghq ghqを使ったローカルリポジトリの統一的・効率的な管理についてのこと。 僕も$GOPATHは$HOMEにしていて、今のところ別に困ることはない。 go getしたりghq getしたりして美しくディレクトリ切った上で、pecoに割り当てておいたC-sですぐ目的のディレクトリ開けるようにしてあるので、めちゃくちゃソース管理が楽になった。 function peco-src() { local selected_dir=$(ghq list | peco --query "$LBUFFER") if
橘玲の『「読まなくてもいい本」の読書案内』を読んだので、感想とメモをまとめておく。 この本、タイトルは『「読まなくてもいい本」の読書案内』だが、実際には「読まなくていい本」はほとんど紹介されていない。紹介されているのは、当たり前の話かもしれないが読むべき本だ。他の読書案内本と異なっているのは、”こういう本は読まなくて良い”と、ばっさり切り捨てているところ。読むべきか・読まなくてもよいかの基準は、20世紀後半に爆発的に進歩した科学研究の成果に置いている。著者は、この時期に起きた科学研究の大幅な進歩を”知のビッグバン”、”知のパラダイム転換”と呼び、これ以前に書かれた本は(とりあえず)読む必要がないと言い切る。古いパラダイムで書かれた本は捨てて、新しいパラダイムで書かれた本を読もうという話だ。ちょっと乱暴な分け方ではあるが、1980年代に大学生だった私には案外納得できるものだった。学生時代に最
2009/09/07 毎年夏に開催される軽量プログラミング言語(LL:Lightweight Language)をテーマにした「LLイベント」。第7回目となる「LLTV」が、2009年8月29日に東京・中野で開催された。この記事ではプログラムの一部、「大改善!!劇的ビフォーアフター」をレポートする。前編では、Rubyによるfortuneコマンドの“増築”と、Firefox拡張によるslコマンドの実装というネタ系発表をレポートした。中編ではC言語にLisp風のマクロを取り入れ、lsコマンドのソースコードを約半分に削減する匠の技をレポートした。後編となる本記事では、売り場業務が滞りがちだった販売管理システムをbashコマンドで“建て直した”という劇的ビフォーアフターの発表をレポートする。 DBを捨ててテキストファイルに変換 「100万件ぐらいの検索なら、シェルだけでも1000分の数秒でできます
シェルについて調べてるといきなりノックアウトされた。 当ページ管理人のネット上・実社会での観測結果によると、「シェルスクリプト」を「シェル」と呼ぶ人のスキルは著しく低い傾向がある。 区別ついていましたか? 「いや、シェルスクリプトって長いからシェルって省略してただけだし…」 ではシェルって何ですか? シェルとシェルスクリプトについて違いを教えてください。 「・・・」 というわけで調べてみた。 シェルとは シェルはOSとユーザのやり取りを仲立ちするためのものである。 ユーザーが直接OSを操作して、システム全体におよぼすような致命的なエラーを発生させるといったことを回避するために、OSの外殻(貝殻・シェル)として存在する。 つまりOSをユーザから守るための殻だったってことだ。 シェルにはCLIベースのものと
GitHub のプロジェクトごとの GitHub Pages (http://motemen.github.io/git-browse-remote/ とか)は gh-pages ブランチに push すればいいということになってますが(ヘルプ)、git checkout --oreman を使ってるなら middleman-gh-pages というプラグインがあって、これを使うのも手だけれど、そうでない場合には結局手でやる必要があってこまる。そういうわけで、独立したシェルスクリプトにしてみました。 使い方 % push-gh-pages DIRECTORY DIRECTORY というのは GitHub Pages に push されるファイルが展開されるディレクトリ(Git で管理さ
1. ble Type エバンジェリスト • Perl, JavaScript... 14年1月26日日曜日
はじめに つい最近知った便利なデバッグ方法 (長年シェルスクリプトを書いているのに知らなかった。これが常識だったら恥ずかしい…) シェルスクリプトのデバッグでは echo で変数の中身を見るという原始的な方法をよく使うかと思います。 いわゆる プリントデバッグ というやつですね。 もう少し詳しいデバッグが必要な場合は、 set -x と set +x でデバッグしたい部分を囲むという方法もあります。 今回は プリントデバッグ で使う echo の代わりに typeset or declare を使うと良いというお話です。 プリントデバッグは typeset or declare を使おう typeset or declare は変数宣言などでよく使うコマンドですが、変数の中身を見るのにも使えます。 echo と比べて何が良いのかというと、変数の中身はもちろん変数名や変数の型も表示してくれ、
というツイートが昨日RTで流れてきたので、面白いなと思ってやってみている。 https://github.com/teramako/scripts/blob/master/shell/cat.sh cat コマンドは本来 concatenate をするコマンドである。ということで、これに反した場合にネコを出して矯正させようという趣旨である。単なる bash スクリプトである。~/bin/catとして放り込むのが良かろう。 C言語版、Perl版等のもうちょっと高級な言語での書き直しを望みます。(僕はCもPerlも得意じゃないので...) 標準入力がない、かつ、ファイルが2つ以上指定されていない 標準入力がある、かつ、ファイルが1つ以上指定されていない 「標準入力がない、かつ、ファイルが指定されない」に修正 場合にネコがでる。 ずさーーーーとネコが流れてきて 最後に と注意される仕様。 因みに
Dropbox-UploaderはShellスクリプトで動作し、指定したフォルダ/ファイルをDropboxへアップロードする。 Dropbox-UploaderはShellスクリプト製のオープンソース・ソフトウェア。Dropboxの人気はとても高い。とりあえずフォルダに入れておきさえすれば後は自動で同期してくれるので手間いらずだ。複数のパソコン間でも簡単にデータが同じ状態に保てる。 実行中(この後で止まってしまう…) しかし様々な事情でDropboxを入れられないケースもあるだろう。全てのファイルがコピーされるのでごく小さな
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く