タグ

Linuxとbashに関するiwwのブックマーク (58)

  • bash でコマンドの実行結果をファイルとして扱う - Diary

    プロセス置換(Process Substitution)を用います。使い方と一緒に、ぜひ名前も覚えましょう。 使い方 # 通常のファイル入力の場合 $ cat test.txt # コマンドの実行結果をファイルとして扱う場合 $ cat <(echo "hoge from echo command") hoge from echo command ファイル名を<(コマンド)で置き換えるだけです! <と(の間にスペースはいりません。 少し具体的なコマンドで見てみます diff コマンド diff <(echo 3.0+3 | bc) <(echo $((3.0+3)) ) 1c1 < 6.0 --- > 6. 片方をファイルにして、もう一方をプロセス置換にすることもできます $ cat file.txt file $ diff file.txt <(echo "content") 1c1 <

    bash でコマンドの実行結果をファイルとして扱う - Diary
    iww
    iww 2023/02/27
  • 【Linux】diffでコマンド実行結果を比較する

    この記事では次の実行例について紹介します。 コマンドの実行結果同士の比較 コマンドの実行結果とファイルの中身を比較 diffで改行が入ると差分がでてしまう問題の対策 コマンド実行結果同士の比較 結論としてはdiff <(コマンド1) <(コマンド2)のかたちで記述すれば良いです。 下記の例は同じディレクトリに対してls -lを実行しているので差分なしとなります。 $ diff <(ls -l) <(ls -l) こちらの例は、同じディレクトリに対してls -l とlsでコマンドの実行結果を比較しています。 -lオプション有り無しでは実行結果が違うので差分が出ています。 $ diff <(ls -l) <(ls) 1,2c1 < total 0 < -rw-r--r-- 1 root root 0 9月 13 21:41 hoge --- > hoge コマンド実行結果とファイル中身を比較

    iww
    iww 2023/02/27
  • suとsudoの違い - Qiita

    suとsudoはオプションの違いはあるものの、できることはほぼ重複している。 ただ、suは切替先ユーザー(root)のパスワードが要求されるのに対し、sudoは元のユーザーのパスワードが要求される。sudoは/etc/sudoersで権限を細かく設定できるので、どちらか片方だけ覚えるならsudoだけを覚えておくとよい。 オプションによって実行後のカレントディレクトリや環境変数が変わってきて、それでハマることがあるので違いをまとめておく。 (Amazon Linuxで確認。CentOSでもほぼ同じと思うが、他のディストリビューションでは違う可能性あり) コマンド .bash_profile .bashrc pwd HOME PATH

    suとsudoの違い - Qiita
  • Cシェル変数:rmstar: UNIX/Linuxの部屋

    そこで、シェル変数 rmstar をセットしておくと、rm の引数に * を指定したとき、当に消してもよいかどうか確認を求めてくる。

    iww
    iww 2022/05/20
    rm * とやったときに聞いてくる環境変数。 初めて知ったけど便利やんと思ったけど tcsh にしかないらしい。
  • [rlwrap] 任意のシェルコマンドを対話モード化する [作り直した] - Qiita

    似たようなタイトルの記事を書いてすまなんだ 今北産業 これ作った↓ ウンコードだったから作り直した rlwrapくん偉いぞ rlwrapってなんぞや readline(ターミナルの標準入力的なやつ)をラップするやつ。 名前も r(ead)l(ine)wrap からきてると思う readlineはアローキーを押したときの挙動がしょぼい。そういう悲しみを解消してくれるコマンド rlwrapをつかわないとこうなる▼ (↑↓←→↑の順で押してます) rlwrapを使ってみる sqlplusもその悲しみを背負ったコマンドらしいので、sqlplusに対してrlwrapが使われてるらしい(知らなかった)。 要するに、 ってするらしい。sqlplusを使う人はだいたい.zshrcあたりに alias sqlplus="rlwrap sqlplus"なんてしてるらしいよ 題 前に書いた これ http:/

    [rlwrap] 任意のシェルコマンドを対話モード化する [作り直した] - Qiita
  • bashのfor文のまとめ

    bashのfor文のまとめです。 ネットで調べたところ、ケース別ですぐに使えそうなサンプルが並んでいるものがなかったので、このエントリーでまとめてみました。 認識違いがありましたどこかでつぶやいてください。 なお、サンプルでは変数のカーリーブレースやダブルクォーテーションは省略しています。適宜付与してください。 1.フォーマット bashのfor文のフォーマットは for 繰り返し条件 do # ... done となっています。 次のフォーマットでも書けます(以降、このフォーマットで解説)。 for 繰り返し条件; do # ... done 2.初期値・ループ条件・ループ時の処理で指定する 繰り返し条件の部分は一般的なfor文のお作法(初期値、ループ条件、ループ時の処理)が利用できます。 for ((初期値; ループ条件; ループ時の処理)); do # ... done サンプル m

    bashのfor文のまとめ
    iww
    iww 2020/08/26
    for ((i=0; i<10; i++)); do echo $i; done は知らなかった
  • Redirect stderr and stdout in Bash

    iww
    iww 2020/08/25
    標準出力を閉じるのは exec 1<&-
  • シェルスクリプトでIPアドレスの計算 | Folioscope

    IPAM や DHCP サーバーを実装するとき、IP アドレスを機械的に生成するために、IP アドレスの計算をする事があります。 例えば IPAM がラックやデータセンターから機械的に IP アドレスを割り当てたり、DHCP サーバーが連番の IP アドレスを割り当てたりします。 この記事ではシェルスクリプトで IP アドレスを計算する方法を紹介します。 IP アドレスと数値の変換 IP アドレスを計算する上で欠かせない操作が、IP アドレスと数値の相互変換です。 IPv4 アドレスは長さ 4 のバイト列に過ぎませんが、通常は192.168.0.1 のように人間の扱いやすい文字列で表現します。 一方 IP アドレスを計算するには、IP アドレスをバイト列や 32 ビット数値などの、計算機で扱いやすい形に変換します。 IP アドレスを数値として扱えると、数値演算で IP アドレスを計算したり

  • findコマンドで無視リストを利用する - Qiita

    動機 findで.DS_Storeが引っかかるのウザすぎ!!! 無視リストをどっかから引っ張ってきたい ~/.gitignoreでよくね? 方法 下記記事がそのものズバリだった。 linux - Exclude list of files from find - Stack Overflow # .DS_Storeや*.swpが出力される $ find . -maxdepth 1 -mindepth 1 -type f ./.blanc.scpt.swp ./.DS_Store ./hoge.txt $ cat ~/.gitignore .gitignore .DS_Store *.swp *.bak .watsonrc # 展開後のコマンド: # find . -maxdepth 1 -mindepth 1 ! -name .gitignore ! -name .DS_Store ! -

    findコマンドで無視リストを利用する - Qiita
  • 【redhat linux】bash 設定ファイル読み込み順番

    [FAQ CENTER トップ] [redhat linux 技術ドキュメント トップ] linuxにおける bash 設定ファイル読み込みの順番 Redhat EL 6.2の場合 環境:RHEL 6.2 (run level 3) # cat /etc/redhat-release Red Hat Enterprise Linux Server release 6.2 (Santiago) # grep :initdefault: /etc/inittab id:3:initdefault: 以下に色々なログオンによる各bashファイルの読み込み順番についてまとめました。表内の数字は読み込まれる順番を表します。×は読み込まれない事を表します。~(チルダ)はユーザのホームディレクトリを表します。user01なら/home/user01です。

  • 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株式会社
    iww
    iww 2019/06/07
    自分用の設定とかツールをモリモリぶっこんだスクリプトを .bash_profile から呼び出すようにしてる。 最近は .profileがホームに無かったりするし、
  • inotifywait を使って,ファイルが作成されたらアクションを起こすスクリプトを書く - akihiko’s tech note

    例えば,ディレクトリ /tmp/hoge に print.ps というファイルが作成されたら,それを自動的に印刷するようにしたい場合,ファイル作成イベントを監視する必要がある. inotifywait というコマンドを使えばそれが簡単にできるので,紹介する. 次のbashスクリプトは, /pstmp というディレクトリにファイルが作成されたら,そのファイルを別ユーザアカウントで kghostview で開く,というものだ*1. #!/bin/bash # required package: inotify-tools psout_dir=/pstmp m_account=aki-yam events=(-e CREATE -e MODIFY -e MOVED_TO) while inotifywait ${events[@]} $psout_dir; do psfile=$psout_di

    inotifywait を使って,ファイルが作成されたらアクションを起こすスクリプトを書く - akihiko’s tech note
  • http://zacodesign.net/blog/?p=2077

    http://zacodesign.net/blog/?p=2077
    iww
    iww 2018/12/10
    『expectでシェルスクリプト内の変数を使う』 『変数の前後を””で囲う必要があります。』 の裏技感がすごい。 変数を囲っているのではなく逆に囲いから追い出してる。 shからexpectを起動してる方法ならではだ
  • /dev/stderr(/dev/std{in,out}も)は使うべきではない - Qiita

    実験してみよう Linuxで、一般ユーザー権限と、root権限のどちらも所有しているホストがある人は次の操作を試してみてもらいたい。 Using username "GENERAL_USER". ← 1)一般ユーザーでログイン GENERAL_USER@your.server's password: Last login: Mon Jul 13 00:00:00 2015 from your.client $ su - ← 2)rootになる Password: # su -m apache ← 3)別の一般ユーザー(例えばapache)になる bash: /root/.bashrc: Permission denied ← (とりあえずこのエラーは気にしない) $ echo HOGE >/dev/stderr ← 4)標準エラー出力に文字列を出力してみる ??? ← (果たしてどういう挙

    /dev/stderr(/dev/std{in,out}も)は使うべきではない - Qiita
  • 原理原則で理解するbashの仕組み - Qiita

    はじめに 以前書いたエントリー、重大な脆弱性(CVE-2017-5932)で少し話題になったbash4.4の補完機能の便利な点で、bash4.4からでないとタブの補完機能のソート処理が制御できないという問題について、ソースコードレベルで調べた結果をまとめていたのですが、bashの実装そのものを深く掘り下げ過ぎてしまい、内容が膨大になったので、何回かに分けて書こうと思います。 今回はbashが起動されてからインタラクティブモードでキーボードの入力を待ち受けるまでのお話です。普段使っているbashがどのような処理を行っているのか一緒に覗いてみませんか? 検証ソースコード Bash version 4.1.0(1) release GNU bashの生誕 bashのプロセスが起動されるのはOSへのログイン時にユーザーのログインシェルがbashに設定されている場合、あるいはログイン後に明示的にba

    原理原則で理解するbashの仕組み - Qiita
  • ワイルドカード指定 "*" ではドットファイルは対象にならない - THE BLUE NOWHERE

    知ってるようで知らなかったのでメモ。 結論 コマンド (ls/rm/cp/etc) のワイルドカード指定 "*" では、ドットファイル*1の名前が展開されない。 ドットファイルを指定する場合は、 ".*" のようにしなければならない。 参考 連載UNIXの教科書〜ワイルドカードを知る〜 | 日ヒューレット・パッカード 環境 OS X 10.7.4 bash version 3.2.48 確認 ホームディレクトリ配下に、下記のような構成で確認用のディレクトリを作成。 [~/tmp] $ find . . ./parent ./parent/child [~/tmp] $ "child" ディレクトリに移動し、"ls -la" で内容確認。 [~/tmp/parent/child] $ ls -la total 0 drwxr-xr-x 2 y_sumida staff 68 9 30 21

    ワイルドカード指定 "*" ではドットファイルは対象にならない - THE BLUE NOWHERE
  • 全訳!fishシェル普及計画

    デフォルト の設定が貧弱→fishならば 無設定で便利機能満載 シェルスクリプト が苦手→fishスクリプトならば シンプル でわかりやすい 無駄に 多機能 で覚えきれない→fishは必要な機能を 厳選 している マニュアルが わかりづらい →fishのマニュアルは 具体例満載 でわかりやすい 設定ファイル を書くのが面倒→fishならば Webブラウザ で設定できる! 補完設定 を書くのが面倒→fishならばmanページを解析して 自動で 補完設定をしてくれる シングルクォート 中にシングルクォートを書けない→fishならば \’ と書ける 関数や環境変数を保存 するのに設定ファイルの書換えが面倒→fishならばその場で 永続化 できる 和訳 マニュアルがない→fishの 最新版公式文書を全訳済 他にもこんな便利機能があります。 Webブラウザのような Auto suggestion ま

    全訳!fishシェル普及計画
    iww
    iww 2016/09/11
    『関数や環境変数を保存 するのに設定ファイルの書換えが面倒→fishならばその場で 永続化 できる』 これはちょっと怖いな
  • microSD カードの寿命を調べる - エンジニア徒然草

    BBB を実用的な用途に使おうとすると microSD カードの寿命が気になる。「寿命が気になる」と言うことについては SSD も同じだが、以下のような理由で何倍か余計に気になる。 サイズが小さいから高集積度のフラッシュメモリーを使っているはずだ。集積度を上げるために消去/書き込み寿命を犠牲にしていないか? 容量が小さいから書き込むデータ量が同じでも消去/書き込み回数が多くなり、早く寿命に到達するのではないか? コントローラーに実装できる機能の制約が厳しいはずだから、 Write-amplification をあまり低減できていないのではないか? S.M.A.R.T. 機能が無いから残り寿命を把握できないのではないか? 気に病んでいる時間があるなら調べてしまおう、と言うこと。早く寿命に到達するなら調べる時間も短くて済むはずである。5日位で勝負がつくかもしれないと思って年末に始めたが、結局年

    microSD カードの寿命を調べる - エンジニア徒然草
    iww
    iww 2016/07/15
    SMART情報無いので頑張って推測する話
  • ファイルパスからファイル名や拡張子を自由に取り出す - ザリガニが見ていた...。

    いつも、いざ使う時になって、どうやるんだっけ?と探し回ってしまうので、忘れないようにメモ。(以前の日記でも、所々分散して書いているかもしれないが、ここで総括的に記録することにした) シェルスクリプト $ fpath='/a/b/c.d.e' # ファイル名を取り出す(拡張子あり) $ fname_ext="${fpath##*/}" $ echo $fname_ext c.d.e # ファイル名を取り出す(拡張子なし) $ fname="${fname_ext%.*}" $ echo $fname c.d # 拡張子を取り出す $ fext="${fpath##*.}" $ echo $fext e # ディレクトリを取り出す $ fdir="${fpath%/*}" $ echo $fdir /a/b なるほど! そして、仕組みとしては、以下のルールしたがって変換されているようだ。 ${

    ファイルパスからファイル名や拡張子を自由に取り出す - ザリガニが見ていた...。
  • ログアウトした後もプログラムの処理を続ける?(コマンド実行時にnohup)

    nohup コマンドを使うとログアウト時に処理を停止させないでプログラムを続けるようにさせることができる。という説明をよくみかけますが、実際には、nohup を使わなくても、プログラムを「&」を使ってバックグラウンドで処理していれば、ログアウト後も起動されたプログラムはそのまま処理を継続します。 nohupコマンドを使うと、例えばターミナルが突然切断された等の理由でシェルがHUPシグナルを受け終了した場合でも処理を続けることができるようになります。 Last Update : 2014年03月19日 ログアウトした後もプログラムの処理を続ける?(コマンド実行時にnohup) 項目 nohup コマンド 1. nohup コマンド nohup コマンドは、ハングアップシグナル(SIGHUP, HUP)を無視するかたちでコマンドを実行させるコマンドです。 例えば、ターミナルが突然切断された等の

    iww
    iww 2015/06/05
    bashだとnohupいらんのか・・・