タグ

shellに関するjune29のブックマーク (32)

  • シェルスクリプトを書くのをやめる - blog.8-p.info

    今年から、できるだけシェルスクリプトを書くのをやめようとしている。私が毎日 zsh に打ち込んでいるのも広義のシェルスクリプトだし、自分用の雑なスクリプトを書くことはあるけれど、チームの他の人も将来に使ったり改変したりするようなものは、なるだけ他の言語を使っている。 シェルスクリプトを書くのは難しいし、その難しさは、学ぶに値しないといったら言い過ぎかもしれないけれど、2021年に初心者が取り組むべき問題とは言い難いと思う。 シェルは悪いプログラミング言語である Bash Strict Mode とかを使ってみても、シェルスクリプトには落とし穴が多すぎる。自分で書いたものを自分で使っている分には大丈夫なのだけど、スクリプトがチーム内で使われるようになると、考慮していなかったところ、例えばファイル名に空白文字が含まれるとか、そういうレベルの微妙なところで、ちゃんと書かれていないスクリプトは壊れ

    june29
    june29 2021/09/15
  • シェルを作っている - ぶていのログでぶログ

    シェルスクリプトじゃなくてシェル。 前回の記事でGNU bison/flexのことを書いたのはこれの副産物だったのであった。 なぜ作っているかというと面白そうだからという理由以外ないのだけど、きっかけはxonshというPython-powerdなシェルがあることを知って「PythonがあるならRubyもほしい」と思ったのであった。 reddish-shell シェルの名前は reddish-shell としている。 reddishは赤みを帯びたという意味らしく、Rubyも赤っぽいし、shで終わっているし*1でこれにした。 もしかしたら、そのうち変えるかもしれないし変えないかもしれない。 コンセプト ただ普通にシェルを実装しても面白くないし実用性もないので、ある程度コンセプトを考えている。 まず、大前提として前述したとおりRuby-powerdにしたい。 Rubyの構文が使えるようにしたいと

    シェルを作っている - ぶていのログでぶログ
  • Starship: Cross-Shell Prompt

    GitHub (opens new window) HomeGuideAdvanced InstallationConfigurationAdvanced ConfigurationFrequently Asked QuestionsPresets Compatibility First Works on the most common shells on the most common operating systems. Use it everywhere! Rust-Powered Brings the best-in-class speed and safety of Rust, to make your prompt as quick and reliable as possible. Customizable Every little detail is customizabl

    Starship: Cross-Shell Prompt
    june29
    june29 2019/09/02
  • シェルのhistoryをクラウドに保存する取り組み - hitode909の日記

    ある日zshの履歴が消えた悲しみからいくつか課題感を持っていた。 巨大な1ファイルにどんどん書いていくので、壊れたときの影響が大きい 追記方式なので、複数の端末で共有するためGitやDropboxなどに入れるとコンフリクトしやすい 履歴から取り出すときにどのディレクトリで実行したコマンドなのかわからない シェル履歴をファイルに書いて終わりという暮らしは数十年変わっていない。 履歴はクラウドサーバーに保存して、補完したいときにAPI経由で問い合わせるというアーキテクチャが良いと思ったので、作ってみた。 github.com コマンドの実行時 zshのフックを使って、コマンドの実行時に、実行したコマンドと$pwdをAPIにPOSTする Cloud Functionsが立っていて、送られたコマンドをCloud Datastoreに保存する Cloud FunctionsはGoogle製のAWS

    シェルのhistoryをクラウドに保存する取り組み - hitode909の日記
    june29
    june29 2018/11/16
    めちゃくちゃおもしろい…!
  • 突然シェルのhistoryが消えてめっちゃつらい - hitode909の日記

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

    突然シェルのhistoryが消えてめっちゃつらい - hitode909の日記
    june29
    june29 2018/11/13
    たしかに History Cloud みたいなの欲しい。暗号化した上でローカル以外のどこかに保存されてほしい。
  • keiju/reish: Reish - Unix shell for rubyist

    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

    keiju/reish: Reish - Unix shell for rubyist
  • [小ネタ] mkdir したディレクトリに cd する方法 9 選 +1 (BASH) ※追記あり | DevelopersIO

    $ mkdir /very/_very/Very-long/directory_name/20170915 なんて操作をしたあと、そのディレクトリにcdしたい場合ってまれによくありますよね。 どんなやり方があるか考えてみました。 1. コピペする そのまんまですが、これをやりたくなくてこの blog を書いてます。 2. TAB 補完で頑張る これも無いわけではないですが、間違えたりすることを考えると正直あんまりやりたくないです。 3. 上矢印キーで前コマンドを呼び出し、右矢印キーで先頭に戻ってmkdirをcdに書き直す よく見る方法ですが、もうすこし少ない手数でできないでしょうか。 4. 上矢印キーで前コマンドを呼び出し、Ctrl-Aで先頭に戻ってCtrl-Dx5 のあとにcd BASH のキーバインドはデフォルトだと emacs モードなので、このやり方が出来ます。 でもまだちょっと手

    [小ネタ] mkdir したディレクトリに cd する方法 9 選 +1 (BASH) ※追記あり | DevelopersIO
    june29
    june29 2017/09/17
    ぼくもこういうケースだと esc . を使うことが多い。
  • コマンドラインがさらに便利になるfillinコマンドを作りました! - プログラムモグモグ

    fillinというコマンドラインツールを作成しました。 コマンドの一部を変数化して、別の履歴に保存しておけるツールです。 ステージング環境と番環境のように、同じコマンドで複数の環境を切り替えるのに便利です。 zshの (エッセンシャルソフトウェアガイドブック) 作者:広瀬 雄二発売日: 2009/06/17メディア: 単行(ソフトカバー) どうして作ったの コマンド履歴って便利ですよね。 私はよくコマンド履歴からコマンドを選んで実行しています。 シェルに付属しているデフォルトの履歴を使っている方もおられるでしょうし、fzfやpecoのようなインタラクティブな絞り込みを行なっている方もいるでしょう。 私が一番困っていたのが、認証キーの扱いです。 webアプリを作っていてcurlで素早く確認するときに、認証キーやアクセストークンを打つことがあります。 アクセストークンのようなランダムな英

    コマンドラインがさらに便利になるfillinコマンドを作りました! - プログラムモグモグ
    june29
    june29 2017/06/15
    よさそう!!!
  • Big Sky :: golang で UNIX コマンドパイプラインを扱う

    golang - Goで外部コマンドをパイプして実行する - Qiita もっとうまいやり方誰か教えてください( ꒪⌓꒪) http://qiita.com/yuroyoro/items/9358cd25b5f7fe9dd37f 当はプロセスの生死と共にパイプが閉じられないといけないので io.Pipe ではなく Cmd.StdoutPipe を使った方がよい。ただしコード量はもう少し多くなる。確かに毎回書くのはダルいのでパッケージを作った。 mattn/go-pipeline - GitHub https://github.com/mattn/go-pipeline これを使うと簡単にコマンドパイプラインが扱える。 package pipeline import ( "fmt" "log" ) func ExampleCommandPipeLine() { out, err := Ou

    Big Sky :: golang で UNIX コマンドパイプラインを扱う
  • golang で外部コマンドを実行して標準出力を取得する - tkuchikiの日記

    執筆時に使用した go version は、go1.3 です。 golang で外部コマンドを実行して、 標準出力の結果を受け取る方法です。 Go Playground では試すことができませんのでご注意ください。 ※追記1 id:mattn さんにご指摘いただいた、Cmd.Output の例を追記しました。 標準出力だけ取れれば良いなら、非常に簡潔に書くことができます。 ありがとうございました。 ※追記2 ドキュメントを読みなおしたところ、 Cmd.CombinedOutput という、 標準出力と標準エラー出力両方とれるものがありましたので、 追記しました。 ※追記3 最初に書いた標準出力一括取得は、それほど使わなさそうだと思いましたので、 削除して、末尾にStdinPipe の例を記載しました。 ※追記4 id:id:hnakamur3 さんに教えていただきました記事へのリンクを追加

    golang で外部コマンドを実行して標準出力を取得する - tkuchikiの日記
  • exec package - os/exec - Go Packages

    Tips for writing clear, performant, and idiomatic Go code

    june29
    june29 2016/01/17
    Go からコマンドを実行するときはこれ。
  • GitHub - jamesob/desk: A lightweight workspace manager for the shell

    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 - jamesob/desk: A lightweight workspace manager for the shell
    june29
    june29 2015/11/16
    "A lightweight workspace manager for the shell" よさげ
  • ターミナルにリッチなモニターを表示させる

    B! 511 0 0 0 以前、 sparkという シェルスクリプトで棒グラフを表示するコマンドを紹介しましたが、 さらに複雑なグラフや地図などもターミナルに表示してしまおうと言う プロジェクトの紹介。 blessed-contrib termui wopr ブラウザに表示させる blessed-contrib nodeがインストールされている必要がありますが、 nodeが入っているなら取り敢えず $ git clone https://github.com/yaronn/blessed-contrib.git $ cd blessed-contrib $ npm install $ node ./examples/dashboard.js を実行してみてください。 ターミナル上に こんな感じのものが表示されると思います。 追記: 2015/11/30 上のgifはGNU screenを立

    ターミナルにリッチなモニターを表示させる
    june29
    june29 2015/11/12
    ハッカーの日常だ
  • GitHub - railsware/upterm: A terminal emulator for the 21st century.

    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 - railsware/upterm: A terminal emulator for the 21st century.
    june29
    june29 2015/09/08
    Electron 製のターミナル。
  • シェルスクリプトの中で1行ずつ変数を分割する際には、cutとかawkとか余計なプロセスを起動せずsetを使って分割した方が効率的 - 双六工場日誌

    シェルスクリプトの中で、スペース区切りもしくはタブ区切りのレコードを扱うことがよくあると思います。 たとえば、前回のエントリ「AWS CLIとjqを使って、AWSのELBボリュームがアタッチされているEC2インスタンス名を出力するワンライナーを書いた - 双六工場日誌」のスクリプトの出力は以下のようになります。 i-ec56a9f5 vol-07d00601 servername i-ec56a9f5 vol-8f550991 servername このようなレコードの特定の列を取り出して、処理する際にどうするのが効率的か、というのがこのエントリのお題です。 非常に古い話題なので、昔からシェルスクリプトを書いている人には自明な話ではありますが、最近、シェルの標準機能の話を聞く機会がなく、失われつつある技術になってきている気がしているので、改めて確認ということで。 例として挙げたレコードから

    シェルスクリプトの中で1行ずつ変数を分割する際には、cutとかawkとか余計なプロセスを起動せずsetを使って分割した方が効率的 - 双六工場日誌
    june29
    june29 2015/01/27
    set 使ったことなかった… (ゆとり)
  • The 3 Good Habits for Shell Beginners

    「シェル苦手な人に、今日から始めて欲しい3つの考え方」 @nanapi勉強会 vol2 - Shellの活用でこれだけ毎日が便利になる http://nanapi.doorkeeper.jp/events/11514

    The 3 Good Habits for Shell Beginners
    june29
    june29 2014/05/29
    困っていない人に解決策を押し売りしてもあんまり、ってのは同意。そういう人でも日常の中の実演を通じて「えっ、今どうやったの!?」と感じてもらえると興味を持ってもらえたり。
  • zshのalias -s (suffix alias)が神な件 - プログラムモグモグ

    まず, 他のシェルをお使いの人にはごめんなさい. aliasコマンドの-sが使えるのは zsh 4.2.x- で, 他のシェルでは実装されていないと思います. あと, もう既に alias -s 知ってるよーって人は読まなくていいです. alias -s って何? 打ったコマンドの後ろ(suffix)を見て, 適当に宜しくやってくれるやつです. 次の例を見て下さい. ~$ echo "print ('hello, world')" > hello.py ~$ python hello.py hello, world ~$ alias -s py=python py=python ~$ ./hello.py hello, world ~$ Pythonのコードは python hello.py で実行出来ますが, お尻が py なら python を使います, とaliasしておけば, ./

    zshのalias -s (suffix alias)が神な件 - プログラムモグモグ
    june29
    june29 2013/03/01
    なるほど suffix なのか。Mac OS X の open で事足りている感はあるなぁ。
  • rupa/z: z - jump around

    Z(1) User Commands Z(1) NAME z - jump around SYNOPSIS z [-chlrtx] [regex1 regex2 ... regexn] AVAILABILITY bash, zsh DESCRIPTION Tracks your most used directories, based on 'frecency'. After a short learning phase, z will take you to the most 'frecent' directory that matches ALL of the regexes given on the command line, in order. For example, z foo bar would match /foo/bar but not /bar/foo. OPTIONS

    rupa/z: z - jump around
    june29
    june29 2013/01/09
    週末ディレクトリ移動便利コマンドZ
  • Lightweight git hook management tool その名も git-hook を作りました - 鳩舎

    どうもこんにちは。フックしてますか。ジャブからローにつなげてますか。 そんなこんなで最近は僕もそこそこ git に慣れてきて助けてもらわなくても良くなって来ました。 しかし人間の欲望はとどまるところをしらず、「なんか定形作業めんどくせーなだるいしなんかうまいことどうにかなれよ面倒くせぇ」とか考え始めるものです。たとえば「テスト通ってないコードコミットするなってリーダーがいうけどいちいち手でテスト走らせて確認すんのだるいからなんかうまいこと自動で動かんかな」とか。 git は大変よくできたツールですので、そういうのもちゃんと用意されています。hooks といって、コミットのタイミングなどで特定のシェルスクリプトなりなんなりを動かすことが出来るよう配慮されているのです。すげーな git 。 しかしこいつがマジめんどくさい。自分でシェルスクリプト書くとか絶対嫌だし、すでにそのへんに転がってるのを

    Lightweight git hook management tool その名も git-hook を作りました - 鳩舎
  • less の tail -f モード的な何か - 宇宙行きたい

    今、衝撃的な事実が社内 IRC に何気無く流れてた。 もう、これを知らなかったせいで無駄にした時間を想像するだけで泣きそうになった。 id:sett-4 : (less で) shift+Fでtail -fモードに。Ctrl+Cで脱出 もう、当どれだけ今まで、その二つを行き来していたか…… orz

    less の tail -f モード的な何か - 宇宙行きたい
    june29
    june29 2010/12/08
    ぎゃーーー もっと早く知っておけばよかった!!