投稿

8月, 2017の投稿を表示しています

bashをタブ機能がある端末で使っているときのhistoryの扱いについて

 Linuxでコマンド操作をするときに使う端末ソフト。これにはタブ機能を持つものもありますが、どうも個々のタブの操作の履歴に関しては、別々のhistory listに記録されていくようです。 (ただしタブや端末の終了時には大元のhistory fileに記録される模様) つまり端末で実行したコマンドを別のタブでhistory機能で呼び出そうとしても、そのままでは呼び出されないことになります。history機能はbash実行中でもhistory fileへの実行履歴の書き出し、読み込みといったことも出来ます。これらを組み合わせて常にどこで開いているタブでも履歴を共有化するといったことも出来るようです。 このへんはネットで検索するとそういった方法がいくつか見当たりますが、自分で試したわけではないので、そういう話もあるということで終わりにします。 また端末のタブ機能だけではなくscreenやtmuxといった環境でもこういった事情は考慮しておく必要があるかも知れません。 結局はbashがタブごとに別々のプロセスとして実行されるため、履歴が分離しているのだと思います。とりあえず今回は以前から少し気になっていた動作について少し調べた程度の話ですが、また何か分かったらブログに書いていきたいと思います。 historyに関しては以前、こんなブログも書いてます。 historyコマンドでbashのコマンド履歴が途中までしか探れない場合について

bashのhistory機能では先頭にスペースがあるとそのコマンドは記録されない(設定による)

Bash Reference Manual: Bash Variables によると、コマンドの先頭にスペースを付けて実行すると、実行されたコマンドはhistoryには記録されないようです。 これはbashの環境変数の「HISTCONTROL」に「ignorespace」や「 ignoreboth 」といった値がセットされている場合にそのように働きます。 Ubuntuの場合、この環境変数は ignoreboth に設定されているようです。ホームディレクトリの .bashrcファイル に書かれているので確認してみて下さい。 使い方としては、例えばディレクトリ内のファイルを全部消す操作として「rm *」と実行するとします。ただ他のディレクトリにいる状態で、history機能をうっかり誤操作して再びこのコマンドが実行されてしまうと洒落では済まない事態になってしまいます。このように動作がクリティカルなコマンドを実行するとき先頭にスペースを付けるクセを付けておけば、historyに記録されないため危険性を減らすことが出来ます。 (コマンドの実行履歴を記録するという目的ではあえてそのような記録を残すというのも必要ですが) 後はどこぞのWebサイトからコピペしてきたコマンドを実行したときに、なぜかhistoryに記録されてないといったときには、コピペした文の先頭にスペースが入っていた、なんてこともあります。 このような機能、使うにしろ使わないにしろ、bashのhistoryにはそういった機能もあるということをアタマに入れておくと何かの役に立つかも知れません。

シェルとfehコマンドを組み合わせて多量の画像から特定の写真を集めたサムネイル画像を作る方法

イメージ
これは空のタイムラプス動画を作る時に撮影した画像から30分毎に撮影したものだけを抜き出して作ったものです。これをLinuxのコマンド操作で作ってみることにします。 (環境 : Ubuntu 16.04.3LTS) パターン指定で特定の画像だけを表示させられる画像ビューアでも同じようなサムネイル画像は作れますが、今回は以前紹介したfehというコマンドを使います。 (以前の記事 : fehコマンドのモンタージュモード(サムネイル作成) ) サムネイル画像の作り方は以前書いた通りですが、今回は30分毎の画像だけを抜き出すという操作と組み合わせます。 まず対象とするファイルは以下のようなものになります。 webcam-20170824-124815.jpg webcam-20170824-124830.jpg webcam-20170824-124845.jpg webcam-20170824-124900.jpg webcam-20170824-124915.jpg webcam-20170824-124930.jpg webcam-20170824-124945.jpg webcam-20170824-125000.jpg webcam-20170824-125015.jpg webcam-20170824-125030.jpg webcam-20170824-125045.jpg webcam-20170824-125100.jpg webcam-20170824-125115.jpg ここでファイル名の命名規則は「webcam-撮影年月日-撮影時間.jpg」となっています。 30分毎の写真を探すとき、例えば12時では12時00分と12時30分の写真を探すとします。これをfindコマンドで書くと、 find ./ -name 'webcam-*-12[03]000.jpg' となります。今回は12時以外の時間のものも対象とするので、それを踏まえて書き直すと find ./ -name 'webcam-*-??[03]000.jpg' となります。これで対象となる画像のファイル名は取得出来るのですが、出力されるファイル名の順番がバラバラになっています。サムネイル画像にするためには時

