Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

Content-Length: 362418 | pFad | http://b.hatena.ne.jp/test_tester/Bash/
無印良品ブランドを展開している良品計画では、情報系システムの内製化を進めて効果をあげているそうです。 独自の手法で10倍速開発 7割主義で変化対応力を高める ポイントの一つとして、スクリプト言語を活用した独自の開発手法を採用していることがあるそうです。スクリプト言語の採用そのものは珍しくないと思うのですが、ユニークなのはbashを使っていることです。 データを検索したり業務に合わせてデータを加工するビジネスロジックや、データ処理の一貫性を保ったりデータを二重化するデータ管理ロジックは、すべて「Bash」と呼ぶスクリプト言語で記述する。しかもデータベース管理ソフトを使わず、データはすべてテキストファイルで管理する。「ミドルウエアのオーバーヘッドがない分、処理も速い。ごく普通のパソコンで動作させても、25万件の商品データなら2秒程度で全件検索できる」と山崎課長は胸を張る。 実際のコーディングイ
aliasとシェル関数の違いについてのメモ。 たとえばgrepコマンドを常にロケール非依存にて扱い処理を高速化するにあたり、一見、次の二つの定義は同等に見える。 alias grep='LC_ALL=C grep --color=auto' grep() { LC_ALL=C command grep --color=auto "$@" } しかし、これらは実際は異なる。 具体的には、aliasはインタラクティブモードの場合のみ機能し、シェル関数は非インタラクティブモードにおいても参照される。 また、同名のシェル関数とエイリアスが存在する場合、まずエイリアスが展開された後、シェル関数が実行される。 したがって、常にコマンドそのものを置き換えたい場合はシェル関数、端末から実行した場合のみ置き換えたい場合はaliasを使うことが好ましい。 たとえば、grepにおいてロケールは常に無視したい、色
nixCraft → Tutorials → Linux → Awesome bash aliases for Linux and Unix users to increase productivity An bash shell alias is nothing but the shortcut to commands. The alias command allows the user to launch any command or group of commands (including options and filenames) by entering a single word. Use alias command to display a list of all defined aliases. You can add user-defined aliases to ~/.
cdの引数が相対パスのままコマンドヒストリに残って便利な例が思いつかないので、絶対パスでコマンドヒストリに残すようにする。 具体的には、以下のシェル関数を.bashrcに書く。 if [[ -n "$PS1" ]]; then cd() { command cd "$@" local s=$? if [[ ($s -eq 0) && (${#FUNCNAME[*]} -eq 1) ]]; then history -s cd $(printf "%q" "$PWD") fi return $s } fi いくつかの重要なポイントを以下に記す。 cdの定義を上書きしているが、このような場合中で普通にcdを呼ぶと再帰してしまうためcommand組み込みコマンドを使う。 "$@"の代わりに"$1"を使うことはできない。cdを引数なしで呼んだときホームディレクトリに移動しなくなってしまう。 cdの
※(2014/10/1 追記) 脆弱性の番号を誤って CVE-2014-6721 と表記してしまっていました 正しくは "CVE-2014-6271" です 失礼致しました ※(2014/10/7 追記) 2014/10/7 14:00時点で Shell Shock への修正パッチは6個 公開されています 既に対応済みのシステムでもパッチの漏れがないか注意してください シェルに脆弱性が見つかったらしいです このコマンドを実行すると脆弱性があるバージョンかのチェックができるようです $ env x='() { :;}; echo vulnerable' bash -c "echo this is a test" 以下のように表示されたらアウトです vulnerable this is a test どうやら、このコマンドが正常に実行できるというのがこの脆弱性の正体らしく、 echo vuln
環境変数に仕込まれたコードを実行してしまうBASHの脆弱性が CGIスクリプトに影響を与えるか試してみたら結果は悲惨な感じに Tweet 2014年9月25日 嶋田大貴 この記事は2014年のものです 朝から Bash specially-crafted environment variables code injection attack なるもので騒ぎになっていたので、さっそく手元の Apacheで試してみました。 /hoge.cgiというURIで実行されるように、一行のメッセージを出力するだけの CGIスクリプトを設置します。いっけん、なんの入力もクライアント側から受け付けていないため危険のありようもなく見えます。 #!/bin/sh echo "Content-type: text/plain" echo echo "Hi! I'm an ordinary CGI script w
bashに脆弱性が確認されたとして騒ぎになっています。ここではCVE-2014-6271に関する情報をまとめます。 #記載内容について、誤っている、追記した方がいい等情報がございましたら@piyokangoまでご連絡お願いします。 脆弱性情報 脆弱性の愛称 ShellShock Bashbug CVE番号 Bash周りで発行されているCVEは6つ。その内詳細が不明なのが2つ。(CVE-2014-6277,CVE-2014-6278) CVE 発見者 想定脅威 特記 CVE-2014-6271 Stephane Chazelas氏 任意のコード実行 ShellShockの発端となったバグ。 CVE-2014-7169 Tavis Ormandy氏 任意のコード実行 CVE-2014-6271修正漏れによる脆弱性 CVE-2014-7186 Redhat DoS メモリ破壊(Out-of-Bo
シグナルと trap コマンド シグナル シグナルとは? シグナルとは、実行中のプロセスに対して、さまざまなイベントを通知するために送出されるものである。 よく使用される、プロセスを終了するためのシグナルである SIGTERM や SIGKILL などのほかにも、数十種類のシグナルが存在する。 使用可能なシグナルの一覧は、コマンドラインから kill -l を実行することで参照可能である。 $ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD 18) SIGCONT 19)
すこし記事が長いため、簡単なアウトラインを書いておきます。要点だけ掴みたい場合は、最終項の「まとめ」を読むのがいいかもしれません。 コマンドライン引数の一般的な解析手法 それぞれの特徴 〜 getopt と getopts の違い getopts(メリット・デメリット) getopt(メリット・デメリット) 自前で解析しちゃう(唯一のデメリット) まとめ ============================= コマンドライン引数を処理する一般的な手法として、 getopts getopt shift などで自力で解析 といった具合に、上から順に考えつくかと思います。getopt(3) は UNIX において、コマンドの引数を処理する一般的な C 言語のライブラリ関数です。それを用いて実装されたコマンドが getopt(1) です。Bourne シェル系だと内部関数になりますが、同系統の
rm -rf remains rm -rfの後に残りしもの 遊びのために、筆者は新しいLinuxサーバーを立ち上げて、rootでrm -rf /を実行して、何が残るかをみてみた。どうやら、今のrmというのは筆者のようなアホを相手にしなければならない未来に生きているようなので、実際に実行するには、--no-preserve-rootをつける必要があった。 # rm -rf --no-preserve-root / かかるおろかなる行為の後では、 /bin/ls /bin/cat /bin/chmod /usr/bin/file のような、偉大なるツールのたぐいはみな消え失せてしまった。まだ、ssh接続とbashセッションは生きているはずだ。つまり、bashの組み込みコマンドであるechoとかは残っているということだ。 Bashマクガイバーたれ root@rmrf:/# ls -bash: /
bash でシェルスクリプトを書いていて、エラー処理をif文を使って command ... if [ $? -ne 0 ] then echo ... exit 1 fi みたいに書くと、コードが見づらいのでなんとかならないかと思っていたら、 command ... || { echo ... ; exit 1 ; } こういう風に書けるのか。 Perl の「or die」みたい。ってか Perl のほうが新しいと思うけど。 command ... || echo ... ; exit 1 のように書くと exit が実行されないので要注意。って bashクックブック に書かれてました。 例 hoge1.sh #!/bin/bash mkdir log if [ $? -ne 0 ] then echo oops! exit 1 fi echo created directory. ho
「いますぐ実践! Linux システム管理」はこちらです。 メルマガの解除、バックナンバーなども、以下からどうぞ。 https://www.usupi.org/sysad/ (まぐまぐ ID:149633) その他、作者に関するページは、概ね以下にございます。 https://www.usupi.org/kuri/ (まぐまぐ ID:126454) http://usupi.seesaa.net/ (栗日記ブログ) https://twitter.com/kuriking/ (twitter) https://facebook.com/kuriking3 (facebook) https://jp.pinterest.com/kuriking/pinterest) https://www.instagram.com/kuri_king_/ (instagram) [バックナンバーのトップへ
斎藤です。こんにちは。 今日は、bashコマンドの補完を強化する bash-completion[1] をインストールしてみよう、というお話です。 先日執筆した記事『デーモンの起動・終了にはserviceコマンドを利用しよう』の反響の中に「serviceコマンドは補完が効かない」というコメントを頂いていました。こちらですが、 bash-completion を入れると補完が効くようになります。そこで、先日の記事の補足として、お話ししたいと思います。 ※ bash-completion は1.2を用いています そもそも bash-completion で何ができるの? bash-completion は、次のコマンドの入力補完を行えるようにするためのソフトウェアです。次のコマンドが対象となっています。 $ pwd /tmp/bash-completion-1.2/contrib $ ls _
Tera Term 等の端末を複数同時に立ち上げて作業したり、screenにて複数の仮想端末を同時並行で操作する際、コマンド実行履歴が端末間で共有できなくて困る事が多々あります。「さっきのfindコマンドをもう一度... 引数どう書くんだっけなぁ... あ、確かコマンド履歴にあったはずだなぁ... ちっ、それはあっちの端末の履歴だったか」みたいな。zshには端末間のコマンド履歴を常に同期できる'SHARE_HISTORY' なるオプション(*1)があって素敵なのですが、同じことを bash で実現する方法を調べたのでご紹介。 (*1) zshの同機能について詳しくはITmedia記事 "豪傑の三種の神器【後編】" を参照の事 不具合) 通常設定のbashで困る事 1. 複数端末間でコマンド履歴の共有ができない 同時に立ち上げている端末間で履歴の共有ができなくて不便に感じることがある。 2.
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く
Fetched URL: http://b.hatena.ne.jp/test_tester/Bash/
Alternative Proxies: