ちょっと4月5月は忙しくて更新が滞ってすいません><
roadtoalinuxmintuser

theming

roundup
Linux Mint 18.3 : 端末からアニメ情報を取得できる「moe」コマンド 17:20
アイキャッチ

moe とは


端末からアニメ情報を取得できるコマンドラインツールです。GO 言語で書かれています。アニメ情報は MyAnimeList.net から、動画の URL は 9anime.is から取得しています。つまりネット環境は必須です。
主な特徴:
  • エピソード数の表示
  • 放送期間の表示
  • 概要の表示(英語)
  • 曲名の表示
  • MyAnimeList.net でのランキングとスコアの表示
  • 対応するエピソードの動画(9anime.is)のリンクの表示

インストール


Ctrl
+
Alt
+
T
を押して端末を起動します。
端末へコマンドをペーストするには
Ctrl
+
Shift
+
V
を押します。
まずは GO をインストールします:
sudo apt install -y golang-go
次に、moe をインストールします:
go get github.com/dragonzurfer/moe
ここで以下のようなエラーが表示されるかもしれません:
github.com/dragonzurfer/moe: cannot download, $GOPATH not set. For more details see: go help go path

これは GOPATH に何もセットされていないのが原因です。試しに $GOPATH の中身を確認してみてください:
echo $GOPATH
おそらく空で何も返されないはずです。なので GO 用のディレクトリを作成し、これを GOPATH に通し、更に GOPATH を PATH に追加して端末から実行できるようにしましょう:
mkdir ~/go && export GOPATH=~/go && export PATH=$PATH:$GOPATH/bin
これで再度インストールを試みてください:
go get github.com/dragonzurfer/moe

使い方


基本的な構文は以下のとおりです:
moe -name "アニメの名前" フラグ
"アニメの名前"の部分は多少融通がきくので日本語で入力しても構いません:
moe -name "シュタゲ" -info
出力例:
範囲を選択_039
ここから「steins gate」をコピーして(もっといい方法があるかもしれません)次のように打ち直します:
moe -name "steins gate" -info
出力例:
範囲を選択_037
-info 以外にも、概要を見るために -synopsis:
範囲を選択_038
曲名を知るために -songs などのフラグ:
範囲を選択_040
ランキング(-rank)やスコア(-score)だけを見ることも出来ます:
範囲を選択_035
このランキングやスコアは MyAnimeList.net に対応していることがわかります:
範囲を選択_036
すべての情報を得るには -all を使います。場合によっては less コマンドと併用すると良いかもしれません:
moe -name "steins gate" -all | less
出力例:
範囲を選択_041
動画自体も 9anime.is で見れるため、このサイトの URL を返してくれるはずですが:
moe -name "steins gate" -video all
いろいろ試しても以下のようなエラーが出るだけでうまく行きませんでした:
Could not find any results for -video: steins gate

見るのであれば直接 9anime.is にアクセスしたほうが良さそうです:
範囲を選択_034
moe コマンドで使えるフラグは -help で見ることができます:
moe -help
| Linux |
Linux Mint 18.3 : ブートローダーの簡易編集ツール「Grub Customizer」[加筆再up] 04:04
アイキャッチ

Grub Customizer とは


GRUB(GRand Unified Bootloader)は、Ubuntu や Linux Mint など多くの主要なディストリビューションのブートローダとして採用されています。ブートローダとは何でしょうか ? これは起動時にメモリーにロードされる最初のソフトです。ストレージから OS を読み込むためにあります。その後、選択した OS を起動するか、Windows のように Grub をサポートしていない OS の場合は別のブートローダーに制御を渡します。

この Grub ブートメニューは個人設定が可能です。Linux につきものですが、その操作には多少の知識とスキルが必要です。しかし、Linux がここまでデスクトップ OS として使われ始めてきたのは GUI アプリの開発が進んできたからです。今回は Grub Customizer という GUI アプリについて見ていくことにします。

主な特徴:
  • Grub メニューの項目の編集
  • デフォルトの OS を設定
  • Grub メニューの非表示/表示
  • 待ち時間の変更
  • 背景画像の変更
  • Grub から Windows の MBR へ変更

手動でこう言ったファイルの設定をやるとクラッシュの原因となるミスを犯しかねません。Grub Customizer は GUI を提供してこの問題を解決します。昔は「StartUp-Manager」というものがありましたが、廃れてしまいました。

インストール


Ctrl
+
Alt
+
T
を押して端末を起動します。
端末へコマンドをペーストするには
Ctrl
+
Shift
+
V
を押します。
次のコマンドを実行してインストールします:
sudo add-apt-repository ppa:danielrichter2007/grub-customizer -y && sudo apt update && sudo apt install -y grub-customizer

Grub 2 の豆知識


Grub 2 の設定ファイルは /boot/grub/grub.cfg ですが、直接ファイルを編集することはしません。/etc/default/grub で設定を行い、update-grub コマンドを実行することで、設定に基づいて /boot/grub/grub.cgf を生成します。

/etc/default/grub の説明を少し加えます。/etc/default/grub には以下のような行が有ります:
GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=2
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

それぞれのパラメーターの意味することは:
GRUB_DEFAULTデフォルトで起動する OS の番号。
GRUB_HIDDEN_TIMEOUTメニューを表示せず待機する秒数。
GRUB_HIDDEN_TIMEOUT_QUIETtrue ならメニューを表示しない、false なら残り時間を表示。
GRUB_TIMEOUTデフォルトの OS を起動するまでの秒数。
GRUB_CMDLINE_LINUX_DEFAULTブートオプション。
GRUB_CMDLINE_LINUXカーネルに渡すブートオプション。

使い方


メニューから起動すると、このようなウィンドウが表示されます。タブが 3 つあり、一番目のタブは起動用の OS のリストについてです。ウィンドウの上部には [ 保存 ]、[ 削除 ]、[ 編集 ]、[ 新規 ] ボタンなどがあります。新しく項目を作成して OS をリストに追加したり、不必要な項目をリストから削除したり、既存の項目を編集したり出来ます:
範囲を選択_060
試しに新しい項目をリストに追加してみましょう。最初の欄は表示する項目名です。二番目は OS の種類についてです。Linux や chainloader などを指定します。Windows であれば chainloader を選びましょう。最後にパーティションを選んだら [ OK ] をクリックします。注意すべき点として [ 保存 ] ボタンをクリックするまでは変更は保存されません:
範囲を選択_061
追加されました:
範囲を選択_062
二番のタブではデフォルトで起動する項目を選べます。ブートメニューを表示にしたり、ブートメニューの表示時間を変更することが出来ます:
範囲を選択_063
最後のタブでは、文字のサイズや色、背景の色や背景画像を変更することが出来ます。このタブでは Grub ブートメニューの外観を大きく変更できます:
範囲を選択_064
上の画像で使用した壁紙:
miiku4grub

参考元:linuxandubuntu
| Linux |
Linux Mint Tips : 「mintUpdate」アップデートマネージャー のレベルの意味 06:11
アイキャッチ

それぞれのレベルの意味


Linux Mint のアップデートマネージャの初期設定は、Linux Mint の特徴でも有りますが、安定性を第一に考え、かなり用心深い設定になっています。Linux Mint の開発者はこれに関しては素晴らしい仕事をしてくれており、良質な品質管理を行っているうえに、保護層を追加しています。

Linux Mint は更新にレベルシステムを適用しています。レベルには 1 から 5 まであり、レベルが高くなればなるほど、リスクが高まります。レベル 1 から 3 に分類された更新はデフォルトで表示され、チェックもつきます。レベル 4 は表示はされますが、チェックはデフォルトではついていません。レベル 5 の更新に関してはデフォルトでは表示すらしないように設定されています。

ある更新が、レベル 1 から 3 に分類されるのはその更新の潜在的な回帰バグがシステムに致命的ではないからです。システム全体が利用できなくなる可能性のある回帰バグを含む更新は全てレベル 4 か 5 に分類されているはずです。このようにコンピューターの動作を停止させるバグからシステムを守るためにレベルシステムが有ります。幸い、システムを停止させるバグは極めてまれなことですが、それでも自己防衛するに越したことはありません。

しかしながら、安全を期してなにか大事な作業の真っ最中なときは更新をしないようにすべきです。レベル 1 から 3 の更新であってもです。まずは大事な作業を終わらせてから更新をインストールしましょう。

もし、レベル 1 から 4 までの更新で深刻なバグがあれば、落ち着いて次善策を探し、バグフィックスの更新があるまで待ちましょう。

レベル 1お墨付きのパッケージ。Linux Mint の開発チームによって直接テスト、管理されています。更新があったらインストール推奨です。
レベル 2推奨パッケージ。Linux Mint の開発チームによってテストされ、承認を受けたものです。これもインストール推奨です。
レベル 3安全なパッケージ。テストはされていませんが、安全だと考えられるものです。これもインストール推奨です。
レベル 4不安定なパッケージ。このレベルに分類された更新は、ハードウェアの構成やスペックによって、システムの安全性にマイナスの影響を与える恐れが有ります。安全のためデフォルトでは選択されません。
レベル 5危険なパッケージ。このレベルに分類された更新は、ハードウェアの構成やある条件下では、システムの安全性にマイナスの影響を与える恐れが有ります。これも安全のためデフォルトでは選択されていませんし、表示もされません。


レベル 1 から 3 はインストール


これらのレベルに分類された更新は毎回インストールしましょう。さもないと、重要なバグフィックスやセキリュティ上の修正を受けることができません。レベル 3 でもリスクはとても低いのでインストール推奨です。ただし、Linux Mint の開発チームはレベル 3 の更新に関してはインストールする前にバグ報告がないか公式フォーラムを参照することを勧めています。しかし、Linux Mint と Ubuntu を使い続けた長年の経験則として、極めてまれな例外を除いて考慮する必要はありません。レベル 3 の更新まで全てチェックを入れてインストールすることをお勧めします。

レベル 4 は取り扱い注意


デフォルトではレベル 4 の更新は全て表示はされますが、予め選択はされていません。これはアップデートポリシーの「Just keep my computer(最も注意深いアップデートポリシー)」と「Let me review sensitive updates(中程度のアップデートポリシー)」の両方においてそうです。デスクトップユーザーにとってはレベル 4 のパッケージに含まれるセキュリティホールの実際のセキュリティリスクがたいてい低いからです。なので更新のインストールを急ぐ必要はありません。一方で更新をインストールすることによりシステムの安定性にダメージを与える可能性がほんの僅かですが存在します。