1年は365日だけど毎月の日数は30日だったり31日だったり28日だったり。その違いがどう現れるのかについて

イメージ
1年は平年では365日。うるう年では2月に1日加わって366日です。さて、1年は12ヶ月ありますが、毎月の日数は30日だったり31日だったり2月は28日(or 29日)だったりと違いがあります。 単純に考えると、この違いが毎月の集計に現れることになります。 お散歩の歩数を測っているとき 朝食やおやつに食べるバナナの本数を月ごとに数えるとき 毎月の売り上げを集計するとき ブログや動画のアクセス数を集計するとき などなど、いろいろ関係する話はあります。まぁ30日間と31日間では1日しか違いがないのであまり気にしなくていいかも知れませんが、ここで改めて確認してみることにします。 まず1年の日数を月ごとに書くと以下の表のようになります。 これをグラフにすると次のようになります。  大雑把に眺めるとだいたい同じくらいの日数に見えますが、どれくらいの違いがあるのか見てみることにします。 まず1年は365日。これを年間の月数12で割ると、1ヶ月は平均で30.4266.....日となります。毎月の日数がこの平均値と比較してどれくらいの割り合いなのかをグラフにすると以下のようになります。 (例えば8月では31日間なので、 31/平均値 ≒ 1.02 という計算です) そのままでは違いが分かりにくいので拡大した図を挿入してあります。2月は28日間と他の月と比べても少ないので差が大きく出ています。また他の月でも違いが見て取れます。 ここまでの話から、毎月ごとの集計では日数の違いにより若干の違いが生じてくるということが分かると思います。仮に毎日バナナを2本食べていたとすると、それを集計すると月によって若干多かったり少なかったりしてくることになります。例えば、そういった集計をグラフにして見ると、毎日同じ本数のバナナを食べていてもグラフに月ごとの周期が乗って来ることになります。 ちょっとした集計ならそういった差は取るに足らないものですが、もうちょっと正確性が要求されるようなものだとこういった話も考慮していく必要があるでしょう。 さて、別の話としてこういった違いを除いて考える方法として、1年を1週間(7日間)ごとの区切りで考えるというものがあります。この場合は月ごとに日数が異なるのとは違い、7日間とキッチリ決まっているため同じ日

bashで履歴からコマンドを実行するときに、一旦確認してから実行したい場合について

historyコマンドを実行すると、 1422 gvfs-open ./ 1423 dmesg 1424 top 1425 ls 1426 history | grep scp というようなような出力がされ、 $ !1423 と入力して実行すると、履歴にあるdmesgコマンドが実行されます。以前実行したことがあるちょっと長めのコマンドを再び利用したいときに便利です。 (頻繁に使うようならエイリアス作ったりメモしといたりした方がいいですが) さて、この機能は便利なのですが入力したらすぐに実行されてしまうので、確認や修正をしてから実行したい場合にはちょっと不便です。 (historyの出力からコピペして持ってくればいいわけですけども) 確認や修正をしてから実行したい場合、番号の後ろに「:p」と入力する方法があります。 Bash Reference Manual: Modifiers 上の例をこの方法で書き下すと $ !1423:p となります。この機能は番号のコマンドを実行せずに出力するだけです。ここではdmesgが出力されますが、入力行は空になります。そこで↑キー(もしくはCtrl-p)を押すと、入力行に出力されたコマンドが出てきます。後は確認なり修正なりして実行すればいいだけです。

