[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

タグ

unixに関するkitsのブックマーク (112)

  • シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の本当の理由を知ると優れた文法が見えてくる - Qiita

    シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の当の理由を知ると優れた文法が見えてくるShellScriptBashUNIXshellPOSIX はじめに シェルスクリプトの変数代入で = の前後にスペースを置くことができない理由は、検索すれば「プログラマーの君! 勘違いするな! シェルスクリプトでは読みやすさのためにスペースを置くな!! という話」のような記事がすぐに見つかります。記事に書いてあるとおり変数代入とコマンド呼び出しと区別がつかないからです。それは間違いではないんですが、私はもう少し説明が足りないと感じています。そこで今回は = の前後にスペースを置けない当の理由を解説したいと思います。 の前に皆さんにはこの話を読みながら、自分がシェルスクリプトの言語設計者だったとしたら、どういう言語仕様にするかを考えて欲しいです。なぜかと言うとシェルスクリプトの文

    シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の本当の理由を知ると優れた文法が見えてくる - Qiita
    kits
    kits 2021/11/12
    「オプションや引数とリダイレクトは混在して書くことが出来ます」/ 「シェルスクリプトは元からプログラミング言語である」
  • Man page of EXPAND

    kits
    kits 2018/10/18
    タブを空白に展開するコマンド
  • UTF-8環境で GNU Screen の日本語表示が崩れる件 - OSのようなもの

    イントロ Debian lenny の screen は UTF-8環境だと日語を上手く表示してくれない。問題発覚当初 putty や emacs を疑ったが,こいつらには何の罪も無かったんだ。そう,黒幕は screen だった。ここでの環境は次の通り。 Debian lenny PuTTY 0.60 ごった煮版 GNU Screen 4.0.3 この問題は Unicode の曖昧な文字幅(East Asian ambiguous char width)に起因するものらしい。大抵のソフトウェアは独自の方法でこの問題を解決していて,具体的に emacs や vim はユーザーがオプションを加えることで UTF-8環境で日語を正常に表示できる。 screen には GNU Screen - bug #16666 の cjkwidth パッチがあるのだけど,Debian lenny の sc

    UTF-8環境で GNU Screen の日本語表示が崩れる件 - OSのようなもの
    kits
    kits 2018/07/26
    cjkwidth on
  • Unixコマンド”yes”についてのちょっとした話 | POSTD

    知っているUnixのコマンドで一番シンプルなものは何ですか? 例えば echo という、stdoutに文字列を出力し true を返す – すなわち常に0の終了コードで終了するシンプルなコマンドがあります。 シンプルな、と言えば yes もそうでしょう。引数なしで実行すると、改行されたyが無限に出力され続けます。

    Unixコマンド”yes”についてのちょっとした話 | POSTD
    kits
    kits 2017/11/09
    yes コマンドの進化
  • プロセスが使ったメモリー量を調べる - Qiita

    tips: perl スクリプトが使うメモリ量を調べる方法 - Qiita ちょうど書こうと思っていたネタが投稿されていたので。 メモリー量とは RSSとVSSというのがあって RSSは実際に確保した量、VSSは割り当てたけど使っていない量というもの。 稿ではRSSの値を取る。 詳しくは以下リンク先他を参照のこと。(詳しくはggr) Linuxトラブルシューティング探偵団 番外編(2):減り続ける利用可能メモリ……そしてついにリブート! (2/3) - @IT プロセスが現在使っているメモリー量 tips: perl スクリプトが使うメモリ量を調べる方法 - Qiita の通りである。 $ cat a.pl #!/usr/bin/perl my $a = "x" x 10_000_000; while (1) { sleep 1; } $ ./a.pl & $ ps -o pid,rss

    プロセスが使ったメモリー量を調べる - Qiita
    kits
    kits 2017/05/15
    time コマンド
  • ZFS - スナップショットいつやるか?今でしょ! - Qiita

    こういうニュースを見るたびに、こう嘆かざるを得ません。 GitLab.comが操作ミスで番データベース喪失 「ああ、ZFS使ってれば」、と。 ZFSはこれまでのファイルシステムの常識を覆す画期的なファイルシステムでした。fsckを不要にするトランザクション,パーティションという概念を過去のものにするデータセット,ファイルシステム自体のundoを可能にするスナップショット,エラーを自動検知し,可能であれば自動修復するチェックサム,RAIDホールがないRAID-Z……「Z=最後のファイルシステム」という自信がその名に込められたZFSは,今は亡きSun Microsystemsの最後の遺産でもあります 僕にZFSの話をさせると長くなります -- ので、今回はスナップショットを中心に手短に。 バックアップを難しくしているのは何か? ここで、ある小さな*nixシステムのフルバックアップを取ることに

    ZFS - スナップショットいつやるか?今でしょ! - Qiita
  • “解凍”と呼ぶのはおっさんだけ? Twitterで“解凍”派と“展開”派の争いが勃発【やじうまの杜】

    “解凍”と呼ぶのはおっさんだけ? Twitterで“解凍”派と“展開”派の争いが勃発【やじうまの杜】
    kits
    kits 2016/05/27
    tar を考えるとアーカイブ/展開、zip, gzip 等は圧縮/展開かなあ。解凍には違和感がある。
  • 入力行に時刻を付けて吐き出すフィルタ

    _ [システム運用][Perl] 入力行に時刻を付けて吐き出すフィルタ 特定のサーバに ping 打ちっ放しとか、vmstat しっぱなしということが良くあるわけですが、いずれも各行に現在時刻を付けてくれないので後でログを確認する時になかなか不自由です。 で、そういう不便なコマンドの出力結果にタイムスタンプを付加するフィルタスクリプト↓ #!/usr/bin/env perl use strict; use warnings; use POSIX; $| = 1; while (defined(my $line = <>)) { print strftime("%F %T ", localtime), $line; } を puttime.pl とかいう名前でパスの通った場所に置いて、各コマンドの出力結果を渡してやるとウマーらしいです。 例えば ping -i 1 www.yahoo.co

    入力行に時刻を付けて吐き出すフィルタ
    kits
    kits 2015/09/03
    oneliner もあり。 perl -MPOSIX -ne 'print strftime("%Y-%m-%d %H:%M:%S ", localtime), $_'
  • 大きなテキストファイルをawkで処理するときにcatで投げ込むのと、ファイル読み込みするのどっちが速いか比較 - カメニッキ

    追記が増えたので整理 経緯 2.5GBのテキストファイルを加工する必要があり、①vimで開いて加工→vim死亡②sublime textで開いて加工→sublime text死亡となったため、awkを用いて以下の様なコマンドを実行した。 $ cat sample.txt | awk '$5 ~ /((26|27|28|29|30)\/Jun|(01|02|03)\/Jul)/{ print }' > result.txt すると 「catいらなくね?」と指摘 さらにMATSUMOTO, Ryosuke (@matsumotory) | Twitter < 「キャッシュに入れて高速化してるんかと思った」 とコメントをもらいました。ので、どっちが速いかの検証です。 注意 加工の目的はログファイルからある期間だけの行を抜き取りたい 正規表現がいけてないのは気にしない 比較 awkにファイル指定す

    大きなテキストファイルをawkで処理するときにcatで投げ込むのと、ファイル読み込みするのどっちが速いか比較 - カメニッキ
    kits
    kits 2015/07/23
  • Pingプログラムの話

    The Story of the PING Program そうだ。UNIXのpingを書いたのは俺さ。pingというものは誰でも知ってるだろうが、これはある夜、俺が千行程度で書いたハックだ。 名前の由来はソナーの音だ。俺は大学でソナーとレーダーシステムの設計をさんざんやっていたので、サイバースペース的なものとは親和性が高かった。新しい分野に既存の概念を適用したというわけだ。pingはIP/ICMP ECHO_REQUESTとECHO_REPLYパケットを使って時間を測り、ターゲットマシンへの「距離」を計測する。 4.2a BSD UNIX用のPINGを書いた着想は、1983年の7月に、ノルウェイでのDARPA会議で、Dave MIlls博士からきいた話が元だ。博士はFizzball LSI-11システムで、ICMP Echoパケットの時間を計測して、経路遅延を計測したと話していた。 19

    kits
    kits 2014/10/14
    「俺の考えでは、PINGはPacket InterNet Grouperの略ではなく、ソナー用語である」
  • UNIXとLinuxの「Bash」シェルに重大なセキュリティホール

    Steven J. Vaughan-Nichols (Special to ZDNET.com) 翻訳校正: 編集部 2014-09-25 11:10 多くのUNIXおよびLinuxのユーザーに利用されている「Bourne Again SHell(Bash)」に重大なセキュリティホールが発見された。このセキュリティホールはBashによる環境変数の評価方法に起因している。ハッカーは特別に作成した変数を用いてセキュリティホールを突き、シェルコマンドを実行できる。これによりサーバはさらなる格的な攻撃に対して脆弱な状態となる。 数ある他のセキュリティホールと同様に、今回のセキュリティホールも悪用するには高レベルのアクセス権が必要だ。しかしRed Hatのセキュリティチームによると、ハッカーは特定のサービスやアプリケーションを経由することで、認証なしにリモートから環境変数を入力し、セキュリティホー

    UNIXとLinuxの「Bash」シェルに重大なセキュリティホール
    kits
    kits 2014/09/25
  • fork()は失敗するんだぜ、覚えときな

    fork() can fail: this is important あー、fork()のことね。プロセスがもっとプロセス作るためのやつな。いや、他にもプロセス作る方法はあるけどな。ま、面白い話がもうひとつあるから聞かせてやるよ。 forkは失敗するんだぜ。分かってるか? マジで分かってるか? マジだぜ。forkは失敗するもんだ。mallocと同じさ。失敗することもある。そんなに頻繁にってわけじゃないけどさ、でも失敗したら、無視できっこないぜ。ちっとは脳みそ働かせなきゃならん。 forkが0を返したら、そいつは子プロセスで、親なら正数を返すってことは、みんな知ってるよな。その値は子のpidだ。こいつを保存しといて、あとで使うってわけだ。 失敗を確認しない場合どうなるか知ってるか? そうだよ。お前多分、"-1"(forkのエラー通知)をpidとして扱ってるんだろ。 さて、問題の始まりだ。

    kits
    kits 2014/08/21
    pid -1 を kill すると鏖。
  • Big Sky :: なんでもシェルで書いちゃう男の人って...。

    « C++ の JSON ライブラリ json11 は initializer_list が綺麗。 | Main | 「便利」と「感極まってきました」だけでプログラムが書ける日語プログラミング言語「うじひさ」を作った。 » ShellScript - jq、xmllintコマンドさようなら。俺はパイプが好きだから - Qiita UNIX哲学の一つとしてよく引用されるマイク・ガンカーズの教義に 1.小さいものは美しい。 2.1つのプログラムには1つのことをうまくやらせよ。 というのがあるが、まずこれができていない http://qiita.com/richmikan@github/items/e051b5d882c3dd2a39c6 昔の UNIX で扱っていたデータはだいたい行指向でした。そして UNIX は行指向データを扱う為の OS と言っても過言ではありませんでした。 しかし J

    Big Sky :: なんでもシェルで書いちゃう男の人って...。
    kits
    kits 2014/07/31
  • Linuxのジョークコマンド11個をまとめてみた | 俺的備忘録 〜なんかいろいろ〜

    Linuxで使えるジョークコマンドってどんなのがあるんだろう? ということで、ちょっと調べてまとめてみた。 はっきり言って実用性は皆無なので、間違ってもメインのサーバやマシンには入れちゃダメだぜ! 1.sl ジョークコマンドとして定番。実行すると、AAのSL列車がコンソール上を走り抜ける。 インストールは以下。 debian系の場合 apt-get install sl Redhat系の場合 yum install sl 実行した結果がこちら。 一応、オプションが4個ほどついてるのでその紹介。 -a …小さい人?が助けを求めるようになる -l…SLが小さくなる -F…SLが画面上の方に移動するようになる -e…SLが走っている最中に「Ctrl + C」で離脱できるようになる オプションは組み合わせて使うこともできる。 2.cowsay AAで表示されるウシに、引数で記述した内容を喋らせると

    kits
    kits 2014/06/26
    banner はログを見易くするためのものと思う。
  • /usr/local とは何なのか - 破棄されたブログ

    ご用心: この記事を鵜呑みにせず、末尾に記載された一次ソースを確認してください。 ソースからソフトウェアをビルドしてインストールするときに使う /usr/local ディレクトリだけど、/opt ディレクトリとの住み分けとか、 そもそも標準はどうなっているのかとか、まともに知らんかったので Filesystem Hierarchy Standard を確認してみた。 /usr/local は何をすべきところなのか? 他のホストと共有されない 既存のシステムの破壊防止 FHS 準拠のソフトウェアをインストールする /usr/local ディレクトリ下自体が FHS 準拠になる /usr/local ディレクトリは、システム管理者がソフトウェアをローカルにインストールするために用いる。 /usr/local ディレクトリとして隔離されるため、同名のファイル名で既存のファイルを上書きするなどして

    /usr/local とは何なのか - 破棄されたブログ
    kits
    kits 2014/05/06
  • naoya_itoの火を噴いたシェルtips - Togetterまとめ

    naoya @naoya_ito シェルでパスワード入力プロンプトでるじゃないですか。途中まで打って間違えたとするじゃないですか。Ctrl + u 打つとリセットできるの知ってた? 俺は知ってた 2014-04-07 19:40:06

    naoya_itoの火を噴いたシェルtips - Togetterまとめ
    kits
    kits 2014/04/21
    Ctrl+u, Ctrl+w, Ctrl+a, Ctrl+e は便利。
  • 読み取り権限がなく実行権限だけのファイルが実行できるのはなぜ? - カーネルのソースを読む - - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    きっかけはこのツイート。 基礎的なことなんだろうけど理解できてないこと。 読み取り権限のない実行権限だけのファイルってどういう扱いになるんだろう。— ゑぬぽい改@電探が出(ん)たん? (@NPoi) March 27, 2014 実際にやってみるとわかるけど、実行権限だけついてるファイルは実行可能です。でも、「読み込めないのに実行できる」というのは直感に反するような気もしますね。だって、実行するためにはプログラムをメモリに読み込む必要がありますから!ではなぜ実行権限だけのファイルが実行できるのか、その仕組みを解説します。 実行とはなにか、どういう仕組みなのか Linux において実行とは「forkしてexecする」です(そのへんの詳しい話は プロセスさん を読もう!)。 fork も exec もシステムコール(正確には execve がシステムコールで exec はそのフロントエンドだけ

    読み取り権限がなく実行権限だけのファイルが実行できるのはなぜ? - カーネルのソースを読む - - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    kits
    kits 2014/03/28
    「execシステムコールはファイルの実行権限だけをチェックして、読み込み権限はチェックしないから」「インタプリタが実行するやつは実行フラグだけでは実行できません」
  • なぜ gcc はファイルの最後に改行がないと警告を出すのか? - Schi Heil と叫ぶために

    gcc が出す以下の警告。消すのは簡単で EOF に改行を一つ入れれば良い。でもこれ何が悪いのか分からなかった。 warning: no newline at end of file コンパイラが出す警告だから絶対に何か意味があるはず。調べてみると意外にもテキストファイルの定義にたどり着いた。 ということで POSIX 的に行は改行で終了していて、テキストファイルは行の集合だからファイル末尾には必ず改行が来ると。 Text File / Line - odz buffer Definitions - 3.392 Text File Definitions - 3.205 Line つまり POSIX はテキストファイルにもちゃんと定義を定めていて、最後に改行が無いファイルはその定義に違反するから警告を出す。 There is also some confusion as to whethe

    なぜ gcc はファイルの最後に改行がないと警告を出すのか? - Schi Heil と叫ぶために
    kits
    kits 2014/02/28
    POSIX によるテキストファイルの定義。
  • GNU grep 2.18リリース: 10倍速くなったと思ったら今度は200倍遅くなっていた | はむかず!

    先日の記事 いまさらgrepが10倍高速化したのはなぜか が思わぬ閲覧数を稼いでしまい、トルコ語の知識を日に広めるのに大きな貢献をしたような気がしますが、みなさんいかがお過ごしでしょうか。 実は先日の記事を書いた時にはすでに2.18がリリースされてたのだが、今回は2.17のときと違って日の大手メディアが取り上げてなかったので、ついつい見落としていた。しかし実は2.18でも大きな変更が!! リリースノート抜粋: grep -i in a multibyte, non-UTF8 locale could be up to 200 times slower than in 2.16. [bug introduced in grep-2.17] なんということでしょう。-iオプションでUTF8のときは2.17で10倍速くなっていたのだが、それ以外のマルチバイトロケールのときは200倍遅くなって

    kits
    kits 2014/02/27
    遅くなっていた(けどもう直したよ)、という話。
  • いまさらgrepが10倍高速化したのはなぜか – はむかず!

    最近GNU grepコマンドの最新バージョンがリリースされ、速度が10倍になったとのアナウンスがあった。それを聞いて、なんであんな枯れた技術に10倍もの高速化の余地があったのだろうと不思議に思った人も多いだろう。 ニュース記事:grepコマンド最新版、”-i”で10倍の高速化 家のリリースノート:grep – News: grep-2.17 released [stable] 今回のリリースでは正確には、マルチバイトロケールで、-iオプション(–ignore-case、つまり大文字小文字を区別しないオプション)をオンにした時の速度が10倍くらいになったそうだ。 なぜそんなに速くなったのか?逆を言えば今までなぜそんなに遅かったのか? そもそも、多くの日人にとって「大文字小文字の区別」というと英語のアルファベットか、せいぜいフランス語とかドイツ語とかのアクサン記号・ウムラウトがついたものく

    kits
    kits 2014/02/25
    (-i 使用時)「『foo』という文字列を検索するときは『[fF][oO][oO]』という正規表現に変換してから検索」