レベル 4 としてタグ付けられている更新を見れば、Grub や LightDM のようなリスクが高めなパッケージに関係していることがわかります。前述の通り、極めてまれなケースですが、大きなトラブルを引き起こす可能性を秘めているため、レベル 3 までとは異なった扱いを受けています。こういうリスキーな更新は経験上めったにトラブルを引き起こさないためか、Linux Mint がベースにしている Ubuntu ではリスク分類をそもそもしていません。しかし「めったにない」は「まったくない」とは違います。例えば、Grub ブートローダーを更新するとシステムが起動しなくなる恐れが有ります。Grub はその更新がとても重要なときだけ更新すべきパッケージの好例です。

なので、レベル 4 の更新は都合が良い時まで延期しても構いません。実際、レベル 4 の更新をせずともシステムはかなりセキュアな状態です。少なくとも、Windows よりは安全です。更新をレベル 1 から 3 までにするのは間違いなく合理的な判断です。

しかし、セキュリティを最高までに高めたいなら、レベル 4 の更新もしたいと思うでしょう。この場合、Linux Mint の開発チームはレベル 4 の更新をインストールするときは、一つ一つインストールする毎にシステムを再起動することを勧めています。これはなにか問題が生じた時にどの更新が悪さをしているか正確に知るためです。これはトラブルシューティングをより解決しやすくしてくれます。

もしセキリュティ上の問題の修正以外の普通のバグフィックスも含めたくて、レベル 4 の更新を増やしたいと思うなら、アップデートポリシーを変更することで簡単に行なえます。
[ 編集 ] -> [ アップデートポリシー ]:
範囲を選択_029
三番目の選択肢「Always update everything」はおすすめしませんが、二番目の選択肢「Let me review sensitive updates」は Linux Mint 経験者にとって妥当なチョイスです。セキリュティ上の問題の修正以外の普通のバグフィックスも含みます。

もし、まったくの Linux 初心者であれば、一番目の選択肢「Just keep my computer safe」を選ぶのが良いでしょう。このアップデートポリシーでは単純にセキュアなシステムを得ることが出来ます。セキュリティに関係しない一般的な更新がないだけです。「Just keep my computer safe」ではカーネルを含む全てのレベル 4 の更新が表示されます。もし手動でインストールしたドライバーを壊したくないなどの理由で、カーネルの更新は表示させたくない場合、次のように設定できます。[ 編集 ] -> [ 設定 ]、[ Always show kernel updates ] と [ Always select kernel updates ] のチェックを外し、[ Apply ] ボタンをクリックします:
範囲を選択_028
2010 年より前のノートパソコンをお使いですか。Broadcom のワイヤレス LAN チップセットが内蔵されていれば、レベル 4 の更新を有効にしないほうが良いです。無線での接続ができなくなる恐れがあるからです。新し目の Broadcom のチップセットであれば、ありがたいことにこのような問題はありません。もし、レベル 4 の更新をインストールしてシステムがめちゃくちゃになった場合は、クリーンインストールするしかない場合が有ります。

レベル 5 はインストールしてはいけない


レベル 5 は、アップストリーム (Ubuntu) から流れてくる「問題児」をせき止めるためのレベルです。どんな場合でもインストールすべきではありません。Linux Mint の開発チームは、Ubuntu が修正済のバージョンをリリースするまではレベル 5 として「問題児」を引き止めます。3 つのすべてのアップデートポリシーにおいて、気づいていなかいもしれませんが、こういったことが起きています。レベル 5 の扱いはシンプルで、インストールをしないことです。もっとも、レベル 5 に分類されることはそうそうあることではありません。

Linux Mint に流れてくる更新は Ubuntu ソースからのものと Linux Mint ソースからのものとがあります。Linux Mint ソースからのものにレベル 5 の更新がないのでそもそもシステムに流れ込む恐れはないのですが、極めてまれなケースでレベル 5 の更新を見ることがあります。それは Ubuntu ソースから流れ来るもので、Linux Mint の開発チームがコントロールできないものです。できることはレベル 5 に分類することで警鐘を鳴らしたり、ブラックリストに入れる手段を提供することだけです。ブラックリストに入れてしまうと修正済のバージョンもシステムに届かない恐れもあるのでブラックリストに入れるのは少ないほうが好ましいでしょう。

というわけでレベル 5 はアップストリームから流れ来る「問題児」を一旦せき止めるための手段としてみなしてください。それ以上でもそれ以下でもありません。緊急用のブレーキです。

更新のチェックの間隔を増やす


新しい更新がないかチェックする間隔の設定を変更したいと思っているかもしれません。[ 編集 ] -> [ 設定 ] -> [ Auto-refresh ] からできます:
範囲を選択_029
初期設定ではシステムを起動してから 10 分後、それから 2 時間おきにチェックします。すでに妥当な設定なのでそのままにしておくと良いと思いますが、起動してから 10 分後というのは変えないほうが良いと思います。

カーネルの更新について


カーネルの更新は現在「メルトダウン」と「スペクター」という脆弱性に対していくらかの緩和策を講じるために必要なことになっています。4.4 と 4.13 シリーズだけがこれらのバグフィックスを含んでいます。

アップデートポリシーの一番目と二番目では、カーネルは表示はされるものの、予め選択はされません。[ 編集 ] -> [ 設定 ] -> [ オプション ] でいつでもカーネルの更新を表示しないように出来ます。この場合、特定のカーネルにアップデートしたい場合、手動でバージョンを選んでインストールすることが出来ます。[ 表示 ] -> [ Linux カーネル ](警告が出来ますが少々誇張が過ぎます):
範囲を選択_030
たとえ、新しいカーネルに含まれるセキュリティ上のバグフィックスが、小さなリスクを修正するだけとしても、欲しいと思うことがあるでしょう。ここから選んでインストールし再起動すれば、システムは選んだカーネルで動きます。

デフォルトのバージョンのシリーズを使い続ける


Linux Mint にデフォルトで入っているカーネルのバージョンと同じシリーズのカーネルをインストールするのが好ましいです。もしデフォルトのカーネルでうまく動作しているのであれば、そのバージョンのシリーズを使い続けることをおすすめします。なぜなら Linux Mint は特定のカーネルシリーズを中心に設計されているからです。「エンジン」を他のものに変えることは安定性を損なう恐れがあります。

しかし、Linux Mint 18.2 以降をお使いで、安全なカーネルがほしいなら 4.13 シリーズにアップグレードするか、4.4 シリーズにダウングレードする必要があります。なぜなら Linux Mint 18.2/18.3 にデフォルトで乗っているカーネルは短命で、もうサポートされていないからです。18.1 の場合は、4.4 シリーズを選び、そのシリーズの中で一番新しいバージョンを選ぶと良いでしょう。

もうひとつ例外として、全く新しいハードウェアを使っている場合は、いまお使いのカーネルではうまく対応できないかもしれません。最新のドライバーが含まれていないからです。なので新しいハードウェアに関しては最新のカーネルシリーズを選ぶのが一番いい選択肢です。

カーネルには 2 種類ある: LTS と HWE


カーネルには 2 種類あります。Long Term Supported (LTS) 版と Hardware Enablement (HWE) 版です。Linux Mint 18.1 では LTS のカーネルでリリース(4.4.x)されました。このシリーズのサポート期間は Linux Mint 18.x シリーズのサポート期間である 5 年間をフルにカバーしています。なのでカーネルの最新の更新を適用する場合は常に 4.4.x シリーズを使い続けるべきです。

18.2 以降では HWE 版でリリースされています。これは短命のカーネルシリーズなので、18.2 以降でカーネルの更新をしようと思ったら時々、新しいカーネルシリーズにアップグレードする必要があります。現行の HWE カーネルのサポート期間が終了を迎えると、アップデートマネージャーでレベル 4 として新しいカーネルシリーズが提供されます。

では、なぜ HWE 版があるのでしょうか。それはハードウェアのサポートです。とても新しいハードウェアのドライバーを LTS 版に組み込むのが単純に時期尚早だからです。なので Linux Mint は最新のハードウェアに対応するために HWE 版が必要なのです。

もしアップデートマネージャーを使って、Linux Mint 18 や 18.1 から 18.2 や 18.3 にアップグレードしたのであればカーネルは 4.4.x LTS シリーズのままです。HWE 版に強制的に切り替わることはありません。

端末でレベルシステムを利用する


最近では端末を使って Linux Mint をアップデートできるようになりました。アップデートマネージャよりも端末で行うほうが手っ取り早いのがメリットです。使うコマンドは mintupdate-tool で、これでもレベルシステムを使うことができます。例えば、レベル 1 から 3 までのすべての更新をインストールし、なおかつカーネルの更新を除外した、すべてのセキュリティ上のバグフィックスをインストールしたい場合は次のように実行します:
sudo mintupdate-tool upgrade -r -l123 -s -nk
-r は APT キャッシュの更新で、-s はセキュリティの更新を含めることを意味し、-nk は --no-kernel、つまりカーネルの更新は全て除外することを意味しています。その他のオプションについてはヘルプを参照してください:
mintupdate-tool -h

レベルシステムを定義するテキストファイル(上級者向け)


レベルシステムを定義するテキストファイルは /usr/lib/linuxmint/mintUpdate/rules です:
xed /usr/lib/linuxmint/mintUpdate/rules
範囲を選択_028
すべての更新はデフォルトではレベル 2 に分類されており、このテキストファイルのルールにマッチした更新パッケージでない限り、レベル 2 です。もし熟練者であれば、このテキストファイルを編集してレベルを変更することができますが、デフォルトの設定が十分すでに妥当な感じなのでオススメはしません。

参考元: Easy Linux tips project, Easy tips for Linux
| Linux |
Linux Mint 18.3 : QR コード生成「qrcode」、QR コード解読「ZBar」、GUI「QtQR」[加筆再up] 06:11
アイキャッチ

QR コード生成


qrcode とは


qrcode は QR コードを生成できる Python モジュールです。QR コードの生成はウェブサービスを使えば簡単に行うことができますが、コマンドの良いところは一度にたくさん処理できるところです。

