タグ

shellとlinuxに関するpero_0104のブックマーク (24)

  • #/usr/binとその同種の周辺を探る | POSTD

    (注:2017/04/10、いただいたフィードバックを元に翻訳を修正いたしました。) はじめに 私はLinuxが大好きです。コンピュータとのやりとりが楽しくなるし学ぶことも多くなります。OSとハードウェアの基盤となる基原則を学びたい人にとって、Linuxはとてもいい出発点と言えるでしょう。 ご存じのとおりLinuxとは大抵の場合プログラム(コマンド)を通してやりとりします。Linuxと他のUNIX系システムが持っている特徴は、コマンドラインと、パイプのコンセプトです。プログラムの提供する入力と出力を統合すれば、データを操作するのに非常にパワフルなプラットフォームになります。 Linuxのコマンド、プログラム、バイナリ(何と呼んでもいいのですが)の大部分は、/usr/bin、/usr/sbin/、/binそして/usr/local/binに存在しています。これらのディレクトリを見れば、プロ

    #/usr/binとその同種の周辺を探る | POSTD
  • シェルスクリプトを書くときに気をつけていること(その1) - mikedaの日記

    初級者向けに『自分がシェルスクリプト書くときに気をつけていること』をまとめてみました。 @masudaKの『シェルスクリプトを書く際に気を付けていること8箇条』の乗っかりエントリです。 内容は重複しないように書いてますので合わせて読んでください! 基的にLinuxの/bin/sh、/bin/bashを想定しています。 テキスト処理は標準入力から受け取って標準出力に出す テキストを扱う小さなツールを作りましょう。 引数はオプション情報を渡すのに使います。 そうすればgrep、sort、uniqなどの便利なコマンドとパイプで連携できます。 grep ERROR /tmp/test.log | my_cmd1.sh 192.168.1.1 | sort 全てを実行する1つのスクリプトを作るのはたいへんだし、応用が効かないです。 人間に伝えたいメッセージは標準エラー出力に出す パイプでつないだ時

    シェルスクリプトを書くときに気をつけていること(その1) - mikedaの日記
  • シェルのif文の条件式 - zenpouの日記

    さっきのvimと同様、自分用のシェルメモ シェルのif文で使う、if [ -e filename ]; thenとかの []はtestコマンド。 条件文に使える奴は以下の通り。 ファイル形式のテスト 式 意味 -b file file が存在し、ブロックスペシャルファイルであれば真。 -c file file が存在し、キャラクタスペシャルファイルであれば真。 -d file file が存在し、ディレクトリであれば真。 -f file file が存在し、通常ファイル (regular file) であれば真。 -h file または -L file file が存在し、シンボリックリンクであれば真。 -p file file が存在し、名前付きパイプ (named pipe) であれば真。 -S file file が存在し、ソケットであれば真。 -t [fd] fd が端末でオープン

    シェルのif文の条件式 - zenpouの日記
  • シェルの変数展開 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    シェルの変数展開 - Qiita
  • UNIXシェルスクリプトメモ(Hishidama's UNIX shell script Memo)

    -xを付けると実行内容を表示しながら実行する。[2008-11-29] bash -x スクリプトファイル -nを付けると、実行せずにファイル内の構文解析(エラーの有無のチェック)を行う。[2008-11-29] bash -n スクリプトファイル . スクリプトファイル 現在実行中のシェルと同じシェルを使ってスクリプトを実行する。 スクリプトの中で環境変数を設定した場合、現在のシェルの環境にも影響する (スクリプトの中で定義した環境変数が実行元でも有効になる)。 ファイルに実行権限(chmod +x)が付いている場合は、以下のようにして実行できる(相対パスで指定している)。 ./スクリプトファイル ファイルに実行権限(chmod +x)が付いており、かつ環境変数PATHにカレントディレクトリ「.」が含まれている場合は、以下のようにして実行できる。 スクリプトファイル シェルスクリプトの書

  • シェルスクリプトを書くときはset -euしておく - Qiita

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

    シェルスクリプトを書くときはset -euしておく - Qiita
  • [Linux]コマンドでファイルに行の挿入をする方法 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    [Linux]コマンドでファイルに行の挿入をする方法 - Qiita
    pero_0104
    pero_0104 2016/07/26
    検索引っかからなくてないてた ありがとう
  • シェルプログラミングの基礎知識 | Shinta's Site

    UNIX のコマンドインタプリタである Bourne shell を知っておかないといろいろ困るので基的なことをメモしておく。ここでは、コマンドをバッチ処理するための シェルスクリプトについて記述しています。 #!/bin/sh UNIXでスクリプトを記述する場合、一番初めの行は #!(shebang)ではじめます。さらに、シェルスクリプトであることを明確にするためにコマンドをフルパスで記述します。シェルスクリプトでは、#!/bin/sh となります。Bourne shell の場合、初めの行が : (コロン)のみでもよいが、現在あまりこの記述は使われていない。また、#! /bin/sh というように #! の後に半角スペースを入れても動作する UNIX システムもあるが、互換性を考えると半角スペースは入れないほうがよい。 コメント行と改行 # 以降コメントとなり、\ を利用して複数行を

    pero_0104
    pero_0104 2016/05/27
    “echo "arg 1 : $1"”
  • bashのキーバインド(キーボードショートカット) まとめ - readlineとbind、ついでにstty編 - うまいぼうぶろぐ

    復習がてらまとめてみた。今さら感たっぷりでたぶん100番煎じぐらいだけど。きっかけは単語単位でカーソルを移動させる(M-f,M-b)方法が知りたかっただけなんだけど。せっかくなのでどこで、どういう風にキーバインドが割り当てられているかを調べた。 versionはdebian4のbash 3.1.17。 readlineとbind(組み込みコマンド) man bashのreadlineとbindの項目参照。readlineはシェルの入力を処理するライブラリ。bashは組み込みのコマンドでreadlineの割り当て設定確認/設定変更が出来る。 端末ラインのキーバインド さて、さっそくbashのキーバインド…の前に、シェルとは別の端末のキーバインドもまとめておく。bashとは直接関係ないけど、端末をCLIの操作をキーバインドで行うという意味では、ほぼ同じなので。 有名なのはプロセスを割り込むC-

    bashのキーバインド(キーボードショートカット) まとめ - readlineとbind、ついでにstty編 - うまいぼうぶろぐ
  • bashが起動時に実行するファイル

    現在、Red Hat Linux 9を利用しています。ホームディレクトリに「.bashrc」や「.bash_profile」というファイルがあるのですが、これは何でしょうか? ご質問にあるファイルは、どちらもユーザーのホームディレクトリに置かれ、シェルが起動するときに実行される初期化ファイルです。 シェルには、大きく分けて2つの役割があります。まず1つ目は、ユーザーがコマンドを実行するためのコマンドライン環境を提供し、ユーザーとOSの中枢であるカーネルとのインタフェースの役割を果たすことです。 もう1つは、ユーザーがログインを行った際に、環境を整えるためにさまざまなファイルを実行し、初期化を行うことです。初期化のために実行されるファイルはシェルの種類によっても異なり、今回ご質問にあるファイルはbash(Bourne Again SHell)が起動されるときに実行されます。 以下では、bas

  • Windows 10のbash on Windowsを試す - kkamegawa's weblog

    はじめに blogs.windows.com Windows 10のInsiderビルド14316が公開されました。//Buildで発表されたbash on Windowsも入っています。bashなのでbashそのものの挙動はともかく、Windowsで実際にどう見えるのか確認してみます。ベータなので将来変わると思いますので、その点はよろしく。 インストール 初回起動時のbash.exeはコンソールのストアアプリ(Windows Runtimeを使うアプリ)のようで、ちょっと違います。ご注意。公になるものでは初めてのWindows Runtimeを使ってストアにアクセスするコンソールアプリケーションってことになるんでしょうか。理屈上はできることはわかっていましたが。 まずはプログラムの追加と削除からWindowsの機能で「Windows Subsystem for Linux」を追加します。

    Windows 10のbash on Windowsを試す - kkamegawa's weblog
  • 「シェルスクリプト」を「シェル」と呼ぶ人のスキルは著しく低い傾向があるらしいので区別できるように調べた - snowlongの日記

    シェルについて調べてるといきなりノックアウトされた。 当ページ管理人のネット上・実社会での観測結果によると、「シェルスクリプト」を「シェル」と呼ぶ人のスキルは著しく低い傾向がある。 区別ついていましたか? 「いや、シェルスクリプトって長いからシェルって省略してただけだし…」 ではシェルって何ですか? シェルとシェルスクリプトについて違いを教えてください。 「・・・」 というわけで調べてみた。 シェルとは シェルはOSとユーザのやり取りを仲立ちするためのものである。 ユーザーが直接OSを操作して、システム全体におよぼすような致命的なエラーを発生させるといったことを回避するために、OSの外殻(貝殻・シェル)として存在する。 つまりOSをユーザから守るための殻だったってことだ。 シェルにはCLIベースのものとGUIベースのものがある。 前者の例としてはBourne Shell(sh)やBourn

    「シェルスクリプト」を「シェル」と呼ぶ人のスキルは著しく低い傾向があるらしいので区別できるように調べた - snowlongの日記
  • Big Sky :: コマンドラインから JSON が簡単に作れるツール jo

    « golang で画像アップロードが簡単に出来る go-imageupload を使ってみた。 | Main | SQLite3でカジュアルにズンドコキヨシ » コマンドラインから JSON を扱うツールとしては jq が一般的ですが、例えば ls を実行した結果を JSON の Array にしたいであったり、コマンドライン引数から簡単に Object を作りたいといった場合には一旦考え込まないといけないくらい使い方が難しかったりします。そんな中でひょいと現れたのが jo です。 GitHub - jpmens/jo: JSON output from a shell JSON output from a shell https://github.com/jpmens/jo 作者である jpmens さんがなぜ jo を作るに至ったかをブログに書いています。 Jan-Piet Mens

    Big Sky :: コマンドラインから JSON が簡単に作れるツール jo
    pero_0104
    pero_0104 2016/03/09
    なにこれめっちゃ便利そう!!!
  • シェル以外からexpectしててハマったメモ - blog::wnotes.net

    また恥ずかしながらハマったメモ記事です>< シェル以外からexpectすると上手くいかなかった シェル以外、と書いてますが、今回はPHPのexec()でのケースです。おそらくcronでもなんでもシェル以外からの起動だと同じだと思います。 やりたかったこと PHPからシェルスクリプトを起動して、別のサーバに自動でscp転送をかける、ということがしたかったんです。 で、別サーバは認証鍵が必要なので、自動でパスフレーズを入力するためにexpectを使おうかなという感じで。 ※あとで知って残念な気持ちになったんですが、expectでの自動化よりも、パスフレーズ無しの認証鍵で、authrized_keysによるコマンド制限などを行う方がよりよい方法だと知りました…(´・ω・`) 以下のサイトが参考に。 ssh scp sftp の正しい自動実行方法 sshで指定したコマンドしか実行できない公開鍵を作

  • if 文と test コマンド | UNIX & Linux コマンド・シェルスクリプト リファレンス

    if 文と test コマンド if 文とは? if 文とは、与えられた条件式が真のときのみ処理を行い、それ以外の場合は処理をスキップする、などといった場合に使用される条件分岐処理である。 条件式には一般的に test コマンドを用いるが、ls コマンドや grep コマンド等の他のコマンドを用いても構わない。 if 文は条件式に指定されたコマンドの終了ステータスを判定し分岐を行う。終了ステータスが「0」の場合は真、その他の場合は偽となる。 if 文 タイプ 1

    if 文と test コマンド | UNIX & Linux コマンド・シェルスクリプト リファレンス
  • date コマンド | コマンドの使い方(Linux) | hydroculのメモ

    date コマンド 2021/01/24 現在の時刻を取得したり、設定したりするコマンド。OSが刻んでいる日時がずれている場合は、root権限でこのコマンドを使って正しい日時を設定する。 時刻の表示フォーマットを指定することもできる。 「30日後は何日か?」などの簡単な日時の計算もできる。 現在日時ではなく、処理にかかる時間を測定するにはtimeコマンドを使う。 基的な使い方 2021/01/22 # 現在の日時を表示 $ date # 現在の日時をUTCで表示 $ date -u # フォーマットは + で始まる書式で指定 $ date "+%Y%m%d-%H%M%S" # 24時間後の日時を表示 $ date -d tomorrow # -d の代わりに --date でも同じ $ date --date tomorrow # 30日後の日付を表示 date "+%Y/%m/%d"

    pero_0104
    pero_0104 2016/02/26
    未来の日付だと何しても失敗することに気づかなかった…アーメン
  • シェルスクリプトを書くときに気をつける9箇条 - Qiita

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

    シェルスクリプトを書くときに気をつける9箇条 - Qiita
  • bash では basename や dirname を使うより ${0##*/} や ${0%/*} を使ったほうが速い?|mattintosh note (跡地)

    「わたし、気になります!」的な話。 今やってる作業の途中で、install_name_tool を使ってライブラリのリンクパスを一括変換するのに以下のようなコマンドを書いたことがあった。 while read f do install_name_tool -id @executable_path/lib/$(basename $f) $f done < hoge.txt install_name_tool -id の場合はいいけど、install_name_tool -change の場合はライブラリが多いと2000行くらいになるのでかなり時間がかかる。install_name_tool が重いのかと思い、コマンドを外部ファイルに書き出して実行してみるとそれほど時間はかからない。ということは原因は basename の方っぽい。 んで、以下のようなスクリプトを書いてみた。${} 内の ##

    pero_0104
    pero_0104 2016/02/22
    うわああやっと“ ${0##*/} ”に関して書いた記事に出会えたああああああああああああ これ実行すると「-bash」が取れるけどどーなってんの??
  • 初心者向け、「上手い」シェルスクリプトの書き方メモ - Qiita

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

    初心者向け、「上手い」シェルスクリプトの書き方メモ - Qiita
  • 変数を使用する | UNIX & Linux コマンド・シェルスクリプト リファレンス

    → 他のプログラミング言語と同様に = を使用する。 シェルスクリプトでも C言語などと同様に = を使用することで変数に値を設定することができる。ただし、C言語とは違い = の前後にスペースがあってはいけない。 また、変数名の大文字と小文字は区別されるため変数 VAR と変数 var は別物として扱われる。さらにシェル変数に「型」は存在しないので、文字列や数値を区別なく設定できる。 ポイントをまとめると以下のとおりとなる。 = を使う 値の設定時は変数名の先頭に $ を付けない ($ は参照時のみ) = の前後にスペースを入れない (前後にスペースがあるとエラー) 型は存在しない (declare コマンドや typeset コマンドで似たようなことができるが推奨はしない) 変数名の大文字・小文字は区別される (VAR と var は別物) 特に「2」は初心者が犯しがちなミスなので注意す

    変数を使用する | UNIX & Linux コマンド・シェルスクリプト リファレンス