Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
パイプを繋げたときの返り値は最後のコマンドの返り値になる。 例えば stat = system "a | b |c" としたとき、途中でaやbがエラーになっても返り値statはfalseにならずcの返り値であるtrueになる。 cがエラーに成った時にはfalseになる。*1 これだとパイプの途中でエラーが起きた場合に捕捉できない。 そういうときはbashの-o pipefailオプションを使う。*2 これを指定するとパイプの途中でエラーが起こった時にはそのときの返り値が、なにも起きなければ最後のcの返り値が全体の返り値が返ってくるようになる。 さらに-eを付けておくことでエラーが起きたタイミングで終了するようになる。 stat = system %{bash -e -o pipefail -c "a | b | c"} 参考 Get exit status of process that'
# lsof -i4TCP:11211 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME memcached 32583 root 27u IPv4 71897 0t0 TCP *:11211 (LISTEN) #
例えば subversion サーバを設定するとき、subversion グループを作成する。 % sudo groupadd subversion ここで、作成したグループをユーザーに追加するのに、決して usermod -G を使ってはいけない。 % sudo usermod -G subversion user # ダメ! 「確かに」これでユーザーは subversion グループに設定できる。だが誤った使い方である。何がいけないか。 既に設定されていた他のグループの設定が全部飛ぶのだ! 特に怖いのが、個人でUbuntuを使っている場合に唯一のユーザである本人が admin グループから外れること。 不具合に気がついて vigr で修正しようにも、sudo が利かない! もちろんリカバリーモードで復旧は可能*1だし(/etc/group- というバックアップファイルが作られるようだ)
お世話になります。 lsコマンドの使用方法で質問があります。 例えば本日(2008年11月24日) ls -al コマンドでファイルのタイムスタンプを確認すると 最終更新日時が「2008年11月23日22時41分08秒」のように6ヶ月以内のファイルは 11月23 22:41 と表示されますが、 最終更新日時が「2007年01月06日18時05分04秒」のように6ヶ月以上昔のファイルは 1月 6 2007 と表示されます。 最終更新日時がいつであっても常に 2007/01/06 18:05:04 のように固定の YYYY/MM/DD HH:MM:SS 形式(秒も出力し、ゼロサプレスも行わない形式)で表示したいのですが その方法がわからずに困っています。 (ログファイルとかで秒が表示されるとうれしいです。) 御存知の方、よろしくお願いします。
find で空白を含んだパスに対して検索を実行し、その結果を xargs に渡しても思うような結果が得られない。どうしてかというと、xargs は標準入力から空白または改行で区切られた文字列群を読み込むから。パスに含まれた空白が xargs に区切り文字として解釈されてしまう。 % ls "Foo Bar" hoge1.txt hoge2.txt % find "Foo Bar" -name "*.txt" | xargs grep "Hello" grep: Foo: No such file or directory # "Foo" で一つ目の入力として捉えられている grep: Bar/hoge1.txt: No such file or directory # "Bar/hoge1.txt" で二つ目の入力として捉えられている grep: Foo: No such file or
Just browsing Stack Overflow? Help us improve your experience. Sign up for research
サーバ間の通信を調査したいときに、netstatはよく使うと思います。たとえば、あるポートを使ってるプロセスを探したい時。 # netstat -taopn | grep :29324 tcp 0 0 192.168.11.11:29324 192.168.11.12:3306 ESTABLISHED 10726/perl off (0.00/0/0) ただ、すごいたくさん通信してるサーバだと、netstat自身がすごい遅くて、上記コマンドが終了するのに時間がかかります。手で見てる時はまぁどうでもいいんですが、自動化したい時とかにずっと待ってると微妙ですよね。 見つけたいのは 1 行だけだなぁと思ったので| head -1とかしてみたんですがあんまうまくいってない。 # time netstat -taopn | grep :29324 | head -1 tcp 0 0 192.168.
git diffはカラー表示されてるのに、通常のdiffはカラー表示されず、見づらいなーと思っていたらcolordiffという色付けしてくれるツールがありました。(もしかして有名なのか!) 導入環境はCentOS 5.6です。 sudo yum -y install colordiff Macでhomebrew使ってるなら brew install colordiff .bashrcや.zshrcに追加して、ノーマルdiffを置き換え alias diff='colordiff' colordiffの結果をパイプでlessとかに渡すとおかしなことになるので、-Rを付けるとちゃんとカラー表示される。 colordiff hogemoge.conf{,.dist} | less -R 毎回 -R とか付けると面倒なので、これも.bashrcや.zshrcに書いておく。 export LESS=
通常の日本語キーボードは「Ctrl」キーが左下で「Caps Lock」キーが「A」キーの左側にあります。 UNIXを日本語キーボードで使っている人は、ほとんどは「Ctrl」キーと「Caps Lock」キーの位置を入れ替えて使っていることでしょう。 キーの入れ替えには、~/.Xmodmap を作成します。以下に記述形式を示します。 !!! !マークはコメントになります!!! ! delete keyをBackspaceにする keycode 59 = BackSpace ! Caps_Lockキーを無効にする remove Lock = Caps_Lock ! Caps_LockキーにEscapeキーを割り当てる keysym Caps_Lock = Escape ! Caps_Lockキーを有効にする add Lock = Caps_Lock さまざまな、キーボードを利用しなければならない
一つひとつのコマンドは単機能*1であっても、コマンド同士を連携させることで、高度な情報に加工できる仕組みって、素晴らしいと思う。 頻繁に使うシェルコマンドベスト30を集計とるワンライナー - zenpouの日記(感謝です!) $ cat .bash_history|cut -f1 -d' '|sort|uniq -c|sort -nr|head -n10 114 cat 64 echo 40 ls 28 rm 26 ps 20 growlnotify 20 _echo 19 sleep 17 ls_ 16 du 例えば、上記のコマンドは「最近よく使ったコマンドベスト10」を表示してくれる。(bash用) 結果を見ると、ろくにコマンドを使っていない(使えていない)のがバレバレだけど、.bash_historyというコマンド履歴のファイルから、一瞬にしてベスト10に集計してしまう作業が、たった
シェルからでも重い処理というのはちょこちょこあって、例えば超デカいログファイルを移動して圧縮したりというお仕事は世界中のあらゆる場所で毎日行われていたりする。コマンドラインからでも大量の圧縮済みログファイルをいっぺんに展開したい、とか。 あるディレクトリ以下に存在するたくさんのファイルを(圧縮済みのものを除いて)全部 bzip2 圧縮したい!と思ったら、とりあえずさくっと次のようにコマンドラインで叩けばいい。 $ find . -not -name '*.bz2' | xargs bzip2 これで、まあそんなに問題なく効率的にbzip2圧縮ができる。だがしかし。 最近は複数コアのCPUが普通に転がってるし、あまつさえHyperThreadingが有効になってたりしてOSから見える論理CPU数がハンパない。普通に8とかある。その一方で複数コアを使用してくれるコマンドというのはあんまりなくて
Kodama's home / tips. ディレクトリのツリー表示(ディレクトリの tree 構造を見る) ディレクトリの tree 構造を見るコマンドは探せばいくつかあるけど, 自分で簡単につくれるので sed 等の練習に自分でやってみるとよい. dtree とか云う名で スクリプトを作っておくと良いよね. 内部では find でディレクトリを探っているので, find のオプションを改造して, 特定の条件のファイルやディレクトリを図示するのにも使える. 実行例 $ dtree /home/ftp /home/ftp +--bin +--etc +--incoming +--lib +--pub | +--knot | | +--old | +--tools | : +--dic | : +--sather +--usr : +--bin sed による例 Linux Journal
githubをうろうろしていたら「なるほど」と思ったコードを見つけたのでメモっておく。 get-twitter-oauth-token / bin / get-twitter-oauth-token (gistじゃないので残念ながら埋め込むことができない。コピペするのも微妙なのでリンクだけ提示しておく) これは@jugyoさん作のコマンドラインからTwitterのOAuthのアクセストークンと秘密鍵を取得するスクリプトで、openコマンドを使ってるあたり多分Mac専用なんだと思う(Linuxとかでもあるのかな?)。 なるほどなーと思ったのはStringを拡張しているcolorとaskという二つのメソッド。 colorはその名のとおり文字列に色をつけるもので、引数numにはANSIエスケープシーケンス(?)で指定できる色の番号を渡す(「bashのプロンプトに色をつける」などを参照。zshでも
最近、会社でシェルの操作方法について教えているのだが、 pgrep / pkill / skill / pidof といった 便利なプロセス操作系コマンドを知らない人が実に多い。 プロセスを殺すというのは、よくある作業なので 今回はコレについて書いてみる。 たとえば、これらのコマンドを知らない人が、 指定した名前のプロセスを kill する手順はだいたい 以下のようなものになることだろう。 $ ps aux | grep プロセス名 | grep -v 'grep' # コマンドの出力結果から pid を目で確認 12345 ... .. hoge .. .. $ kill 12345 この作業は非常に面倒で退屈だ。 もし殺さなければならないプロセスがたくさんあったときは どうするのだろうか。 おまけに、grep コマンド自身が候補に含まれてしまう事があるのだが、 grep -v grep
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く