QR コードとは


myqrcode

QR (Quick Response) コードとは、高速読み取りと比較的大きな記憶容量があるために広く使用されている2次元バーコードです。
QR コードは、白い背景に四角い形に配置された黒いセルで構成されています。
コード化された情報は、バイナリ、英数字、漢字のようなあらゆる種類のデータを構成することができます。

インストール


Ctrl
+
Alt
+
T
を押して端末を起動します。
端末へコマンドをペーストするには
Ctrl
+
Shift
+
V
を押します。
次のコマンドを実行します:
sudo apt install -y python-pip
sudo pip install qrcode

使い方


構文はこのようになります:
qr "文字を入力" > 保存名
例えば、このブログの URL を QR コードとして出力したい場合はこうなります:
qr "http://baker-street.jugem.jp" > myqrcode.png
実行するとカレントディレクトリに myqrcode.png が生成されているのが分かります:
範囲を選択_033

SVG 形式の保存にも対応しています:
qr "http://baker-street.jugem.jp" > myqrcode.svg

QR コードの解読


ZBar


ZBar はバーコード、QR コードリーダです。画像ファイルからでも、ウェブカメラからでもバーコードと QRコードをスキャンすることができます。ZBar を使用すると、画像ファイルやウェブカメラからバーコードを解読できます。

インストール


Ctrl
+
Alt
+
T
を押して端末を起動します。
端末へコマンドをペーストするには
Ctrl
+
Shift
+
V
を押します。
次のコマンドを実行します:
sudo apt install -y zbar-toolsFirefox の方はこちらをクリックしてもインストールできます:
インストール

使い方


構文はこのようになっています:
zbarimg ファイル名
例えば:
zbarimg myqrcode.png
出力例:
shellingford@linuxmint ~ $ zbarimg myqrcode.png
QR-Code:http://baker-street.jugem.jp
scanned 1 barcode symbols from 1 images in 0.05 seconds


GUI フロントエンド


QtQR とは


Qt と Python で開発された、QR コードを生成したり解読したりするための qrencode のフロントエンドです。内部で上述した ZBar を使用しています。

インストール


Ctrl
+
Alt
+
T
を押して端末を起動します。
端末へコマンドをペーストするには
Ctrl
+
Shift
+
V
を押します。
次のコマンドを実行します:
sudo add-apt-repository ppa:qr-tools-developers/qr-tools-stable -y && sudo apt update && sudo apt install qtqr -y

使い方


使い方はとてもシンプルで、[ Select data type ] から url や電話番号など、どのデータをエンコードしたいか選び、文字を入力したら、ピクセルの大きさや誤り補正レベル、余白の大きさを指定し、最後に [ Save QRcode ] で保存します:
範囲を選択_060
QR コードを解読したいときは [ Decode from file ] または [ Decode from webcam ] をクリックしファイルを選ぶか、QR コードをウェブカメラにかざしましょう:
範囲を選択_061
解読できました。ご丁寧にブラウザーで開くかどうか聞いてくれます:
範囲を選択_062
| Linux |
Linux Mint 18.3 : デスクトップ録画ソフト 8+1 選 02:32
アイキャッチ
様々な理由でデスクトップを録画したい時が有ります。ゲームを生放送したり、動画によるチュートリアルを作成したり、保存できない動画を録画したい時などです。今回は、Linux で使えるデスクトップ画面録画ツールを紹介します。録画ツールには動画として出力できるものと GIF アニメーションとして出力できるものが有ります。ここで述べるツールは全て無料でオープンソースです。

動画形式で出力するタイプ


Kazam


範囲を選択_059
Kazam は最小限の機能を備えた素敵な録画ツールです。スクリーンショットにも対応しています。いろいろ設定を弄る必要がない初心者にとってはうってつけです。
主な特徴:
  • シンプル
  • 複数の出力形式に対応
  • 最適な音源(スピーカーまたはマイク)から録音
  • ウィンドウもしくは選択範囲の録画
  • 録画開始を遅らせるタイマー付き
  • ウェブカメラの録画には対応していない

インストール


sudo apt install -y kazam

Open Broadcaster Software Studio


範囲を選択_028
OBS Studio は間違いなく多機能で高度なスクリーンキャプチャーツールです。
主な特徴:
  • シーン間をシームレスに切り替えるトランジッション
  • 映像にフィルターをかけれる
  • オーディオ・ミキサー
  • 多機能で使いやすい設定項目
  • 合理的な設定パネル
  • 生配信に対応
  • おそらくこれだけで多くのニーズに応えられるが専門用語を理解するまで時間を要する

インストール


インストールするために OpenGL 3.2 以上をサポートしているひつようがあります。システムの OpenGL のバージョンを確認するには以下を実行してください:
glxinfo | grep "OpenGL"
FFmpeg も必要です。一緒にインストールします:
sudo add-apt-repository ppa:obsproject/obs-studio -y && sudo apt update && sudo apt install -y ffmpeg obs-studio

SimpleScreenRecorder


範囲を選択_059
名前が示唆している通り、Kazam 同様シンプルな録画ツールですが、Kazam よりは設定項目が豊富です。GUI は Qt で実装されています。
主な特徴:
  • 複数の出力形式に対応
  • 適切な音源ソースから音を録画
  • 選択範囲の録画に対応
  • 録画中に情報を表示
  • 録画中にリアルタイムでプレビューを表示
  • 低スペックのマシンもスムーズに動くように最適化済
  • ホットキーに対応
  • ウェブカメラには対応していない

インストール


sudo add-apt-repository ppa:maarten-baert/simplescreenrecorder -y && sudo apt update && sudo apt install -y simplescreenrecorder

recordMyDesktop


範囲を選択_060
recordMyDesktop そのものは C 言語で実装されたコマンドラインツールです。GTK ベースのフロントエンドと Qt ベースのものが開発されています。
主な特徴:
  • 軽量
  • ウィンドウの録画に対応
  • 出力結果の変更
  • ウェブカメラには未対応
  • 出力形式は選べない

インストール


GTK ベース:
sudo apt install -y gtk-recordmydesktop
Qt ベース:
sudo apt install -y qt-recordmydesktop

VokoScreen


範囲を選択_061
更に別の使いやすいスクリーンキャプチャーツールです。そのシンプルさ故、個人的に Linux で使える録画ツールの中でもおすすめです。
主な特徴:
  • 複数の出力形式に対応
  • 最適な音源から録音
  • ウィンドウまたは選択範囲の録画に対応
  • ウェブカメラに対応
  • 録画する時間を遅らせるタイマー付き
  • ホットキーに対応

インストール


sudo apt install -y vokoscreen

ScreenStudio


範囲を選択_060
Java で書かれたクロスプラットフォーム対応のデスクトップ録画ツールです。
主な特徴:
  • 複数の出力形式に対応
  • 最適な音源から録音
  • Hitbox, Twitch.tv などの様々なストリーミングサービスに対応
  • ウェブカメラに対応
  • 設定項目が豊富
  • 画像や文字のレイヤーを重ねることが可能
  • ホットキーに対応

インストール


sudo add-apt-repository ppa:soylent-tv/screenstudio -y && sudo apt update && sudo apt install -y screenstudio

アニメーション GIF 形式で出力するタイプ


Peek


範囲を選択_059
デスクトップ画面を録画し、アニメーション GIF として出力してくれるシンプルなツールです。
主な特徴:
  • 選択範囲を録画
  • フレームレートの選択可能
  • 録画する時間を遅らせるタイマー付き
  • モダンな UI
  • X11 のみサポート

インストール


GitHub にて AppImage 形式配布されているのでインストールせずともダブルクリックすれば起動するでしょう。PPA 経由でもインストールできます。

Gifine


範囲を選択_062
録画したり、短い GIF 画像や動画にまとめるツールです。
主な特徴:
  • 出力形式は GIF と MP4 の両方に対応
  • 出力する前に成果物をトリミングしたり、編集を加えることが可能
  • Peek よりは機能がある
  • Peek ほどモダンな UI ではない

インストール


インストール方法は少し面倒です。まず依存関係をインストールします:
sudo apt install gifsicle luarocks libgirepository1.0-dev dh-autoreconf git
Gifine のソースをゲットしビルドします:
git clone --depth 1 https://github.com/lolilolicon/xrectsel.git && cd xrectsel && ./bootstrap && ./configure && sudo make install && sudo luarocks install --server=http://luarocks.org/dev gifine
起動は端末で以下を実行します:
gifine

動画ファイルとしても GIF としても出力できるツール


Green Recorder


以前 GreenRecorder について記事を書いています:

端末のセッションを録画


asciinema


asciinema というツールにも触れておきたいと思います。

Linux を使っていれば技術的な支援が必要な時が有ります。一番簡単かつ明瞭なサポートの仕方は端末で解決策を実践している様子を録画して見せてあげることです。SimpleScreenRecorder のような従来のツールではファイルの容量が大きくなりがちであることと、動画に表示される文字列はコピペできないので手動で入力する必要が出てきます。タイポしやすく致命的なエラーを起こすかもしれません。ここで asciinema の出番です。

asciinema は端末で行っている様子をキャプチャーし、自動的に asciinema のウェブサイトにアップロードして、共有するための、その動画の URL を提供してくれるツールです。このツールの最大の利点は動画のコマンドを手動で入力することなく、動画の閲覧者は動画をポーズしてコマンドを選択し自分の端末にコピペできることです。どんな感じかは asciinema のウェブサイト にアクセスし何か動画を再生すれば一目瞭然です。

インストール


Linux Mint(Ubuntu):
sudo apt-add-repository ppa:zanchey/asciinema -y && sudo apt update && sudo apt install asciinema -y
Angergos(Arch):
yaourt -S asciinema
実際に使うときは:
asciinema recで録画を開始し、
Ctrl
+
D
で録画を止めます。

参考元: itsfoss,itsfoss
| Linux |
Windows : Linux Mint を VirtualBox にインストールする方法 03:29
アイキャッチ

VirtualBox とは


Oracle VM VirtualBox は物理的なマシンに仮想的なマシンを作成するための、無料のオープンソースソフトです。物理的なマシンにインストールされた OS のことをホスト OS と呼び、VirtualBox によって作成された仮想的なマシンにインストールされた OS のことをゲスト OS と呼んでいます。Windows や max OS ユーザーが Linux を気軽にゲスト OS として導入する手段としてよく用いられます。

