タグ

shellに関するnanakosoのブックマーク (12)

  • シェルスクリプトでlsをパイプでつなぐのはなぜ悪いのか ~ ShellCheck: SC2010, SC2011, SC2012 とファイル名改行問題 - Qiita

    シェルスクリプトでlsをパイプでつなぐのはなぜ悪いのか ~ ShellCheck: SC2010, SC2011, SC2012 とファイル名改行問題ShellScriptUNIXshellシェル芸POSIX はじめに シェルスクリプトで ls コマンドの出力結果(ファイル名一覧)をパイプで他のコマンドに渡して処理するのは推奨されません。ls コマンドを使ったコードを ShellCheck で検査するとおそらく問題があると警告が表示されるでしょう。ls を使うなという指摘自体には賛成なのですが SC2010、SC2011、SC2012 に書いてある理由については正しい説明がされていないと思っています。この記事ではなぜ ls の出力結果を他のコマンドにパイプで渡すのが悪いのか、ls を使わずに実現するにはどうしたら良いのかを解説したいと思います。一つ補足をしておくと、この問題は CLI コマ

    シェルスクリプトでlsをパイプでつなぐのはなぜ悪いのか ~ ShellCheck: SC2010, SC2011, SC2012 とファイル名改行問題 - Qiita
  • 名著「入門UNIXシェルプログラミング」の超詳細なレビューをしてみた(古い内容の訂正) - Qiita

    はじめに そりゃまあ 30 年も経てば古くなりますよ。「入門UNIXシェルプログラミング」は今もシェルスクリプトに関するオススメのとして名前が挙がる名著です。しかしこのは古いです。POSIX でシェルが標準化される以前ので、内容から判断するとおそらく 1990 年ぐらいの常識に基づいて書かれています。 古いから参考にならないと言うつもりはありません。しかしどれだけ優れたでも時間の流れには勝てません。良書であると思っているからこそ、古くなってしまった内容は訂正する必要があると考えています。なおシェルスクリプトに関する古いはこれだけではありません。オライリーから出版されているも古いばかりです。いつ頃に(原書が)書かれたなのかを確認した方が良いでしょう。 ということでレビューというていで、古くなってしまった内容の訂正を行いたいと思います。新しく「入門UNIXシェルプログラミング

    名著「入門UNIXシェルプログラミング」の超詳細なレビューをしてみた(古い内容の訂正) - Qiita
  • シェルスクリプトの [ は /bin/[ と言ったり [ "x$var" = "xval" ] と書く人はオジサン - Qiita

    # Ubuntu 20.04 の bash での実行結果 # シェルから [ が何として見えているか $ type [ [ is a shell builtin # PATH から見つかる全ての [ コマンドを出力する # 補足 zsh では which がシェルビルトインコマンドで、シェルビルトイン版の [ も出力される $ which -a [ /usr/bin/[ /bin/[ $ type [[ [[ is a shell keyword # zsh では [[ をパターンとして認識してしまうのでダブルクォートが必要 $ type "[[" [[ is a reserved word ちなみに [ の外部コマンド版が /usr/bin/ と /bin/ の両方にあるのは Ubuntu 20.04 では /bin が /usr/bin へのシンボリックリンクになっているからです。Ub

    シェルスクリプトの [ は /bin/[ と言ったり [ "x$var" = "xval" ] と書く人はオジサン - Qiita
  • シェルスクリプトを書くときにいつもやるやつを調べた

    bash のシェルスクリプトを書くときに、いつも脳死で以下をやっている。(同僚が整備してくれたものをコピペしている) エディタなり CI で shellcheck をまわす set -euxo pipefail と冒頭に書く こんな感じ #!/bin/bash set -euxo pipefail いつまでもコピペではさすがにアレなので、意味を調べたメモ。 shellcheck koalaman/shellcheck: ShellCheck, a static analysis tool for shell scripts イケてない書き方に警告を出してくれる それぞれの警告にはエラーコード割り振られていてとても便利 エラーコードごとに正誤例、解説が書かれているのでわかりやすい SC1000 の例 CI もそうだし、エディタのプラグインも充実 しているのでとりあえず入れておくと良い set

    シェルスクリプトを書くときにいつもやるやつを調べた
  • 雰囲気でシェルを使っている人のためのシェル入門 | κ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
  • プログラマーの君! 騙されるな! シェルスクリプトはそう書いちゃ駄目だ!! という話 - Qiita

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

    プログラマーの君! 騙されるな! シェルスクリプトはそう書いちゃ駄目だ!! という話 - Qiita
  • パイプとフィルタ ~ソフトウェア工学における有用なアーキテクチャ~ | POSTD

    パイプライン は、最近のソフトウェアエンジニアリングにおいて、非常に便利な(そして驚くほど活用されていない)アーキテクチャパターンです。ソフトウェアでデータの流れを制御するためにパイプとフィルタを用いる考え方は、最初の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

    パイプとフィルタ ~ソフトウェア工学における有用なアーキテクチャ~ | POSTD
  • Powershellで[]付ファイル名を変更する方法 - OKWAVE

    Powershellでzip圧縮が出来ない Powershellでzip圧縮しようとしているのですが、 ・Powershell ISEで実行すると正常に圧縮 ・コマンドプロンプトで実行すると、「圧縮(zip形式)フォルダーエラー」が発生し、圧縮できない という現象が発生しています。コマンドプロンプトで実行できるようにしたいのですが、原因がわからないので、御教示をお願いします。 ・環境 Windows XP SP3 Powershell 2.0 ・Powershellソース # 引数チェック # 引数の数が2以外の時は異常終了 if ($args.Length -ne 2 ) { write-host "引数エラー" exit 2; } # 圧縮zipファイル名 $ZipFilePath = $Args[0] # 圧縮対象ファイル名 $TargetItems = $Args[1] # 圧縮先

    Powershellで[]付ファイル名を変更する方法 - OKWAVE
  • しぇるすくりぷったー。

    しぇるすくりぷったーとは しぇるすくりぷったー(shellscriptter)はコマンドラインで動作する twitter クライアントです。実体は /bin/bash のコマンド群で動作するシェルスクリプトとして実装を目指しており、OAuth 認証と xAuth 認証に対応するのが特徴です(というよりそのためだけに作れています)。 そのまま ./ で実行しても良いですし、cron や launchctl などを利用してサーバステータスをアナウンスするボットなどシェルスクリプトの及ぶ範囲内で扱うことができます。 簡単な使い方 1.まずはダウンロードして準備。 ダウンロードした .zip を解凍すると Shellscriptter というフォルダができます。これを任意の場所に配置します。アクセス権は 700 にしておくと良いと思います。 2.認証を実行。 Shellscriptter_

  • cmd.exe のコマンドラインの仕様を解析してみた - 永遠に未完成

    cmd.exe の引数の扱いがあまりにもカオスだったのでちょっと頑張って調べてみた。 来ならここは公式の資料に当たるのが正しいアプローチだと思うけど、どうしても公式の資料が見つからなかったので、色々試して推測してみることに。 断片的な資料は見付けたけど、完全じゃない。一応URL貼っておく。Windows Server 2003 のヘルプだけど、恐らくそんなに変わらないと思う。 コマンド シェルの概要 コマンド リダイレクト演算子を使用する なので、以下で述べる内容は間違いを含む可能性があります。というか正確さは一切保証されないのであしからず。 検証方法 以下のような引数をただ表示するだけの簡単な C のプログラムを用意した。仮に args.exe とでもしておく。 #include <stdio.h> int main(int argc, char const* argv[]) { in

    cmd.exe のコマンドラインの仕様を解析してみた - 永遠に未完成
  • ウノウラボ Unoh Labs: シェルの仕組み(前編)

    尾藤正人(a.k.a BTO)です 社内勉強会でシェルの仕組みというのをやってみましたので、資料を公開します。 シェルはUNIXを使う上で、必ず使用される非常に身近なツールです。 毎日使用しているツールにも関わらず、具体的にどのような動作をしているのか知らない方も多いのではないのでしょうか。 シェルの使い方に関する情報はたくさんありますが、シェルの実装についての情報はほとんどないなと思ってシェルを題材に取り上げました。 シェルにはUNIXプログラミングのエッセンスがぎっしりつまっています。 シェルの内部の仕組みが分かるようになると、UNIXプログラミングが分かるようになると言っても過言ではないのかもしれません。 シェルの仕組み(前編) - Upload a Document to Scribd 社内勉強会中にustreamで動画を流していたのですが、動画を保存するのを忘れてしまいました。

  • 次世代Windowsシェル「Windows PowerShell」を試す(前編) ― @IT

    稿は2006年4月12日に公開された「次世代WindowsシェルMSH(コード名:Monad)を試す(前編)」の改訂版です。Windows PowerShell RC1版のリリースに合わせて、Monadシェルの正式名称は「Windows PowerShell」となりました。MSHおよびMonadという名称はもはや使用されません。 Monadベータ版からの変更点の詳細については稿冒頭で言及しているWindows PowerShell体のファイル「PowerShell_i386.zip」に含まれる「Windows PowerShell RC1 release notes.htm」に記載されています。 Windowsのシェルといえばコマンド・プロンプト(cmd.exe)であるが、その機能はUNIXなどのシェルと比較するとまったく貧弱なものである。WindowsではMMC(Microsoft

    次世代Windowsシェル「Windows PowerShell」を試す(前編) ― @IT
    nanakoso
    nanakoso 2006/07/20
    プロバイダが簡単に書けるなら面白いかも
  • 1