タグ

bashに関するHHRのブックマーク (94)

  • Bourneシェルの終焉まで残り1年 ~ 新しいシェルへの移行は完了していますか? - Qiita

    はじめに 30年以上もの長い間 UNIX を支えてきた Bourne シェルも UNIX のサポート終了とともに消え去ろうとしています。みなさん、他のシェルへの移行はお済みでしょうか? 残り一年、まだ移行が済んでいないという人のために、移行のための簡単なガイドラインと各シェルの特徴をまとめました。 sh は昔は Bourne シェルのことでしたがそれも過去の話です。今どき「Bourne シェル」を解説している記事や sh のことを Bourne シェルと呼んでいる記事は情報が古い(大学関係に多い)、または古い情報を元にして書かれたか、シェルのことを正しく理解してない不正確な記事なので参考になりません。分かりやすい基準ですね。 関連記事 シェルとUNIXコマンドの未来 ~ これからの10年で起きるシェルスクリプトの変化 残り1年というのはどういうこと? Bourne シェルは POSIX に

    Bourneシェルの終焉まで残り1年 ~ 新しいシェルへの移行は完了していますか? - Qiita
    HHR
    HHR 2023/12/31
  • シェル・ワンライナー 160 本ノックを完走した - NTT Communications Engineers' Blog

    この記事は、 NTT Communications Advent Calendar 2022 4 日目の記事です。 こんにちは。 SDPF クラウド・仮想サーバーチームの杉浦です。 普段は OpenStack の開発・運用をしています。 みなさんはシェル芸と聞いてどのようなコマンドを想像しますか? 私は以下のような怖いコマンド 1 を想像していました # 無限に process を fork するコマンドです # 実行するときは自己責任でお願いします :(){ :|:& };: ですがシェル芸はもっと親しみやすくて 2 実用的なものです。 私はシェル芸のシェの字もできないくらいシェル芸初心者だったのですが、 1日1問、半年以内に習得 シェル・ワンライナー160ノック というを完走してシェル芸チョットワカルようになったので、の宣伝をしつつ完走した感想を紹介しようと思います。 1日1問、

    シェル・ワンライナー 160 本ノックを完走した - NTT Communications Engineers' Blog
    HHR
    HHR 2022/12/04
  • GoogleのShell Style Guideの邦訳 - Qiita

    背景 (Background) どのシェルを使うか (Which Shell to Use) Bash は実行が許可された唯一のシェルスクリプト言語である。 実行可能ファイルは #!/bin/bash と最小限のフラグで始めなければならない。シェルオプションの設定に set を利用することで、 スクリプトを bash script_name として呼び出してもその機能を損なわないようにせよ。 全ての実行可能シェルスクリプトを bash に制限することで、全てのマシンにインストールされた一貫したシェル言語を得る。 これに対する唯一の例外は、コーディング対象によって強制される場合である。この1つの例として、Solaris SVR4 パッケージは、どんなスクリプトにも plain Bourne shell であることを要求する。 いつシェルを使うか (When to use Shell) シェル

    GoogleのShell Style Guideの邦訳 - Qiita
  • bashのforループのin句は省略できる - 備忘録置いとく

    bashで配列内にある要素が存在しているか確認するための関数を書こうと思って,stackexchangeとかにあるかなと思って見てみたところ,見慣れないforの使い方があったのでメモする. containsElement () { local e match="$1" shift for e; do [[ "$e" == "$match" ]] && return 0; done return 1 } $ array=("something to search for" "a string" "test2000") $ containsElement "a string" "${array[@]}" $ echo $? 0 $ containsElement "blaha" "${array[@]}" $ echo $? 1 出典元: Check if a Bash array conta

    HHR
    HHR 2022/10/17
    inを省略するとfor e in "$@"と同じ。
  • シェルスクリプトで安全簡単な二重起動防止・排他/共有ロックの徹底解説 - Qiita

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

    シェルスクリプトで安全簡単な二重起動防止・排他/共有ロックの徹底解説 - Qiita
    HHR
    HHR 2022/09/30
    flock
  • macOS 10.15 Catalina でターミナルのやつが zsh になった | 林檎コンピュータ

    デフォルトのシェルが bash から zsh というものになったそうだ。 zsh は bash の上位互換だそうで、つまり良きものなのだろう。 zsh を使ってみる Mojave から Catalina へのアップグレードした場合だと bash がまだ生き残っている。すぐには zsh にならないのだ。 ターミナルを立ち上げると次のようなメッセージが表示される。 The default interactive shell is now zsh. To update your account to use zsh, please run `chsh -s /bin/zsh`. For more details, please visit https://support.apple.com/kb/HT208050. よくわかんねーながらもchsh -s /bin/zshってのをやれって書いてある

    macOS 10.15 Catalina でターミナルのやつが zsh になった | 林檎コンピュータ
    HHR
    HHR 2022/01/20
    readコマンドの互換性が無い
  • シェルスクリプトを書くときに気をつける9箇条 - Qiita

    最新の類似投稿としてシェルスクリプトのコーディングルール2014も併せてどうぞ。 2014/10/09追記 ぼくがシェルスクリプトを書くときに気にしていること、過去の失敗で書き留めたことを忘れないために。 1. グローバル変数は大文字 PATH や HOME など、環境変数が大文字なので、エクスポートする変数を大文字で書くという習慣は一般的であるような気がしますが、エクスポートする変数を抱えるシェルスクリプトを作成する機会が稀なので。 グローバル変数は大文字 ローカル変数は小文字 エクスポートする変数も大文字 関数内からグローバル変数にアクセスする場合がありますが、やはり区別していると、可読性が増すような気がするのでお勧めです。 2. awk を知る Unix 上にて文書処理をするときに、数多くのフィルタコマンド(grep、cut、tr、head、sort、uniq、sed、awk、wc、

    シェルスクリプトを書くときに気をつける9箇条 - Qiita
    HHR
    HHR 2021/08/18
    while ループで変数が変更されない罠対策
  • シェルのパイプの速度(進捗バー) は pv で - Qiita

    シェルでコマンドをパイプをつなげている時、 どれくらいの速度でパイプをデータが通過しているのか知りたい事がある。 pv コマンドを使うと分かる。 pipe viewer の略で pv らしい。 使用例

    シェルのパイプの速度(進捗バー) は pv で - Qiita
    HHR
    HHR 2021/01/09
    pvコマンド。要インストール
  • How can I repeat a character in Bash?

    Collectives™ on Stack Overflow Find centralized, trusted content and collaborate around the technologies you use most. Learn more about Collectives Teams Q&A for work Connect and share knowledge within a single location that is structured and easy to search. Learn more about Teams

    How can I repeat a character in Bash?
    HHR
    HHR 2020/12/30
    eval printf '=%.0s' {1..$(tput cols)}で幅一杯に=。evalが無いと出来なかった。zshだとeval要らなかった。
  • 【シェル芸奥義】tputを使ってみる【エスケープシークエンス】 - Qiita

    シェル芸を極めてみる。 TL;DR echo(POSIX系のターミナル)はエスケープシークエンスで色とか座標とか変えられる C言語だとncursesとかが近い tputはそのエスケープシークエンスをラップしてくれてる echoでエスケープシークエンスって? シェルのechoにはエスケープシークエンス(特殊文字)で色やカーソルの座標を変えることができます。 たとえば以下のコマンドを実行してみてください。 ね?赤色になったでしょう。つまりは、バックスラッシュeとmで番号を挟むとそれに対応した文字色や背景色、カーソル位置なんかを弄れたりするのです。 ちなみに以下をみれば他にもいろいろと弄れることがわかります。色の変更も点滅も下線とかも。 http://misc.flogisoft.com/bash/tip_colors_and_formatting で、tputって? 例えばさっきの場合は人によ

    【シェル芸奥義】tputを使ってみる【エスケープシークエンス】 - Qiita
    HHR
    HHR 2020/12/30
    tput cols
  • Bashの括弧のノウハウ(まとめ) - Qiita

    すでにQiitaにもいくつか記事があるが 1、Bashでの各種の括弧はそれぞれ意味がある。 自分でも知らなかったBashの括弧もあったので、改めてまとめてみた。 なお、Bashの話ではあるが、Bourne shell(/bin/sh)としても動くサンプルコードは sh コードとしてある。 bracket [ ] shからある伝統的なコマンドで、test と等価。式の結果を、0が真、1が偽の真偽値で返す。 if と組み合わせて用いることが多い。 そう、シェルでは[はコマンドなのである。2 [と] の前後にはスペースが必要で、後続のコマンドがある場合は;で終わらせなければならない。なぜなら前述のとおり [はコマンドで、[ から ] までが一連のコマンドと引数の組み合わせだからだ。(]は必須な引数という位置付け)

    Bashの括弧のノウハウ(まとめ) - Qiita
    HHR
    HHR 2020/11/02
  • ssh host 'history | tail' produces no output

    HHR
    HHR 2020/10/22
    ssh hoge.com 'history'しても何も出力されない。この場合bashはnon-interactiveモードで振る舞ってhistoryを保存しないから。
  • xargs を使ってカジュアルに並列処理 - たごもりすメモ

    シェルからでも重い処理というのはちょこちょこあって、例えば超デカいログファイルを移動して圧縮したりというお仕事は世界中のあらゆる場所で毎日行われていたりする。コマンドラインからでも大量の圧縮済みログファイルをいっぺんに展開したい、とか。 あるディレクトリ以下に存在するたくさんのファイルを(圧縮済みのものを除いて)全部 bzip2 圧縮したい!と思ったら、とりあえずさくっと次のようにコマンドラインで叩けばいい。 $ find . -not -name '*.bz2' | xargs bzip2 これで、まあそんなに問題なく効率的にbzip2圧縮ができる。だがしかし。 最近は複数コアのCPUが普通に転がってるし、あまつさえHyperThreadingが有効になってたりしてOSから見える論理CPU数がハンパない。普通に8とかある。その一方で複数コアを使用してくれるコマンドというのはあんまりなくて

    xargs を使ってカジュアルに並列処理 - たごもりすメモ
    HHR
    HHR 2020/07/27
    findの結果とかをサクッとxargsで並列処理できる。-Lスイッチで渡す引数の数を1にしなければならない点が嵌りポイント
  • [bash] 実行スクリプトの絶対パスの取得 - Qiita

    毎回調べてるので使い方メモ スクリプトの配置位置、実行位置を気にせずにスクリプトの実行をしたい 相対パスから絶対パスへの変換に使用する 実装

    [bash] 実行スクリプトの絶対パスの取得 - Qiita
    HHR
    HHR 2020/07/20
    おまじない。“SCRIPT_DIR=$(cd $(dirname $0); pwd) ”
  • syntax error near unexpected token `<'

    StudentAnwser=() inputScriptFile=001.sh while IFS= read -r line; do StudentAnwser+=( "$line" ) done < <( sh $inputScriptFile test.txt ) it returns a error foo.sh: line 22: syntax error near unexpected token `<' foo.sh: line 22: ` done < <( sh $inputScriptFile test.txt )' what's wrong with that? I follow the solution from other question for reading line from result

    syntax error near unexpected token `<'
    HHR
    HHR 2020/07/16
    bashの Process Substitution プロセス置換 を使いたい場合は #!/bin/bash と明示的にbashと示さなければならない罠
  • 【 shopt 】コマンド(応用編その1)――コマンドライン履歴の扱い方を変更する

    【 shopt 】コマンド(応用編その1)――コマンドライン履歴の扱い方を変更する:LinuxコマンドTips(362) 連載は、Linuxのコマンドについて、基書式からオプション、具体的な実行例までを紹介していきます。今回は、bashのシェルオプションを設定する「shopt」コマンドです。

    【 shopt 】コマンド(応用編その1)――コマンドライン履歴の扱い方を変更する
    HHR
    HHR 2019/12/12
  • bash で TCP 通信 - Qiita

    使い道あるかわからないけれど、/dev/tcp/{hostname}/{port} で TCP 通信できる。(※ただし bash に限る?) #!/bin/bash # 使い方 # $ ./http_client.sh host path # http://host/path に GET 投げる exec 3<> /dev/tcp/$1/80 echo -e "GET $2 HTTP/1.0\n\n" >&3 cat <&3 $ ./http_client.sh qiita.com / HTTP/1.1 200 OK Server: nginx/1.0.9 Date: Wed, 22 Feb 2012 01:19:59 GMT Content-Type: text/html Content-Length: 151 Last-Modified: Tue, 01 Nov 2011 15:07:

    bash で TCP 通信 - Qiita
    HHR
    HHR 2019/08/26
    /dev/tcp機能
  • Bashの便利な構文だがよく忘れてしまうものの備忘録

    Bashでスクリプトを書く場合のポイントをまとめた Bashなどで書くシェルスクリプトは文法がシンプルで覚えると便利。他のプログラム言語だと何行もかかなければならないファイル操作や中身のデータ処理を、ちょちょいと数行レベルで書けとても強力だ。コマンドとの親和性が高い恩恵だろう1。 旧来バッチ処理で領を発揮するシェルスクリプトだったが、昨今はDockerDockerfileや起動スクリプトなど)で活用される機会も多いだろう。 しかしながら他のプログラム言語ではみられない記法があったり、逆に似た書き方もあったりと、混乱しがちなのもシェルスクリプトの特徴かもしれない。 いちいちGoogle先生に確認するのもめんどうなので、このページに整理した2。 主な参照先(よくお世話になっているページ): UNIXの部屋(68user's page) - http://x68000.q-e-d.net/~

    Bashの便利な構文だがよく忘れてしまうものの備忘録
    HHR
    HHR 2019/08/19
    良資料。まず読む的な。
  • Bash: .bashrcと.bash_profileの違いを今度こそ理解する|TechRacho by BPS株式会社

    こんにちは、hachi8833です。社内Slackで見かけたmorimorihogeさんの以下の書き込みで目から鱗が落ちました。 ~/.bashrcで何かを出力してしまうと、rsyncなどのsshパイプで問題が生じることがあるそうです。 参考: 知らないとrsyncでもハマるシェル初期化 - Qiita これをきっかけに、できるかぎり一次情報を元になるべく一般的になるようにまとめてみました。 シェルスクリプト(.bashrcや.bash_profileなども含む)はあまりに自由に書けてしまい、LinuxディストリビューションやmacOSによって作法がまちまちだったりするので、外してはいけないポイントがどこかを知りたかったのでした。 対象はbashとsh(Bourne Shell)に限定します。また、デスクトップGUIの設定ファイルについては最小限にとどめます。 bashのmanページ 元記

    Bash: .bashrcと.bash_profileの違いを今度こそ理解する|TechRacho by BPS株式会社
    HHR
    HHR 2019/06/07
  • dd でディスクをコピーするよく使う例 - それマグで!

    dd コマンドはハードディスク・パーティションを丸ごと取り出します。0/1の信号のママ取り出すらしいです。ddコマンドを使えばデータをそのまま、ディスクを移動させることが出来ます。 dd でディスクからディスクへバックアップ ディスクToディスクでコピーする場合。ハードディスクの容量が同じゃないとだめ dd if=/dev/sdb of=/dev/sdc dd でディスクからイメージファイルへ HDDに空き容量があるなら、イメージファイルを作っちゃうのが後で使いやすい。 dd if=/dev/sdb of=/var/disk-img/some-winXp-hdd.img HDDに故障箇所があっても、読めるところを強引に読んでしまう。 →ディスクにエラーがあっても大丈夫 dd は多少のエラーがあると作業をやめてしまうので、故障箇所はすっ飛ばして、読める箇所をどんどん読み込んでバックアップを取

    dd でディスクをコピーするよく使う例 - それマグで!
    HHR
    HHR 2019/05/19
    ddコマンド。killall -USR1 ddで途中経過を見れる