Windows 8 で行っていますが、Windows 7 でも 8.1 でも 10 でも、はたまた Linux Mint 上であっても操作に大差はないはずです。

VirtualBox・Linux Mint のインストール


  1. Oracle VM VirtualBox の [ Windows hosts ] リンクからインストーラーをダウンロードします。Linux Mint の ISO もダウンロードしておきましょう。
  2. ダブルクリックしてインストーラーを開始します:
    キャプチャ
  3. 特にいじらずに [ Next ] をクリックしていってください:
    キャプチャz
  4. 途中で必要なデバイスソフトウェアのインストールが求められます。全てインストールしましょう:
    キャプチャb
    キャプチャv
    キャプチャx
  5. チェックボタンを外さずに [ Finish ] をクリックして VirtualBox を起動します:
    キャプチャn
  6. 起動するとメイン画面が表示されます。[ 新規 ] ボタンをクリックしましょう:
    キャプチャm
  7. 下の画像のように入力してください。名前は好みに合わせて入力してください。32bit マシンの場合は [ バージョン ] で 64bit が選べないようになっているはずなので、Ubuntu (32-bit) を選んでください:
    キャプチャ0
  8. メモリーは最低 1GB は割り当てます。2GB 以上が推奨されているので、ここでは 2GB にしました:
    キャプチャ1
  9. [ 仮想ハードディスクを作成する ] にチェックが付いているのを確認して [ 作成 ] ボタンをクリックします。ハードディスクのファイルタイプは [ VDI ] を選びます:
    キャプチャ2
  10. [ 可変サイズ ] を選択して [ 次へ ]:
    キャプチャ3
  11. HDD の容量は 20GB 以上が推奨されています。数値をセットしたら [ 作成 ]:
    キャプチャ4
  12. メインパネルに戻ります。作成した Linux Mint が選択された状態で [ 設定 ] をクリックしてください:
    キャプチャ5
  13. [ ストレージ ] -> [ コントローラー: IDE ] -> [ 空 ] をクリックし、右のディスクアイコンから [ 仮想光学ディスクファイルを選択 ] をクリックします:
    キャプチャ6
  14. Linux Mint の ISO イメージを選択しましょう。今回は Linux Mint 18.3 MATE(64bit) を選びました。[ OK ] をクリックします:
    キャプチャ7
  15. メイン画面の [ 起動 ] をクリックして立ち上がるまで待ってください:
    キャプチャ8
  16. デスクトップにある [ Install Linux Mint ] アイコンをクリックして Linux Mint のインストールを開始します。インストールのチュートリアルはこちらをご覧ください:

    一つ注意する点は [ ディスクを削除してLinux Mintをインストール ] にチェックをつけることです。ディスクを削除すると有りますが、この場合に置いては Windows が消えるわけではないのでご心配なく:
    キャプチャ9
    [ 続ける ]:
    キャプチャ10
  17. インストール中画面が暗くなるかもしれません。その時は VirtualBox のウィンドウをクリックすると再び表示されます。インストールが終わるとこのような画面が表示されます。[ 今すぐ再起動する ] をクリックして再起動します:
    キャプチャ11
  18. このような画面では指示通り
    Enter
    を押せば大丈夫です:
    キャプチャ12
  19. 再起動しました。ログインします:
    キャプチャ13
  20. 立ち上がりました。ネットにもデフォルトで繋がるようです:
    キャプチャ14
  21. 画面のサイズが気に入らないかもしれません。ミントメニューから [ モニターの設定 ] を起動し [ 解像度 ] を調節しましょう:
    キャプチャ15


Guest Addtions のインストール


Guest Additions とはゲスト OS のパフォーマンスをより良く、使いやすくするために最適化していくれるデバイスドライバーとシステムアプリケーションからなるツール群です。VBoxGuestAdditions.iso というファイル名で Virtualbox のインストール先に含まれています。これによりマウスカーソルのゲストとホストでの行き来がシームレスになります。

  1. [ デバイス ] -> [ Guest Addtions CD イメージの挿入 ]:
    キャプチャ16
  2. [ OK ]:
    キャプチャ17
  3. [ 実行する ]:
    キャプチャ18
  4. パスワードを入力し [ 認証する ]:
    キャプチャ19
  5. インストールが終わったら
    Enter
    を押して端末を閉じます:
    キャプチャ20


ホスト OS とファイル共有


  1. Linux Mint をシャットダウンします:
    キャプチャ21
  2. Linux Mint が起動していない状態で VirtualBox のメインウィンドウから [ 設定 ] -> [ 共有フォルダー ] -> [ 新規共有フォルダーの追加 ] アイコンをクリックします:
    キャプチャ0
  3. [ フォルダーのパス ] -> [ その他 ] をクリックします:
    キャプチャ1
  4. デスクトップまでナビゲートし、[ 新しいフォルダー ] をクリックしてデスクトップ上に共有フォルダーを追加します:
    41021356411_fb202970fc_o
  5. shared と名づけて [ フォルダーの選択 ] をクリックします:
    40979252782_ca13b25029_o
  6. [ 自動マウント ] にチェックをつけて [ OK ]:
    キャnプチャ4
  7. Linux Mint を起動したら端末を開き、以下を実行してください:
    sudo usermod -a -G vboxsf $USER
    ln -s /media/sf_shared ~/shared

  8. 試しに、Windows の shared フォルダーに画像を入れると、ファイルが Linux Mint から見ることが出来ました(管理者権限でディレクトリーを開いてください):
    キャプチャ6


参考元: instructables
| Linux |
Linux Mint 18.3 : Conky の Lua スクリプトの書き方 Part3 01:02
アイキャッチ

描画に必要な計算と if 文


インジケーターバーを表示できたので、自分の命名規則に従ってそれぞれの変数の前に「bar_」を付け加えて、変数をすべて上部に移動させました:
--SETTINGS FOR CPU INDICATOR BAR
bar_bottom_left_x= 50
bar_bottom_left_y= 200
bar_width= 30
bar_height= 100
bar_value=tonumber(conky_parse("${cpu}"))
bar_max_value=100
--set bar background colors, 1,0,0,1 = fully opaque red
bar_bg_red=1
bar_bg_green=0
bar_bg_blue=0
bar_bg_alpha=1
--set indicator colors, 1,1,1,1 = fully opaque white
bar_in_red=1
bar_in_green=1
bar_in_blue=1
bar_in_alpha=1
--END OF SETTINGS

--DRAW BAR INDICATOR
--draw background
cairo_set_source_rgba (cr,bar_bg_red,bar_bg_green,bar_bg_blue,bar_bg_alpha)
cairo_rectangle (cr,bar_bottom_left_x,bar_bottom_left_y,bar_width,-bar_height)
cairo_fill (cr)
--draw indicator
cairo_set_source_rgba (cr,bar_in_red,bar_in_green,bar_in_blue,bar_in_alpha)--set indicator color
scale=bar_height/bar_max_value
indicator_height=scale*bar_value
cairo_rectangle (cr,bar_bottom_left_x,bar_bottom_left_y,bar_width,-indicator_height)
cairo_fill (cr)

範囲を選択_035
しかし、もう少し機能を盛り込んだり飾り付けしたりしたいです:
  • インジケーターの周りのボーダーを描画する機能がほしいです。
    • ボーダーは任意にします。
    • ボーダーの色や太さをセットする機能がほしいです。
  • バーに「警告値」をセットしたいです。
    • バーがある値にまで達したら違う色で表示するようにしたいです。

ボーダーを追加します。まずは設定を変数に格納します:
bar_border=1 --set 1 for border or 0 for no border
--set border color rgba
border_red=0
border_green=1
border_blue=1
border_alpha=1
--set border thickness
border_width=10

今回はボーダーの表示/非表示の切り替えに数字を選んでいます。1 = yes, 0 = no という意味で使っていますが、もちろん bar_border="yes" のように文字を使っても構いません。欠点は Yes と yes を比較する際、違うものと認識されることです。これは組み込みの string.upper() や string.lower() 関数で解決することが出来ますが、別の話なので今回はこの辺にして、1 または 0 を指標として使います。

ボーダーはインジケーターにちょうど重なってはいけません。これを実現する方法は思いつくだけでいくつか有ります。インジケーターの背景の矩形に塗りつぶした矩形を描画できます。そうなるとボーダーの矩形はインジケーターの矩形よりも大きくする必要があるでしょう。インジケーターの周囲に背景の矩形がはみ出る感じです。別の方法としては cairo_stroke で矩形を描画することで単に周りのボーダーだけを描くのもありです。四本の直線をそれぞれ描くこともできるでしょう。

これらの方法にはそれぞれ利点と欠点が有りますが cairo_stroke で四角形を描くことにします。四角形を描くとき line_width の適応のされ方が少しトリッキーです。これら 3 つのすべての四角形の幅は 60、高さは 40 にセットされています。見てわかる違いは線の太さがそれぞれ 1, 10, 20 であることです。

bar_bottom_left_x や bar_bottom_left_y とは相対的にボーダーの x と y 座標をセットする必要が有ります。これはバーの位置を変えたい時に単純に bar_bottom_left_x と bar_bottom_left_y の値を変更すればいいだけにしたり、他の変数もこの値に関連して自動で変更したりするすようにしたいからです:
border_bottom_left_x=bar_bottom_left_x-(border_width/2)--we subtract because we are going to the left
border_bottom_left_y=bar_bottom_left_y+(border_width/2)--we add because we are going down

これはボーダーとなる矩形をより左下からスタートし、インジケーターとなる矩形よりも広く大きくしなくてはいけません:
brec_width=bar_width+border_width
brec_height=bar_height+border_width

上記のコードを書いている時に、インジケーターの矩形の変数名に bar_width と bar_height というように width と height を使っているため、ボーダーとなる矩形も border_width と border_height という風に名づけようとしました。しかし、ボーダーの line_width の値を格納する変数名にすでに使っているので border_width が使えません。何か別の変数名を思いつく必要が有ります(ここでは brec_)。

