タグ

shellに関するmasa_matyaのブックマーク (22)

  • chmodやchownのreferenceオプションを知った時は目から鱗だった話

    人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 元々ホスティング会社で働いていたので、その特性上ownerやpermissionを色々と弄る事が多く、数年前の社会人時代にchmodやchownをもっと楽に使えないかなぁと調べた時に目から鱗だったのがchmodやchownのreferenceオプションでした。 今回は単にreferenceオプション楽ですよね、という記事なのでご存知の方は退屈な記事だと思いますが、まわりに聞いてみた所意外と知られていなかったりしたので、ブログエントリにしておこうと思います。 referenceオプションを使うと、任意のファイルを指定することで、変更対象のownerやpermissionを指定したファイルと同じ設定にすることができます。 例えば、/bin/pin

    chmodやchownのreferenceオプションを知った時は目から鱗だった話
    masa_matya
    masa_matya 2014/06/27
    知らなんだ
  • シェルスクリプトで乱数を扱う - hyconの日記

    シェル組込変数 RANDOM bashやzshなど一部のシェルでは特殊な変数 RANDOM があり、参照する毎に範囲の小さい整数を得ることが出来ます。 $ echo $RANDOM 30940 $ echo $((RANDOM % 100)) 22 jot(1) jot(1)は連番や乱数を出力するプログラムです。出力回数や範囲を指定出来るのでなかなか使い出はあります。deb系では athena-jot パッケージをインストールします。 $ jot -r 1 10 99 72 $ jot -r 10 1000 9999 8881 2834 3537 5889 7430 9962 4905 9548 3575 9762 awk awkの関数 rand() で0–1の範囲の実数の乱数を扱えます。srand() で乱数の初期化することを忘れずに。 $ awk 'BEGIN{srand();prin

    シェルスクリプトで乱数を扱う - hyconの日記
  • シェルスクリプトでパイプを使った時の戻り値のとり方 - 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の殺人メニュー
    masa_matya
    masa_matya 2013/01/09
    pipeの戻り値は${PIPESTATUS[@]}で取る
  • シェルスクリプトを書く際に気を付けていること8箇条 - カイワレの大冒険 Third

    エンジニアという職業柄かシェルスクリプトを書くことはちょくちょくあるのですが、自分なりに気を付けていることを備忘録&自分への戒めも含めて、簡単に書いてみたいと思います。 変数は大文字 シェルスクリプト書いていれば変数の出番は至るところであるでしょう。その際、可読性を増すように、変数は大文字を使っています。 RET=`cmd1`みたいに。好みの問題もあるでしょうが、分かりやすいので。 クオテーションは選ぶ クオテーションにはシングルだったり、ダブルだったり色々ありますが、使い分けておいたほうがよいでしょう。 変数の展開がないようであれば、シングルクオーテーションのほうがスマートでしょうし、展開があるのならダブルクオーテーションを使えばと。 ダブルクオーテーションを使うのにも意味があって、変数は「$RET」のようにクオテーションで囲まなくても動作はたいていするのですが、 echo "${RET

    シェルスクリプトを書く際に気を付けていること8箇条 - カイワレの大冒険 Third
    masa_matya
    masa_matya 2012/02/24
    変数の前には_をつける派
  • linux.vc - a really cool domain parked on Park.io

    The domain name linux.vc is being parked on Park.io. Contact the domain owner to make an offer right now...

    masa_matya
    masa_matya 2012/01/19
    深度は$SHLVLで分かる
  • シェルスクリプトのユニットテスト - wyukawa's diary

    ちょっとシェルスクリプトを書く機会があったので、ユニットテストできるかなーと思って調べてみたのでメモ。 こんなんがあった。 Google Code Archive - Long-term storage for Google Code Project Hosting. ダウンロードして解凍 $ wget http://shunit2.googlecode.com/files/shunit2-2.1.5.tgz $ tar zxvf shunit2-2.1.5.tgz サンプル実行 $ cd shunit2-2.1.5 $ ls Makefile doc lib src bin examples share $ cd examples/ $ ls equality_test.sh math.inc mkdir_test.sh lineno_test.sh math_test.sh party

    シェルスクリプトのユニットテスト - wyukawa's diary
  • Linux 文字化けたファイル名を操作できるようにする

    文字化けしてファイル名での指定ができなくなったファイルはファイル名でも先頭に来るのでつい目についちゃいます。 共用環境で置き去りになっているそういうファイル名を見ると、作成してしまった人の当時のあせりようを想像しちゃったり、消し方わからなかったので後ろめたい感じでログオフしちゃったのかなとか・・・想像しちゃうのは私だけでしょうか。 i-node番号の特定とfindコマンドのアクション(-ok)機能で、操作できる名前にすれば自由に操作できるようになるのでメモおきます。 $ ls -li でi-node番号確認(i-node番号が*****だったとします。) $ find . -inum ***** -exec file ‘{}’ \; で何者か探りを入れつつ、ファイルならば以下のように名前変えてしまえばあとはどうにか操作できるようになります。(;はコマンドの終了を明示、\は;のエスケープ。)

    Linux 文字化けたファイル名を操作できるようにする
    masa_matya
    masa_matya 2011/10/06
    inodeで操作可能
  • CodeZine(コードジン)

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    CodeZine(コードジン)
    masa_matya
    masa_matya 2011/06/23
    オプションがよく、他とごっちゃになる
  • 全角カタカナが含まれているファイルを探し出すスクリプト - sanonosa システム管理コラム集

    携帯サイトを作っている際、全ての全角カタカナを半角カタカナに置き換えるために、全角カタカナが含まれているファイルを一気に洗い出したいと思うことがあります。しかしネット上で検索しても自分的にしっくりくる方法がみつかりませんでした。 そこで今回非常に簡単なスクリプトを作ってみました。スクリプトを見ていただければわかりますが、実現方法としてはかなり恥ずかしい部類とは言えます。が、この方法以外思いつかなかったのと、こんなスクリプトでもきっと役に立つ人がいると思い恥を忍んで公開してみます。(注:調べたいファイルの文字コードがUTF-8ならUTF-8で保存するようにしてください) ※もしスマートな解決方法をご存じな方がいらっしゃいましたらコメントいただけたら嬉しいです。 #!/bin/bash pushd /var/www/html/ grep "ア" *.html > tmp grep "イ" *.

    全角カタカナが含まれているファイルを探し出すスクリプト - sanonosa システム管理コラム集
    masa_matya
    masa_matya 2011/06/19
    全角カナを抜きだす。パワープレーしなくてもいけるかも?
  • Linux : seq 桁数を意識した連番を生成 : MADAO Network

    [nobita@doraemon ~/aupi]$ seq -w 1 1 10 01 02 03 04 05 06 07 08 09 10

    Linux : seq 桁数を意識した連番を生成 : MADAO Network
    masa_matya
    masa_matya 2011/06/16
    seqで桁数
  • シェルスクリプト 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 コマンド・シェルスクリプト リファレンス
    masa_matya
    masa_matya 2011/05/29
    シェルスクリプトのコーディング規約例
  • シェル・スクリプトのデバッグ・ツール、bashdb | OSDN Magazine

    Bash Debugger Project(bashdb)を使うと、bashスクリプトにブレークポイントを設定したり変数を調べたりバックトレースしたり1行ずつ実行したりすることができる。bashdbは、C/C++デバッガー並みの技法でbashスクリプトをデバッグするツールだ。 インストールされているbashがbashdbをサポートしているかどうかは、次のコマンドを実行してみればわかる。下に示したbashdbのプロンプトが表示されなければ、bashdbをインストールする必要がある。 $ bash --debugger -c "set|grep -i dbg" ... bashdb<0> bashdbのパッケージはUbuntu Intrepidのリポジトリーにはあるが、openSUSE 11やFedora 9のリポジトリーにはない。試用マシンは64-bit Fedora 9マシンなので、通常の

    シェル・スクリプトのデバッグ・ツール、bashdb | OSDN Magazine
    masa_matya
    masa_matya 2011/03/01
    gdbライクにdebug OK
  • TIPS » linux

    1. pv: パイプラインの速度表示 pv はパイプライン中を流れるデータの速度や予想終了時間を表示します。 pv - Pipe Viewer http://www.ivarch.com/programs/pv.shtml Fedora なら yum install pv でインストールできます。RHEL/CentOS なら上記から RPM を入手してインストールします。 (例 1) 圧縮速度を測定し、終了時刻を予想する pv /dev/sda | gzip > sda.gz (例 2) 圧縮比を予測する pv -cN read /dev/sda | gzip | pv -cN write > /dev/null -N : 名前をつける -c : エスケープシーケンスを使って描画する 参照: http://www.catonmat.net/blog/unix-utilities-pi

    masa_matya
    masa_matya 2011/03/01
    bashのプロセス置換。md5sumしながらgzipしたり。
  • 中規模データ処理で学んだ tips - フリーフォーム フリークアウト

    移転しました http://please-sleep.cou929.nu/20101230.html

    中規模データ処理で学んだ tips - フリーフォーム フリークアウト
  • MySQLとシェルスクリプト – OpenGroove

    MySQLSQL文を、OSのコマンドラインまたはシェルスクリプトから実行したい時の例を、いくつか。 まずコマンドラインからサクッと実行するには、-eオプションを利用。 $ mysql -u user_name -pxxxxxx -e “SQL文” 「;」で区切れば複数のSQL文発行も可能。 $ mysql -u user_name -pxxxxxx -e “SQL文;SQL文;SQL文” 以下の方式でも可。 $ echo “SQL文;” | mysql -u user_name -pxxxxxx これらのコマンドラインをそのままシェルスクリプトに書いてもいいわけだ。 次にSQL文をファイルに記述しておいて読み込ませる方法。 “file_name”にはSQL文が記述されているものとする。 $ mysql -u user_name -pxxxxxx < file_name 上記はSQL文にお

    masa_matya
    masa_matya 2011/02/21
    echoとパイプを使えば幅が広がる感じ
  • .bash_history関連の環境変数アレコレ - 元RX-7乗りの適当な日々

    いくつか使えそうなものをメモ書き。 HISTSIZE export HISTSIZE=5000HISTORYとして記録するコマンドの履歴数。 HISTSIZEの値を小さくした場合、過去のヒストリは切り捨てられる。 HISTFILE export HISTFILE=~/.bash_history-${HOSTNAME}コマンド履歴(HISTORY)を保存するファイル名。デフォルト値は「~/.bash_history」。 HISTFILESIZE export HISTFILESIZE=5000上記の履歴ファイルに保存する履歴の最大数(行数)。必要に応じて過去の古い履歴は切り捨てられる。 HISTCONTROL export HISTCONTROL=ignoredups "ignorespace" の値が設定されていると、 空白文字で始まる行は履歴リストに入らない。 "ignoredups"

    .bash_history関連の環境変数アレコレ - 元RX-7乗りの適当な日々
    masa_matya
    masa_matya 2011/02/20
    historyの環境変数。HISTIGNORE素敵そうです。
  • ログアウトしても scp による転送が終了しないようにする方法 - ablog

    テスト用に100Mのファイルを作成する。 $ dd if=/dev/zero of=dummy bs=1024k count=100 $ ls -lh ... -rw-rw-r-- 1 neo neo 100M 2月 12 13:58 dummy 頭に nohup をつけて scp を実行する。 $ nohup scp dummy oracle@192.168.153.17:~/ nohup: appending output to `nohup.out' oracle@192.168.153.17's password: <パスワードを入力する> 「Ctrl + z」を押してプロセスをサスペンドする。 [1]+ Stopped nohup scp dummy oracle@192.168.153.17:~/ 実行中のジョブを確認する。 $ jobs -l [1]+ 5221 停止しました

    ログアウトしても scp による転送が終了しないようにする方法 - ablog
    masa_matya
    masa_matya 2011/02/05
    scpでもnohup使えばおk。ちょっと工夫が必要
  • スクリプト言語sed、awk

    masa_matya
    masa_matya 2010/06/19
    shell内でsedを使って変数を利用したいときは ' で区切る箇所を上手く調節する
  • diff - ファイルの差異の表示 - 会津大学UNIXウィキ

    diff コマンドで 2つのファイルの差異を調べることができます。 % diff [file1] [file2] のようにします。 演習の採点作業の時に他の人のコピーか否かを調べるときに使用したりもします。 標準入力から受け取りたいときは、 % [command] | diff - [file] のように - で指定できます。それでも1つは必ずファイルが必要です。 引数の両方にディレクトリ名を指定した場合は、2つのディレクトリ以下に存在するファイルの差分を表示します。 % diff [dir1] [dir2] ただし、片方のディレクトリにしか存在しないファイルの差異は表示しません。 同一名のファイルのみを比べます。 % diff -r [dir1] [dir2] のように -r オプションを使えば ディレクトリを再起的にたどって比較します。 パッチ また、パッチを作成するときにも diff

  • top(1)コマンドの活用例15 | エンタープライズ | マイコミジャーナル

    Guides, HowTos and Tips for Technology Geeks - The Geek Stuff Unix系システムでよく利用するコマンドのひとつにtop(1)がある。現在実行しているプロセスの負荷状況や利用状況をリアルタイムに確認できるほか、プロセスの終了やreniceなどが実行できて便利だ。Can You Top This? 15 Practical Linux Top Command Examplesにおいてtop(1)コマンドの15の利用例が紹介されている。ここでは紹介されているテクニックをUbuntu 9.10 Desktop (64bit)およびFreeBSD 8.0 amd64に合わせて整理したものを次にまとめておく。 1. 指定した項目でプロセス一覧を並び替える方法 Ubuntu 9.10 Desktop (64bit) FreeBSD 8.0 a

    masa_matya
    masa_matya 2010/04/21
    topの中で色々実行