タグ

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

  • 接続先サーバのファイルに手を付けずに、sshで接続したインタラクティブシェルで自動的にset -uする #bash #ssh | DevelopersIO

    接続先サーバのファイルに手を付けずに、sshで接続したインタラクティブシェルで自動的にset -uする #bash #ssh こんにちは、ターミナル住人の平野です。 シェルスクリプトの先頭には原則必ずset -euをつけましょうね、 というのはいろんな所で言及されているので見たことがある人も多いと思います。 このうちset -uですが、変数が未定義の時に想定外の挙動になってしまうことが防げるので、 慎重に操作をするような場面では、インタラクティブシェルでも有効にした方がいい場面があります。 sshでEC2にログインした時これを行いたいとして、ログイン後にset -uと毎回やるのは面倒です。 もちろんこう言った設定は.bashrcに書くというのが定石ですね。 しかしバッチサーバー用途のインスタンスなどはユーザを共通で使用することも多く、 そこにある.bashrcを変更してしまうことには抵抗が

    接続先サーバのファイルに手を付けずに、sshで接続したインタラクティブシェルで自動的にset -uする #bash #ssh | DevelopersIO
  • bashコーディング規約 - Qiita

    モチベーション 一定の品質を保ちたい 書くたびに書き方が変わるのは好ましくない シェバング(shebang)は#!/bin/shではなく#!/bin/bashにする シバン、シェバンとも言われる #!/bin/shは実行環境によって様々なシェルにシンボリックリンクになっているので、bashなら#!/bin/bashと明示しよう インデントは半角スペース2つ 1行が横に長くなり折り返されないように 処理内容および使い方をスクリプト内に記載する(usage()) 何をしてくれるスクリプトか、どのように使うのかusage()関数を用意しよう ヘッダコメントでもいいけど function usage() { cat <<_EOT_ Usage: $0 [-a] [-b] [-f filename] arg1 ... Description: hogehogehoge Options: -a aaa

    bashコーディング規約 - Qiita
  • bash の初期化ファイル .profile, .bashrc, .bash_profile の使い分けと管理方針 - A Memorandum

    はじめに bash の初期化ファイル ログインシェルとは インタラクティブ(対話的)シェルとは ログインシェルとインタラクティブシェルの分類 各種環境における初期化ファイル CentOSの初期化ファイル Ubuntuの初期化ファイル macOS(Catalina以前)の初期化ファイル macOS(Catalina)の初期化ファイル 各環境におけるデフォルトの初期化ファイル 単一ファイル管理(~/.bashrc) 標準的管理(環境変数は~/.bash_profile) 厳格管理(~/.profile 利用) macOS Catalina の場合 まとめ はじめに 記事では bash の初期化ファイルと、それにまつわる運用方法について説明します。 シェル(bash)の初期化ファイルには .profile .bashrc, .bash_profile などがありますが、どこに何を定義すべきかに

    bash の初期化ファイル .profile, .bashrc, .bash_profile の使い分けと管理方針 - A Memorandum
  • netprint.sh - コマンド一つでネットプリントへ文書登録 MOONGIFT

    出先などで、突然印刷しなければならない時があります。そんな時に便利なのがコンビニを使ったネットプリントなのですが、そのUIがとても使いづらいです。ストレスを感じて諦めてしまう人も多いでしょう。 そこで使ってみたいのがnetprint.shです。コマンド一つで印刷設定を行ってくれます。 netprint.shの使い方 netprint.shを実行します。Bash4.0以降が必要です。 $ /usr/local/bin/bash netprint.sh PDF.pdf fileBody=@PDF.pdf paperSize=0 secretNumber= margin=0 mailAddress= colorMode=2 : { "resultCode": 0, "printID": "C5...J6", "detailURL": "https://www.printing.ne.jp/usr

    netprint.sh - コマンド一つでネットプリントへ文書登録 MOONGIFT
  • Batsh - Bash/Batchのスクリプトを生成するプログラミング言語 MOONGIFT

    システムの自動化を行う際によく使われるのがBashスクリプトになるでしょう。また、WindowsであればBatchファイルが使われます。macOSLinuxは同じBashスクリプトでも良さそうですが、Windows向けに別な言語で作るのは面倒です。 そこで使ってみたいのがBatshです。共通のスクリプトでBashスクリプトとBatchファイルを生成します。 Batshの使い方 デモ。文字列の定義や簡単な計算処理。右側に生成されているのはBashスクリプトです。 同じコードからBatchを生成します。 コマンドの実行。Bashスクリプト。 こちらはBatch。 ループ処理。 Batch。構文がかなり違います。 ファイルの一覧を操作する場合。 Batchだと全く異なる構文で出ているのが分かります。 BatshとBashは近い構文で出ていますが、Batchは全く違う場合もあるのが分かります。標

    Batsh - Bash/Batchのスクリプトを生成するプログラミング言語 MOONGIFT
  • Bashプロンプトとコマンド履歴をちょっとだけ見やすくする | DevelopersIO

    はじめに こんにちは、AWS事業部のニシヤマです。はいマスキュラー。 サーバを立ち上げた際にデフォルトのシェルがBashであることが多々あると思います。備忘録も兼ねてBashの時に私が実施している設定をご紹介します。 ちょっと困ること 私がデフォルトのBashの状態だと困ることとして以下のようなことがあります。 改行があるコマンドなどを実行した際にぱっと見でプロンプトとコマンドが区別しづらい 調査などでコマンド履歴を見た時にいつ実行されたコマンドなのか判別ができない やりたいこと プロンプトが区別しやすいように色を付ける コマンド履歴にタイムスタンプを付ける 結論 Linuxの場合、以下のコマンドを実行します。 $ cat << EOS >> ~/.bashrc HISTFILESIZE=10000 HISTTIMEFORMAT='%Y/%m/%d %H:%M:%S ' PS1='\[\

    Bashプロンプトとコマンド履歴をちょっとだけ見やすくする | DevelopersIO
  • 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株式会社
  • シェルスクリプトを高級言語のような書き味に近づける Tips 集 | 創作メモ帳

    Bash は言わずと知れた歴史あるコマンド言語です。テキストにコマンドの羅列を記述するだけで、手軽にシェルスクリプトとして実行することができます。 シェルスクリプトの実体はシェルコマンドの羅列に過ぎませんが、手続き型プログラミング言語にあるような制御構文も備えています。変数や条件分岐、ループ、関数などです。これらを使えばシェルスクリプトでプログラミングも可能です。 もちろん、現代の一般的なプログラミング言語と比べると機能は限られます。他の言語には見られないシェルスクリプト特有の癖や記法も数多くあり、最近の言語に慣れている人ほど、つまずくポイントが多いです。 しかし、シェルスクリプトだからこその良さもあります。Bash は現在でも多くの OS で標準シェルとして採用されており、普段使っているシェルコマンドを書くだけで動かせる手軽さは何者にも代えがたいです。一度身につけておくと長く使えるお得な

    シェルスクリプトを高級言語のような書き味に近づける Tips 集 | 創作メモ帳
  • bashスクリプティング研修の資料を公開します - エムスリーテックブログ

    こんにちは、エンジニアリングGの中村です。 以前にこのブログにてエムスリーでの社内研修について紹介しました。今回は、この中でのbashスクリプティング講座の資料を公開します。 www.m3tech.blog 弊社の中でもいろいろな用途でbashが使われていますが、bashは簡単に利用できるもののプログラミング言語としてはバグを生みやすい、辛い言語だと思います。 ここで紹介しているのはいわゆるコーディング規則というよりも、バグ防止と可読性向上のためのルールをTips集的にまとめたものです。 bashにおいてまだまだ注意するところはありそうですが、多少なりともわかりにくいスクリプトの削減になればと期待しています。 [追記: 2018-08-22] はてブにて以下のコメントをいただきました。 bashスクリプティング研修の資料を公開します - エムスリーテックブログ bashで50行以上になった

    bashスクリプティング研修の資料を公開します - エムスリーテックブログ
  • 毎日使えるBashコマンドテクニック

    Opensource.comは6月14日(米国時間)、「Bash tips for everyday at the command line|Opensource.com」において、知っていると、日常の活動においてキーストロークを減らすことができる隠し機能やショートカットを紹介した。 紹介されているテクニックは次のとおり。 複数のターミナルでbashを使っている場合、そのすべてのコマンド履歴を保存するようにする設定 shopt -s histappend 直前のコマンドを先頭にsudoを追加して実行する。管理者権限が必要なコマンドを間違ってsudoを指定せずに実行した場合に利用する sudo !! 直前のコマンドの引数を!*に展開して実行する コマンド !* コマンド履歴から該当しそうなものを探す方法 history | grep キーワード インタラクティブにコマンド履歴検索を実行 Ct

    毎日使えるBashコマンドテクニック
  • Bashスクリプトのチートシートと便利なスニペットまとめ - オープンソースこねこね

    Bashでスクリプトを書く際によく自分が使っている小技や関数などです。 またBashでは他のプログラミング言語以上に$や:などの記号の使い方が独特でググラビリティが低いので、基文法などもチートシートとしてまとめておきます。 基文法 変数と配列 制御構文 while for-in if - elif - else if文のone-liner 文字列比較 文字列が等しい (=) 文字列が等しくない (!=) 空文字、文字列長が0 (-z) 空文字でない、文字列長が0でない (-n) 数値比較 数値が等しい (-eq) 数値が等しくない (-ne) 数値がより小さい (-lt) 数値がより大きい (-gt) ファイルの判定 存在する (-e) ファイルである (-f) ディレクトリである (-d) シンボリックリンクである (-L) 関数 便利なスニペット 実行スクリプトがあるディレクトリを

    Bashスクリプトのチートシートと便利なスニペットまとめ - オープンソースこねこね
  • 闇のBashををGoに置き換える技術 / golang.tokyo #11 // Speaker Deck

    golang.tokyo #11 の発表資料です。

    闇のBashををGoに置き換える技術 / golang.tokyo #11 // Speaker Deck
  • Bashでバージョン番号をインクリメントする | DevelopersIO

    アプリのリリース作業において、ファイル管理しているバージョン番号をインクリメントする作業が往々にして発生します。 手動更新は面倒な上にヒューマンエラーのリスクも高まります。 そこで Bash でバージョン番号をインクリメントする方法を紹介します。 やりたいこと major.minor で採番されているバージョン番号に対して、Bash で minor の数字を一つ増やす Bash の知識をあまり想定せず、わかりやすさを重視 実行イメージ $ CUR_VERSION=1.9 # なにかコマンドを実行して現在のバージョン番号を取得 $ NEW_VERSION=Bash でゴニョゴニョ # ← 今回のメイン $ echo $NEW_VERSION # バージョン番号がインクリメントしていることを確認 1.10 案1: IFS を修正 実行例 $ CUR_VERSION=1.9 $ NEW_VERS

    Bashでバージョン番号をインクリメントする | DevelopersIO
  • echoコマンドで改行やタブを扱うには@Linux bash : Mazn.net

    2009年01月06日21:36 echoコマンドで改行やタブを扱うには@Linux bash カテゴリdebianecho UNIX系OSでも最も有名な部類に入るコマンドechoは、引数の文字列や変数の中身を表示することができます。つまりCでいうprintf、JAVAでいうSystem.out.printlnみたいなものですね。 # echo "hoge" hoge 改行文字\nがあってもそのまま出力します。( 環境によっては、説明文は "\"  、コマンド例には"¥"と表示されますが、同じ文字です) # echo "hoge\nhoge" hoge\nhoge -eオプションによって\nは改行として扱われます。(これはbashの場合でDebianのdashの場合は最下位の追記を参照) # echo -e "hoge\nhoge" hoge hoge ただし、ここで一つ注意。ダブルクォー

    echoコマンドで改行やタブを扱うには@Linux bash : Mazn.net
    atm_09_td
    atm_09_td 2017/09/24
    "-eオプションによって\nは改行として扱われます。"
  • [小ネタ] mkdir したディレクトリに cd する方法 9 選 +1 (BASH) ※追記あり | DevelopersIO

    $ mkdir /very/_very/Very-long/directory_name/20170915 なんて操作をしたあと、そのディレクトリにcdしたい場合ってまれによくありますよね。 どんなやり方があるか考えてみました。 1. コピペする そのまんまですが、これをやりたくなくてこの blog を書いてます。 2. TAB 補完で頑張る これも無いわけではないですが、間違えたりすることを考えると正直あんまりやりたくないです。 3. 上矢印キーで前コマンドを呼び出し、右矢印キーで先頭に戻ってmkdirをcdに書き直す よく見る方法ですが、もうすこし少ない手数でできないでしょうか。 4. 上矢印キーで前コマンドを呼び出し、Ctrl-Aで先頭に戻ってCtrl-Dx5 のあとにcd BASH のキーバインドはデフォルトだと emacs モードなので、このやり方が出来ます。 でもまだちょっと手

    [小ネタ] mkdir したディレクトリに cd する方法 9 選 +1 (BASH) ※追記あり | DevelopersIO
  • bashスクリプトをデバッグする方法 - Qiita

    #!/bin/bash exec 5> debug_output.txt BASH_XTRACEFD="5" PS4='$LINENO: ' set -x するとdebug_output.txtにログが出力される。 exec 5>はファイルディスクリプタ5番をdebug_output.txtにするという意味。 PS4はトレース出力の際に表示されるプロンプト。$LINENOにより行番号を表示している。 set -xは実行するコマンドをトレース出力させる。 元記事にはbashdblog4bash、Eclipse、Visual Studioo Codeを使う方法なども紹介されているが、これが一番手軽でほとんどの場合十分だと思う。 Register as a new user and use Qiita more conveniently You get articles that match

    bashスクリプトをデバッグする方法 - Qiita
  • Bash on Windows のショートカット実行で .bash_profile を読み込ませたい - Humanity

    ショートカットはこれ。 自分の場合 C:\Users\ユーザ名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Bash on Ubuntu on Windows.lnk にインストールされてた。 結論としては ~/.profile に -f ~/.bashrc && . ~/.bashrc を書いて BoW のショートカットのパスは C:\Windows\System32\bash.exe ~ --login(--login を追加)にすれば無事 ~/.profile が読み込まれる。 --login を指定しただけだとコンソールで色が付かなくなるが、なぜかというと ~/.bashrc で環境変数 PS1 を設定してプロンプトに色を付けている ~/.bashrc が読み込まれるのは「対話シェル(-i)」かつ「ログインシェル(–l

  • bashのシェルスクリプトで拡張子を取得して利用するときのまとめ - それマグで!

    特定の拡張子に○○する的なことはよくある シェルスクリプトを書いていると拡張子で判別したいことはよくある。 bashで拡張子を取得するには bashのブレース展開が一番ラクです。 path=/etc/apache2/httpd.conf extension=${path##*.} #=> conf 特定のディレクトリの中で拡張子を取得するには xargs と組み合わせる find | xargs -I@ bash -c 'path=@; echo ${path##*.}' そもそも拡張子の取得が必要ですか? そのシェルスクリプトで拡張子をもとに検索をしたいなら、拡張子を取る必要はないかもしれないですよ。 指定した拡張子を検索 grep . -R --include=*.php 指定した拡張子のファイルを列挙する。 find -type f -name '*.php' ファイル名がマッチする

    bashのシェルスクリプトで拡張子を取得して利用するときのまとめ - それマグで!
  • 割りと便利だけど微妙に忘れがちなbashのコマンド・チートシート - Qiita

    自分用にメモしておく コマンド実行 CMD1; CMD2, CMD1 && CMD2 ;はCMD1の結果に関わらずCMD2も実行される &&はCMD1の結果が正常な場合のみCMD2が実行される CMD1 || CMD2 - 失敗時に後続コマンドを実行する CMD || printf "%b" "MSG"でエラーメッセージを表示する エラーメッセージ表示後exit 1したい場合 = CMD || { printf "%b" "FAILED.\n" ; exit 1 } CMD || printf "%b" "FAILED.\n" ; exit 1と波括弧無しで書くと期待通り動作しない(CMDが成功時もexit 1してしまう) CMD & - バックグラウンド実行 CMD &で[1] 4592のようにジョブ番号とプロセスIDが表示される killしたければkill %ジョブ番号 か kill

    割りと便利だけど微妙に忘れがちなbashのコマンド・チートシート - Qiita
  • borg - 役立つBashスクリプトの使い方を検索

    MOONGIFTはオープンソース・ソフトウェアを紹介するブログです。2021年07月16日で更新停止しました Bashスクリプトを使えば多くのファイル操作が簡単になると分かっていつつも、そのやり方を毎回調べていたりすると非常に煩わしく感じてしまうものです。そしてついつい専用のソフトウェアを使ってしまいます。 もっとBashスクリプトを使いこなすために使いたいのがborgです。Tipsを素早く検索できます。 borgの使い方 borgをインストールした後は検索文字を -f で指定するだけです。例えばMac OSXでmd5を調べる方法について検索します。 $ borg -l 30 -f "md5 Mac" (1) How to create md5 hash in bash in Mac OS X [11] [jaypal:~/Temp] echo "this will be encrypte

    borg - 役立つBashスクリプトの使い方を検索