ボーダーを描くための変数の準備が整ったので、これらの変数を矩形を描画する関数に渡して実行してみます:
cairo_set_source_rgba (cr,border_red,border_green,border_blue,border_alpha)
cairo_set_line_width (cr,border_width)
border_bottom_left_x=bar_bottom_left_x-(border_width/2)
border_bottom_left_y=bar_bottom_left_y+(border_width/2)
brec_width=bar_width+border_width
brec_height=bar_height+border_width--remember that we need to make the value of brec_height negative at some point because we are drawing up
cairo_rectangle (cr,border_bottom_left_x,border_bottom_left_y,brec_width,-brec_height)--we will set brec_height negative in this line
cairo_stroke (cr)

範囲を選択_033
計算は正しく行っているので、ボーダーがインジケーターに干渉することはないはずです。なのでこのコードは背景を描画する前、背景を描画した後、インジケーターを描画する前、インジケーターを描画した後におけます。

これでボーダーを描くことは出来ましたが、ボーダーを描くか描かないかを指定するための変数 bar_border はまだ使っていません。if 文で実装します。

if 文


例えば:
if bar_border==1 then
--border drawing code
end

これは if 文のシンプルな構文です。bar_border に 1 を代入しておけば、ボーダーは描画されます。もっと正確に言えば、bar_border の値が 1 であれば、then から end までのコードが実行されます。0 が代入されると、then から end までのすべてのコードがスキップされ、ボーダーの描画は実行されません。

if 文には then と end は必要です。if 文の使いようによっては then が複数含まれることも有ります。また、何かと何かが等しいかどうかを比較するにはイコールを 2 回(==)続ける必要が有ります。その他の比較演算子としては:
  • A~=B AとBは等しくない
  • A<=B AはB以下
  • A<B AはBより小さい

より複雑な if 文は後ほど触れます。

警告色と複雑な if 文


インジケーターの任意の特徴の一つにボーダーを追加しました。今回はバーの色を変えていこうと思います。色を変化させるためには変数をさらに追加する必要が有ります。色で警告したい場合は、赤色が良いでしょう。バーの背景も再度色付けする必要があるでしょう。今回は red, green, blue, alpha などの変数名を短くしています:
--set alarm value, this is the value at which bar color will change
alarm_value=80
--set alarm bar color, 1,0,0,1 = red fully opaque
ar,ag,ab,aa=1,0,0,1

CPU 使用率が 80% を超えない限りベースとなる色で表示したいです。そこで、if 文をさらに追加して色が変化するようにします。取り組む方法はいくつか有りますが、まずは、自分たちがこれまで書いてきたインジケーターを描画するコードを思い出しましょう。色を変更するのはこの部分なので、ここを編集していきます:
cairo_set_source_rgba (cr,bar_in_red,bar_in_green,bar_in_blue,bar_in_alpha)--set indicator color
scale=bar_height/bar_max_value
indicator_height=scale*bar_value
cairo_rectangle (cr,bar_bottom_left_x,bar_bottom_left_y,bar_width,-indicator_height)
cairo_fill (cr)

if 文を色に適用するには次のことができます。bar_value は cpu 使用率が格納されている変数の名前で、alarm_value は 80 以上にセットしています:
if bar_value<alarm_value then
cairo_set_source_rgba (cr,bar_in_red,bar_in_green,bar_in_blue,bar_in_alpha)
else
cairo_set_source_rgba (cr,ar,ag,ab,aa)
end

ちゃんと動作していることを確認するにはどうしたら良いでしょうか。正しくコードを書いているつもりですが、実際に CPU 使用率が 80% に達さないとバーの色が白から赤には変化しません。CPU 使用率を無理やり 80% まであげることも出来ますが、変数の値を変えるほうがより簡単です。以下の行を:
bar_value=tonumber(conky_parse("${cpu}"))
このように変えます:
bar_value=80--tonumber(conky_parse("${cpu}"))

すでに書いたコードをテストするために変更するのはテストが終わった後で元に戻すが単純に大変なのであまり好きではありませんが、とりあえずテストが終わったら忘れずに元に戻すようにします。テスト用の値と -- を取れば元に戻ります。

実際、背景となる矩形も高さが可変する矩形も同じ赤色になってしまうので背景となる矩形の色は黒に変更しておきます:
    --set bar background colors, 1,0,0,1 = fully opaque red
bar_bg_red=0
bar_bg_green=0
bar_bg_blue=0
bar_bg_alpha=1

範囲を選択_037
さて、もう少し欲張って、別の色を追加したいと思います。例えば、CPU 使用率 50% までは緑色で表示するといった具合です。50〜80% までは黄色で表示し、最後に 80% に達すると赤色になるといった感じです。そこで、変数の設定に戻ります。すでに警告(80% 以上)するときの値と色はセット済です:
--set value for first color change, low cpu usage to mid cpu usage
mid_value=50
--set "low" cpu usage color and alpha, ie bar color below 50% - 0,1,0,1=fully opaque green
lr,lg,lb,la=0,1,0,1
--set "mid" cpu usage color, between 50 and 79 - 1,1,0,1=fully opaque yellow
mr,mg,mb,ma=1,1,0,1

ベースとなるバーの色の変数を再利用します。数字を変更して緑や黄色にセットします:
bar_in_red=1
bar_in_green=1
bar_in_blue=1
bar_in_alpha=1

色の表示の仕方に重要な変更を加えようとしているので、新しい値と警告値に置き換えます。私は私なりの命名規則に従っていますが、もちろん自由に変数名をつけてください。CPU の使用率が 0〜49% のときに緑色に、50〜79% のときに黄色にし、80% 以上であれば赤色にする if 文を書く方法について考える必要があります。実際に書いてみましょう:
if bar_value>=mid_value then --ie if value is greater or equal to 50
cairo_set_source_rgba (cr,mr,mg,mb,ma)--yellow (mid color)
elseif bar_value>=alarm_value then --ie if bar_value is greater or equal to 80
cairo_set_source_rgba (cr,ar,ag,ab,aa)--red (alarm color)
else
cairo_set_source_rgba (cr,lr,lg,lb,la)--green (low color)
end

必要な条件分岐は 3 だけです。bar_value の値を 49 などにし、このコードを試してみましょう。バーが緑色に表示されるはずです。bar_value=50 にすればバーが黄色になるはずです。しかし、bar_value=80 でも黄色で、100 でさえも黄色のままです。このコードは完璧に論理的に書かれているように思えますが、これはつまずくかもしれない落とし穴です。if 文がどう実行されるか考える必要が有ります。ヒントは比較の順序にあります:
if bar_value>=mid_value then --ie if value is greater or equal to 50
cairo_set_source_rgba (cr,mr,mg,mb,ma)--yellow (mid color)

最初のコードは 50 から 100 までのどの数字にマッチします。なので CPU 使用率が 50 から 100 までだった場合、黄色く表示されるのです。スクリプトが実行されると bar_value の値が mid_value の値と等しいか大きい場合に、対応するコードが実行されそこで if 文から抜けます。

bar_value の値が 50 より小さい場合に最初の比較で false が返され、次の比較に移ります。しかし、この比較も false を返すので、最後の else に対応するコードが実行されます。この間違いを正す方法はたくさんありますが、比較の順番を変えることで対処することにします:
if bar_value>=alarm_value then --ie if value is greater or equal to 80
cairo_set_source_rgba (cr,ar,ag,ab,aa)--red (alarm color)
elseif bar_value>=mid_value then --ie if bar_value is greater or equal to 50
cairo_set_source_rgba (cr,mr,mg,mb,ma)--yellow (mid color)
else
cairo_set_source_rgba (cr,lr,lg,lb,la)--green (low color)
end

例えば、90 という値を bar_value に代入してみましょう。まず、90 は 80 以上か? -> はい。最初の比較が通り、対応するコードが実行され、赤く表示されます:
範囲を選択_040
次に、60 を代入してみましょう。まず、60 は 80 以上か? -> いいえ。最初の比較に失敗し、次の比較にうつります。60 は 50 以上か? -> はい。対応するコードが実行され、黄色く表示されます:
範囲を選択_041
最後に、48 を代入してみます。48 は 80 以上か? -> いいえ。最初の比較に失敗し、次の比較にうつります。48 は 50 以上か? -> いいえ。2 番目の比較に失敗し、上2つの条件にマッチしなかったため、else が実行され、緑色に表示されます:
範囲を選択_042
ところで、Conky ウィンドウが常に前面に表示され、邪魔な感じを抱いているでしょう。そこで、.conkyrc の own_window_type を desktop に変更してください:
own_window_type = 'desktop'

このように変更すると Conky ウィンドウの枠まで消えるので、分かりづらいと思い dock に設定していました。

参考元: Using Lua scripts in conky (Part 06), (Part 07)
| Linux |
Linux Mint 18.3 : オープンソースのパスワード管理ツール「Buttercup」 00:50
アイキャッチ

Buttercup とは


Buttercup はクロスプラットフォームに対応した無料でオープンソースのパスワード管理ツールです。これを使うとひとつのマスターパスワードを覚えてさえいれば、登録したアカウント全ての情報にアクセスできます。サードパーティ製のアプリからパスワードをインポートする機能やモダンな UI を備え付けています。市場にはすでにナイスなパスワード管理ツール(例: 1Password)はたくさんあります。しかし全員が全員、サブスクリプションをすぐに購入したいと思うわけではありません。そこで市販のツールよりはあまり開発が進んでいないアプリで対処せざるを得ないわけです。

主な特徴:
  • オープンソース
  • クロスプラットフォーム対応、Chrome や Firefox の拡張機能
  • Dropbox や ownCloud などのクラウドサービスに保存可能
  • 1Password (.1pif)、KeePass(.kdbx)、LastPass (.csv) といった著名なパスワード管理ツールからパスワードをインポート可能
  • 安全 - 暗号化アルゴリズムに 256bit AES を使用
  • シンプル - 使いやすいユーザーインターフェイス
  • 無料 - ダウンロードするのも使うのも永遠に無料

インストール