historyコマンドでbashのコマンド履歴が途中までしか探れない場合について

端末でbashを使ってコマンド操作をしているときに、historyコマンドで過去に実行したコマンドを探ろうとしてもhistoryファイルに保存されているはずの分が出力されてこないケースがあります。 これはbashの環境変数のHISTSIZEとHISTFILESIZEの設定が間違っていることが考えられます。 (この環境変数はUbuntuではホームディレクトリ以下の.bashrcファイルに書かれている) まずbashのコマンド履歴の保管の仕方として、bashの実行中は「history list」に蓄積。そしてbashを終了したときに「history file」へ書き出す、というようになっているようです(詳しくはドキュメント参照)。そして再びbashを起動したときに「history file」から履歴情報を「history list」に読み込む、となっているようです。 (history fileは通常はホームディレクトリ以下の.bash_historyファイル) そして 「history list」のサイズはHISTSIZE 「history file」のサイズはHISTFILESIZE で指定されています。 ( Bash Reference Manual: Bash Variables ) つまりはHISTFILESIZEをいくら大きな数字に取っても、HISTSIZEがそれより小さければ途中までしか読み込まれないということになります。 実験として試しに HISTSIZE=10 HISTFILESIZE=2000 として設定を反映、そして端末(bash)を起動してhistoryコマンドを実行すると、historyファイルには2000件も保存されていても直近の10件のコマンド履歴しか出力されないことが分かります。 (設定の反映についてはsourceコマンドについて参照) 通常はHISTZIEとHISTFILESIZEをどちらも同じ数字で十分な大きさで確保しておけば、まず問題はないかと思います。 まぁ実のところ以前よく分からないままこの環境変数を適当に設定していてこういうようなことをやらかしていたんで、せっかくなのでそれをまとめてみたというお話でした。

Nautilus(ファイルマネージャー)である種のファイルが別名で表示される件について

イメージ
Nautilus(ファイルマネージャー)で起きる少し変わった挙動について書いておきます。 なおThunarやPCManFMといったファイルマネージャーでも似たような挙動をするようです。 以下の内容はこの挙動について説明するためにあえて分かりやすい状況を作成して行っています。 環境 : Ubuntu 16.04.3 LTS, Nautilus 3.14.3 (2017年8月19日時点での話) まず次のNautilusであるフォルダを開いているときのスクリーンショットを見て下さい。 このフォルダには2つのファイルがあるのがわかります。 「test01.desktop」と「ふぃっしゅあぷり」 というファイルです。 ではこのフォルダを端末からlsコマンドで見てみることにします。結果は以下のスクリーンショットのようになります。 さて、何か結果に違いが出ています。Nautilusでは表示されていた「ふぃっしゅあぷり」というファイルが、lsコマンドからは見えていません。そして代わりに「test02.desktop」というファイルが見えています。 実は「test02.desktop」というのはUbuntuのランチャーにソフトを登録する時に使うファイルです(Ubuntuに限った話ではないですが)。これを適切な場所に置くことで、そのソフトがランチャーから起動出来るようになります。そして、どうやらNautilusではこの種のファイルはファイル名そのものではなく、ソフトの登録名で表示するようになっているようです。 「test02.desktop」ファイル自体は中身はテキストファイルで、ランチャーにソフトを登録する際に必要な情報が書かれています。中身は以下のようになっています [Desktop Entry] Version=1.0 Name=ふぃっしゅあぷり Comment=おさかなてんごく Exec=/home/yutarine/tmp/filenamedesktop-test/bin.bash Icon=/home/yutarine/tmp/filenamedesktop-test/fish.png Terminal=false Type=Application Categories=Utility;Application; この

アンケート : ブックマークのようにWebサイトを記録しておく方法について

回答にはGoogleアカウントへのログインが必要になります。 読み込んでいます...

Twitterアンケート埋め込みテスト

