タグ

シェルに関するatm_09_tdのブックマーク (36)

  • シェルスクリプトの表示を豊かにするgumの使い方 | DevelopersIO

    どうも。CX事業部Delivery部のえーたん(@eetann092)です。 gumが面白そうだったので素振りしました。 gumのREADMEを読んで特に気になった部分を例とともに紹介します。 gumとは? gumはシェルスクリプトの表示に彩りを添えるツールです。 gumを入力や選択画面を簡単に実装したりスタイルを変更できます。 Charmには、gumの他にもいくつかのCLIツールが掲載されています。 style gum style [--オプション] "行1" "行2" "行3" ...の形式で、文字や背景、ボーダーの色などの装飾を指定して表示できます。 gum style \ --background="#FDEE0F" \ --foreground="#000904" \ --border="double" \ --border-background="#FDEE0F" \ --b

    シェルスクリプトの表示を豊かにするgumの使い方 | DevelopersIO
  • シェルスクリプトを書くのをやめる - blog.8-p.info

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

  • ShellScriptでの事故防止としてShellCheckを適用してみた | DevelopersIO

    Linterを用いてのチェックを行う場合、個人的に一番厄介なのはシェルスクリプト。いずれの環境でも問題なく動かせることを見送るとしても、それでもWarning表示がなかなか消えません。 ShellCheckを使った、OSX環境でのWarning対処として実践してみたことについて書いてみました。 ShellCheck環境の設定 ShellCheckを有効にしておきます。 brew install shellcheck この記事での実行は coc-diagnostic にて。 :CocInstall coc-diagnostic とあるスクリプトのWarning潰し よくあるシェルスクリプトもWarningの宝庫です。 #!/bin/sh CURRENT=$(cd $(dirname $0) && pwd) cd $CURRENT ポイントは一行に複数のWarning表示が含まれているところ。

    ShellScriptでの事故防止としてShellCheckを適用してみた | DevelopersIO
  • Google発のJavaScriptで書けるシェル 「zx」 | DevelopersIO

    Introduction シェルを書きたいときにBashは手軽に使えるけど、 少し込み入ったスクリプトを書こうとするとちょっと面倒。 NodeいれてJavaScript書くのもいいけど、 いろいろセットアップが手間。 そんな人にピッタリはまるかもしれないのがzx。 Google発、JavaScriptで記述できるシェルです。 Top Level await使ってシェルコマンドがそのまま使用可能です。 また、Promise.allでコマンド並列実行ができたりするので便利です。 Environment OS : MacOS 10.15.7 Node : v14.16.1 Top Level awaitがサポートされたNode(v14.8)以降が必要ぽい? Setup では早速セットアップしてみます。 npmでzxをグローバルインストール。 % npm i -g zx % zx usage: z

    Google発のJavaScriptで書けるシェル 「zx」 | DevelopersIO
  • 入門 シェル実装

    開発者にとってシェルが必要不可欠なものであることは論を俟ちませんが、当たり前の存在すぎてこれがどのように実現されているのかを知る機会はあまりないと思います。トークでは、シェルがどのように実現されているのかを、実際にシェルを実装する過程を通じてお話しします。 ※ もともとのトークのタイトルは「入門 シェル」でしたが,わかりやすさのため「入門 シェル実装」にタイトルを変更しています.Read less

    入門 シェル実装
  • Bashの邪悪なコマンド9選 - Qiita

    rm -rf /やったことある人。 私はないです。 以下はAndreas Müller( Twitter / GitHub / LinkedIn / Medium )による記事、9 Evil Bash Commands Explainedの日語訳です。 9 Evil Bash Commands Explained 初めてターミナルを使って、そしてそれを理解したときのことを覚えています。 あらゆるファイルにアクセスし、全てのプログラムを実行し、黒い画面に何かを入力するだけでシステムの全てを完全に掌握できることに気がついた、あの感覚。 そしてもちろん、致命的ミスを犯して全てを失った、あのときの恐怖も。 私は当はシステム管理者ではありませんが、長年にわたってLinux/UNIXベースのシステムで作業してきたので、コマンドを実行しようとしてEnterキーを打つことを躊躇う状況に何度も遭遇しまし

    Bashの邪悪なコマンド9選 - Qiita
  • シェルスクリプトの処理完了をストレスなく待てるように可視化してみた | DevelopersIO

    バッチ等のシェルスクリプトは処理次第でとても長い時間待つ必要があったりします。応答がなくなって強制終了する必要が出ているのではないかと心配になるケースもあり、それなりのストレス元です。 問題が無いことを把握できるようにビジュアル化しつつ、なるだけ汎用的にこしらえてみました。 作り方 以下の2プロセスにわけます。 実処理 描写処理 実処理を描写処理の子プロセス化するだけです。 ソースコード #!/bin/sh python main.py & chars="/-\|" while [ "$(ps -ef | grep 'python main.py' | wc -l | awk '{print $1}')" -ne "1" ]; do for (( i=0; i<${#chars}; i++ )); do sleep 0.5 printf "processing ... %s\r" "${c

    シェルスクリプトの処理完了をストレスなく待てるように可視化してみた | DevelopersIO
  • シェルスクリプトを高級言語のような書き味に近づける Tips 集 | 創作メモ帳

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

    シェルスクリプトを高級言語のような書き味に近づける Tips 集 | 創作メモ帳
  • シェルスクリプトのキモいところ - 超ウィザード級ハッカーのたのしみ

    シェルスクリプトのインタプリタを作ろうかと、シェルスクリプトの仕様を調べています。気持ちの悪い仕様をいくつか見つけました。仕様書*1を見ながら、dash で試しました。 丸括弧と波括弧のふるまいが違う。 丸括弧はサブシェル、波括弧はコマンドのグルーピングをするための似たような文法ですが、ふるまいが異なるので戸惑います。 $ (echo hello) hello 丸括弧はコマンドの前後にスペースも要らず、丸括弧内のコマンドが実行されます。 $ {echo hello} {echo: not found $ { echo hello } Syntax error: end of file unexpected (expecting "}") $ { echo hello; } hello しかし、波括弧はコマンドの前にスペースか改行をを入れて、コマンドの後ろにはセミコロンか改行を入れる必要があ

    シェルスクリプトのキモいところ - 超ウィザード級ハッカーのたのしみ
  • プログラマーの君! 勘違いするな! シェルスクリプトでは読みやすさのためにスペースを置くな!! という話 - Qiita

    プログラマーの君! 勘違いするな! シェルスクリプトでは読みやすさのためにスペースを置くな!! という話ShellScriptBash 普通のプログラミング言語での開発に慣れた人ほどシェルスクリプト、特にBashで戸惑う部分の一つに、i = 0のように空白を開ければエラーになるし、かといってif[$i!=0]のように詰めてもやっぱりエラーになる、という点が挙げられます。書きたい物を思うように書けなくて「なんだよこのクソ言語は!!!」とブチギレる人は少なくないのではないでしょうか。この記事では、そのイライラを解消するポイントをお伝えしようと思います。 以下、特に断り無く「シェルスクリプト」と書いている場合はすべて「Bashのスクリプト」という意味になります。zsh等他のシェルではまた事情が異なりますので、ご注意ください。 (※以前プログラマーの君! 騙されるな! シェルスクリプトはそう書いち

    プログラマーの君! 勘違いするな! シェルスクリプトでは読みやすさのためにスペースを置くな!! という話 - Qiita
  • shellcheck でシェルスクリプトのコードの質をチェックする - CUBE SUGAR CONTAINER

    正しく動作するシェルスクリプトを書くのは難しい。 できれば書きたくないけど、そうもいかない。 そんなとき心の支えになりそうなのが今回紹介する shellcheck というツール。 これはシェルスクリプトにおける Linter (リンター) で、まずい書き方をしているとそれを教えてくれる。 使った環境は次の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.13.5 BuildVersion: 17F77 下準備 まずは shellcheck をインストールする。 macOS であれば Homebrew でインストールするのが楽ちん。 $ brew install shellcheck インストールすると shellcheck コマンドが使えるようになる。 $ shellcheck -V ShellCheck - shell scri

    shellcheck でシェルスクリプトのコードの質をチェックする - CUBE SUGAR CONTAINER
  • シェルスクリプトのテストフレームワーク Bats を試してみた - kakakakakku blog

    シェルスクリプトのテストフレームワーク Bats を試してみた. github.com たまにコントリビュートをしている Amazon ECS (Elastic Container Service) のデプロイツール ecs-deploy のテストコードで Bats が使われているので,少し書いたことがあり,もっと詳しく調べてみようと思った. github.com Bats は現在もメンテナンスされている もともとの Bats は sstephenson/bats にあり,現在は bats-core/bats-core に移っている.以下の Issue などを読むと,コミュニティの動きがわかる. github.com github.com インストール Bats は様々なインストール方法がある.まず,用意されている install.sh を試してみた. $ git clone git@gi

    シェルスクリプトのテストフレームワーク Bats を試してみた - kakakakakku blog
  • Go+goyaccでシェルを実装する - Qiita

    Help us understand the problem. What is going on with this article?

    Go+goyaccでシェルを実装する - Qiita
  • シェルのPowerlineをPowerline-goに置き換えてみた|TechRacho by BPS株式会社

    こんにちは、hachi8833です。 Powerline使ってますか?私もシェルのプロンプトを便利かつかっこよく表示できるPowerlineを半年ぐらい前から使っています。特にGitのディレクトリでステータスを表示できるところが非常にありがたいです。 これまで使っていたLokaltog/vim-powerlineを開いてみるとdeprecation warningが表示されていることに気づき、そして他の変種も含めて家Powerlineに収束したらしいことを今になって知りました。 しかし家Powerlineに差し替えてみようとしたところ、なまじpyenvをインストールしていることもあってか、Python周りの設定がいろいろ面倒で途中でくじけました。それにpowerline-daemonを常駐させないとやはり重いらしく、常駐させるのは自分的に残念です。 そんなときに見つけたのが、Go言語で

    シェルのPowerlineをPowerline-goに置き換えてみた|TechRacho by BPS株式会社
  • 雰囲気でシェルを使っている人のためのシェル入門 | κeenのHappy Hacκing Blog

    κeenです。雰囲気でシェルを使ってる人が多いとのことだったので少しばかり込み入った知識を。 あと一応POSIX準拠かどうかも気にしながらやっていきます。 基礎知識編 シェルの種類 まず、POSIXにシェルが定義されています。 これに最低限の機能で準拠しているものをPOSIXシェルと呼ぶことにします。いわゆる/bin/shです。具体的な実装はbsh、ash、dashあたりでしょうか。 最低限の機能以上に色々拡張されているシェルを拡張POSIXシェルと呼ぶことにします。具体的な実装はbash、zsh、kshなどでしょうか。 ここでは触れませんがPOSIX準拠でないシェルも存在してcshやtcshなどのシェルがあります。あと確か最近話題のfishも違ったような。 さて、1つ問題になるのは普段使いのコマンドラインはおおむね拡張POSIXシェルでしょうが、サーバで使うシェルやデプロイスクリプトで呼

    雰囲気でシェルを使っている人のためのシェル入門 | κeenのHappy Hacκing Blog
  • “応用力”をつけるためのLinux再入門

    前回に引き続き、今回のテーマも「オプション」です。今回は「getopt」などを使わずに処理します。シェルスクリプトでオプションを扱いたい場合、どのような点に注意するかも併せて考えていきましょう。

    “応用力”をつけるためのLinux再入門
  • シェルスクリプトにおける [ と [[ - 理系学生日記

    シェルスクリプトで条件分岐を書くとき、[ を使ったり [[ を使ったりすることになると思います。 POSIX の test にも記載がありあすが、[ は test と同じ機能を持つことになっており、同じ実装であることも多いです (ただし、[ として実行されるか、test として実行されるかに依って挙動が変わり得る)。 一方で、[[ は POSIX で定義はされていない、Bash 等の高機能シェルでの拡張になります。 [ と [[ は、当然ながら同じような機能を持っています。そりゃ、後者は前者の拡張ですからね。一方で、「拡張」であるが故に、[ と [[ で異なる挙動も存在します。 演算子 たとえば比較の演算としては以下のような挙動のちがいがあったりします。なお、[ への有無については、POSIX 定義という観点であって、シェル実装によっては普通に使えるものもあります。 機能 [ [[ 備考

    シェルスクリプトにおける [ と [[ - 理系学生日記
  • https://qiita.com/ahyahya/items/b11b5d2dc30193c9c864

  • [bash]サブシェルがパイプで受け取った標準入力の扱いとcdコマンドの動作|TechRacho by BPS株式会社

    こんにちは、hachi8833です。 bashのサブシェルで標準入力を受け取った場合の扱いについて社内で行われたやりとりをメモします。 検証にはDocker上で動くUbuntu Linux(4.4.0-47-generic)を使いました。 質問 bashのサブシェルについての疑問です。以下のコマンドがあるとします。 $ echo "aiueo" | (cd /home/hoge && cat - ) サブシェル(上の(と)で囲まれた部分)はパイプで受け取った標準入力をどう扱うか cdは標準入力をどう扱うか 実行してみると以下のようにcatまで標準入力が届いているように見えるが、cdは何が行われていたのか 回答 1. サブシェルはパイプで受け取った標準入力をどう扱うか 標準入力の扱いについては、サブシェルであってもなくても同じです。以下のように、パイプのつなぎ先がサブシェルであってもなくても

    [bash]サブシェルがパイプで受け取った標準入力の扱いとcdコマンドの動作|TechRacho by BPS株式会社
  • シェルの展開順序に気をつけよう - Qiita

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

    シェルの展開順序に気をつけよう - Qiita