Ctrl
+
Alt
+
T
を押して端末を起動します。
端末へコマンドをペーストするには
Ctrl
+
Shift
+
V
を押します。
公式サイトから deb パッケージをダウンロードします。GitHub のリリースページを見れば、AppImage や snap 形式でも配布されているのがわかります。ダウンロードした deb パッケージを gdeb 経由か dpkg コマンドでインストールしてください。i386 向けの deb パッケージがないところから察するに 64bit のみ対応なのでしょう:
wget https://github.com/buttercup/buttercup-desktop/releases/download/v1.6.0/buttercup-desktop_1.6.0_amd64.deb && sudo dpkg -i buttercup*deb

使い方


メニューから起動するとこのような画面が表示されます:
範囲を選択_034
初回はアーカイブの作成とマスターパスワードを設定する必要が有ります。[ + ADD NEW ARCHIVE ] をクリックして [ NEW ARCHIVE FILE ] をクリックします:
範囲を選択_035
アーカイブの保存先と名前を指定します。アーカイブのイメージとしてはアカウント情報一切が暗号化されて保存されているファイルと入った感じです:
範囲を選択_036
マスターパスワードを設定します。Buttercup を起動するときは毎回入力する必要が出てくるので、メモするなり記録に残しておきましょう:
範囲を選択_037
再度パスワードを入力するよう求められます。
パスワードが一致すると、このようなウィンドウが表示されます:
範囲を選択_038
さっそくパスワードを登録していきましょう。パスワードを登録する前にグループを作成します。そのサイトがどういうサイトかで分類すると良いでしょう。今回は GMail のアカウントを登録してみます。なので、[ + NEW GROUP ] をクリックして新たに「Email」というグループを作成しました:
範囲を選択_039
[ Email ] が選択されている状態で [ + ADD ENTRY ] をクリックしてアカウントを登録していきます:
範囲を選択_040
パスワードはすでに作成済みならそのまま入力し、まだ作成していないようであればワンドアイコンをクリックするとパスワードを生成することが出来ます。いろいろ試してみてください:
範囲を選択_041
Characters:
範囲を選択_042
words:
範囲を選択_043
もちろん、パスワードの下のバーはパスワードの強さを表しています。赤は弱く、緑は強いです。メモも追加することが出来ます。[ + ADD NEW FIELD ] をクリックして、ラベルと内容を記入してください:
範囲を選択_045
範囲を選択_046
最後に [ Save ] をクリックするのを忘れないようにします:
範囲を選択_044
もしエントリーを削除したかったらエントリーを右クリックし [ Move to Trash ] をクリックしてください。もし作成したエントリーを再編集したい場合は [ Edit ] をクリックしてください:
範囲を選択_047
[ File ] -> [ Import ] から他のパスワード管理ツールからパスワードをインポートすることが出来ます:
範囲を選択_049
サイトにパスワードを入力する必要がでたときは、Buttercup を起動し、そのアカウントのエントリーを右クリックして [ Copy To Clipboard ] -> [ username ] または [ password ] をクリックしてペーストすれば OK です:
範囲を選択_048

参考元: YouTube
| Linux |
隔週刊リナックス : [Final] #7 パソコン部屋/デスクトップ画面/ニュース/セール情報 05:19
アイキャッチ

Eye candy(見て楽しいもの)


パソコン部屋紹介


マルチディスプレイ、自作 PC、LED ライトは当たり前。そんなクールなパソコン部屋を imgur より紹介する企画。

シンプルイズベスト。無理しない程度にお金を掛けるならこれくらいが現実的でしょうか:
bOsOImo

ワイドなモニターが 3 つ。かなりゆったり使えそうです:
wPN8p9e

ゲームが捗りそうです:
ArY81SN

Linux デスクトップ画面紹介


Reddit にてシェアされている Linux デスクトップ画面を眺めて楽しむ企画。使われている Linux は Linux Mint に限定していません。

Manjaro with KDE


xuD8J6Q


Manjaro with bspwm+polybar


DDcyMay


Debian with XFCE


y53MXNQ
  • terminal: xfce4-terminal
  • xfwm theme: Dr0ne2 - modified by me to match theme
  • font: terminus
  • bar: xfce4-panel
  • wallpaper: HERE


ArchLabs with Openbox


HRnLYPo
  • WM: Openbox
  • Panel: Polybar
  • Terminal: Termite
  • Visualizer: cava
  • Wallpaper: here
  • terminal colors are here
  • GTK theme is here
  • Color swatches shell script is here


一期一会


DistroWatch から気になったディストロを紹介するコーナー。

Antergos


Antergos は Arch ベースのローリング・リリースモデルを採用したディストリビューションです。Sabayon(Gentoo ベースのディストロの一つ) がそれぞれのデスクトップ環境にひとつのディスクイメージを用意しているのに対して、Antergos はミニマルかフルの 2 種類のインストールディスクイメージを用意しています。これは ISO イメージをダウンロードする時間を短縮したいという要望があったからです。

最初、Torrent 経由で ISO イメージをダウンロードしようとしましたが、速度が 100kB/s 以下と遅かったので、直リンクからダウンロードしてみたら 2MB/s でした。フルサイズの ISO イメージのサイズは 1.9GB です。ライブメディアを作成した後、HDD から起動するか、ライブセッションを開始するか、端末画面に入るかどうかを聞かれます。ライブセッションを開始すると GNOME 環境が読み込まれました。

GNOME デスクトップ環境には画面の上部にパネルが配置され、メニューや時計やシステムトレイが有ります。画面の左側にドックが表示されており、よく使うアプリやシステムインストーラーのアイコンがあります。GNOME については横に置いて、早速インストールしていきます。

インストール


Antergos は Cnchi というグラフィカルなインストーラーを採用しています。ライブセッションが始まると、インストーラーは自身を更新し、いつでも Cnchi が最新版になるようにしてくれます。Ubuntu で採用されている Ubiquity というインストーラーやディストロに中立的なインストーラーである Calamares によく似ています。言語や地域、タイムゾーンなどを設定していきます。デスクトップ環境の選択画面には Cinnamon, Deepin, GNOME, KDE Plasma, MATE, Xfce がありましたが、Openbox やグラフィカルな要素がない端末ベースの Base も選べます。様々なデスクトップ環境を試したくてもここで複数のデスクトップ環境をインストールすることは出来ません。そこで Deepin を選びました。
antergos-18.2-installer

次の画面ではどのアプリや機能を追加するか聞いていきます。この画面では Chromium や Firefox、OpenSSH サービス、Steam、PlayOnLinux、印刷サポート、ブルートゥース、アクセシビリティツールなどを追加できます。軽量に保ちたかったので Firefox、LibreOffice、ファイアウォールマネージャだけ選びました。パッケージミラーの優先順位を並べるかどうか、システムに任せるかどうかを聞かれます。

インストーラーは最後に、ディスクのパーティーションを切るかどうかを聞きます。暗号化するかや、LVM や ZFS ボリュームをセットするか、/home ディレクトリーを別にするかや、手動で区切るかが選べます。ファイルシステムは Btrfs, ext4, f2fs, XFS が選べます。ZFS のスナップショット機能が便利なため ZFS でパーティーションを作成することにしました。しかしインストール中にクラッシュしてリカバリー不能だったのでファイルシステムだけ ext4 に変えて同様の内容でインストールを試みてみたら成功しました。

第一印象


Antergos がインストールされたら、システムが起動しログイン画面が表示されたところで「An error was detected in the current theme that could interfere with the system login process.」というメッセージが表示されました。デフォルトのテーマを読み込むか、フォールバックしてテーマを読み込むか、キャンセルするか、どれか操作を選ぶ必要が有りました。フォールバックしてテーマを読み込んでみようとしましたが、同じエラーを吐いたので、デフォルトのテーマを読み込みました。2,3 秒画面が暗くなった後で、時計が表示され、ログインプロセスを開始できました。このテーマの読み込みエラーは起動するたびに起こりました。

初回ログイン時「Welcome, system updated successfully. Current edition: rolling.」というメッセージが全画面表示されました。Enter ボタンをクリックすると Deepin デスクトップ環境が表示されました。このメッセージはその後は表示されなくなりました。

Deepin には画面の下にドックが有り、そのうちの一つがアプリのアイコンを全画面で表示するメニューになっています:
antergos-18.2-menu
その他には設定・通知パネルを画面右端に表示するアイコンも有ります:
antergos-18.2-settings

ベース: Arch Linux
公式がサポートしているデスクトップ環境:
  • XFCE4
  • Cinnamon
  • Deepin
  • GNOME
  • KDE Plasma
  • MATE
  • Openbox
サポート: ローリング・リリースモデル
ダウンロードページ: https://antergos.com/try-it/

気になったニュースを斜め読み


Linux 関係


(英語)Ubuntu 18.10 では LZ4 圧縮アルゴリズムのおかげで起動時間が短縮される - Softpedia
(訳)Canonical 社の Balint Reczey 氏が以前のリリースで使用されていた古い gzip 圧縮の代わりに Ubuntu の initramfs に新たに LZ4 圧縮を採用すると発表しました。LZ4 はロスレス圧縮アルゴリズムで、とても迅速に圧縮・解凍が行えます。

古いノートパソコンでテストしてみた結果、initramfs の解凍時間が 1.2 秒から 0.24 秒に縮まったと報告しています。initramfs の作成も、サイズは僅かに増えたにもかかわらず 2,3 秒の速度向上が有りました。

(英語)GNOME Shell にはかなり大きなメモリーリークがある - OMG! Ubuntu!(訳)多くの Ubuntu ユーザーが 17.10 で使用されている GNOME Shell 3.26.2 には隠れたメモリーリークがあることを報告しています。ウィンドウを切り替えたり、オーバービューを表示したりするなどのアニメーション時にメモリー使用量が増加するというのです。

残念なことに Ubuntu 18.04 LTS で使用される GNOME Shell 3.28 でもこの問題は残ったままだということです。

Linuxカーネルのソースコードを機能とレイヤーで分類して表示してくれる「Linux kernel map」 - GIGAZINE
Linuxのカーネルは膨大な数のソースコードから成り立っており、どこに何の処理が書いてあるのかぱっと見当をつけるのにはかなりコードを読み込む必要があります。「Interactive map of Linux kernel」はそのソースコードを機能とレイヤーで分類して表示してくれるサイトということで、使い勝手を試してみました。
(略)
機能とレイヤーで主なソースを分類して表示してくれるので、「カーネルの〇〇の機能の部分だけ読みたい」という時にさっと場所を特定できて便利なマップとなっていました。


