Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
bashのワンライナーループは何だかんだでよく使うので、ここからコピペする目的のためメモです。 基本的に以下で実行できる for i in {1..<end>} ; do <something command> ; done 10回コマンドを実行するなら以下 for i in {1..10} ; do <something command> ; done 例えば10個のディレクトリ(dir1~dir10)を作成するなら以下のような感じ for i in {1..10} ; do mkdir dir${i} ; done 例えば100個のファイル(file1.txt~file100.txt)を作成するなら以下のような感じ for i in {1..100} ; do echo ${i} > file${i}.txt ; done
execコマンドはbashの組み込みコマンドでシェルを実行するコマンドで置き換えるコマンドになります。例えば、シェルスクリプト等で、あるコマンドを実行する場合、プロセス上では、実行したいコマンドが終わるまでそのコマンドを実行するシェルスクリプトのプロセスが残ることになります。実行できるプロセス数には限界があり、execコマンドで実行すると無駄にプロセスが実行することを防げます。 また、execコマンドを引数にコマンドなしで利用するとシェルのリダイレクトの設定を変更することもできます。 プロセスを置き換える あるコマンドを実行させたいときに、シェルスクリプトを実行してコマンドを実行させる場合、プロセス上ではコマンドを実行させるために起動したシェルスクリプトのプロセスがそのコマンドが終了するまで残ります。例えば、sleepコマンドを起動させるシェルスクリプト実行させて、その後、すぐに実行を中断
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Windowsで使えるターミナルとシェルのまとめ Windows で使えるターミナルとシェルをまとめてみた。 Windows でも選択肢は意外と多い。 ターミナルとシェルの組み合わせで自分好みの環境を構築できるだろう。 ターミナルとは? ターミナル、ターミナルエミュレータ、端末エミュレータ、ターミナルソフト、コンソール等と呼ばれる。 黒い画面で、テキストがずらずらと表示されるアレである。 ただし、画面に表示されるコマンド文字列などはシェルの機能である。 外側の GUI 部分だけがターミナルと言われる。 ターミナルは画面の見た目や操作性な
仕事で行った作業を社内のwikiなどにまとめるとき、その作業で実行したコマンドを含めてまとめている。 最近ではスクリプトの作成手順を示す際に、catコマンドを使って $ cat <<EOT > foo.sh #!/bin/bash set -eu ... EOT このように表記している。 これはbashのヒアドキュメントを利用したもので、これをコピペして実行するだけで必要なスクリプトが作成できるので、とても便利。 ただ、この記述ではドキュメント内にbashで解釈可能な変数があると、その変数が展開されてしまう。 例えば $ cat <<EOT > foo.sh #!/bin/bash set -eu PATH=$PATH:/path/to/bin EOT このようにして作成したスクリプトを確認すると $ cat foo.sh #!/bin/bash set -eu PATH=/usr/loc
みなさん、shebang書いてますか! Shebangというのは、スクリプトの最初の一行目に書く、「#!/bin/sh」とか「#!/usr/bin/perl」とかそういうあれです。詳しくはWikipediaさん(シバン (Unix))に聞いてくださいまし。 Twitter見てると、「そもそもこれにshebangなんて名前がついてるの知らなかったよ」という発言も見る不憫な子ではあるのですが、そこに何が書いてあるかで実は動作が違うよってのが今日の本題です。それで、はまっていたのを最近見て、まああまりここで引っかかる人はいないと思いつつ、この点を書いた情報を見ないのでまとめてみました。*1 今日取り上げるのは、bashがデフォルト設定になっているLinuxでの「#!/bin/sh」と「#!/bin/bash」のお話。確認はCentOS5, 6で行なっています。 さて、上記の環境の場合、「/bin
適当にググると「とにかく何でも .bash_profile に書いとけばおk」みたいな嘘を書いたブログ記事がわんさか出てくるのでここに正解を書いておきます。 .bash_profile .bash_profile はログイン時にのみ実行されます。具体的な用途は: 環境変数を設定する (export する変数) 環境変数はプロセス間で勝手に受け継がれるのでログイン時のみ設定すれば十分です。 .bashrc .bashrc は対話モードの bash を起動する時に毎回実行されます。具体的な用途は: 環境変数でない変数を設定する (export しない変数) エイリアスを定義する シェル関数を定義する コマンドライン補完の設定をする これらは bash を起動する度に毎回設定する必要があるものです。 その他 .bash_profile ? .bashrc ? いろいろあるけどこいつらなにもの?
作成日: 2009-05-09 02:53:07 / last updated at: 2009-05-09 03:01:54 カテゴリ: シェルスクリプト [ Prev ] [ Next ] [ 技術 ] bash_profile, bashrcの基本的な知識のメモ。bashの日本語manページより抜粋&まとめ。 "~/.bash_profile"を読み込む場合 bashが対話的なログインシェルとして起動されるか、 --login オプション付きの非対話的シェルとして起動されると、/etc/profile からコマンドを読み込んで実行した後、以下の順番でファイルを探し、最初に見つかった読み込み可能なファイルからコマンドを実行する。 ~/.bash_profile ~/.bash_login ~/.profile "~/.bashrc"を読み込む場合 ログインシェルでない対話的シェ
大半のシェルでは、コマンドラインの編集や修正にEmacs風のキーバインドが使用されるようにデフォルトで設定されている。しかし、viユーザーやvimユーザーであれば、Emacsよりもviのキーバインドの方が使いやすいはずだ。viのキーバインドを使用するよう設定するには、bashであれば~/.bashrcを、zshであれば~/.zshrcを編集し、以下の行を追加する。 bashの場合(~/.bashrcを編集): set -o vi zshの場合(~/.zshrcを編集): bindkey -v ~/.bashrcまたは~/.zshrcを保存した後、既存のシェルを終了し、新たなシェルを起動する。 デフォルトでは挿入モードになっているため、通常通りに入力すればよい。しかし、[Ctrl]+Aや[Ctrl]+Eといったコマンドは機能しなくなっている。そして、[ESC]を押下することで(vimと同様に
かつて... 今どきのターミナルはタブやウィンドウをいくつでも開けるから、 フォアグラウンドでコマンド実行中に何か別のことがしたくなったら、新たにタブを開いて、そこでコマンドを実行すれば十分用が足りる。 バックグラウンドでコマンドを実行できることも知っているけど、体系的に理解してないのでうっかりミスを繰り返した。 うっかりバックグラウンドで処理していることを忘れていた...。 処理中だと思っていたら停止していた...。 終了したと思っていたら停止していた...。 停止中のプロセスを再開するにはどうする? やっぱり終了したいんだけど、どうすればいいのか? そんなうっかりを繰り返すうちに、見えないバックグラウンドで実行して悩むくらいなら、常に状態が見えるフォアグラウンドにしておいた方が益し。 好きなだけタブを開いてしまえ、という方針になってしまった。 しかし... 何かの補佐で一時的にバックグ
I'm trying to build OpenERP project, done with dependencies. It's giving this error now Traceback (most recent call last): File "openerp-client.py", line 105, in <module> File "modules\__init__.pyo", line 23, in <module> File "modules\gui\__init__.pyo", line 22, in <module> File "modules\gui\main.pyo", line 33, in <module> File "rpc.pyo", line 29, in <module> File "common\__init__.pyo", line 22, i
原文(投稿日:2014/09/29)へのリンク 現在悪名高い、例のbashのバグCVE-2014-6271 は、後に「ShellShock」として知られるようになった。このバグはコードのリモート実行を許可してしまうもので、直接的または間接的にbashスクリプトを実行しているサーバに対し、巧妙に作成されたデータをネットワーク越しに送信することで起こる。最初のバグは修正されたが、後続の、解析ルーチンに関するゼロデイの懸念は2つ目の脆弱性CVE-2014-7169をもたらした。こちらの脆弱性は公開されてから週末にかけて修正された。しかし、この脆弱性はなぜ起こったのだろうか。また、この手のバグはこれが最後となるのだろうか。FreeBSDやNetBSDは、関数を自動的にインポートする機能をデフォルトで無効にした。将来の脆弱性を防ぐためだ。 問題が発生する理由は、Bashシェルにとある機能( バグでは
このサイトは近い将来、閉鎖予定です。 引っ越し先はこちら: https://scrapbox.io/shellscript-reference/ 20年以上にわたって運営を続けてきた本サイトですが、十分な役割を果たし終えたと考え、このたび幕を閉じることといたしました。 ここでシェルスクリプトを習得された多くの方々の活躍を思うと、運営してきた歳月には、確かな価値があったと確信しております。 これまでご愛読いただき、誠にありがとうございました。 終了ステータス 終了ステータスとは? コマンド終了時には「終了ステータス (exit-status)」と呼ばれるコマンドの成否を表す数値が特殊変数 $? に自動で設定される。 各コマンドにより異なるが、一般的には、 コマンド成功時には「0」 失敗時には「1」(コマンドやエラーの種類によっては 0 以外) が設定される。 → 直前に実行したコマンドの成否
ここ最近、沢山シェルスクリプトを書くようになりました。 元々あまりシェルスクリプトを書いたこと無かったので、色々と勉強しつつ書いてるのですが、 他のプログラミング言語とはちょっと違って独特なクセというか、発見の度におぉー!ってなることが沢山あって楽しいです。 そんなわけで、最近学んだり参考にした中で特に感動したシェルの上手い書き方をまとめてみます。 きっとまだ知らないこととかもっと上手くやる方法なんかが沢山見つかりそうなので、 もっといいやり方あるよ!って方はコメントください 何もしない : (コロン)コマンド シェルを書いていた時に非常に欲しかったコマンドがこれ!何もしない! : というコマンド(?)を利用すると、**何もせずに終了ステータス0(つまり正常終了)**を返します。 これが様々な事に使える万能コマンドで、これによって面倒なエラー処理を簡潔にできたり、 入力や出力のリダイレクト
Google DriveにCURLでファイルをアップロードすることはできた。 琴線探査: Google DriveにCURLでアップロードするには? 最後の問題は、Google Drive APIやOAuthで返ってきたJSONをどうやってシェルスクリプトで処理するかだ。 そこで、「jsawk」を使わせてもらうことにした。 micha/jsawk · GitHub SpiderMonkeyのインストール jsawkは例の有名なコマンドラインのJavaScript実行環境「SpiderMonkey」が必要なので、まずこれからインストールする。 幸いにも、DAGにパッケージがあった。DAGリポジトリを使えるようにするにはこちら。 琴線探査: さくらのVPSをMond Rescueで丸ごとバックアップしてVMWare Fusionでリストアしてみた [root@xxx ~]# yum insta
Shellスクリプトは未定義の変数に対してもエラーを出さない処理系なので、この動作がバグ化するとすごく気付きにくい。 実は Shellスクリプトの | (パイプ)処理から先のコマンド(群)はパイプ元とは別プロセスで起動していて、 上記の記述方法では変数を操作するループ内部と外側(初期化の部分と表示の部分)では 全く別の変数を参照していることになってしまうらしいのだ。 # ただ、必ずしもすべての /bin/sh がそういう実装というわけでもないらしく、昔はこうではなかったらしい。 # パフォーマンスを上げるために、別プロセスを起動して直接やり取りをするように途中から shの実態の処理が変わったんじゃなかろうか。 回避策は | (パイプ)ではなく、リダイレクトからファイルを読むようにするのだそうだ。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く