Twitterのアンケート機能、ブログにツイート埋め込んだ場合も機能するかテスト Twitterのアンケート機能って、ツイートをブログとかに埋め込んだ場合も機能するのかな?アカウント情報取得出来ないから、無意味だとは思うけど — ゆたりん📡 (@Yutarine) August 19, 2017

電子辞書EX-wordのちょっとした小ネタ

イメージ
調べものをするときに電子辞書として2014年に発売されたCASIOのEX-word XD-U9850を使っています。 XD-U9850 - 専門 - 電子辞書 - CASIO そこで使っていて思いついたり見つけたりした小ネタをいくつか紹介してみたいと思います。 USB給電 この機種ではUSB-ACアダプターとUSBケーブル(USB-microUSB)を使うことで、そこから電源を取ることが出来ます。そうすると電池が減る心配が少なくなるので、例えばオートパワーオフまでの時間を長く設定して常にすぐに検索出来るようにするといった使い方も出来ます。パソコンで調べものをしているときに、脇に電子辞書を置いておいてゆっくり辞書の方を読むといった使い方も出来るでしょう。 電池が切れる心配が(ほぼ)なくなるというのは、結構使っていて気分的な違いが出てきます。 (注意 : USB"充電"ではなく"給電"なので、セットしてある電池の充電は出来ません) 「シフトキー」を使って辞典/モードキー下段の辞典を選ぶ 辞典/モードキーを使うと、すぐにそれに割り当てられている辞典を開くことができます。 上の写真で「リーダーズ/英和大」のキーを押すと、「リーダーズ英和辞典」が開きます。そしてそのまま続けて同じキーを押すと、「ジーニアス英和大辞典」が開きます。 これはこれで便利なのですが、「ジーニアス英和大辞典」の方を使いたい時に2回キーを押すのは若干煩わしいです。 そういった場合、この機種では「シフトキー(下の写真)」を一回押してから「辞典/モードキー」を押すことで、下段に書かれた辞典をすぐに開くことが出来ます。 さて、下段の辞典を開くのに同じキーを二度押すのと、シフトキーを押してから辞典/モードキーを押すのでは、キーを押す回数は同じです。これでは特にメリットが無いように思えますが、この方法の利点は一回目にキーを押した段階で使わない辞典を開く必要がないということになります。 「リーダーズ/英和大」キーを押す場合について考えてみます。 辞典/モードキーでは   リーダーズ英和辞典→ジーニアス英和大辞典 という開き方になります。 これがシフトキー→辞典/モードキーでは   ジーニアス英和大辞典 がすぐ

掃除機のホースにホコリが詰まってたので取り除いてみた

イメージ
ここ最近、掃除機をかけているときに「ヒューヒュー」と何か詰まってるような音がしてました。 初めは掃除機ヘッドに何か詰まってるのかと思い、一通り見てみましたが特に何も詰まってません。次に掃除機本体のダストボックスやフィルターも見てみましたが、そこも特に何もありませんでした。 ただ音がするといっても吸引力が落ちたといった感じもなく、普通に掃除機は使えていました。 そんなわけで、しばらくはそのまま 使ってたのですが掃除機を使う度に「ヒューヒュー」という音を聞かせられるのはちょっと気に障ります。ということでもう一度掃除機全体をチェックしていたら、ホースの途中にホコリの塊のようなモノが詰まってるのが見えました。詰まっていたのはホースの掃除機本体側で、普段はこの部分は外すことがないのでいままで分かりませんでした。 ホコリが詰まっていたのは次の写真の矢印で示した部分です。 おそらく音が出ていた原因もこのホコリが詰まっていることだと思います。 ということでさっそくホコリを取り除く作業を始めました。まずホコリは次の写真のように詰まっていました。 これはホースの先から写した写真ですが、目視ではよく見えていません。ライトで照らすことでハッキリ見えるようになりました。 さてホコリは見えてるのですが、すぐかき出せるような位置にはありません。そこで、ホースの反対側の口から長い棒を入れてホコリを押し出すことにしました。 手身近に細い突っ張り棒があったのでそれを使うことにしました。一番初めの写真にも写っていますが、次の写真のような棒です。 ※(注意) 無理やり棒を突っ込んで押し出すと余計にホコリが詰まって取れなくなったりホースが破損する恐れがあります。このような作業は状況をよく調べた上で自己責任で行うようにして下さい。 さて、棒を突っ込んでいくと何か引っかかっているような手応えがあり、何回か突いているとホースの先から次の写真のようなホコリが出てきました。ホコリやら髪の毛やら爪楊枝やらが絡み合っています。 次の写真は取れたホコリをホースの口に当ててみたものですが、取れたホコリの大きさが分かります。 これだけ大きいものが詰まっていたのに、掃除機としてはちゃんと使えていてホコリも取れていたのはなかなか不思議です。 ホコリや髪の