自作 PC 関係


ツクモ、“売れない地下アイドル”が自作PCに挑戦する漫画を公開 (取材中に見つけた○○なもの) - AKIBA PC Hotline!
pc_titlebanner
ツクモのWebサイトで、自作PCをテーマにした漫画「売れない地下アイドルだけど自作PC作るよ!!」が公開されています。

 この物語は、AICO(アイコ)、CUU(クー)、MEI(メイ)、RIE(リエ)の4人が、ボケとツッコミを交えながら、PCを組み上げるというコメディタッチの自作PC漫画。初めてPCを自作する場合、どこから手を付けたらいいのか悩むこともあると思いますが、この漫画を読めば、PC自作の手順をなんとなく把握することができます。

サイズの最新CPUクーラー「超天」が発売、コンセプトは“虎徹のトップフロー版” - AKIBA PC Hotline!

超天は、4本の6mm径ヒートパイプと120mm冷却ファンを備えたトップフロー型CPUクーラー。同社の人気CPUクーラー「虎徹」のトップフロー版というコンセプトで開発されたという。

 マザーボードへの取り付け方法はIntelがバックプレートが不要なプッシュピン方式、AMDがリテンションに固定するクリップ式となっており、AMD用のクリップは従来製品のものから硬度を変更し、再設計したものを採用したという。対応CPUソケットはIntel LGA775/115x/1366と、AMDのSocket AM2(+)/AM3(+)/AM4/FM1/FM2(+)で、LGA2011(v3)や2066、Socket TR4(Ryzen Threadripper)には対応していない。

ASCII.jp:KTUの自作キーボー道自分にとっての“究極のキーボード”を、どこかのメーカーが作ってくれるまで待つのはもう止めだ。好みの製品がなければキーボードを自作すれば良いのだ! そんな“キーボー道”の門を叩き、キーボード沼の深淵へと誘うための知識を紹介するのがこの企画。キーボード好きを自認するなら、ぜひ沼の最深部に挑んでいただきたい。


セール情報


Amazon タイムセール祭り Amazon.co.jpで,54時間限定セール「Amazonタイムセール祭り」が,2018年3月23日 18:00に始まった。セールは25日23:59までだ。

 タイムセール祭りでは既報のとおり,PlayStation 4本体(ジェット・ブラック,HDD容量1TBモデル)に「FIFA 18」とDLCコードをまとめたパックや,SIMロックフリー対応のAndroidスマートフォンなどが割引価格で登場する予定。
 そのほか,ゲーマー向けノートPCや,ディスプレイ,キーボード,ヘッドセット,キャプチャデバイスなども割引対象となっている。


週一回更新に伴い「隔週刊リナックス」を休載します。不定期にやるかまたいつか復活します。それまで〜。
| Linux |
Linux : Linux の世界へようこそ 01:43
アイキャッチ
Linux を使おうかなと思ってこのブログに来た Linux 初心者に捧げます。

オープンソースであるということ


オープンソースソフトのほとんどは無償で利用することができますが、それはいわゆるフリーソフトとどう違うのでしょうか。英語の free には「自由」と「無償」という2つの意味があります。もともと「フリーソフト」の「フリー」は「自由」の意味で使われていました。自由に利用でき、自由に改変し、自由に公開できる、ということです。しかし、「無料」の側面ばかり注目されるようになってしまったため「オープンソース」という言葉ができました。

オープンソースの定義として以下の10項目が定義されています:
  • ソフトウェアを自由に販売したり無料で配布したりできること
  • ソースコードを入手できること
  • ソフトウェアを改良したり派生ソフトウェアを作成したりできること
  • 作者のソースコードの完全性を維持すること
  • 個人やグループを差別しないこと
  • 利用分野に対して差別しないこと
  • 再配布するときに追加ライセンスを必要としないこと
  • ライセンスは特定の製品に依存しないこと
  • 一緒に配布されるほかのソフトウェアを制限しないこと
  • 技術的に中立であること
オープンソースは「パソコンが広く普及した今、ソフトウェアは欠かせないものになっている。よく使うソフトウェアは自由に無料で開放するほうが、結果的にそのソフトウェアは広く普及し、それを土台に業界は発展してく。さらに、ソースコードを改良してくれる人がいるかもしれない。世界中に人々に検証・改良してもらうことによって品質を確保していく。」という考えのもとに推進しています。実際にこの考えはうまく入っており、Amazon や Google や Facebook などの IT 大企業はオープンソースのものを利用し、また開発も手伝っています。無償で提供してしまうと有料のソフトウェアが衰退していくのではと思うかもしれません。しかし、例えば、道路を思い浮かべてください。道路は私道や高速道路でない一般的な道路であれば、その利用は(見かけ上)無料であり、その上で、自動車や自転車の製造・販売や宅配便などのサービスが成り立っています。「公共財」としてのソフトウェアは社会全体の生産性を向上させます。

オープンソースソフトは無料で自由に使える代わりに、基本的にマニュアルやサポートが存在しません。いや、存在する場合も有ります。しかし多くは英語で書かれているものばかりか、英語を直訳した感じで読みにくいものばかりです(読みやすい場合も有ります)。なので、オープンソースソフトを使うには「自助努力」が大切です。「互いに助けあう」ことも大切です。オープンソースソフトは自分も育てあげていくんだという精神で使ってください。

その他にも、オープンソースを使う利点は
  • 教育コストを削減できる -> 教育格差の是正
  • コードが検証可能 -> 科学の「検証可能性」と相性が良い
  • コピーしてどこへでも持ち運べる


キーワード


頻出中の頻出キーワードを説明します。
キーワード意味
コミュニティ特定のソフトの開発者とユーザーからなる自発的な集まり。
カーネルOS の中核部分。ハードウェアを制御する。
パッケージソフトは複数のファイルから構成されていますが、それらを個々にインストールするのは面倒です。インストールしやすくまとめたものがパッケージです。
ディストリビューションカーネルだけでは使える OS にならないので、多数のソフトを組み合わせて配布(distribute)可能な形にしたもの。
シェルコマンドを解釈するソフト。bash や zsh など多数存在します。「端末」はあくまで画面表示機能を提供するソフト。


Linux を導入する方法


大まかに 4 つの方法が有ります:
  1. USB メモリーに導入する
  2. ハードディスクを付け替える
  3. デュアルブート
  4. 仮想化マシン
USB メモリーにインストールする方法がもっとも安価で無難です。その代わり動作が遅くなります。ハードディスクを付け替える方法では、例えば古くなったマシンを再生したり、自作 PC を組んだ時に Windows の代わりに使う方法としておすすめです。デュアルブートは既存の Windows や macOS X を破壊する恐れがあるので一番安全ではない方法です。仮想マシンを使う方法は、OS の上に OS を走らせるので、スペックが要求されます。また、仮想マシンを使う方法ならではのトラブルも有ります。

空の HDD に Linux Mint をインストールする方法は USB メモリーにインストールする方法とほぼ変わりません。仮想化マシンにインストールする方法はいずれ書きたいと思います:


(追記 2018/03/31)書きました:


シェルをちょっと使ってみる


Ctrl
+
Alt
+
T
を押して端末を起動します。端末が立ち上がると以下のような画面が表示されます:
shellingford@LinuxMint ~ $

これは環境によって表示される文字は異なります。「ユーザー名@コンピューター名 ワーキングディレクトリ$」という並びになっています。$ は # だったり、% だったりしますが、基本的に $ はユーザー権限を表し、# はルート権限を表しています。$ はプロンプトと呼ばれ「コマンドを入力してください」と待機していることを表します。

ところで、サイトを徘徊していると $ 付きで書かれるのが一般的です:
$ cal 2018
しかし、$ は入力する必要はありません。そこで初心者は $ も入力しエラーが返されること経験をします:
$: コマンドが見つかりません

では、なぜ $ まで書く必要があるのかというと、パソコンが表示する文字列とユーザーが入力する文字列を区別するために書かれます。例えば
ls
MEGA linux_signing_key.pub ダウンロード ピクチャ
New Unity Project out.png テンプレート ミュージック
Redmond-Themes sassc デスクトップ 公開
Unity-2017.3.0f1 snap ドキュメント
libsass vidlist.html ビデオ

とあるとどれを入力し、どれが表示される文字列か分かりません。そこで $ もつけて表記するのです:
$ ls
MEGA linux_signing_key.pub ダウンロード ピクチャ
New Unity Project out.png テンプレート ミュージック
Redmond-Themes sassc デスクトップ 公開
Unity-2017.3.0f1 snap ドキュメント
libsass vidlist.html ビデオ

これで「ls」が入力する文字で、それ以外はパソコンが表示する文字だとわかるのです。しかし、当ブログでは入力するコマンドは:
date
と表記し、表示されるメッセージは:
2018年  3月 11日 日曜日 14:58:47 JST

と表記することで、「初心者が誤って $ まで入力する」「コピペするとき $ が邪魔」「ユーザーが入力する文字列とパソコンが表示する文字列の区別がつかない」を解決しています。

引数とオプション


半角スペースを空けて与える情報を引数と呼びます。先ほど
cal 2018
というコマンドを示しました。2018 年のカレンダーを表示するコマンドですが、この例では「2018」が引数です。引数は複数与えることも出来以下の例では 2018 年の 3 月を表示します:
cal march 2018
      3月 2018         
日 月 火 水 木 金 土
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

-(ハイフン)をつける場合は「オプション」と呼ばれます。ディレクトリやファイルを表示する ls コマンドは -a (おそらく all の a です)をつけることで隠しファイルやディレクトリ(.から始まる)も表示することが出来ます:
ls -a
-l (おそらく long の l です)をつければ long な形式で詳細を表示します。主にパーミッションを調べるのに使います:
ls -l
オプションはまとめてこのように書けます:
ls -la

Tab キーと↑↓キーの利用


Tab
を押すと自動で補完できる場合が有ります。例えばワーキングディレクトリがホームディレクトリ(/home/ユーザー名/ のこと。表現方法は $HOME や ~ があります)の時に、ワーキングディレクトリを「ピクチャ」に変えたいとします。以下のコマンドをうちます:
cd ピ
cd は change (working) directory を表しています。この状態で
Tab
を押すと残りの「クチャ/」まで補完されます。また
を押すと前回使ったコマンドを再現できます。このことはとても有用なので知っておくべきです。

