タグ

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

  • 【 type 】コマンド――シェルがどのコマンドを起動しているかを知る

    LinuxコマンドTips一覧 連載では、Linuxの基的なコマンドについて、基的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、どこにあるコマンドが実行されているかを知るための「type」コマンドです。 typeコマンドとは? コマンドラインで「cd」コマンドや「ls」コマンドを実行すると、シェルは最初にエイリアスを、続いてシェルのビルトインコマンド(組み込みコマンド)に該当する名前のコマンドを探し、それがない場合は環境変数PATHにセットされているパス(コマンドサーチパス)を先頭から順に探し、見つけたものを実行します。 「type コマンド名」を実行することで、シェルがどのコマンドを起動しているかを確認できます。type自身はシェルのビルトインコマンドで、sh、bashおよびzshで使用できます。 tcshの場合は、「where」コマンドを同じ

    【 type 】コマンド――シェルがどのコマンドを起動しているかを知る
  • プログラマーの君! 勘違いするな! シェルスクリプトでは読みやすさのためにスペースを置くな!! という話 - Qiita

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

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

    東京アメッシュ便利ですよね。 1日の天気予報が知りたいのではなく、「今」降っているのか、とか5分後に雨が降るのかどうか知りたいって時は天気予報を見るよりもアメッシュで雨雲の動きを自分で予測するほうが確実です。 あとゲリラ豪雨がやってくる季節になると、天気予報が役にたたなくなります。 そんなときアメッシュを見ながら外に出るタイミングを見計らったりしていますが、わざわざブラウザを起動するのが面倒なのでつくりました。 ターミナル上に雨雲を表示するシェルスクリプトame.shです! (これが言いたかっただけです…) 動作環境はSixel対応のImageMagickとmlterm、bashかzshで動作するはずです。 コード: https://github.com/hamano/ame.sh 実行: % curl -s https://raw.githubusercontent.com/hamano

    ターミナルに雨雲を表示する - cuspy diary
  • "shove" というシェルスクリプト用のテストツールを作った - weblog of key_amb

    CONTENTS: "shove" とは Motivation こんなツールにしたい 使い方について 中で何をやっているのか おわりに "shove" とは こちらです。 github.com 動作イメージとしては README.md にも貼っているスクリーンショットがわかりやすいと思うので、こちらにも貼ります。 成功時: 失敗時: 上のようにテストスクリプトを引数に与えて shove コマンドを実行すると、テストを実行して結果を出力してくれます。 Perl Monger のみなさんは「proveっぽい」と思っていただけたでしょうか。 そうです。名前の "shove" は "shell" + "prove" を縮めたものです。 bash だけでなく、ksh, dash, zsh など POSIX を満たしているシェルに対応できるように作りました。 $SHELL 変数の値と異なるシェルでテス

    "shove" というシェルスクリプト用のテストツールを作った - weblog of key_amb
  • bash-hackers.org

  • Shell Style Guide

  • シェルの変数展開 - Qiita

    こちらも blog からの転載。 シェルスクリプトを作成する際にシェル変数に値を代入したり参照したりする事は頻繁に発生するが、 シェル変数の展開にも便利な使い方がある。 basename (1) や dirname (1) と同様な動作がシェルの組込みとして利用できるので資源の節約にもつながり、 上手に利用すると可読性の高いスクリプトが作成できる。 機能一覧 記述 機能

    シェルの変数展開 - Qiita
  • シェルスクリプト Tips | UNIX & Linux コマンド・シェルスクリプト リファレンス

    シェルスクリプト Tips コーディング・スタイル ここに書かれている内容は、あくまで筆者の好みでありほぼ完全に主観ではあるが、経験的に行き着いたスタイルでもあるので推奨します。 スクリプトのヘッダを作成する 最近はあまり使用されることもないのかもしれないが @(#) の記述と、スクリプトの使用方法、および概要をファイルの前方にコメントとして記述しておくようにする。 ※ @(#) は what コマンドで参照する情報を記述するための記号です。詳細は「whatコマンドについて」を参照。 #!/bin/bash # # @(#) hoge.sh ver.1.0.0 2008.04.24 # # Usage: # hoge.sh param1 param2 # param1 - パラメータ1です. # param2 - パラメータ2です. # # Description: # hoge.shスク

    シェルスクリプト Tips | UNIX & Linux コマンド・シェルスクリプト リファレンス
  • シェルスクリプトのコーディングスタイル・コーディング規約について考えてみる - 双六工場日誌

    シェルスクリプトのコーディングスタイルについて調べ物をしたので、その情報源の一覧と今の感想のメモを書いてみます。 最もよく参照されているのではないかと思われるシェルスクリプトのコーディングスタイル。 UNIX & Linux コマンド・シェルスクリプト リファレンス > シェルスクリプト Tips 【参考情報】このページにリンクを張って、項目をサマリしているページ。 上記のページの最初には「ここに書かれている内容は、あくまで筆者の好みでありほぼ完全に主観」と書かれていますが、この内容は規約としてどこでも採用すべき内容だと思います。また定数には大文字の変数名を使うというガイドラインですが、自分で書く場合、環境変数も大文字変数に加えます。 好みがあるとすれば、インデントの幅ぐらいでしょうか? ここではインデント幅は半角スペース2つが推奨されていますが、個人的には半角スペース4の方が好みです。

    シェルスクリプトのコーディングスタイル・コーディング規約について考えてみる - 双六工場日誌
  • bashコーディング規約 - Qiita

    モチベーション 一定の品質を保ちたい 書くたびに書き方が変わるのは好ましくない シェバング(shebang)は#!/bin/shではなく#!/bin/bashにする シバン、シェバンとも言われる #!/bin/shは実行環境によって様々なシェルにシンボリックリンクになっているので、bashなら#!/bin/bashと明示しよう インデントは半角スペース2つ 1行が横に長くなり折り返されないように 処理内容および使い方をスクリプト内に記載する(usage()) 何をしてくれるスクリプトか、どのように使うのかusage()関数を用意しよう ヘッダコメントでもいいけど function usage() { cat <<_EOT_ Usage: $0 [-a] [-b] [-f filename] arg1 ... Description: hogehogehoge Options: -a aaa

    bashコーディング規約 - Qiita
  • シェルスクリプトコーディングルール - Qiita

    インフラエンジニアたるもの、シェルスクリプトは頻繁に書くと思います。 自由に書きやすい分、メンテナンスがしづらい面も多い言語でもあるので、自分ルールを書き留めておこうと思います。 シェルの宣言(1行目)には気をつける 1行目にはみなさん何を宣言1しますか? Linux使いならbashかzshが多いと思う。 UNIX使いなら生粋のsh(bourne shell)が多いと思う(独断)。 ただ、1行目の宣言においては、/bin/sh は環境によってbashだったり他だったりにシンボリックリンクが張られていることが多いので、どんな記述をするか(言語依存の記法)に合わせた宣言をするべき。 特にif文などの条件分岐、比較演算は記法依存が大きいので、そのあたりで使い分けるのがポイント。 自分ルールだと、 Linuxだと #!/bin/bash UNIX(HP-UX, Solarisなど)だと #!/bi

    シェルスクリプトコーディングルール - Qiita
  • なんでも自動化するエンジニアが残していったライフハック・スクリプト

    元々はロシア語の掲示板に出ていた、職場での小さなことをなんでも自動化していたハッカーの話が英語に翻訳され、Hacker News等で話題になっています。 xxx(ハンドル名): オーケー、ビルド担当エンジニア転職で辞め […] 元々はロシア語の掲示板に出ていた、職場での小さなことをなんでも自動化していたハッカーの話が英語に翻訳され、Hacker News等で話題になっています。 xxx(ハンドル名): オーケー、ビルド担当エンジニア転職で辞めちまった。当にターミナルに住んでるようなやつだった。わかるだろ、Vimが大好きで、.dotファイルで図を描いて、Markdownでwikiに投稿するようなタイプさ… もし何か、そう何でも、90秒以上掛かるようなことがあったら、スクリプトで自動化しちゃうんだ。 xxx: そういうわけで我々はここにいて、彼の、そう、「遺産」を見てるところだ。 xxx

    なんでも自動化するエンジニアが残していったライフハック・スクリプト
  • Linuxの使い方 - シェルスクリプトの作り方(5/8)

    6. シェルスクリプトの作り方(5/8) 6.7 制御演算(1/2) ここでの制御演算とは条件判定や繰り返し制御を意味します。条件判定は指定した条件の成立(真)や、不成立(偽)により処理を振り分けます。また、繰り返しは指定した条件が成立(真)している間や、不成立(偽)の間、特定の処理を繰り返し実行します。 ここで説明する内容は次のものです。 比較演算子 ifコマンド caseコマンド forコマンド whileとuntilコマンド 6.7.1 比較演算子 条件の記述形式は数値の比較の場合は(( 式 ))で、文字列の比較とファイル演算子の場合は[[ 式 ]]になり型式が異ります。また、(( 式 ))の場合は「式」の前後に空白があってもなくても構いませんが、[[ 式 ]]の場合は「式」の前後に空白が1個以上必要ですので注意してください。 「式」には変数や下表に示す比較演算子を使って、条件判定の

  • 逆引きシェルスクリプト/exprのサンプル - Linuxと過ごす

    パイプ(|)を利用したサンプル † パイプを利用する場合は以下のような構文になります。 パイプを文字としてシェルに認識されるようにパイプ(|)の前にバックスラッシュ(\)をつけています。 expr 左項 \| 右項 パイプの動作は左項が空または0の場合、右項が表示されます。 左項が0以外または、空ではない場合は左項が表示されます。 左項にHelloがあるのでHelloが表示されます。 $ i1=Hello $ i2=World $ expr $i1 \| $i2 Hello 左項が空で右項がWorldなのでWorldが表示されます。 左項が空なのでダブルクォーテーションで囲まないと文法エラーになります。 $ i1='' $ i2='World' $ expr "$i1" \| "$i2" World 数値の場合の実行例 左項が0なので右項が表示されます。 $ i1=0 $ i2=100 $

  • 変数内のスラッシュをエスケープ - hkobayashの日記

    参考:http://oshiete.goo.ne.jp/qa/4356597.html シェルスクリプトで変数にファイルのパスを保存しているとき、その変数を使ってsedやらawkで置換したい場合にスラッシュをエスケープしないとエラーになるのでその対処方法。 FILE=/file/to/path ESCAPE=`echo $FILE | sed "s/\//\\\\\\\\\//g"` sed "s/filepath/$ESCAPE" hoge\が9個並んでて意味わからん。 これでできることはわかったが、なんでこれでいいのかが全然わからん。。。

    変数内のスラッシュをエスケープ - hkobayashの日記
  • 【FreeBSD】シェルスクリプトでパス文字列からファイル名/ディレクトリ名/拡張子を抽出する

    対象プラットフォーム: FreeBSD 8.x (下記手順を2014/05/01にFreeBSD 8.4-RELEASEで確認済み) はじめに シェルスクリプトを書いていると、ファイル名を含むパス文字列から、ファイル名や、ディレクトリ名、拡張子の部分のみを抽出したいケースによく遭遇します。 このページでは、これらの文字列の抽出方法について説明します。 早速サンプルのシェルスクリプト ファイル名を含むパス文字列から、ファイル名や、ディレクトリ名、拡張子の部分のみを抽出するのは、かなり容易です。 早速サンプルをご紹介します。 #!/bin/sh test_path="/usr/local/etc/apache/httpd.conf" string_filename=${test_path##*/} string_filename_without_extension=${string_filen

  • tree コマンドが無い環境で tree コマンドを実現 - Qiita

    tree コマンドは便利 Linux における tree コマンドは便利ですね。しかし標準コマンドではないため初めて操作するサーバや手軽に tree をインストール出来ない環境だとディレクトリ構造を奇麗にツリー上に表示することが出来ません。 その場合は find や sed を使って tree コマンドを代替しましょう。 find と sed で代替 pwd;find . | sort | sed '1d;s/^\.//;s/\/\([^/]*\)$/|--\1/;s/\/[^/|]*/| /g'

    tree コマンドが無い環境で tree コマンドを実現 - Qiita
  • シェルスクリプト入門 書き方のまとめ | Memo on the Web

    シェルスクリプト入門として, 基的な書き方をまとめました. 長いですが, 1ページにまとめてみました. 良かったら目次も参考にしてご覧になって下さい. 目次 シェルスクリプトとは 作り方, 実行の仕方 コメント ユーザーからのキーボード入力を受け付ける 変数 通常の変数 特別な変数 演算子 数値計算演算子 比較演算子 コマンドを繋げる演算子 条件文に使える比較演算子 条件文 制御構文(分岐) if文 case文 制御構文(ループ) for文 while文 until文 select文 文字列処理 文字列置換 削除 複数行のテキストの出力(ヒアドキュメント) 関数 シェルスクリプトとは シェルスクリプトとは, シェルの動作をまとめて記述したスクリプトのことです. 決められた文法にしたがって処理を記述することによって, シェルでの処理をまとめて行ったり, 作業を自動化できたりします(例 複数

  • 【試さないで】危険シェル芸【違法(脱法)シェル芸を勧められたり、 身近な人が持っていたりしませんか?】

    脱法シェル芸でマシンがトリップする案件が増加したため、名称を危険シェル芸に変更したら、変更後に危険シェル芸を試してさらにトぶ人間が増加。 それで・・・あのー宣伝で申し訳ないんですが・・・「シェルスクリプト高速開発手法入門」も・・・お願いします・・・ http://www.amazon.co.jp/dp/B00LBPGFJS

    【試さないで】危険シェル芸【違法(脱法)シェル芸を勧められたり、 身近な人が持っていたりしませんか?】
  • シェルスクリプトを公開するとき, コマンド前にバックスラッシュをつけるべき - Shohei Yoshida's Diary

    oh-my-zsh の環境で、peco-select-history が動かない - Qiita 追記 2014年 7月 7日 シェルスクリプトと書いてしまい漠然すぎましたが, ここで述べている ことが問題になるのは, .bashrc, .zshrcに関数, alias設定等がコピー される場合や, sourceコマンドでファイルを読み込む場合です. non-interactiveに実行されるシェルスクリプトについては特に 問題ないです. 問題点 そうしないと, 公開されたコマンドを自分の環境に導入した場合, aliasにより正しく動かなく場合があるためです. aliasをつけがちな コマンド(ls, grep等)がシェルスクリプトに含まれていると 特に問題が起こる可能性が高くなります. 例 pecoを使って カレントディレクトリのファイルをページャで開く 例を考えてみましょう. 単純に考

    シェルスクリプトを公開するとき, コマンド前にバックスラッシュをつけるべき - Shohei Yoshida's Diary