【問題】Part.2 おまんじゅうがそれぞれいくつ売れたのかを求めるには?

イメージ
以前書いたクイズ 【問題】おまんじゅうはそれぞれいくつずつ売れたでしょうか?   と似たようなお話です。 あるお菓子屋のおまんじゅうの値段は 大まんじゅう : 1個 120円 小まんじゅう : 1個   35円 です。 お菓子屋のある日のおまんじゅうの売り上げは『7,420円』でした。 そして次の日のおまんじゅうの売り上げは『5,560円』でした。 さて、お菓子屋の中学生の息子が数学の勉強として、このおまんじゅうの売り上げから「大」と「小」のおまんじゅうがそれぞれいくつずつ売れたのか計算してみることにしました。 まず「大まんじゅう」が売れた個数を「x」、「小まんじゅう」が売れた個数を「y」としました。そして初めの日の売り上げから 120x + 35y = 7420  … (1) の(1)式が出来ました。 同じように次の日の売り上げから式を作ると 120x + 35y = 5560  … (2) が出来ました。 そして(1)式と(2)式の連立方程式を解くために(1)式から(2)式を引くと、xとyが両方とも消えてしまい 0 = 1860 となってしまいました。両辺がまったく別になってしまい式としてもおかしいです。 結局、お菓子屋の息子は「大」と「小」のそれぞれおまんじゅうが売れた個数を求めることが出来ませんでした。 【問題】 さて、ではなぜお菓子屋の息子はそれぞれのおまんじゅうが売れた個数を求めることが出来なかったのでしょうか?

【問題】おまんじゅうはそれぞれいくつずつ売れたでしょうか?

イメージ
【問題】 あるお菓子屋さんがお祭りで屋台を出すことになりました。屋台で売るのは、街でそこそこ名物になっているおまんじゅうです。おまんじゅうの大きさは「大」と「小」の2種類。価格はそれぞれ 大が100円 小が30円 です。 お祭りの当日はお菓子屋の店主は、実行委員なので屋台の店番が出来ません。そこで自分の小学生の娘に店番を任せることにしました。 そして娘には分からないことがあったら携帯電話で連絡するように言い、家族にもたまに様子を見てくるように頼みました。お菓子屋さんは実行委員でお祭り会場にいるため、自分でも手が空いたら様子を見に行くつもりです。 さてお祭り当日、おまんじゅうはそこそこ売れているようでした。初めは慣れていなかった娘も次第にお客さんとも気軽に話せるようになっていました。 そんなこんなで屋台の営業時間が終わり、店主が屋台に行くと娘は 「おまんじゅうは全部で57個売れたよ。3950円になった!」 とうれしそうに言いました。そして店主は娘に 「これからお友達とお祭りに遊びに行くなら、売れ残ったおまんじゅう持っていっていいよ」 と伝えました。そして娘は残ったおまんじゅうを全部持ってお祭り会場の方に走って行きました。 さて、このお話では売れたおまんじゅうの数はわかっています。ではお話の中に出ている数字からおまんじゅうの「大」と「小」がそれぞれいくつ売れたのか分かるでしょうか? 関連問題 【問題】Part.2 おまんじゅうがそれぞれいくつ売れたのかを求めるには?