Ctrl + C の利用


Ctrl
+
C
を押すとコマンドの実行の途中で、その実行を強制終了させることが出来ます。sleep コマンドは指定した時間だけ処理を停止するコマンドです。以下のコマンドは 5 秒処理を停止させます:
sleep 5
5 秒後にプロンプトに戻るはずです。次はこの処理中にキャンセルしてみましょう。上のコマンドを実行した後に、すぐ
Ctrl
+
C
を押すとすぐにプロンプトに戻るはずです。コマンドの処理を途中でキャンセルしたい場合に活用してください。

入出力リダイレクト


出力は通常モニターやプリンターに、入力は通常キーボードやマウスで行いますが、より抽象的に入出力を行うことでソフト同士のやりとりが容易になります。まず最初に画面以外に出力できることを経験してみましょう:
echo HelloWorld! > output.txt
更に、cat コマンドで output.txt の中身を見てみます:
cat output.txt
出力例:
HelloWorld!

echo の出力先を画面からファイルに変更することが出来ました!また、同じテキストファイルに違う内容を入力してみましょう:
date > output.txt
出力してみます:
cat output.txt
出力例:
2018年  3月 11日 日曜日 16:45:44 JST

date コマンドの出力先がテキストファイルに変わりました。しかし、HelloWorld! が消されてしまいました。つまり上書きされたのです。追記したい場合はどうしたらいいでしょうか。>> と 2 回続けます:
date >> output.txt
出力してみます:
cat output.txt
出力例:
2018年  3月 11日 日曜日 16:45:44 JST
2018年 3月 11日 日曜日 16:48:24 JST

追記できたのがわかります。次はファイルから出力する方法を見ていきましょう。bc コマンドは計算を処理するコマンドです。Linux Mint には標準で入っています。まずは 1+2 と書かれたテキストファイルを用意しましょう:
echo 1+2 > output.txt
この式を bc コマンドに渡します:
bc < output.txt
出力例:
3

このように、出力先をファイルに変えることを「出力リダイレクト」と言い、入力元をキーボードからファイルに変えることを「入力リダイレクト」と言います。

パイプの利用


上記の例では echo と出力リダイレクトを使って output.txt を生成し、内容を書き込み、入力リダイレクトを使って bc コマンドにファイルから式を渡して、計算結果を画面に表示させました。言わば output.txt を中間ファイルとして使っているわけですが、この中間ファイルを生成させずに直接コマンドの出力を別のコマンドの入力として渡す方法が有ります。それがパイプという仕組みです。以下のコマンドを実行してみてください:
echo 1+2 | bc
出力例:
3

パイプを使うことで処理を高速化することが出来ます。

バックグラウンドで実行


コマンドの最後に「 &」を追加して実行すると画面外でそのコマンドが実行されます。例えば sleep コマンドは指定した時間が経つまで、プロンプトに戻りませんが、「 &」を末尾につけるとすぐプロンプトに戻ります:
sleep 10 &
画面内に戻したい場合は fg (foreground)コマンドを使います:
fg
逆に、画面内で実行していて、途中から画面外(バックグラウンド)で実行したくなる場合も有ります。その時はコマンドを実行した後
Ctrl
+
Z
を押してコマンドの実行を停止させた後、「bg」と入力することでバックグラウンドで再開できます:
sleep 10
Ctrl
+
Z
を押して停止させた後:
^Z
[1]+ 停止

bg 1
という風に「bg ジョブID」で再開できます。fg コマンドを使えば sleep 10 が裏で実行されているのがわかるはずです:
fg

ワンライナーでプログラミング


プログラミングというと Java や C 言語という、いわゆる「プログラミング言語」を使って作る、大掛かりなものを連想しがちですが、ここでのプログラミングはシェル上で一行のコマンドとして実行する小さなプログラムです。このようなプログラミングスタイルを「ワンライナー」と呼んでいます。すでに我々はワンライナーを経験しています。それはこれです:
echo 1+2 | bc
このようにいくつかのコマンドを | などを利用してつなげていきます。

変数


プログラミングを始めるにあたり、最初に登場するのが変数です。例にもれずここでも最初に変数を取り上げます。シェルでの変数以下のように定義します:
x=3
使うときは $ を変数名の前につけます:
echo $x
コマンドの出力を変数に代入することも出来ます。コマンドをバッククォートではさみます:
d=`date`
echo $d

上の二行のコマンドは一行にまとめてこう書くことも出来ます:
d=`date`;echo $d
出力例:
2018年 3月 11日 日曜日 17:58:58 JST

シェルにはシェル変数が用意されています。たとえば、コマンドの実態を探すディレクトリが格納されている PATH 変数やデフォルトのシステム言語がセットされている LANG 変数、0 から 32767 までの整数をランダムで出力する RANDOM 変数、ホームディレクトリのパスが格納されている HOME 変数などが有ります。これらも利用するときは変数名の前に $ をつけます:
echo $LANG
出力例:
ja_JP.UTF-8

繰り返し制御


シェルでは繰り返しに for 文を使います。フォーマットは以下のとおりです:
for i in {1..5}; do 繰り返したいコマンド; doneあるいは for((i=1;i<=5;i+=1)); do 繰り返したいコマンド; doneどちらも同じ結果です。{1..5} は 1 から 5 まで繰り返す書き方で、{2..10} とかでも構いません(2 から 10 まで一個ずつ繰り返します)し、((i=1;i<=5;i+=1)) は ((i=2;i<=10;i+=2)) とかでも構いません。i+=2 でどれだけ増やしていくかを指定しています。2 なので 2 4 6 8 10 と増えていきます。
ファイルも扱うことが出来、例えばワーキングディレクトリの中で txt ファイルのみを表示したい場合はこのような書き方になります:
for i in *.txt; do echo $i; done*.txt にマッチしたファイルの一つ一つが変数 i に代入され、それを echo $i で出力しています。*.txt があるだけ繰り返し行われます。
出力例:
output.txt

awk の利用


awk は空白や行で区切られたテキストを処理するためのコマンドです。ワンライナーで使うととても便利なコマンドです。例えば以下のコマンドを実行してみてください(注意すべてき点はバッククォートではなくシングルクオートであるということです):
echo 1 2 | awk '{print $1+$2}'
出力例:
3

まず echo で出力するデータをパイプで awk に渡しています。$1 には 1 が格納され、$2 には 2 が格納されています。print は awk の持つ「データを表示するコマンド」です。シェルの持つコマンドではありません。なので awk '{}' の中の世界はシェルとまた別の世界だと思ってください。

応用


ここで実用的な一行プログラムを作成したいと思います。ワーキングディレクトリ内の png ファイルをすべて jpg ファイルに変換します。まず ImageMagic をインストールしてください:
sudo apt install -y imagemagickパスワードの入力が求められるので自分がログイン時に使用するパスワードを入力し
Enter
を押します。
続いて、適当にワーキングディレクトリに png 形式の画像を適当にダウンロードしてください。その後次のコマンドを実行します:
ls *png | awk '{printf "convert %s %0.5d.jpg¥n",$1,NR}' | sh
もし、ファイル名にスペースが入っているとうまく処理できませんが、これでワーキングディレクトリ内のすべての png 形式の画像が連番がふられた jpg 形式の画像に変換されます!
少し説明を加えると、
ls *pngでワーキングディレクトリの png ファイルを出力しています。その出力結果を awk に流し、一行一行'{}' の中のコマンドが実行されます。printf は画面に表示するコマンドです。printf "" の中の文字列を出力します。%s は受け渡されたファイルをそのまま出力します。%0.5d は頭部が 0 で埋まった 5 桁の整数を出力します。残りの $1 は ls *png で流れてきた png 形式のファイル名が格納されていきます。NR は行数が記録されていきます。これらの $1 と NR がそれぞれ %s と %0.5d に代入されていくのです。最後に sh で出力したコマンドを実行していきます。

次のコマンドでは html 形式で書かれたテキストファイルの内、表示される文字数を表示します。実行する前に output.txt に適当に html を記述してください:
tr -d "¥n" < output.txt | tr -d " " | sed -e 's/<[^>]*>//g' | wc -m
tr コマンドは(おそらく trim から取られていると思います)文字の置換や削除を行うコマンドです。-d オプションを指定することで指定した文字(ここでは改行。改行は ¥n で表します)を削除します。output.txt に書かれた文字列からまず、改行を取り除きます。これは改行も1文字とカウントされるからです。更にパイプで再度 tr コマンドを使って「 (半角スペース)」を削除しています。次に結果を sed に流しています。sed も与えた正規表現で文字列を置換したり削除したりするためのコマンドです。ここでは html タグを取り除いています。最後に文字数をカウントする wc コマンドに結果を流しています。-m をオプションをつけることでマルチバイト文字(日本語など)を 1 文字とカウントします。これで自分の書いた原稿がどれくらいの文字数がわかります。

終わりに


いかがでしたか。GUI で行う操作は直感的である反面自動化がしにくいです。GUI で行う操作は習得に多少の時間が必要ですが、なれると素早くできる利点があります。Unix の設計思想の中に「各プログラムが一つのことをうまくやるようにせよ」という言葉があります。echo や ls 自体は「これだけで一体なんの役に立つの?」という感じのコマンドを組み合わせることで強力な一行プログラムになることを学びました。

最後にちょっとだけ。以下のコマンドはワーキングディレクトリをミュージックに移し、ネットからビープ音の音源をダウンロードしそれを beep.wave と名づけて保存するコマンドです:
cd ミュージック && wget -O beep.wav http://anime.geocities.jp/combatbutler_combatbutler/music/A-Tone-His_Self-1266414414.wav
その後、次のコマンドを実行してみてください。3 分後に指定したファイルを鳴らす一行プログラムです:
sleep 180 && aplay beep.wavカップラーメンの時間を測るのにちょうどいいタイマーの完成です :P

参考元 : 『入門者のLinux』『1週間で LPIC の基礎が学べる本』
| Linux |
| 1/55 | >>

Show some apps list:


miku

Follow on your feed reader:


About this blog:

Linux Mint-centric chronicle.
Since 2009.
Info 更新日は土曜日です。

roadtoapython

roadtorubyist

git