親の環境に影響を与えないためにサブシェルで実行している部分があります。 read に複数の引数を与える read に複数の引数を与えると複数の変数に同時に値を代入可能。区切りは IFS によって変化する。 $ echo 1 2 3 | (read v1 v2 v3; declare -p ${!v*}) # `${!v*}' は前方一致展開です declare -- v1="1" declare -- v2="2" declare -- v3="3"
Section: User Commands (1) Index JM Home Page roff page 名前 find - ディレクトリ階層内のファイル検索 書式 find [-H] [-L] [-P] [-D debugopts] [-Olevel] [starting-point...] [expression] 説明 このマニュアルページは GNU 版 find の使用法を説明しています。 GNU find は、 指定された検索開始ポイント (starting-point) を基準にして、 ディレクトリツリーを検索します。 そして優先規則に従って (「オペレーター」のセクション参照)、 指定された式 (expression) を左から右の順で評価していきます。 たとえば、 and 演算で左辺が false になった場合や、 or 演算で左辺が true になった場合のように、
覚えていると、たまに便利かもしれない"bash"のコマンド履歴の展開に関する技を、例を交えながらまとめてみました。 最後にも書きましたが、他にもたくさんありますので、色々試してみてください。 直前に実行したコマンドを実行 "!!"コマンドで、1つ前に実行したコマンドを再度実行できます。 $ ls -l 合計 0 -rw-rw-r-- 1 rx7 rx7 0 2009-02-26 02:20 test $ !! ls -l 合計 0 -rw-rw-r-- 1 rx7 rx7 0 2009-02-26 02:20 test n個前に実行したコマンドを実行 "!-n"コマンドで、n個前に実行したコマンドを再度実行できます。 例えば、以下の例では、"!-2"とすると、2個前に実行したコマンドを実行しています。 $ ls test $ ls -l 合計 0 -rw-rw-r-- 1 rx7 rx7
(2021/9/29)本記事は「bash,dash,zshのreadコマンドと行ごとの読み込み処理(while read)」へ移動した。
皆さん今日もたくさんのサーバを相手にされていることかと思いますが、いくつかのサーバにアクセスして 1 秒間の統計情報(例えばvmstat 1 2)を集めてパッと表示したい時ってどうやってますかね?shell script を学びはじめたばっかりの僕はこんな感じで書いてました。 $ for i in host1 host2 host3; do ssh $i "vmstat 1 2 | tail -1"; done 0 0 0 329004 210836 14275360 0 0 0 2424 1410 1828 0 0 100 0 0 0 0 0 3716112 587704 25921684 0 0 0 488 1643 2026 0 0 100 0 0 1 0 0 555440 265560 14015548 0 0 0 4204 1534 2392 1 0 99 0 0 vmstatと
.zshrcの設定内容によっては、EmacsのM-x shellでは動作しなくなる。それは、zleをいじっているから。だけど、zshでもEmacsの中で動かす方法はある。以下の行を.zshrcに入れるだけでよい。 [[ $EMACS = t ]] && unsetopt zle この設定は環境変数 EMACS が t であるならば zle を使わなくするという意味。で、環境変数 EMACS は誰が設定しているかというと comint.el の comint-exec-1 だ。以下の部分で環境変数を設定している。 (let ((process-environment (nconc ;; If using termcap, we specify `emacs' as the terminal type ;; because that lets us specify a width. ;; If
他の言語をを書き慣れてから、シェルスクリプトを書こうとするとしょうもない部分でハマったりすることがあります。「簡単な処理だからシェルスクリプトで書くか」と思っても無駄に時間がかかってしまっては仕方ないですよね。 今回は初めてシェルスクリプトを書くときに、ハマりそうな点について説明をしたいと思います。 実行権限をつける 単純にファイルを生成しても下記の用に実行しようとしても実行はできません。 # touch test # ./test sh: ./test: Permission denied # touch foo # ./foo sh: ./foo: Permission denied これはファイルに実行権限がついていないため、起きる現象です。 chmodコマンドを使って実行権限をつけてやりましょう。 # chmod +x test # ./test # chmod +x foo #
先日「dotjs面白いところ - ぽりぴぃすらいと」なんてのを書いてpullしたんですが rubyもWEBrickもOS Xにはデフォなんだからそっちで thx みたいな返事が返ってきて萎えな僕です。 dotjsなんだからserverもinstallerもjsでかけよ!ってのは宗教的な問題でした。 さておき まあ、installerを書いたあたりでshellコマンドを叩いたりしてみたのでちょっとまとめます shellコマンドを叩くには2種類のAPIが用意されています。1つはexec、もう一つがspawnです。 exec 1回こっきりのコマンドを叩く場合はこちらがいいでしょう。コマンドを文字列で渡してcallbackで受け取るだけです。 $ sh -c '文字列'みたいな気分で実行できます。 1. まず、shellコマンドを実行するためにはchild_processモジュールをrequire
タイトルの通りですが、xargsコマンドの便利さを紹介する記事を書いてみました。xargsは私が大好きなコマンドの一つで、標準入力から渡されたファイル名などを引数とみなして、別のコマンドの引数として起動するというものです。 例えばfindで見つけたファイルを全部削除したい場合、xargsなしでも下記のように書くことができます。
シェルからでも重い処理というのはちょこちょこあって、例えば超デカいログファイルを移動して圧縮したりというお仕事は世界中のあらゆる場所で毎日行われていたりする。コマンドラインからでも大量の圧縮済みログファイルをいっぺんに展開したい、とか。 あるディレクトリ以下に存在するたくさんのファイルを(圧縮済みのものを除いて)全部 bzip2 圧縮したい!と思ったら、とりあえずさくっと次のようにコマンドラインで叩けばいい。 $ find . -not -name '*.bz2' | xargs bzip2 これで、まあそんなに問題なく効率的にbzip2圧縮ができる。だがしかし。 最近は複数コアのCPUが普通に転がってるし、あまつさえHyperThreadingが有効になってたりしてOSから見える論理CPU数がハンパない。普通に8とかある。その一方で複数コアを使用してくれるコマンドというのはあんまりなくて
概要 Emacs を利用していると全部 Emacs でやりたくなるのは Emacs 使いとして当然だと思います。 Shell だって Terminal など利用せず Emacs 上で動作させたくなることでしょう。 この文書では Emacs 上で Shell を快適に利用するための設定を記述していきます。 目次 概要 検証環境 Emacs での Shell Mode に関する基礎知識 shell term (ansi-term) eshell どのモードを利用するか 利用する Shell について Windows での Shell の準備 Mac OS X での Shell の準備 Emacs 側の設定 PATH の設定 利用する Shell の設定 文字コードの設定 システムの terminfo を利用しない設定 エスケープを綺麗に表示する term 呼び出しキーの割り当て Shell 側
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く