タグ

shellに関するTaROのブックマーク (21)

  • fish shell

    Finally, a command line shell for the 90s fish is a smart and user-friendly command line shell for Linux, macOS, and the rest of the family. fish will delight you with features like tab completions and syntax highlighting that just work. It will make you exclaim "Of course fish does that!".

    TaRO
    TaRO 2015/12/25
  • シェルスクリプトでコマンドの有無を確かめる

    which を使う 最初に思いついた方法. if [ `which SOME_COMMAND` ]; then echo 'found' fi # 一行で which SOME_COMMAND > /dev/null 2>&1 && echo 'found' type を使う OSに付属するシェルスクリプトを読んで技術を盗む(1/2) - @IT で紹介されていた方法. コマンドは違うが考え方は上記と同じ. if type logger > /dev/null 2>&1; then LOGGER="logger -s -p user.notice -t dhclient" else LOGGER=echo fi command -v を使う rvm がこういうふうにやっていた. なぜ builtin command というふうにわざわざやっているのかがよくわからない. command って

    シェルスクリプトでコマンドの有無を確かめる
    TaRO
    TaRO 2014/06/25
  • このタイミングでシェルスクリプトの基本を学ぶ

    よーしお前ら、今日はシェルスクリプトを勉強するぞ。シェルの種類はbashだ。ただ、他のシェルでも基は同じなので安心してくれ。 シェルスクリプトと言っても、findの使い方とかglob展開とかそういう細かいTIPSはやらん。そういうのは他の記事でも読んでくれ。そうじゃなくて、基的な処理の流れ、考え方の勉強だ。 だいたいシェルスクリプトなんて普段大してやってなくて、いざ必要になったときに「まあPerlRubyみたいなもんだろ」とか軽く考えてたらしょーもないことでハマって時間を無駄にしたりするもんだ。 なんでそんなことが起きるのか。 それはシェルスクリプトの基的な発想が分かってないからだ。PerlRubyのような普通に使われてるプログラム言語とシェルスクリプトの書き方はけっこう違うところがあって、それを理解せずに書いてしまってるからだ。 そもそもシェルとは何かもう一度思い出してみろ。

    このタイミングでシェルスクリプトの基本を学ぶ
    TaRO
    TaRO 2014/06/25
  • 使いやすいシェルスクリプトを書く

    できればシェルスクリプトなんて書きたくないんだけど,まだまだ書く機会は多い.シェル芸やワンライナーのような凝ったことではなく,他のひとが使いやすいシェルスクリプトを書くために自分が実践していることをまとめておく. ヘルプメッセージ 書いてるシェルスクリプトが使い捨てではなく何度も使うものである場合は,体を書き始める前に,そのスクリプトの使い方を表示するusage関数を書いてしまう. これを書いておくと,後々チームへ共有がしやすくなる.とりあえずusage見てくださいと言える.また,あらかじめ書くことで,単なるシェルスクリプトであっても自分の中で動作を整理してから書き始めることができる.関数として書くのは,usageを表示してあげるとよい場面がいくつかあり,使い回すことができるため. 以下のように書く. function usage { cat <<EOF $(basename ${0})

    TaRO
    TaRO 2014/05/20
  • コンソールから切れたプロセスを標準出力につなげなおす - 絶品ゆどうふのタレ

    不慣れな環境を不意にいじった時にあるあるネタ。 とりあえずー とか言って勢いで書いたsetupスクリプトを実行してみたら意外と時間かかって、 ちょっと目を離した隙にsshの接続が切れちゃいました! 。。。ありますよね。ほんとよくありますよね。 そうなる予感はあったんだ なんて後の祭りです。ふとした油断から、screenもnohupすらも使わずにやってしまって、こんなことに。 shellがHUPしなかったからプロセスは生きてるものの、ログが見れないから進行状況がわからない。 うまく行ってるのかどうかモヤモヤした気持ちのまま、プロセスが終わるのをじっと待つ。。。 まぁ実に切ないです。 こんな時、いつも思うこと。 このプロセスの出力、もっかいstdoutに繋げられたらいいのに。。。 はい。というわけでつなげましょう。 長い前座ですみません。 切り離したプロセスを用意 #!/bin/bash wh

    コンソールから切れたプロセスを標準出力につなげなおす - 絶品ゆどうふのタレ
  • とある物理の院生日誌~院生は社会へ旅立った~ 【シェルスクリプト】シャープ、パーセントを使った文字列操作

    ${#変数} で変数の文字列の長さ ${変数#パターン} 変数について、最初の部分とパターンがマッチしたら、最も短く一致する部分を取り除いた残りの部分を返す。 ${変数##パターン} 変数について、最初の部分とパターンがマッチしたら、最も長く一致する部分を取り除いた残りの部分を返す。 ${変数%パターン} 変数について、最後の部分とパターンがマッチしたら、最も短く一致する部分を取り除いた残りの部分を返す。 ${変数%%パターン} 変数について、最後の部分とパターンがマッチしたら、最も長く一致する部分を取り除いた残りの部分を返す。 例) STR=/a/b/c/d/e/hoge.10.txt $ echo ${STR##/*/} →hoge.10.txt 一番長い/~/は/a/b/c/d/e/ $ echo ${STR#/*/} →/b/c/d/e/hoge.10.txt 一番短い/~/は/a

    TaRO
    TaRO 2013/11/18
  • シェルスクリプトを書くときに気をつける9箇条 - Qiita

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

    シェルスクリプトを書くときに気をつける9箇条 - Qiita
    TaRO
    TaRO 2013/10/10
  • lsofの使い方 - プロセスが使用中のファイルを調べる - うまいぼうぶろぐ

    odz buffer - プロセスが開いているファイルを確認する ls -l /proc/`pgrep -n java`/fd lsofでも調べられます。 lsof - list open files lsof うにょうにょと結果が出てきます。が、多すぎて訳わからん。 -pオプションでプロセスID指定 ### プロセスID指定 lsof -p 12345 ### バッククォート使うとこんな感じ lsof -p `pgrep -n java` -cオプションでプロセス名指定 lsof -c java -uオプションでユーザ指定 lsof -u hoge -iオプション [@IPアドレス:ポート番号] listenしてるポートを出力。指定したポートのみ表示することもできる。 lsof -i # Listenしてるのずらずら表示 lsof -i :22 # ssh lsof -i :22,80

    lsofの使い方 - プロセスが使用中のファイルを調べる - うまいぼうぶろぐ
  • bashスクリプトだけで、ファイル名、拡張子を取得する - 作業ノート

    シェルのパラメータ展開を利用して、basename、ファイル名(拡張子なし)、拡張子を取得する方法。 #!/bin/bash path="/path/to/foo.tar.gz" echo "path: $path" basename=${path##*/} echo "basename: $basename" filename=${basename%.*} echo "filename: $filename" extension=${basename##*.} echo "extension: $extension" via シェルのパラメータ展開でスクリプト自身のファイル名を取得する Man page of BASH

    bashスクリプトだけで、ファイル名、拡張子を取得する - 作業ノート
  • 簡素なif文は一行で書く - 半径5メートル

    自分用のツールなど規約のないものなら、処理文の短い分岐は一行で書いたりします。 #!/bin/sh target=./hoge.txt if [ -f ${target} ]; then rm -f ${target} ;fi 追記:(2/4) コメント欄でもっとcoolな書き方を教えていただきました。ありがとうございます! [ -f $target ] && rm -f $target 追記:(2/13) こんなのもありなんですね。まるで三項演算子みたい。 [ $hoge = $foo ] && echo "true" || echo "false"

    簡素なif文は一行で書く - 半径5メートル
    TaRO
    TaRO 2013/07/18
  • 定期的にコマンドを実行しその出力の変化を監視する - 技術メモ帳

    以前に、watch コマンドという 指定されたコマンドを定期的に実行し、 フルスクリーンで表示してくれるコマンドがあるという事を書いた。 http://d.hatena.ne.jp/lurker/20060716/1153056030 実は、--differences とオプションを付加する事によって、 直前の出力結果との差分をハイライト表示してくれるらしい。 知らなかった。コレは便利だ。 正直 grep -o を知ったときぐらい感動した。 以下のように入力してみるとどうなるのかが わかっていただけると思う。 ちなみにこれは、1秒おきに、dateコマンドを実行するというもの。 $ watch -n 1 --differences date さらに、--differences=cumulative と付加すると 起動してからのすべての変更部分がハイライトされるようだ。 $ watch -n

  • testコマンドの使い方: UNIX/Linuxの部屋

    最終更新 2017-06-20 UNIX/Linux の test コマンドは、主にシェルスクリプトで使われる、条件判定のためのコマンドである。

    testコマンドの使い方: UNIX/Linuxの部屋
  • Linuxに使われる日々 : ファイルを連番でコピー - livedoor Blog(ブログ)

    Linuxに使われる日々 主にLinux関連の話題中心にお届けしております。 たまに、家族や友達のこと。パソコンのことなど趣味や日々の思い付きを書いてます。 < CSS3の先行実装エアコン取付 > 2005年12月22日17:35 カテゴリ業務連絡(ただの覚書) ファイルを連番でコピー My Yahoo!に追加 hoge.txt を hoge01.txt hoge02.txt hoge03.txt hoge04.txt ・ ・ ・ と連番を振ってコピーする方法 for name in 01 02 03 04 05 06 07 08 09 10 11 ・・・ ;do cp hoge.txt hoge$name.txt ;done とする。 もっとかっこいい方法があるみたいだけど、大概これで何とかなるのでよし(笑) かっこいい方法のヒント i=0;while [ $i -lt 5 ] ; do

  • SSH力をつけよう

    OSSセキュリティ技術の会 第二回勉強会 https://secureoss-sig.connpass.com/event/69314/

    SSH力をつけよう
  • シェルスクリプトはエレガントでなければならない

    /bin/shの実体としてはash(dash)、bash、kshの採用例が多い。どのシェルもBourne shellの機能に加えて、拡張機能を提供する。 FreeBSDなどの*BSD系のOSは、ashを/bin/shとして使っている。ashはPOSIX.1(POSIX:2008)にいくらかのBSD拡張機能を取り込んだシェルだ。メモリをあまり消費せず、高速に動作し、ほかのライブラリに依存することが少ない。従って、rootやレスキューシステムのインタラクティブシェル、システムのシェルスクリプトといった場面で採用されている。 Mac OS Xはbashを/bin/shに採用している。FedoraやopenSUSEなどのLinuxディストリビューションもbashを/bin/shに採用している。LinuxディストリビューションでもUbuntuやDebian、Linux Mintなどは、高速に動作する

    シェルスクリプトはエレガントでなければならない
  • lessでソースコードに色をつける

    シェルの操作中「テキストファイルをちょこっと覗きたいな」と思ったときに抜群に便利なlessコマンドであるが、普段綺麗に色付けされたソースコードを見慣れていると、モノクロのソースコードの見づらさに愕然としてしまう。結局lessを終了して他のエディタで開きなおすことになるのだが、lessでソースコードに色付け(シンタックスハイライト)できれば便利なのになーっ!と思ったことはないだろうか。そう、あるんです!lessでシンタックスハイライトする方法はあるんです!というわけで、今日はその方法を紹介しよう。 GNU Source-highlight結論から言うと、今日紹介する方法はGNU Source-highlightを使う。GNU Source-highlightを使えばイッパツだ。なのでまずGNU Source-highlightをインストールしよう。UbuntuやFedoraならリポジトリにあ

    lessでソースコードに色をつける
  • tail -f と 多段grep : 野ログはノロキュアMaxHeart

    tail -f access.log みたいな感じでログを追うことはよくありますよね。 いやでもほむほむに関するログだけでいいわー。って時は tail -f access.log | grep homuhomu みたいにしますよね。 青いのが関係するログはいらないわーって時更に tail -f access.log | grep homuhomu | grep -v sayaka みたいにしますよね。 grep1段階までなら問題ないんですが、多段のgrepをかました時にtail -f してるのにリアルタイムに出力されねー。 なんかまとめて表示されるんだけど・・・ ってなりませんか? これgrepが出力先が標準出力かどうかを見てbufferを切り替えているかららしいです。 オプションで行単位のbufferに変えられるのでパイプに対して出力しているgrepに --line-bufferedとい

    tail -f と 多段grep : 野ログはノロキュアMaxHeart
  • bash,dash,zshのreadコマンドと「while read line」のような行ごとの読み込み処理について跡地 - 試験運用中なLinux備忘録・旧記事

    (2021/9/29)記事は「bash,dash,zshのreadコマンドと行ごとの読み込み処理(while read)」へ移動した。

    bash,dash,zshのreadコマンドと「while read line」のような行ごとの読み込み処理について跡地 - 試験運用中なLinux備忘録・旧記事
  • 用語集:シェルスクリプト: UNIX/Linuxの部屋

    sh が解釈できるシェルスクリプトのことを「sh スクリプト」(シェルスクリプトまたはエスエイチスクリプト)、csh が解釈できるシェルスクリプトのことを「csh スクリプト」(シーシェルスクリプト) と呼ぶことがある。

  • zshで文字列を配列にする。 - ボクノス

    忘れそうなのでメモメモ。 % hoge="123 456" % moge=${(z)hoge} % echo $moge[1] 123${(フラグ)変数名}っぽい。 解説は、13.3.1 Parameter Expansion Flagsにあった。 ・・・無駄に高機能だ。 % hoge=(5 4 3 2 1) % echo ${(o)hoge} 1 2 3 4 5

    zshで文字列を配列にする。 - ボクノス
    TaRO
    TaRO 2011/08/10