タグ

Unixとshに関するakaneharaのブックマーク (14)

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

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

    シェルの展開順序に気をつけよう - Qiita
  • シェルスクリプト——こんなとき、かうする - Qiita

    POSIX シェルの小ネタ集。随時更新。 POSIX の範囲外の機能に依存するところには 【non-POSIX】 と書いておいた。 ファイル操作 空のファイルを作る touch でもいいがリダイレクトした方が速い。 >> filename # 既存ファイルは上書きしない (ファイルの更新日時も変へない) >| filename # 既存ファイルは空にする > filename # -C が有効なら既存ファイルがあるとエラーになる フィルタ ソートして重複行を消す sort | uniq でもいいが sort -u だと一コマンドで済む。 ソートせずに重複行を消す awk '!x[$0]++' 1 行番号を付加する awk '{print ++i,$0}' 【non-POSIX】 cat -n 一行目だけを消す tail -n +2 sed 1d 最後の行だけを消す head -n -1 s

    シェルスクリプト——こんなとき、かうする - Qiita
  • シェルスクリプトの罠を避ける三つの tips

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? シェルスクリプトは、Unix 系環境で仕事をするエンジニアなら誰もが一度は書くであろうにもかかわらず、書き方や特性を熟知している人が少ない言語です。この記事は、シェルスクリプトを書くときに罠を踏まないようにするために最低限あなたが気を付けるべき tips 集です。「たかがシェルスクリプト」とは思わないでください。生半可に書かれたシェルスクリプトはあなたの (チームの) 生産性をかえって低下させます。 Shebang に bash を明示しろ Bash でしか使えない機能のことを俗に Bashism と言います。Bashism はもちろん

    シェルスクリプトの罠を避ける三つの tips
  • 初心者向け、「上手い」シェルスクリプトの書き方メモ - Qiita

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

    初心者向け、「上手い」シェルスクリプトの書き方メモ - Qiita
  • シェルプログラミングの基礎知識 | Shinta's Site

    UNIX のコマンドインタプリタである Bourne shell を知っておかないといろいろ困るので基的なことをメモしておく。ここでは、コマンドをバッチ処理するための シェルスクリプトについて記述しています。 #!/bin/sh UNIXでスクリプトを記述する場合、一番初めの行は #!(shebang)ではじめます。さらに、シェルスクリプトであることを明確にするためにコマンドをフルパスで記述します。シェルスクリプトでは、#!/bin/sh となります。Bourne shell の場合、初めの行が : (コロン)のみでもよいが、現在あまりこの記述は使われていない。また、#! /bin/sh というように #! の後に半角スペースを入れても動作する UNIX システムもあるが、互換性を考えると半角スペースは入れないほうがよい。 コメント行と改行 # 以降コメントとなり、\ を利用して複数行を

  • USP友の会:SoftwareDesignシェルスクリプティング道場反省会会場

    どうも。ほかにやることがあるのに性懲りも無くここに書き書きしている開帳です。 昨日発売のSoftwareDesignの特集「シェルスクリプト道場」、 じわじわ反響が来ているのでコメント等、 ここにまとめたいと思います。随時更新します。 これは恥ずかしい 「使う必要は必ずあるわけではありません」 はいすいません。「使う必要があるわけではありません」ですね・・・ 「edを開く」 edって、開くものだろか??「edを立ち上げる」くらいじゃないだろか。 オフィススィート dis について SD2月号を読み始めたけど、シェルスクリプトの記事で盛大にオフィススイートがdisられてて笑った。いいぞもっとやれ。 — いくや (AWASHIRO Ikuya)さん (@ikunya) 1月 18, 2013 ・・・もっとやります。 といっても、この手のソフトがなくなれとは思っていません。 私も愛用しています。

  • 時代はシェルスクリプト - Qiita

    らしい。 さあ、始まりました Shell Script Advent Calendar 2015 1 日目。思ったよりも AC 全体として盛り上がりなさを感じているのは自分だけでしょうか。 タイトルからして恐れ多いですが、1 日目だしいいでしょ感で書いています。 なんで今更 「今更そんな枯れツール使わんしょw」勢が一定数いることも知っていてのこのタイトルです。 意外にもシェルスクリプトってのは根強く使われ続けていて、以下に面白いグラフがあります。 via The RedMonk Programming Language Rankings: June 2015 これは RedMonk 社が、2015年1月版のプログラミング言語ランキングを発表したもので、GitHub での各言語の使用率と、Stack Overflow での発言量を元に作られた相関グラフです。 Shell が意外にも人気ですね

    時代はシェルスクリプト - Qiita
  • そこまで遅くないShellスクリプトの書き方

    この記事は Shell Script Advent Calendar 2015 10日目の記事です。 9日目の記事はryoana14さんの麗しきawkの世界でした。 Shellスクリプトがいつまで経ってもまともに書けないMasWagです。書けないなりにも人の書いた(昔の自分が書いたものも多く含む)スクリプトを見てこれは遅いなと思うことはたまにあります。書き方のコツというか考え方が幾つかあると思うのでまとめてみようと思います。基的な話なので多分Shellスクリプトをあんまり普段書かない人向けだと思います。ShellはBashを前提として書きます。zshだともっと色々できるのかもしれないです。細かい説明は(そんなに細かくなくても?)省いているので適宜manやinfoを参照すると良いでしょう。 forkを減らす Shellでコマンドを使うということは多くの場合プロセスをforkしていることにな

  • bash vs. dash

    bash vs. dash PLUG West 2008-10-20 PLUG North 2008-11-10 JP Vossen bashcookbook.com STOLEN!!! ● Note: I stole a lot of this material from Carl Albing's "bash vs. dash" presentation at Ubuntu Line 2007! ● Original at: http://tinyurl.com/3mv8gy bash vs. dash ● Huh? ● bash != Bourne != dash != ... http://en.wikipedia.org/wiki/Comparison_of_computer_shells http://en.wikipedia.org/wiki/Bash http://en.w

  • Bashのよくある間違い | Yakst

    原文は2015年8月22日時点のものを利用しており、それ以降に追記、更新されている可能性があります。 翻訳は原作者の許可を得て公開されています。 Thanks for GreyCat! このページはBashプログラマーが陥りがちなよくあるエラーについてまとめました。以下の例は全てなんらかの欠陥があります。 クオートをいつも使い、どんな理由があっても単語分割を使わなければ、多くの落とし穴からあなた自身を守ることができます!単語分割はクオート表現をしない場合にはデフォルトでオンになっている、Bourneシェルから継承された壊れたレガシーな設計ミスです。落とし穴の大半はクオートされていない展開になんらか関連し、単語分割しその結果をグロブします。 1. for i in $(ls *.mp3) BASHプログラマーたちがループを書く際にもっとも犯しがちなよくあるミスは以下のような感じです。: f

    Bashのよくある間違い | Yakst
  • the-art-of-command-line/README-ja.md at master · jlevy/the-art-of-command-line

    対象 : このガイドは、初心者向けでも経験者向きでもある。幅広く(書いてあることは全て重要)、かつ明確で(多くのケースに対して具体的な例を付ける)、そして簡潔(他の場所で見つけられるような重要でないことや脱線したことは省く)であることをゴールにしている。各項目は、多くの場面において必須であるか、他の方法に比べて劇的に時間を節約してくれるだろう。 OS X用のものを除き、Linux向けの内容となっており、その多くは各種LinuxおよびMacOS(あるいはCygwin)でも使えるだろう。 インタラクティブなBashを使うことを想定しているが、多くの項目は他のシェルやBashのスクリプトでも使えるだろう。 (このリポジトリへ)組み込むメリットがあるのであれば、標準Unixコマンドやパッケージインストールコマンドも含める。 注意 : 1ページ内に収めるために、内容には暗黙的に書かれていることがある

    the-art-of-command-line/README-ja.md at master · jlevy/the-art-of-command-line
  • explainshell.com - match command-line arguments to their help text

    write down a command-line to see the help text that matches each argument

  • Linux上でシェルが実行される仕組みを,体系的に理解しよう (bash 中級者への道) - 主に言語とシステム開発に関して

    バッチのまとめTOPへ bash 初級者は,簡単なコマンドが並んだだけの小さなスクリプトを書くことができる。 しかしシェルの動作原理をよく理解しておらず, 一歩進んだことをやろうとするとつまずく。 シェルスクリプトの中級者になるためには, Linux上でシェルが動作する仕組みを体系的に理解しておく必要がある。 (1) シェルとコマンドについて (1−1) シェルとは,OSに命令を出すために,OSを包んでいる外膜である。 (1−2) Linuxログイン時には,そのユーザ用のログインシェルが起動する。 (1−3) ユーザが打ち込んだコマンドは,実行前に,bashによって整形される。 (1−4) コマンドの先頭の文字列は,実行可能ファイルか,またはbashの組み込みコマンドである。 (2) コマンド間の連携について (2−1) コマンド呼び出しとは,サブプロセスの生成である。 (2−2) 親プロ

    Linux上でシェルが実行される仕組みを,体系的に理解しよう (bash 中級者への道) - 主に言語とシステム開発に関して
  • そのシェルスクリプトもうちょっとシンプルに書けそう Tips集(Golf/シェル芸ではない) - Qiita

    Shell Script Advent Calendar 2015 4日目 の投稿です。 以前から自分用にメモしていたものを文字起こししました。 はじめに 仕事でシェルを使い始めて3年くらい経ちました。 途中、pythonruby でスクリプト作ったり、ちょっと zsh に浮気したりしましたが、なんだかんだで今も Bash を使うことが多いです。 この3年間、スーパーシェル芸人(@ebanさん)にご教授頂いたり、Golfしたり(@ebanの影響)、シェル芸勉強会に参加したり(@ebanの影響)してきました。 そんな3年間のまとめとして、シェルスクリプト初めましてだった3年前の私に向けたTips集を書いてみました。 趣旨 各項目ごとに、まず初心者(過去の私がやってた)あるある実装を例示して、その次に、より良さげな実装を例示する構成としています。 実行環境 OS Mac OS X Yos

    そのシェルスクリプトもうちょっとシンプルに書けそう Tips集(Golf/シェル芸ではない) - Qiita
  • 1