タグ

bashとshellに関するreika221のブックマーク (13)

  • shのwhileループでファイルを読み、中でsshを実行すると1回しかループしない

    shのwhileループでファイルを読み、中でsshを実行すると1回しかループしない 2011-03-18 シェル(sh)スクリプトネタ。 while 文で以下のように指定すると、行ごとにファイルを読み込むことができる。 #!/bin/sh \# ファイルを1行ずつ読み込んで表示 TESTFILE=./hoge.txt while read line do echo $line done < $TESTFILE

  • 初めてシェルスクリプトを書くときに知っておきたいこと - Unix的なアレ

    他の言語をを書き慣れてから、シェルスクリプトを書こうとするとしょうもない部分でハマったりすることがあります。「簡単な処理だからシェルスクリプトで書くか」と思っても無駄に時間がかかってしまっては仕方ないですよね。 今回は初めてシェルスクリプトを書くときに、ハマりそうな点について説明をしたいと思います。 実行権限をつける 単純にファイルを生成しても下記の用に実行しようとしても実行はできません。 # touch test # ./test sh: ./test: Permission denied # touch foo # ./foo sh: ./foo: Permission denied これはファイルに実行権限がついていないため、起きる現象です。 chmodコマンドを使って実行権限をつけてやりましょう。 # chmod +x test # ./test # chmod +x foo #

    初めてシェルスクリプトを書くときに知っておきたいこと - Unix的なアレ
  • 最近覚えたシェルスクリプトの小ネタ - カメニッキ

    シェルスクリプト神から教えていただいた。忘れないように書いとく (追記)聞いて、自分の記憶した内容をそのまま書いちゃったので、ちゃんとマニュアル通りか確認してなかったので反省 $ man bash 目次 xargsでfunctionを叩く 連想配列もどき 変数間接参照 なんでもかんでもawkで整形しない 文字列の末尾から数えて○文字目を△文字取り出す 番外編:やたら if [ ]; then を使わない ※Markdownで目次の書き方がわからんかった xargsでfunctionを叩く 下の例だと find xxxx | xargs cp xxxx ってかけば良さそうでイマイチだけど、もっと複雑な処理やらせたいときに。 前はこう書いてた #!/bin/bash for x in `find /var/www -name xxx` do cmd="cp -v /hoge/fuga/xxx

    最近覚えたシェルスクリプトの小ネタ - カメニッキ
  • Bash to the Fisher

    かれこれ長いこと仕事でターミナルを使ってるこもりですが、シェルでゴリゴリなんかするでもないし、多機能すぎて覚えるのが面倒くさいのも嫌なのでずっとBashを使っていました。カスタマイズすることもなく、ほぼデフォルトで。 でも、長いこと使っていたそのBashから、最近「Fish(friendly interactive shell)」というシェルに変えたんです。特に思い入れがあるわけでもなければ、そんなゴリゴリ使うわけじゃないから何でも良いのです、簡単であれば(笑)。 fish shell Friendly interactive shell - Wikiwand 初期設定いらずの楽さ 使い始める前に細かい設定とかはできればしたくない…。インストールしただけで簡単・便利に使えるのが理想。カスタマイズしたければすればいいのだけど、あいにくそこまでやる必要は自分にはないのでFishぐらいがちょうど

    Bash to the Fisher
  • nanapi勉強会 vol2 で、シェルオプションの話をしてきた #nanapi_study - 元RX-7乗りの適当な日々

    nanapiのCTOである@wadapさんに声をかけていただいて、LTをやってきました。 nanapi勉強会 vol2 - Shellの活用でこれだけ毎日が便利になる LTで使った資料を以下に公開しておきます。 bash(set)コマンドのオプション3選 from Yuuki Namikawa 資料だけだと伝わりづらいですが、僕がこのLTで話したかったことですが、実は編はおまけみたいなもので、現地でしゃべったとおりですが、スライド3枚目〜5枚目の部分です。 単純に、先日発売になったChef実践入門の宣伝wと、もう1つはシェルのHistoryで初対面のエンジニアと仲良くなる方法ですw スライド4枚目に書いてあるとおりですが、普段自分が使っているシェルで例えば以下のような感じでコマンドを実行すると、Historyから、コマンドの実行回数ランキングを出してくれます。 $ history | a

    nanapi勉強会 vol2 で、シェルオプションの話をしてきた #nanapi_study - 元RX-7乗りの適当な日々
  • 私が他人のシェルスクリプトから学んだこと | Yakst

    私はシェルスクリプトの大ファンで、他人のスクリプトから面白い方法を学ぶのが大好きだ。最近、SSHサーバの2要素認証を簡単にするためのauthy-sshスクリプトに出会った。このスクリプト群を見まわしていて、みんなと共有したいたくさんのクールなことを見つけた。 出力に色付けする 出力文字列を、成功した時は緑に、失敗した時は赤に、警告は黄色に色づけしたいと思うことはたくさんあるだろう。 NORMAL=$(tput sgr0) GREEN=$(tput setaf 2; tput bold) YELLOW=$(tput setaf 3) RED=$(tput setaf 1) function red() { echo -e "$RED$*$NORMAL" } function green() { echo -e "$GREEN$*$NORMAL" } function yellow() { e

    私が他人のシェルスクリプトから学んだこと | Yakst
  • シェルスクリプトのデバッグは typeset または declare を使うと良いかも - よんちゅBlog

    はじめに つい最近知った便利なデバッグ方法 (長年シェルスクリプトを書いているのに知らなかった。これが常識だったら恥ずかしい…) シェルスクリプトのデバッグでは echo で変数の中身を見るという原始的な方法をよく使うかと思います。 いわゆる プリントデバッグ というやつですね。 もう少し詳しいデバッグが必要な場合は、 set -x と set +x でデバッグしたい部分を囲むという方法もあります。 今回は プリントデバッグ で使う echo の代わりに typeset or declare を使うと良いというお話です。 プリントデバッグは typeset or declare を使おう typeset or declare は変数宣言などでよく使うコマンドですが、変数の中身を見るのにも使えます。 echo と比べて何が良いのかというと、変数の中身はもちろん変数名や変数の型も表示してくれ、

    シェルスクリプトのデバッグは typeset または declare を使うと良いかも - よんちゅBlog
  • bashによるシェルスクリプトの小技(2) - shibainu55日記

    前回(bashによるシェルスクリプトの小技(1))に引き続き、シェルによって自動的に値が設定される特殊な変数について紹介する。特殊な変数を参照することにより、様々な情報を取得することができる(ただし、これらの変数には自分で任意の値を設定することはできない)。 さて、まずは特殊変数を一覧でまとめてみる。お馴染みのものが多いが、最後の2つ(特に最後のPIPESTATUS)についてはきっと今まで知らなかった人もいるんじゃないだろうか。シェルの中でパイプすると途中のコマンドのリターンコード、拾えないとか思っていませんか?今回のポイントとしては、「1. PIPESTATUS変数について」と「2. 特殊変数 $@と$*の違いについて」の2点を主に説明する。 特殊変数一覧表 変数名 自動的に設定される値 $? 直前に実行されたコマンドの終了ステータスが設定される変数。正常終了の場合は「0」、異常終了の場

    bashによるシェルスクリプトの小技(2) - shibainu55日記
  • IDEA * IDEA

    ドットインストール代表のライフハックブログ

    IDEA * IDEA
  • シェルスクリプトでパイプを使った時の戻り値のとり方 - 256bitの殺人メニュー

    はい、おつカレー様です。 bashを使ったシェルスクリプトでパイプを使っても戻り値をちゃんと取りたいときの話です。 シェルスクリプトの戻り値 シェルスクリプトでの戻り値取るときに $? を使うことがあると思います。 $ ls / # こっちは正常 $ echo $? 0 $ ls /notfounddir # こっちはエラー $ echo $? 1コマンドのログを取りたいなと思ってteeとかつなげちゃうとteeの戻り値になっちゃって取れないですよね。 $ ls /notfounddir | tee test ls: /notfounddir: No such file or directory $ echo $? 0 # <-アレ? ${PIPESTATUS[@]} こういう場合は、${PIPESTATUS[@]}を使うことで取ることができます。 $ ls / | tee test.log

    シェルスクリプトでパイプを使った時の戻り値のとり方 - 256bitの殺人メニュー
  • 設定ファイル:~/.inputrc: UNIX/Linuxの部屋

    行入力支援ライブラリ readline の設定を行う。bash・gdb・bc・ftp など、行入力機能に readline を利用しているコマンドの CUI インタフェースについて、このファイルで設定を行うことができる。

  • bashを便利に使うためのいくつかのTIPS - mikedaの日記

    人のオペレーションを見てるとそれぞれクセがあっておもしろいですよね! というわけで自分がよく使うbashの便利機能をまとめてみました。 1つ前の作業ディレクトリに戻る cd -で戻れます。 [mikeda@test01 tmp]$ cd [mikeda@test01 ~]$ cd - [mikeda@test01 tmp]$pushd、popdを使えば2つ前でも3つ前でも戻れるのですが、めんどうなので基コレだけ使ってます。 コマンドラインを移動する この状態から Ctrl+aを入力するとプロンプトが先頭に移動します。 Ctrl+eを入力すると末尾に移動です。 Ctrl+wを入力すると直前のワードを削除できます。 Ctrl+cで入力をキャンセルして次の行に移ります。 自分がよく使うのはこの4つです。 ヒストリをうまく使う ヒストリ検索 Ctrl+rを入力するとヒストリ検索モードになります

  • bashの"&"と"&&" - 元RX-7乗りの適当な日々

    ちょっと前、職場の人に、「(以下の)このエントリが役立った、ありがとう!」とお礼をいただきました。(わざわざ、ありがとうございました。恐縮です。) cronで30秒毎など、秒単位で処理を実行したい場合 - 元RX-7乗りの適当な日々 で、今更ですが、気付けばそこそこの数のブクマがついていたので、コメントを見させていただくと「正確には30秒毎ではなく、コマンド実行時間+30秒になる。」といった記載がいくつかありました。 あれ?そうなん?なんか自信なくなってきた。 ちなみに↑の(cronの)書き方は以下のような感じ。 * * * * * command & sleep 30; command 実行時間も含める(実行後の終了ステータスを見て、次コマンドを実行する)のは"&&"だと思ってたのですが、何か間違っているのかしら。 1つ目の処理(コマンド実行)は"&"でバックグラウンドに移って、すぐにs

    bashの"&"と"&&" - 元RX-7乗りの適当な日々
  • 1