タグ

シェルスクリプトに関するteracy_junkのブックマーク (28)

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

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

    プログラマーの君! 勘違いするな! シェルスクリプトでは読みやすさのためにスペースを置くな!! という話 - Qiita
  • 初心者向け、「上手い」シェルスクリプトの書き方メモ - Qiita

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

    初心者向け、「上手い」シェルスクリプトの書き方メモ - Qiita
  • プログラマーの君! 騙されるな! シェルスクリプトはそう書いちゃ駄目だ!! という話 - Qiita

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

    プログラマーの君! 騙されるな! シェルスクリプトはそう書いちゃ駄目だ!! という話 - Qiita
  • 巨大なファイルをシェルスクリプトで読む時 - Qiita

    ちょっと2000万行くらいのcsvを読む機会があって、その時の小ネタ。 注釈追記) コメントでも書いたんですけど、コマンド置換で cat でファイル開いて for にわせるよりも、 1行ずつ処理するのは while read の方が一般的みたいです。 なんか注釈追記したら非常に実の無い記事になってしまったw 中身は こんな感じのが2000万行くらいずらずら続いてる感じ。 "item_id","title","description","price","url","image_url" "11111","たいとる","でぃすくりぷしょん","1000","http://example.com/item/11111","http://example.com/11111.jpg" "22222","たいとる2","でぃすくりぷしょん2","2000","http://example.com/i

    巨大なファイルをシェルスクリプトで読む時 - Qiita
  • 日付を取得する | UNIX & Linux コマンド・シェルスクリプト リファレンス

    → -d 'N days ago' オプションで N 日前の日付を取得できる。 Linux では拡張された GNU date コマンドが使用できるので、簡単に過去の日付を取得できる。 $ date 2007年 6月 2日 土曜日 23:05:20 JST #↑そのまま実行すると当日の日時が表示される。 $ date -d '1 days ago' 2007年 6月 1日 金曜日 23:05:31 JST #↑1日前を指定すると、現在日時から24時間前の日時が表示される。 「GNU date」が使用できない場合 → 一時的に環境変数 TZ を変更した上で date コマンドを実行する。 古い UNIX マシンなどでは、「GNU date」が使用できない場合が多い。そういった環境では、一時的にタイムゾーンを変更して date コマンドを実行することで、過去の日付を取得することができる。 $ e

    日付を取得する | UNIX & Linux コマンド・シェルスクリプト リファレンス
  • 変数を使用する | UNIX & Linux コマンド・シェルスクリプト リファレンス

    → 他のプログラミング言語と同様に = を使用する。 シェルスクリプトでも C言語などと同様に = を使用することで変数に値を設定することができる。ただし、C言語とは違い = の前後にスペースがあってはいけない。 また、変数名の大文字と小文字は区別されるため変数 VAR と変数 var は別物として扱われる。さらにシェル変数に「型」は存在しないので、文字列や数値を区別なく設定できる。 ポイントをまとめると以下のとおりとなる。 = を使う 値の設定時は変数名の先頭に $ を付けない ($ は参照時のみ) = の前後にスペースを入れない (前後にスペースがあるとエラー) 型は存在しない (declare コマンドや typeset コマンドで似たようなことができるが推奨はしない) 変数名の大文字・小文字は区別される (VAR と var は別物) 特に「2」は初心者が犯しがちなミスなので注意す

    変数を使用する | UNIX & Linux コマンド・シェルスクリプト リファレンス
  • シェルスクリプトでファイル存在確認 - fantasista_ikの日記

    bashの場合 「-e Liunx.txt」・・・Liunx.txtが存在しているか。 「-f Liunx.txt」・・・Liunx.txtが存在し、通常のファイルであるか。 「-r Liunx.txt」・・・Liunx.txtが存在し、読み取り可能であるか。 「-s Liunx.txt」・・・Liunx.txtのファイルサイズが0でなければ真。 - if [ ! -e Liunx.txt ]; then echo "Liunx.txtファイルがありません。" fi -

    シェルスクリプトでファイル存在確認 - fantasista_ikの日記
    teracy_junk
    teracy_junk 2016/11/16
    大体必要な時に忘れてるやつ
  • ShellScriptのダブルクォートとシングルクォートの違い - Qiita

    Shell Script Advent Calendar 2015 3日目の記事です。 この記事では自分が最近はまったシェルスクリプトの初歩の初歩、シングルクォート(')とダブルクォート(")の違いを紹介できればと思います。 C言語とかを書いてたら、シングルクォート(')とダブルクォート(")は違うのは当たり前なわけですが、最近JavaScriptPythonばかり書いてたので、当然(')と(")は同じものだと脳みそが思い込んでてはまってしまいました。 ShellScriptでのクォートの基の使い方 とある"Program Files"というセンスのない名前のフォルダがあったときに、

    ShellScriptのダブルクォートとシングルクォートの違い - Qiita
  • 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
  • シェルスクリプトの中で1行ずつ変数を分割する際には、cutとかawkとか余計なプロセスを起動せずsetを使って分割した方が効率的 - 双六工場日誌

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

    シェルスクリプトの中で1行ずつ変数を分割する際には、cutとかawkとか余計なプロセスを起動せずsetを使って分割した方が効率的 - 双六工場日誌
  • 意識の低い自動化

    意識を低く保ったまま、定型作業を自動化する話です。 ※どうも言葉足らずで誤解させてしまっているようなので補足を書きました。ご覧ください http://qiita.com/greenspa/items/fff535d2ae5da36e36fe

    意識の低い自動化
  • シェルスクリプトを書くときに気をつける9箇条 - Qiita

    最新の類似投稿としてシェルスクリプトのコーディングルール2014も併せてどうぞ。 2014/10/09追記 ぼくがシェルスクリプトを書くときに気にしていること、過去の失敗で書き留めたことを忘れないために。 1. グローバル変数は大文字 PATH や HOME など、環境変数が大文字なので、エクスポートする変数を大文字で書くという習慣は一般的であるような気がしますが、エクスポートする変数を抱えるシェルスクリプトを作成する機会が稀なので。 グローバル変数は大文字 ローカル変数は小文字 エクスポートする変数も大文字 関数内からグローバル変数にアクセスする場合がありますが、やはり区別していると、可読性が増すような気がするのでお勧めです。 2. awk を知る Unix 上にて文書処理をするときに、数多くのフィルタコマンド(grep、cut、tr、head、sort、uniq、sed、awk、wc、

    シェルスクリプトを書くときに気をつける9箇条 - Qiita
  • Windows PowerShell 入門(1)―基本操作編:CodeZine

    はじめに Windows PowerShell(以降、PowerShell)はシステム管理や自動化に役立つように設計された新しいコマンドラインシェルです。 しかし、ただのコマンドラインシェルではありません。対話型シェルによるオペレーションシェルスクリプトの実行  を行うことができます。 PowerShellは.NET Frameworkを基に設計されており、コマンドの実行およびスクリプトにおいてその恩恵を十分に受けることができます。これにより、かつてない強力なシェル環境が登場したと言っても過言ではないでしょう。 PowerShellの操作を習得し、システム管理・運用を効率的に進められるようにしていきましょう。対象読者システム管理者PowerShellに興味がある方 必要環境.NET Framework 2.0以降Windows PowerShell 対象OSWindows XP Servi

  • @IT:Linux起動の仕組みを理解しよう[rcスクリプト編]

    今回は、前回紹介し切れなかったrcスクリプトについて解説する。rcスクリプトも、理屈を理解してしまえば容易に管理できる。管理方法のついでに、rcスクリプトの書き方もマスターしてしまおう。 前回のLinux起動の仕組みを理解しよう[init/inittab編]では、カーネルがinitプロセスを起動して、さまざまな処理を行うことを説明しました。今回は、各種サービスの起動を行うrcスクリプトについて見ていきましょう。 rcスクリプトの管理の仕組み rcスクリプトは、Windowsのautoexec.batに相当すると考えればいいでしょう。もちろん、rcスクリプトとautoexec.batでは異なる点があります。rcスクリプトは、対応する作業ごとに1つずつ、複数のファイルで構成されています。また、ランレベルごとに実行するrcスクリプトを変えることができます。 rcスクリプトの実体は、/etc/in

    @IT:Linux起動の仕組みを理解しよう[rcスクリプト編]
  • シェルスクリプト

    引数は $1 ~ $9 が利用できる。この引数はシェルスクリプト全体の定位置パラメータとは無関係で、シェル関数に与えられたローカルな変数。 戻り値は return で指定可能。return を書かなかった場合には最後に実行したコマンドの戻り値を返す。

  • ftp tar cron で自動ネットワーク・バックアップ

    Landscape トップページ | < 前の日 2003-11-30 2003-12-01 次の日 2003-12-02 > Landscape - エンジニアのメモ 2003-12-01 ftp + tar + cron で自動ネットワーク・バックアップ 当サイト内を Google 検索できます * ftp + tar + cron で自動ネットワーク・バックアップこの記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Linux] [ftp] [バックアップ] ftp コマンドには、標準入力から読ませたデータに好きなファイル名を付けてアップロードする機能がある。これを利用してネットワークバックアップスクリプトを作成する。スクリプトを毎日 cron で回せば、リモートマシンに毎日バックアップを自動で ftp アップロードすることができる。 - ftp + tar

  • シェルのパラメータ展開でスクリプト自身のファイル名を取得する

    Landscape トップページ | < 前の日 2006-02-24 2006-02-27 次の日 2006-02-28 > Landscape - エンジニアのメモ 2006-02-27 シェルのパラメータ展開でスクリプト自身のファイル名を取得する 当サイト内を Google 検索できます * シェルのパラメータ展開でスクリプト自身のファイル名を取得するこの記事の直リンクURL: Permlink | この記事が属するカテゴリ: [bash] [シェルスクリプト] 2006-02-22 に書いた「シェルスクリプト自身のファイル名を取得できる特殊変数 $0」についてメールで指摘を頂いた。ありがとうございます。 私はスラッシュなどのパス指定文字列を除去するために basename コマンドを使っていたのだが、そうしなくても済む方法があるとのこと。 http://sonic64.com/20

  • 標準入力の値を引数として実行する

  • 用語集:シェルスクリプト: UNIX/Linuxの部屋

    sh が解釈できるシェルスクリプトのことを「sh スクリプト」(シェルスクリプトまたはエスエイチスクリプト)、csh が解釈できるシェルスクリプトのことを「csh スクリプト」(シーシェルスクリプト) と呼ぶことがある。

  • シェルスクリプト(bash) - Hirotake Itoh's memo by PukiWiki

    CUIの世界で暮らす場合、シェルの使いこなしで作業効率は桁違いに変わる。シェルは一種類だけではないが、シェルスクリプトの観点からはsh系とcsh系に分けられる。sh系であるbash(zshでもOK?)をメインに使ってみることにする。純粋な /bin/sh を使うと、declareが使えず、exprとなるのが面倒。 link * ステップ・バイ・ステップ・シェルスクリプト bashで始めるシェルスクリプト基礎の基礎 シェルスクリプトの基礎 画像整理における実例 * あえて全部別々に記述してみた。 jpegファイルで、大文字の拡張子を小文字にする(JPG -> jpg) * for filename in *.JPG do mv ${filename} ${filename%JPG}jpg done ダメ写真を削除したなどで、連番が歯抜けとなったjpegファイル群に番号を振りなおす * dec