タグ

ShellとTipsに関するfb2kのブックマーク (37)

  • そのシェルスクリプトもうちょっとシンプルに書けそう Tips集(Golf/シェル芸ではない) - Qiita

    Shell Script Advent Calendar 2015 4日目 の投稿です。 以前から自分用にメモしていたものを文字起こししました。 はじめに 仕事でシェルを使い始めて3年くらい経ちました。 途中、pythonruby でスクリプト作ったり、ちょっと zsh に浮気したりしましたが、なんだかんだで今も Bash を使うことが多いです。 この3年間、スーパーシェル芸人(@ebanさん)にご教授頂いたり、Golfしたり(@ebanの影響)、シェル芸勉強会に参加したり(@ebanの影響)してきました。 そんな3年間のまとめとして、シェルスクリプト初めましてだった3年前の私に向けたTips集を書いてみました。 趣旨 各項目ごとに、まず初心者(過去の私がやってた)あるある実装を例示して、その次に、より良さげな実装を例示する構成としています。 実行環境 OS Mac OS X Yos

    そのシェルスクリプトもうちょっとシンプルに書けそう Tips集(Golf/シェル芸ではない) - Qiita
  • Linuxに関わる人が一度は読むべきStackOverflowまとめ - Qiita

    なぜStackOverflowか Upvote/Downvoteの仕組みにより、自然とベストプラクティスが蓄積されている 世界中のプログラマの目に晒されているため質が高い 答えが幾つか出されているため視野が広がる・一つの手法に固執することがない 英語の勉強にもなる StackOverflowのおすすめの見方 質問はまずしっかり理解する それに対する答えを比較してみて、なぜそう動くのかを考える コメント欄はFont Size的には小さいが、かなり濃いコメントが書かれていることが多いので暇なら目を通す 10. Looping through the content of a file in Bash? ファイルの内容をループで取得するためのベストプラクティス。 (2015/10/23 : 節修正しました。@heliac2000 さん、@kawazさん、ありがとうございました。詳しくは記事コ

    Linuxに関わる人が一度は読むべきStackOverflowまとめ - Qiita
  • 最強のSSH踏み台設定 - Qiita

    追記:openssh-7.3 以降なら ProxyJump や -J が使えます ホスト名を + で繋げることで多段Proxy接続も簡単に、がコンセプトだったエントリの設定ですが、OpenSSH 7.3 から ProxyJump という設定が使えるようになったので、使えるなら ProxyJump を使う方が健全だし柔軟で使い勝手も良いのでそちらを覚えて帰ることをオススメします。 使い方は簡単で以下のような感じです。多段も行けるし、踏み台ホスト毎にユーザ名やポート番号を変えることも出来ます。 # 1. bastion.example.jp -> internal.example.jp ssh -J bastion.example.jp internal.example.jp # 2. bastion.example.jp -> internal.example.jp -> super-de

    最強のSSH踏み台設定 - Qiita
  • mvにサヨナラ!renameコマンドのイケメンぶりが半端ない

    なんですかこのイケメンコマンドは ファイル名の変更、ファイルの移動と言えば mvコマンドだ。初歩の初歩だ。 複雑なリネームはパイプやシェルスクリプトで実現するものだという思い込みから、 renameというイケメンコマンドを知らずにいた!なんてもったいない! とても簡単、そしてステキすぎる実行結果 $ ls file01.txt file02.txt file03.txt file04.txt file05.txt $ rename 's/.txt/.csv/' *.txt $ ls file01.csv file02.csv file03.csv file04.csv file05.csv これだけで、すべての .txtファイルの拡張子変更ができてしまった! 見ての通りrenameコマンドは、複数ファイルを一括でリネーム、移動するときに力を発揮する。 コマンドの記法は、以下の通り。 ren

    mvにサヨナラ!renameコマンドのイケメンぶりが半端ない
  • bashのTips色々 - Qiita

    概要 bashの記法は独特なものが多く毎回ググってしまうのでまとめて(と言いつつまとまりがないですが。。。)おこうと思います。 ある程度まとまってからpostしようとか思ってたらごちゃごちゃになっちゃいました。 bashで使えるという意味なのでposixシェル共通のネタも混ざってます。 随時更新します。参考になれば幸いです。 参考 man bash リファレンスマニュアル Advanced Bash-Scripting Guide カッコ色々 bashでは色々なカッコがありますが、よく違いが分からず使っていたりするのでまとめてみます。 []と[[]] []はtestコマンドのaliasです。[[]]じゃないとできないこととしては、以下のようなものがあります。 空白を含む文字列をクォートしなくてOK var='abc 123' # []の中だとクォートしないとエラーになる [ $var =

    bashのTips色々 - Qiita
  • 初心者向け、「上手い」シェルスクリプトの書き方メモ - Qiita

    ここ最近、沢山シェルスクリプトを書くようになりました。 元々あまりシェルスクリプトを書いたこと無かったので、色々と勉強しつつ書いてるのですが、 他のプログラミング言語とはちょっと違って独特なクセというか、発見の度におぉー!ってなることが沢山あって楽しいです。 そんなわけで、最近学んだり参考にした中で特に感動したシェルの上手い書き方をまとめてみます。 きっとまだ知らないこととかもっと上手くやる方法なんかが沢山見つかりそうなので、 もっといいやり方あるよ!って方はコメントください 何もしない : (コロン)コマンド シェルを書いていた時に非常に欲しかったコマンドがこれ!何もしない! : というコマンド(?)を利用すると、何もせずに終了ステータス0(つまり正常終了)を返します。 これが様々な事に使える万能コマンドで、これによって面倒なエラー処理を簡潔にできたり、 入力や出力のリダイレクト元/先と

    初心者向け、「上手い」シェルスクリプトの書き方メモ - Qiita
  • Linuxコマンドは単語の意味を理解するとグッと身近なものになる - Qiita

    新人の頃、ファイルの中身を確認するためにcatコマンドを使ったら怒られました。当時はlessやviewなんてコマンドがあるのも知りませんでしたし、周りもcatで中身を見ていたのでそれが当たり前だと思っていました。 まぁ、でもそれもそのはず、catはcatenateの略で連結するという意味があります。というわけで、多分普段よく使っているであろう17コマンド(+2オプション)の意味を調べてみました。 2014/11/18追記 cd, pwdの追記を行い19コマンドになりました。また、@Fool_Yahooman が他の17コマンドの解説をコメントしてくださっているのでこちらも是非。 command complete expression meaning

    Linuxコマンドは単語の意味を理解するとグッと身近なものになる - Qiita
  • 名前や用途が似ているLinuxコマンドの整理 - ももいろテクノロジー

    いろいろあるLinuxコマンドを区別するためのメモ。 w系 wログイン中のユーザについて、実行中のコマンド名も含め表示する whoログイン中のユーザについて、ログイン時刻を表示する usersログイン中のユーザのみを表示する id自分の実ユーザ名、実効ユーザ名、所属グループを表示する whoami自分の実効ユーザ名のみを表示する last成功したログイン履歴を表示する lastb失敗したログイン履歴を表示する(要root権限) lastlog各ユーザの最終ログイン時刻を表示する $ w 22:44:42 up 12:19, 3 users, load average: 0.03, 0.02, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT user pts/2 192.168.56.1 21:16 2.00s 0.77s 0.00s w $ wh

    名前や用途が似ているLinuxコマンドの整理 - ももいろテクノロジー
  • Macで少し生産性の上がるBashエイリアス集 | RickyNews

    Qualityandstyle Macでは基的にターミナルを開けばShellでコントロール可能です。 これがあるから使っている!という人も多いかと思います。 Finderをターミナルにドラッグドロップするとパスが表示されたりなど、 CUIGUIの親和性も非常に高いです。さて個人的に作成した便利なエイリアス達を紹介します。 基的に~/.bashrcや~/.zshrcなどに下記の行をコピーすれば動く簡単な仕様です。 md [Linux/MacOSX] カレントディレクトリにあるmarkdownファイルを全てvimバッファに載せ開きます。 alias 'md'='vim ./*.md' 複数バッファを同時に開きますが、あまりその動きは想定していません。 現在のGitプロジェクト等ではMarkdown形式のREADMEファイルなどが必ず置かれていると思います。 そういったディレクトリに移動

    Macで少し生産性の上がるBashエイリアス集 | RickyNews
  • Webサーバーのアクティブセッション数を確認するコマンド例 - Qiita

    やっていること watch -d -n 1 "COMMAND" COMMAND を1秒毎に実行し、実行結果に変化があった場合は該当箇所をハイライト表示します。 -n … 指定した秒数ごとに COMMAND を実行します。 -d … 実行結果の差分をハイライト表示します。 netstat -alpn すべてのネットワーク状態をポート付き&名前解決なしで表示します。 grep -E ':(80|443)' 80番と443番ポートの表示を抽出します。 awk {'print $5'} 5番目の列を表示します。 netstat -alpn の場合は、左端を1番めとして順に Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name となるので、 Foreign Address (アクセス元)を表示しようとしていま

    Webサーバーのアクティブセッション数を確認するコマンド例 - Qiita
  • Dockerコンテナに入るなら SSH より nsinit が良さそう - Gosuke Miyashita

    追記 はてブでつっこみもらいました が、実行するカレントディレクトリは /var/lib/docker/execdriver/native/$id を使うのが正しいようです。(情報読み違えてた。)こちらには container.json があるので、ソースツリーからコピーしてくる必要ないですね。 また、コンテナ ID 取得は、docker ps -q --no-trunc の方が良い、とも教えていただきました。 つっこみにしたがって、最後の方の説明とシェル関数書き換えました。 つっこみありがとうございます! tl; dr タイトルまま 経緯 Docker でつくったコンテナの中に入って状態を確認するために、コンテナ内で sshd を立ち上げてアクセスする、ってなことを以前やってたんですが、コンテナ内で sshd を立ち上げる、というやり方がいまいちだし、そもそもコンテナの仕組みから考えれば

  • Vimがちょっと便利になる5つ起動オプション(おまけあり) - Qiita

    もしかしたらあなたの役に立つかもな5つの起動オプション Vimには起動オプションにも様々なものがあります。 詳しくはhelpを見れば書いてありますが、 私がたまに使ったりするものをいくつか簡単にご紹介します。 1.行番号を指定して開く 「+{num}」 test.rb の45行目を指定して開く場合

    Vimがちょっと便利になる5つ起動オプション(おまけあり) - Qiita
  • 2014年、春のGit事情 - fujimuradaisuke's blog

    なんとなく最近どんな感じでGitを使っているか、適当にリストアップしてみた。 よく使うやつ git status git status --branch --short にしている。変更されたファイルが出る。とりあえず何をしたかざっくり把握する用。sにエイリアスしている。一日100回くらい実行しているのではないか。 git diff 特にオプションは指定していない。何をしたかしっかり把握する用。dにエイリアスしている。一日50回くらい実行しているのではないか。 git grep バージョン管理しているファイルから渡した単語を含む行を検索、表示。関数の検索などあらゆる場面で超便利。オプションは --line-number --show-function --color --heading --break がオススメ。 git ls-files バージョン管理しているファイルのファイルパスを表

    2014年、春のGit事情 - fujimuradaisuke's blog
  • シェルスクリプトを書くときはset -euしておく - Qiita

    エラーがあったらシェルスクリプトをそこで打ち止めにしてくれる(exit 0以外が返るものがあったら止まるようになる)。「あっあれここでうまくいってないからデータ準備できてないのにあれあれっもうやめて!」ってなるのを防げる。 set -u 未定義の変数を使おうとしたときに打ち止めにしてくれる。Perlでいうuse strict 'vars';的なもの。 って気軽な気持ちで書いてしまって、「ん、やたら時間かかると思ったらスペルミスうわなにをするやめ」ってなるのを防げる。 一部だけ例外にしたい はてなブックマークのコメントより -e は command1 || command2 みたいなことが出来なくなるの使うことないな。-uは付けといて良いが。 確かにおっしゃるとおりですね。コマンドの失敗を考慮して書いている部分については(もしくはやたらexit 0以外するコマンドを呼ばないといけないときなど

    シェルスクリプトを書くときはset -euしておく - Qiita
  • naoya_itoの火を噴いたシェルtips - Togetterまとめ

    Naoya Ito @naoya_ito シェルでパスワード入力プロンプトでるじゃないですか。途中まで打って間違えたとするじゃないですか。Ctrl + u 打つとリセットできるの知ってた? 俺は知ってた 2014-04-07 19:40:06

    naoya_itoの火を噴いたシェルtips - Togetterまとめ
  • Perlワンライナー&マルチライナー集

    perl_oneliner_example PBV�_U P� �_U Perl ワンライナーサンプル集 ■概要 障害解析のためのログの調査、非互換対応でのソースコードの調査といった テキスト処理で使った Perl ワンライナーのサンプル集です。 Perl ワンライナーは以下の点が良いと思います。 ・PerlOracle Database (10g以降) に同梱されている。 従って、Windows プラットフォームでも使える。 ・awk、sed、grep の正規表現の書き方などをそれぞれ覚えれない。 awk、sed、grep でできることはだいたい Perl でできるので、 Perl に絞ると覚えることを減らせる。 ・最小限の労力で最大限の仕事ができる。 ちょっとしたプログラムを書くような処理でも Perl ワンライナーを 使うとたった1行で済むことがあります。 ■Perlワンライナ

    Perlワンライナー&マルチライナー集
  • zshでCtrl+wでパス文字列を/ごとに削除する - Qiita

    Help us understand the problem. What is going on with this article?

    zshでCtrl+wでパス文字列を/ごとに削除する - Qiita
  • installコマンドでコマンド数を減らす - @znz blog

    mkdir とか touch とか chown とか chmod とか個別に実行しなくても install コマンドだけでまとめて出来るという話です。 問題例 Dockerfile の RUN などが典型的な例ですが、他でも例えば mkdir -p /home/foo/.ssh; chown foo /home/foo/.ssh; chmod 0700 /home/foo/.ssh のようなことをすることがあると思います。 特に Dockerfile の場合は RUN ごとにイメージがたまっていくこともあって、 ; や && でつなげて単独の RUN にまとめて書くことも多いと思います。 install でディレクトリを作る たとえば mkdir -p /home/foo/.ssh chown foo /home/foo/.ssh chgrp users /home/foo/.ssh ch

  • おすすめzsh設定 - 2011-09-05 - ククログ

    他の人がzshを使っているのを見ていると、「もっと便利に使えるのに」と、もやっとしたり、「え、その便利な機能ってなに?」と、発見があったりします。だれかに「この設定をすると便利ですよ」と話しやすくするために、今のzshのおすすめ設定をここに記しておきます。 もし、Emacsも使っている場合はおすすめEmacs設定もどうぞ。 ディレクトリ構成 長年漬け込んできたzshの設定がそこそこの量になっているので、以下のようなディレクトリ構成にして分類しています。主に、zsh標準機能の設定と追加パッケージの設定を分けるためにこうしています。 ~ ├── .zshrc # シェルを起動する毎に読み込まれる。 │ # ~/.zsh.d/zshrcを読み込んで │ # 標準機能の追加設定を行う。 ├── .zshenv # ログイン時に一度だけ読み込まれる。 │ # ~/.zsh.d/zshenvを読み込ん

    おすすめzsh設定 - 2011-09-05 - ククログ
  • UNIX コマンドの便利な利用方法 | Shinta's Site

    UNIX の書籍などでよく目にする、 'rn(1)' や 'ctime(3)' の括弧の中に書く数字にはどういう意味があるの? Cプログラム中で関数を使うときのような書き方ですが、これは、"UNIX manual" で、該当するドキュメントがある部分を 示すためにつけられた数字です。実際に 第3章にある "ctime" について の説明を読みたいときは、"man 3 ctime (Solarisでは、man -s 3 ctime)" と、man コマンドを実行することでドキュメントが参照できます。 伝統的なマニュアルは、このようなセクションに分かれています。