タグ

shに関するhiro7373のブックマーク (42)

  • シェル芸の可読性を向上させるマルチライナー記法のススメ - Qiita

    マルチライナー記法とは? マルチライナー記法とは、その名の通りシェル芸をワンライナーではなくマルチライナー(複数行)で書くことです。長すぎる行をワンライナーで書くと以下のように横スクロールが必要になって非常に読みにくくなります。(コードは Convert long single line command to a bash shell script より借用。長いコードとして利用しているだけで中身に意味はありません)。マルチライナー記法はこのようなワンライナーを読みやすく書くことです。 nice --20 iperf3 -c somelocation.com -f k | while IFS= read -r line; do echo "$(date) $line"; done | tee onespeed.txt | tee -a speeds.txt; sleep 30 ;cat o

    シェル芸の可読性を向上させるマルチライナー記法のススメ - Qiita
    hiro7373
    hiro7373 2023/12/26
  • macOS の zsh ではこれだけはやっておこう

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

    macOS の zsh ではこれだけはやっておこう
    hiro7373
    hiro7373 2023/04/27
  • シェルスクリプトの [ ] と [[ ]] の違いを歴史的に解説 〜 言語設計者の気持ちになって理解しよう - Qiita

    はじめに bash などのシェルには [ ... ] と [[ ... ]] の二種類の比較方法があります。一つはコマンド、もう一つはシェルの文法なのですが、具体的にはこの二つは一体何が違うのでしょうか? そもそもなぜ似ている機能が二つもあるのでしょうか? この記事は言語設計者の気持ちになって考えることで、その理由を解き明かそうという記事です。 なお、違いについての簡単な説明については「test と [ と [[ コマンドの違い - 拡張 POSIX シェルスクリプト Advent Calendar 2013 - ダメ出し Blog 」の記事がよくまとめられていますので紹介します。一通りの違いを素早く知りたい方はこちらを参照してください。 参考 シェルの歴史や種類については「シェルの歴史 総まとめ(種類と系統図)と POSIX の役割」に詳しくまとめています(系統図とか頑張って書いたので見

    シェルスクリプトの [ ] と [[ ]] の違いを歴史的に解説 〜 言語設計者の気持ちになって理解しよう - Qiita
    hiro7373
    hiro7373 2022/11/07
  • シェルスクリプトで安全簡単な二重起動防止・排他/共有ロックの徹底解説 - Qiita

    はじめに シェルスクリプトで二重起動防止やロックをする方法を検索すると、いろいろな方法や書き方が見つかりますが、どれを使えばよいのか、当に正しく動くのか、不安になりますよね? ディレクトリ (mkdir) やシンボリックリンク (ln) を使った独自実装の例も見かけますが、エラー発生時や予期せぬ電源断、CTRL+C で止めたときなどでも問題は発生しないのでしょうか? まず、ディレクトリやシンボリックリンクを使った独自実装はしない。これを肝に銘じてください。シェルスクリプトでのロック管理はとても難しく、一般的な排他制御の知識に加えて、シェルスクリプト特有の問題、シグナルやトラップ、サブシェルや子プロセスの問題、さらには特定のシェル固有の仕様やバグなどさまざまな問題に対処する必要があり大変です。独自実装の例では古いロックファイルが残ってしまい、それをいつどのタイミングで片付ければ安全なのか?

    シェルスクリプトで安全簡単な二重起動防止・排他/共有ロックの徹底解説 - Qiita
    hiro7373
    hiro7373 2022/09/28
  • なぜ今シェルスクリプトを学ぶのか・シェルスクリプトのTips - 理系学生日記

    会社の中でシェルスクリプトについての話をすることにしたので、このエントリはそのためのものです。 個人的な好みとかもいろいろ入ってしまっているので、そのあたりは取捨選択してください。 なぜ今シェルスクリプトを学ぶのか 公開されているSREをマルっとPDF化する SpotBugsのViolationレポートをMerge Requestのコメント投稿する ぼくの互換性についての考え方 何で書くか シェルスクリプトをうまく書くには ShellCheckを使う バッドパターンとその修正 line-by-lineの処理が多い lsを使う ls /directory | grep mystring ls | grep -v 'log$' lsの結果をループさせる 良いシェルスクリプトを書くためのTIPS set -euする 文字列は基的にクオートする 局所変数にはlocalを使う 定数は読み取り専用

    なぜ今シェルスクリプトを学ぶのか・シェルスクリプトのTips - 理系学生日記
    hiro7373
    hiro7373 2022/05/01
  • POSIX 準拠のシェルスクリプトでは find | xargs よりも find -exec {} + を使うべき! - Qiita

    POSIX 準拠のシェルスクリプトでは find | xargs よりも find -exec {} + を使うべき!ShellScriptBashshellPOSIX はじめに find の出力を xargs にパイプで渡すというのはよく見かける使い方ですが、find -print0 | xargs -0 が使えない POSIX 準拠のシェルスクリプトでは find -exec {} + を使った方が良いです。安全かつ十分に速いからです。よく見かける -exec {} ; ではなく -exec {} + ですので間違えないようにしてください。多くのケースでは + の方が優れているのですが ; ばっかり使われているのを見ると、意外と知られてない気がします。 少しだけ予備知識として、-exec {} ; は -exec {} \; と ; をバックスラッシュでエスケープするのがよく見る使い方

    POSIX 準拠のシェルスクリプトでは find | xargs よりも find -exec {} + を使うべき! - Qiita
  • diffコマンドを便利に使う

    configファイル修正したり、ソースをいじった際によくdiffコマンドを使って変更点を確認しますよね。 オプション無しで実行すると見にくいけど、あるオプションを付けてやると gitっぽく出力してくれたり、WinMergeっぽく出力してくれるようになります。 覚えておくと便利なので、ぜひ見ていってください。 オプション無し オプション無しでdiff を叩くと以下のように出力されます。 見にくい・・ 慣れない人が見るとなんじゃこりゃとなりそうですね。 [root@bacchi ~]# diff /etc/ntp.conf.orig /etc/ntp.conf 8,9c8,10 < restrict default kod nomodify notrap nopeer noquery < restrict -6 default kod nomodify notrap nopeer noquer

    diffコマンドを便利に使う
    hiro7373
    hiro7373 2018/02/11
  • シェルスクリプトを書く際に気を付けていること8箇条 - カイワレの大冒険 Third

    エンジニアという職業柄かシェルスクリプトを書くことはちょくちょくあるのですが、自分なりに気を付けていることを備忘録&自分への戒めも含めて、簡単に書いてみたいと思います。 変数は大文字 シェルスクリプト書いていれば変数の出番は至るところであるでしょう。その際、可読性を増すように、変数は大文字を使っています。 RET=`cmd1`みたいに。好みの問題もあるでしょうが、分かりやすいので。 クオテーションは選ぶ クオテーションにはシングルだったり、ダブルだったり色々ありますが、使い分けておいたほうがよいでしょう。 変数の展開がないようであれば、シングルクオーテーションのほうがスマートでしょうし、展開があるのならダブルクオーテーションを使えばと。 ダブルクオーテーションを使うのにも意味があって、変数は「$RET」のようにクオテーションで囲まなくても動作はたいていするのですが、 echo "${RET

    シェルスクリプトを書く際に気を付けていること8箇条 - カイワレの大冒険 Third
    hiro7373
    hiro7373 2012/02/25
  • テキストファイルを処理するときのUnixコマンドまとめ - nokunoの日記

    個人的にテキストファイルを処理することが多いのですが,簡単な処理ならUnixのコマンドをパイプとリダイレクトで組み合わせてできることが多くあります.今回はそんななかでもちょっとマニアックなTIPSをまとめてみました. sortコマンドでタブ区切りのファイルを指定する最近知って驚愕したのがこれ.sortコマンドでタブ区切りのファイルを指定したいときは,Ctrl+v Tabでタブ文字を入力していたのですが,$ sort -t $'\t' -k 2,2 のようにしてタブ区切りで2番目のキーでソートすることができます. 1000行おきにデータをサンプリングする1000行おきにファイルからデータをサンプリングしたいときとかは,perlでワンライナーを書くのが速いようです.$ perl -ne '$i++; print unless ($i % 1000)' 某所のコードゴルフによるとこれだけ短くでき

    hiro7373
    hiro7373 2012/01/23
  • JavaScript is not available.

    Something went wrong, but don’t fret — let’s give it another shot.

    hiro7373
    hiro7373 2010/12/24
  • IDEA * IDEA

    ドットインストール代表のライフハックブログ

    IDEA * IDEA
    hiro7373
    hiro7373 2010/12/15
  • OS X service to filter selected text through a shell command

    The UNIX shell provides a host of extremely useful utilities for modifying text. This OS X Automator service makes all of them available for filtering text in all OS X applications. This can be handy for performing quick operations, like replacing text with regular expressions, sorting lists or swapping fields around. When triggered, the service requests a command to use for filtering, then runs t

    hiro7373
    hiro7373 2010/11/06
    選択したテキストにコマンド適用してくれる
  • こんなところでも使えるMacのターミナルコマンド (1/2)

    連載「Apple Geeks」は、Apple製ハードウェア/ソフトウェア、またこれらの中核をなすOS X/iOSに関する解説をあますことなくお贈りする連載です(連載目次はこちら)。 UNIX使い向けをはじめ、Apple関連テクノロジー情報を知りつくしたいユーザーに役立つ情報を提供します。 新しいiPod nanoとshuffleが出ました。特にnanoは惹かれますね、あの小さなサイズでタッチスクリーンですから。米Apple音楽イベントでJobs氏も触れていましたが、腕に巻くベルトに取り付けて時計アプリを起動し、「なんちゃって腕時計」にするとどうですかね。カッコ悪いか……。 さて、今回は「コマンド実行環境」について。標準装備のTerminal.appを使うことが常道とはいえど、より気が利いたツールを探してナンボの連載、いろいろな方法を紹介してみたいと思う。 Xcodeの[Control

    こんなところでも使えるMacのターミナルコマンド (1/2)
  • rsync でディレクトリの同期(バックアップ) - maruko2 Note.

    rsync でディレクトリの同期(バックアップ) 提供:maruko2 Note. 移動: 案内, 検索 目次 1 書式 2 option 3 使用例 3.1 source ディレクトリ内のファイルを、backup ディレクトリへコピーする 3.2 ディレクトリの同期 3.3 SOURCE で指定するディレクトリ名の最後にスラッシュを付けるか付けないか 3.4 ssh と組み合わせリモートマシンにコピーする 4 rsync サーバ 4.1 rsyncd.conf 4.2 デーモンモードで起動 4.3 rsync サーバとの同期方法 4.4 モジュールの指定例 4.5 rsync サーバのセキュリティ対策 4.5.1 同期元アドレスを限定する設定 4.5.1.1 設定例 4.5.2 同期時にユーザー認証を必要とする設定 4.5.2.1 rsync サーバ側の設定 4.5.2.2 クライアント

  • LaunchDaemons (launchctl, launchd.plist) の使い方 - maruko2 Note.

    LaunchDaemons (launchctl, launchd.plist) の使い方 提供:maruko2 Note. 移動: 案内, 検索 目次 1 man 2 Daemon と Agent の違い 3 launchd.plist ファイルを置くディレクトリ 4 launchd.plist の記述例 5 launchd の GUI 管理アプリケーション 6 launchctl の使用例 6.1 LaunchDaemon の起動方法 6.2 OnDemand true のジョブを使用するには 6.3 ジョブの再起動 6.4 ジョブの停止 6.5 launchd.plist の修正内容を反映させる 6.6 オプション例 6.7 launchd にロードされている job の一覧 7 ASCII 形式の plist ファイルから XML 形式の plist ファイルを作成する 8 実例

  • Mac OS X(Leopard) + Time Capsule + rsyncによる遠隔地ミラーバックアップ(コロケーション)環境の構築 - my-notebook

    Mac OS X(Leopard) + Time Capsule + rsyncによる遠隔地ミラーバックアップ(コロケーション)環境の構築Time Capsule は、Time Machineのバックアップ用として使われるようにデザインされていますが、普通のNASとしても使うことができます。 今回、タイムカプセルとMacMiniを組み合わせて、ファイルサーバを構築した上で、遠隔地にあるバックアップクライアントから 自動でrsync を使ってミラーバックアップを行う環境を構築しました。(いわゆるコロケーションです。) 手順以下に、手順を簡単に整理しました。 Time Capsule を NASとして Windows,Mac OS Xクライアント混在環境で使う Time Capsuleの設定とクライアントの設定 MacMiniを sshd サーバとしてセットアップ MacMiniからTime

  • Linuxコマンドでテキストデータを自在に操る - じっくりコトコト煮込んだみかん

    Linuxでテキストデータを扱うときに、コマンドをパイプで繋げるだけでいろいろな処理ができて面白いのですが、綺麗に整理されていない気がするのでまとめてみます。ここでは、cat, paste, join, grep, head, tail, cut, awk, sed, tr, sort, uniq, wc を取り上げます。 ファイルを縦に結合 ファイルを縦に結合します。 コマンド 説明 cat file1 file2 ... file1, file2, ... を縦に結合 cat file | ... としてファイルの中身をパイプに流すのにもよく使います。 ファイルを横に結合 ファイルを横に結合します。あまり使わない?*1 コマンド 説明 paste file1 file2 .. file1, file2, ... を横に結合 join file1 file2 file1 と file2

    Linuxコマンドでテキストデータを自在に操る - じっくりコトコト煮込んだみかん
    hiro7373
    hiro7373 2010/09/19
  • UNIX系OSのサーバに対するイタズラ集 - yuyarinの日記

    随時追加 ターミナルを立ち上げたまま席を離れるとマシンにイタズラされることがよくある.とはいえシャレにならないイタズラはしても笑えないので,基的には教育的に効果があって被害の出ないものしか実際にはしない. じゃあ,たとえ root じゃなくてもどこまでえげつないことができるのか*1,今回はちょっと考えてみたユーザ権限でできる酷いイタズラを紹介する.対象はリモートログインする UNIX 系 OS を利用しているサーバ,主に Ubuntu である. ls が sl 方法 alias ls=sl sl を期待したという意見が多かったので掲載.掲載しなかったのは sl がインストールされていない環境が多く,インストールには root 権限が必要になるから.後述のバイナリを持ち込んでパスを通す方法を使えばできないことはないかも. エディターが全部 ed 方法 alias nano=ed alias

    UNIX系OSのサーバに対するイタズラ集 - yuyarinの日記
  • How To Append File Using SSH

    hiro7373
    hiro7373 2009/07/30
    scpの代わりに:アップロード cat local-source-file-name | ssh user@some.domain "cat >> remote-target-file-name" ダウンロード ssh user@some.domain "cat remote-source-file-name" >> local-target-file-name
  • find/grep/xargsコマンドを使いこなす 業務で楽するためのUNIXテクニック集「検索」編

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    find/grep/xargsコマンドを使いこなす 業務で楽するためのUNIXテクニック集「検索」編
    hiro7373
    hiro7373 2008/12/12