Bashのヒストリをダイエットしました。ダイエットして減った分、よりたくさんのコマンド履歴が確保出来ました。 履歴を確保するとタイプ量が減って仕事早くなるッス。 重複する履歴を保存しない 重複するコマンドは最新一件に限定する。重複は保存しない ~/.bashrc #重複履歴を無視 export HISTCONTROL=ignoredups Ubuntuなら最初から設定してあったように思える。 空白から始めたコマンドを保存しない 履歴に保存したくないコマンドは空白から記述する ~/.bashrc #空白から始めたコマンドを無視 export HISTCONTROL=ignorespace コマンド例 $ □cat /etc/passwd|grep takuya #↑空白入れることで保存されない。 空白を履歴に追記しない、重複履歴を保存しない ignorespaceとignoredupsを同時
Make Tech Easier - Uncomplicating the complicated, making life easier Joshua Price氏がMake Tech Easierにおいて8 Useful and Interesting Bash Promptsのタイトルのもと、bashシェルにおけるさまざまなコマンドプロンプトの設定例を紹介している。使いやすいコマンドプロンプトはコマンドラインの使い方を変えると説明があり、同氏が調査した中でも、特によく使われていたり、おもしろいプロンプトとその設定例が紹介されている。紹介されているプロンプトは次のとおり。 間違ったコマンドを入力すると顔が変わるプロンプト もっともおもしろいプロンプトのひとつだが、使いやすくもあるプロンプト。コマンドの実行が成功したか失敗したかで、プロンプトに表示されるアスキーアートの顔を変更するという
シグナルと 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)
人のオペレーションを見てるとそれぞれクセがあっておもしろいですよね! というわけで自分がよく使う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を入力するとヒストリ検索モードになります
【標準入力】 read ---------------------------------------------------------------------- #!/bin/sh read timeofday echo $timeofday exit 0 ---------------------------------------------------------------------- 【条件】 test([ ])コマンド ---------------------------------------------------------------------- ファイル hoge の存在を確認する ex1) if test -f hoge then ... fi ex2) if [ -f hoge ] then ... fi ex3) if [ -f hoge ]; the
●背景 P言語つかうようになって ~/bin の下に沢山スクリプトファイルを作ってしまってウザくなってきた。 そこで、小さなスクリプトプログラムは、シェルのヒアドキュメントの上に書いてしまうことにした。 これをスマートに行なうには、ヒアドキュメントをシェル変数に格納することが必要になる。 ● シェル変数にヒアドキュメントを代入する $ bar=`cat <<'EOF' > This is a pen. > That is a desk. > EOF > ` # そのままエコーすると改行が失なわれる $ echo $cat This is a pen.That is a desk. # ダブルクォートすると改行も再現される $ echo "$cat" This is a pen. That is a desk. ● ヒアドキュメント中に書いたスクリプトを実行する #!/usr/bin/env
ロングオプション(--tmpdir /tmp みたいなやつ)が欲しいと思ったことはなかったのですが、この日書いていたスクリプトに、意味をよく理解して注意して指定して欲しいオプションを実装しようとしていて、そういう局面ではロングオプションを使うのがいいのでは?と思い至りました。 そこで、まずは練習として、前に書いたテンプレート(getoptを使う版)を拡張して、ロングオプションに対応してみました。 #!/bin/bash # # getopt-long-template.bash (use getopt utility) # export LANG=C usage_exit() { echo "Usage: getopt-long-template.bash [-a] [-d dir] [--extra] [--file f] item1 item2 ..." 1>&2 exit 1 } #
引数を処理する 引数とは? 引数 (ひきすう) とはコマンド (シェルスクリプト) 実行時に、コマンドラインから渡される値のことである。 引数は実行時にプログラム内で参照され、シェルスクリプトの実行結果 (動作) に影響を与える。引数はパラメータと呼ばれることもある。 → コマンド名に続けて引数としてコマンドに渡したい値のリストを指定する。 引数はコマンド名に続けてスペース区切りで指定する。引数として指定可能な値の数は各コマンドにより異なる。 【参考】 引数とオプション コマンド実行時に指定する値には引数とオプションがある。引数は実行に使用されるファイル名や出力されるメッセージなどを指定するのに使用される。 一方、オプションは -f などのように - (ハイフン) とアルファベット1文字で表記され、主にコマンドの振る舞い方を指定する目的で使用されるものである。 また、オプションは -a -
大規模なコードベースでリファクタリングを省エネ化するためにcodemodを最近調べていて、軽く試行錯誤したのでそのメモ。 やりたいこと 例えば以下のようなTable Driven TestなコードをBEFOREからAFTERに書き換えたい。コード量が多いため人間がやるのは現実的ではなく、codemodで機械的に書き換えたい。 BEFORE package main import ( "slices" "testing" ) func TestContains(t *testing.T) { type args struct { ss []string s string } tests := []struct { name string args args want bool }{ { name: "empty: false", args: args{[]string{}, ""}, wan
以下で示すように PS1 で bash シェル関数を実行することもできます。 ramesh@dev-db ~> function httpdcount { > ps aux | grep httpd | grep -v grep | wc -l > } ramesh@dev-db ~> export PS1="\u@\h [`httpdcount`]> " ramesh@dev-db [12]> [Note: これは実行中の httpd プロセスの総数を表示します]この変更を永続化するために ~/.bash_profile あるいは ~/.bashrc に次の行を追加できます: $ vi .bash_profile function httpdcount { ps aux | grep httpd | grep -v grep | wc -l } export PS1='\u@\h [`h
bashのプロンプトは環境変数のPS1を変えればいい。ここではちょっと特殊な色をつける方法。 色をつけるにはANSI エスケープシーケンスを使う。エスケープシーケンスを使う場合は、\[ と \]で囲ってその中に書く。エスケープシーケンスで色をつけるには、ESC[値;値m]の形で記述する。ここでESCはオクタルに直して\033になる。値のところは以下の様になる。(参考) Foreground colors 30 Black 31 Red 32 Green 33 Yellow 34 Blue 35 Magenta 36 Cyan 37 White Background colors 40 Black 41 Red 42 Green 43 Yellow 44 Blue 45 Magenta 46 Cyan 47 White 実験。プロンプトを赤のAAAにする。 $
ここでは bash が環境をカスタマイズするために提供しているもっとも重要な特徴 「特殊ファイル」,「エイリアス」,「変数」について見ていく. 3.1 .bash_profile, .bash_logout, .bashrc ファイル 3.2 エイリアス 基本的なエイリアス スペースを含むエイリアス エイリアスが再帰的になる場合 エイリアスの定義に別のエイリアスを用いる エイリアスを無効にする 3.3 シェル変数 編集モードの変数 メール変数 プロンプト変数 コマンド検索パス ディレクトリ検索パスと変数 その他の変数 3.4 環境変数 3.1 .bash_profile, .bash_logout, .bashrc ファイル bash をログインシェルとしているユーザがログインすると, /etc/profile ~/.bash_profile ~/.bash_login ( .ba
gitの配布物に含まれる contrib/completion/git-completion.bash を . すると、gitのサブコマンドやそれに応じたオプション、加えて~/.gitconfigで自分用にaliasしたサブコマンドまで補完してくれるようになり、小学生もにっこりです。 同じく git-completion.bash の中で定義されてる関数 __git_ps1 を使ってシェルプロンプト($PS1)を設定すると、 #... if [ -r "$HOME/.bash_completion.d/git" ]; then # = git-completion.bash # boldにするエスケープシーケンスは省略してます PS1="${PS1}[\$(__git_ps1 \"%s)\")\w]\\$ " else PS1="${PS1}[\w]\\$ " fi #...こんなふうにg
なぜバッチ職人になる必要があるのか Windows コマンドプロンプト WSH / JScript VBA UWSC PowerShell Linux Bash クロスプラットフォーム OpenOfficeマクロ 補足 ※↑ もくじジェネレータ で自動生成 なぜバッチ職人になる必要があるのか あなたは,自分の作業を自動化するか。 いつまでも手動で,ダラダラと手作業を行ない続けるのであれば あなたのエンジニアとしての生産性は,そこで打ち止めである。 いつまでも,同じ作業に同じだけの時間がかかる。 いつまでも残業し続け,仕事を早く終わらせる事ができない。作業効率が低い。 また,誤操作のリスクも常に抱え込む。 単調な繰り返し作業ばかりが増えてゆき,脳みそも衰える一方。 このようなエンジニアが成功も成長もしないことは,言うまでもない。 自分の作業を自動化する習慣がある人は,そうではない。 有能なエ
The main aim is to document the hurdles that most of us face as UNIX/Linux/BSD sys admin in our day today life. シェルまたはシェルスクリプトで乱数を使いたいと思うことが時々ある。コマンドをまとめていくという軽い利用を越えて、プログラミング的な要素が強くなってくる場合にはそうした要求がでてくる。しかしシェルスクリプトは一般的なプログラミング言語ではないため、乱数を生成するような関数は提供されていない。 シェルやシェルスクリプトで乱数を使う方法はいくつかあるが、Bash Shell Generate Random Numbers - nixCraftにおいて紹介されている2つの方法が、ひとつは簡単な方法、もうひとつはシェルに左右されにくい互換性の高い方法として興味深い。紹介されている
bashのカスタマイズ bashは、組み込みの「シェル変数」を使ってその動作をある程度変更できます。シェル変数の設定方法は、 のように、変数名に数値あるいは文字列を代入する形になります。 組み込み変数にどんなものがあるか、ざっと見てみましょう。 ヒストリ関係 ●HISTCMD 現在のコマンドのヒストリ番号。 ●HISTCONTROL ignorespace:スペースやタブで始まる行をヒストリに記録しない ignoredups:入力が最後のヒストリと一致する場合に記録しない ignoreboth:ignorespaceとignoredups両方を指定 指定なし:すべての入力をヒストリに記録する ●HISTFILE ヒストリファイル名。 例:HISTFILE=/home/username/.bash_history ●HISTFILESIZE ヒストリファイルに格納するヒストリの最大数。 ●H
¥×¥í¥ó¥×¥È¡© † ¡¡¥·¥§¥ë¾å(bash, csh ¤Ê¤É) ¤Ç¤Ï¥³¥Þ¥ó¥É¤òÆþÎϤ¹¤ë¥³¥ó¥½¡¼¥ë¡Ê¥¡¼¥Ü¡¼¥ÉÆþÎϤΤ¿¤á¤Î¾ì½ê¤¬ÅÀÌǤ·¤Æ¤¤¤ëÃÏÅÀ¡Ë¤Î»ö¤ò¥×¥í¥ó¥×¥È¤È¸Æ¤Ó¤Þ¤¹¡£ ¡¡Fedora/Red Hat ¤Ç¤Ï¡¢½é´ü¾õÂ֤Ǥϰʲ¼¤Î¤è¤¦¤Ê·Á¼°¤Ç¤¹¡£ [¥æ¡¼¥¶Ì¾@¥Û¥¹¥È̾ ~]$ ¡¡¤¿¤È¤¨¤Ð¡¢¥æ¡¼¥¶Ì¾¤¬ sakura¡¢¥Û¥¹¥È̾¤¬ sion ¤Î¾ì¹ç [sakura@sion ~]$ ¡¡¤Èɽ¼¨¤µ¤ì¤Þ¤¹¡£~ ¤Ï¡Ö³ºÅö¥æ¡¼¥¶¤Î¥Û¡¼¥à¥Ç¥£¥ì¥¯¥È¥ê¡×¤È¤¤¤¦°ÕÌ£¤Ç¤¹¡£ ¡¡¤¿¤È¤¨¤Ð¡¢¥«¥ì¥ó¥È¥Ç¥£
今日はかなり珍しく技術的な話題を提供します。 要約 [困ったこと] 1つの Screen で複数のサーバにたくさん telnet するとどの仮想端末で何をしていたか忘れる! 選択が面倒! [この記事を読むとできること] Screen のウィンドウタイトルにユーザ名、ホスト名、作業中のディレクトリを表示 どのサーバにどのウィンドウでログインしているかを確認しながらウィンドウ選択 知っている方もかなり多いのかもしれませんが、bash には PROMPT_COMMAND という環境変数があります。PROMPT_COMMAND を使うことで、PROMPT が表示される時に自動的に実行するコマンドを指定できます。 これにたとえば私の場合ですと、次のように設定しています。 PROMPT_COMMAND='echo -ne "\033]0;$(whoami)@$(hostname):$(pwd)\007
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く