キーボードショートカットで音量調整を行う際にポップアップ表示が出るのを回避する方法(GNOMEデスクトップ環境)

イメージ
簡単にGNOMEデスクトップ環境について(以下2段落はタイトルとは関係ないです) Ubuntuのデスクトップ環境がUnityからGNOMEに変更されるそうなので、ここ最近はGNOMEを使ってみています。GNOMEに変更されるという流れは次の記事とかが参考になるかと。 2017年4月7日号 Ubuntuの大きな方針変更/Unity 8の終了・linux-awsリリース:Ubuntu Weekly Topics|gihyo.jp … 技術評論社 しばらく前はXfceデスクトップ環境を使っていた身からすると、GNOMEは結構クセが強い印象を受けました。ただクセが強いといってもカスタマイズ方法をある程度押さえておけば、結構自分好みの環境に持っていくことが出来ます。デフォルトで用意されている環境設定では大きくいじれる所は少ないのですが、 GNOME Tweak Toolをインストールして使うことでカスタマイズの幅は広がります。 そして GNOME Shell Extensions という拡張機能を入れることでかなりカスタマイズの幅は広がります。まぁShell Extensionsは種類が多くてどれを入れればいいか迷ったり、使っているGNOMEのバージョンによりインストール出来ないものがあったりするので、そのへんは試行錯誤する必要がありますが(いろいろ定番のShell Extensionsが紹介されてたりするので、そういった記事を読むといいかと思います)。 さて、GNOMEの紹介はこんなところにしてタイトルに書いた件について。 以前のブログでXfceデスクトップ環境で音量をキーボードショートカットから変更するという記事を書きました。 Xfce4でスピーカー音量をキーボード操作で変更する   その流れとして以下の記事も書いています。 コマンドラインからpactlで音量を変更する件に関して GNOMEではキーボードショートカット設定から音量変更が割り当てられるので、通常ではキーの割り当てさえ出来ていればそれを使って音量を変えることが出来ます。 ただ個人的にこの機能には少し不満があります。とりあえず以下の図.1を見て下さい。 図.1 キーボードショートカットによる音量変更 これはキーボードショートカットから音量変更したときの画面ですが

Terminal pager(ページャー)とはなんぞや

Terminal pager(ページャー)とはなんぞや Terminal pager - Wikipedia Terminal pager(以下pagerと表す)は、端末上のコマンドライン環境(CUI, CLI)でテキストファイルを表示するのに用いられるプログラムです。 主なpagerとしては more, less, pg , most があり、moreとlessが広く使われているようです。以下に参考情報を載せておきます。 more (command) - Wikipedia 作者 : Daniel Halbert 最初のリリース : 1978年 less (Unix) - Wikipedia Web site : Less 作者 : Mark Nudelman 最初のリリース : 1984年 最新バージョン : less-487 (2017年8月1日時点) pg (Unix) - Wikipedia util-linux パッケージに含まれる。 most (Unix) - Wikipedia Web site : The MOST pager 作者 : John E. Davis 豆知識 : その他のpager pagerは無線呼び出し機器の一つで、日本ではポケベルと呼ばれていました。 Pager - Wikipedia

HTMLとCSSでカードアイテムを並べてみる(flexboxを使用)

イメージ
ちょっとテストでカードアイテムの作成をやってみました。flexboxとやらが便利そうだったので使いました。ブラウザはとりあえずfirefoxでしか確認してません。 今回はお試しで作っただけですが、今後何かのまとめで使っていくかも知れないです。 flexboxについての参考サイト Flexbox - Learn web development | MDN CSS3 Flexible Box CSSレイアウトにfloatは古い! 初心者でも始められるFlexbox入門 - ICS MEDIA カードアイテムの作成についてはこちらのページを参考にしました。 How To Create a Card with CSS たんぽぽ 太陽と綿毛 何かの花 きれい しいたけ しいたけしいたけ 何かの花その2 たくさんのきれい つくし つくしんぼ 何かの草 おもしろいカタチ

スポンサーリンク