タグ

bashとBashに関するshuuuuunyのブックマーク (62)

  • さんすけ unix 参考書(UNIX その他/2 環境変数)

    UNIX その他 2. 環境変数 について説明します。 環境変数とは、いろいろなアプリケーションが参照する定義です。特定のコマンドだけが参照する環境変数や、HOME、EDITOR などのように多くのコマンドが参照する環境変数があります。 環境変数はシェル変数と違って子プロセスに引き継がれます。 環境変数の設定方法は csh・tcsh と sh・bash で違います。ここでは csh・tcsh を前提に説明します。 % setenv 環境変数名 設定値 ( csh・tcsh の場合 : ~/.cshrc ) % export 環境変数名=設定値 ( sh・bash の場合 : ~/.bashrc ) 環境変数の参照 % printenv ..(現在設定されている環境変数が表示される)... % setenv ..(現在設定されている環境変数が表示される、bash では無効)... 例 HOM

  • Bashでファイル数を数えるには - 桝原翔市の日記

    カレントディレクトリ(というか任意のディレクトリ)以下すべてのファイル数を数えるなら大体の人が find ./ -type f| wc -l とするでしょう、おそらく。 しかし待ってほしい。パイプの細かいことは知らんけど、単純に考えるとこれだとfindから出力されたフルパスなり相対パスなりの文字列がバッファされてパイプ経由でwcがってる状態と考えられないだろうか。というかそうだよね?ためしに家のサーバの / で実行したらfindが出力した文字列は約16MBになった。これはでかすぎやしないだろうか。そこでいろいろ考えて find ./ -type f -printf 0| wc -c としてみた。これならパイプ経由で渡される文字列は259KBくらい。で、一番重要な速度はというと [root@myserver /]# time (find / -type f| wc -l) 264656 r

    Bashでファイル数を数えるには - 桝原翔市の日記
    shuuuuuny
    shuuuuuny 2014/10/19
    wc
  • なるべく書かないawkの使い方 - ザリガニが見ていた...。

    awkという、古くからのスクリプト言語がある。(1977年生まれ。読み方は「オーク」である。エイ・ダブリュ・ケイではない)man awkをPDFに変換してみると、たったの3ページ強しかない。 $ man -t awk|pstopdf -i -o ~/Downloads/awk.pdf とてもシンプルな言語仕様ではあるが、awkには必要十分な表現力がある。特にテキストを処理する場面においては、最小限のシンプルな記述で、気の利いた処理を素早くこなす。無駄のないawkワンライナーを見ると、ある種の感動を覚える。awk以降に生まれたスクリプト言語は、少なからずawkの影響を受けていると思われる。 awkを知ることで、間違いなく幸福度は上がると思う。いつかきっと「知ってて良かった」と思える時が来るはず。もっともっと、awkを知りたくなってきた。 基動作 awkの基動作は、とってもシンプルである。

    なるべく書かないawkの使い方 - ザリガニが見ていた...。
  • awk システム変数を理解(FS OFS RS ORS NF NR FILENAME) - おぼえがき

    awk 'BEGIN {FS="n"; RS="ORS="-"} {print $1,$NF}' aaaa ファイルの中身 ----------------- 1 2 3 4 5 6 7 8 9 ----------------- 以下のスクリプトの実行 ファイルの1から3 4から6 7から8をひとつのデータとして考える awk ' BEGIN { FS="n";      # カラムの区切りを改行に RS="";       # レコードの区切りを空白に(ファイルの3と4の間) OFS="*";      # 出力のデミリタ(カンマがあればOFSに変わる $1,$NFの部分) ORS="nn"     # 出力のデミリタ(改行二つが1回ごとの実行のデミリタとなる) } { print NR"." $1,$NF # NR:現在の行 / NF:1レコードの最大カラムの位置 } END { p

    awk システム変数を理解(FS OFS RS ORS NF NR FILENAME) - おぼえがき
    shuuuuuny
    shuuuuuny 2014/10/17
    awk
  • bc is ignoring scale option

    shuuuuuny
    shuuuuuny 2014/10/17
    bc
  • ex

    実用的なシェルスクリプト 実用的なシェルスクリプトでよく利用される機能について, 実験し理解しよう. 入出力制御 エラー処理 関数 コマンドライン処理 練習問題 作業の前に, bash マニュアル を開いておこう. 入出力制御 コマンドの入出力を制御するために,リダイレクトがある. 基的なリダイレクトは次の通り: コマンド < ファイル : ファイルから入力する. コマンド << 区切文字列 : ヒアドキュメント.区切文字列が入力されるまで入力を続ける. コマンド > ファイル : ファイルへ出力する.ファイルの元の内容は書き換えられる. コマンド >> ファイル : ファイルへ追加する.ファイルの元の内容の後に出力が追加される. 出力リダイレクト(出力および追加)では,後述のように, 標準エラー出力を取り扱うためのものも用意されている. また,今回は詳しく紹介しないが,入出力制御には,

    shuuuuuny
    shuuuuuny 2014/10/16
    入出力
  • ファイルの分割(split)と結合(cat)跡地 - 試験運用中なLinux備忘録・旧記事

    (2015/9/27)記事は「Linuxでファイルを分割・結合する方法(コマンド)」へ移動した。

    ファイルの分割(split)と結合(cat)跡地 - 試験運用中なLinux備忘録・旧記事
    shuuuuuny
    shuuuuuny 2014/09/29
    split
  • grepした結果をsed(正規表現置換)したかったときにMacだとハマった話 - 憧れ駆動開発

    だいたい基的にLinux前提で書かれている ググってよくみつかるのは以下のワンライナー grep -r hoge * | xargs sed -i "s/hoge/hufa/g" ハマってる話をあまり聞かない限りは、たぶんこれで基的にできるんだろう。 Macだとsedがハマる そもそもMacのsedはBSD経由のsedらしくて、GNU版のsedとは違うらしい。だから -i オプションがつかえなかった。ということでbrewでgnu-sedいれた。port版もちゃんとあるらしい brew install gnu-sedコマンドは gesd になる。あとはgnu-sedなのでいつもどおりなsedが使える。と思う あるプロジェクト以下の文字列を一括変換したかった grep -rl hoge ./ | xargs gsed -e -i "s/hoge/hufa/g"できたし!!!! @xxxxx

    grepした結果をsed(正規表現置換)したかったときにMacだとハマった話 - 憧れ駆動開発
  • findで空のディレクトリを削除する - hogehoge foobar Blog Style Beta

    たくさんあるディレクトリの中からファイルが一つも無いディレクトリ(いわゆる空ディレクトリ)を削除する方法です。 削除する方法としては、findで空ディレクトリを探して、見つかったディレクトリを削除するという方法になります。 空ディレクトリの検索はfindでファイルタイプを指定(-type d) + 空(0byte)のファイルやディレクトリを検索指定(-empty)をします。*1 ディレクトリ削除については、「xargs」「-exec」「-delete」を使う方法があります。 xargsを使用したサンプル find . -type d -empty | xargs rm -rf -execを使用したサンプル find . -type d -empty -exec rm -rf {} \; -deleteを使用したサンプル ※「-delete」オプションはBSD系(FreeBSD,Mac OS

    findで空のディレクトリを削除する - hogehoge foobar Blog Style Beta
  • [Bash]標準出力・標準エラー出力の全て(1>&2とか)まとめ | Coffee Breakにプログラミング備忘録

    標準出力と標準エラー出力についてメモ 毎回調べ直すことになっているので、メモメモ。さらに調べるのにまとまったサイトがなくて1つ1つ調べるはめになるので。まとめ シェルによって違いがあるため今回はbashに限る 前提知識 【知識0】 unixコマンドは左から右に処理される。これは絶対 【知識1】 (標準入力 : 0) 標準出力 : 1 ※画面に出力される 標準エラー出力 : 2 ※画面に出力される 【知識2】 0,1,2はファイルディスクリプタと呼ぶ 【知識3】 「>」リダイレクト シェルの結果を出力する場所を指定可能 command ファイル・ディスクリプタ> 出力先 ※commandは何らかのコマンドかshファイルとしている 【知識4】 出力先などを特定のファイルディスクリプタに送りたい場合は「&ファイル・ディスクリプタ」とする echo "standard output" >&2 【知

  • pgrep, pkillでプロセスをkillする - 右往左往ブログ

    特定のプロセスをkillするときは、いつも以下のようなコマンドを使っていました。 # ps -ef | grep java | grep -v grep root 12927 1 2 15:51 pts/0 00:00:05 java -Xmx64m -jar start.jar # kill 12927 もっといい方法はないのかと思っていたら、pgrepやpkillという方法があるのを知りました。 pgrepは、プロセス名で絞り込んだPIDを表示させることができます。 # pgrep java 12927 -lオプションの場合、コマンドが表示されます。 # pgrep -l java 12927 java ただ、複数のプロセスがある場合は、区別がつきません。 この場合は、-fオプションにより詳細が表示されます。 # pgrep -lf java 12927 java -Xmx64m -j

    pgrep, pkillでプロセスをkillする - 右往左往ブログ
  • if 文と test コマンド | UNIX & Linux コマンド・シェルスクリプト リファレンス

    if 文と test コマンド if 文とは? if 文とは、与えられた条件式が真のときのみ処理を行い、それ以外の場合は処理をスキップする、などといった場合に使用される条件分岐処理である。 条件式には一般的に test コマンドを用いるが、ls コマンドや grep コマンド等の他のコマンドを用いても構わない。 if 文は条件式に指定されたコマンドの終了ステータスを判定し分岐を行う。終了ステータスが「0」の場合は真、その他の場合は偽となる。 if 文 タイプ 1

    if 文と test コマンド | UNIX & Linux コマンド・シェルスクリプト リファレンス
    shuuuuuny
    shuuuuuny 2014/09/25
    test if
  • bashでコマンドを連続実行し、処理を監視する。 | J-Linuxer

    shuuuuuny
    shuuuuuny 2014/09/25
    while
  • bashによるシェルスクリプトの小技(2) - shibainu55日記

    前回(bashによるシェルスクリプトの小技(1))に引き続き、シェルによって自動的に値が設定される特殊な変数について紹介する。特殊な変数を参照することにより、様々な情報を取得することができる(ただし、これらの変数には自分で任意の値を設定することはできない)。 さて、まずは特殊変数を一覧でまとめてみる。お馴染みのものが多いが、最後の2つ(特に最後のPIPESTATUS)についてはきっと今まで知らなかった人もいるんじゃないだろうか。シェルの中でパイプすると途中のコマンドのリターンコード、拾えないとか思っていませんか?今回のポイントとしては、「1. PIPESTATUS変数について」と「2. 特殊変数 $@と$*の違いについて」の2点を主に説明する。 特殊変数一覧表 変数名 自動的に設定される値 $? 直前に実行されたコマンドの終了ステータスが設定される変数。正常終了の場合は「0」、異常終了の場

    bashによるシェルスクリプトの小技(2) - shibainu55日記
    shuuuuuny
    shuuuuuny 2014/09/25
    background 特殊変数 一覧
  • シェルでバックグラウンドで起動したプロセスの戻り値を取得するには - まじかんと雑記

    Bashでバックグラウンドで起動したアプリの戻り値の取得 - Linux Square 検索すればすぐ見つかるんじゃないのかと思ったが意外にも出てこない。あまり知られていない機能なので仕方がないかも。 で、どうやればよいかというと、こうする。 foo 1 & foo1pid=$! foo 2 & foo2pid=$! foo 3 & foo3pid=$! wait $foo1pid echo $? wait $foo2pid echo $? wait $foo3pid echo $? 変数 $! には最後に起動した非同期リスト (バックグラウンドプロセス) のプロセス ID が入っている。これは別の非同期リストを起動すると上書きされてしまうので、非同期リストを一つ起動するたびに個別の変数に保存しておく。 非同期リストの終了ステータス (戻り値) を得るには、保存しておいたプロセス ID を

    シェルでバックグラウンドで起動したプロセスの戻り値を取得するには - まじかんと雑記
    shuuuuuny
    shuuuuuny 2014/09/25
    background
  • 改行を置換したい | skmks

  • シェルスクリプトで小数の大小比較を行うには bc を使う - meta‘s blog(2013-06-18)

    筆者について FreeBSDを通じてOSSにささかな貢献を。 日xrdpユーザ会発起人 xrdp developer FreeBSD developer OSS活動をご支援いただける方を募集しています https://github.com/sponsors/metalefty ■ シェルスクリプトで小数の大小比較を行うには bc を使う 単に自分が知って便利だったものの覚え書き。 シェルスクリプトで整数の大小比較を行うには通常 /bin/[ (testコマンド) または同名のシェルの内部コマンドを使って、以下のようにすると思います。 $ [ 2 -gt 1 ] && echo "2 is greater than 1" test コマンドでは小数の大小比較はできないのでどうするのかというと、数値計算コマンドの bc を使ったら要件を満たすことができそうです。bc に不等号での大小比較表現

    シェルスクリプトで小数の大小比較を行うには bc を使う - meta‘s blog(2013-06-18)
  • 標準入出力すりかえのテクニック

    このシェルスクリプトはいったい何をやっているのでしょう? これは誰が何を実行して、どうして画面に文字が表示されるのでしょうか? ふだんなにげなく使っているコマンドでも、少し深く突っ込んでみるとLinux(UNIX)の仕組みや特徴が見えてきます。 実はechoは、「bashの内部コマンド」の1つであり、bash自身によって実行されています。意外に思われた方も多いかもしれません。なぜなら「echo」は外部コマンドとしても存在する(通常は/bin/echo)からです。でも、普通に設定されたLinuxで実行されるechoはbashの内部コマンドのほうです。試しにやってみましょう。 上は“--version”という文字列をそのまま表示するだけですが、下は“--version”を「バージョンを表示しろ」というオプションと理解して、/bin/echoのバージョンを表示してます。 このように内部コマンドの

    標準入出力すりかえのテクニック
    shuuuuuny
    shuuuuuny 2014/09/20
    echo
  • Man page of seq

    Section: User Commands (1) Updated: 18 June 2002 Index JM Home Page roff page 名前 seq - 単調増加 (減少) する数値列を表示する 書式 seq [-w] [-f FORMAT] [-s SEP] [--equal-width] [--format=FORMAT] [--separator=SEP] <LAST | FIRST LAST | FIRST INCR LAST> seq [--help] [--version] 説明 seq は FIRST から LAST まで、INCR ずつ加えた数値を表示する。 LAST または INCR が省略された場合、デフォルトは 1 になる。 すべての数値は浮動小数点数として解釈される。 オプション -f FORMAT, --format=FORMAT printf

    shuuuuuny
    shuuuuuny 2014/09/20
    seq
  • Linux : seq 桁数を意識した連番を生成 : MADAO Network

    [nobita@doraemon ~/aupi]$ seq -w 1 1 10 01 02 03 04 05 06 07 08 09 10

    Linux : seq 桁数を意識した連番を生成 : MADAO Network
    shuuuuuny
    shuuuuuny 2014/09/20
    seq