grep コマンドで複数ファイルから検索

grep コマンドで複数ファイルから検索

* というワイルドカードを使うことで
複数ファイルの中から該当する部分を表示することができる

今回は centos の key ファイルの場所について調べたいので
まずは config ファイルを調べる

ll /etc/ssh/*config

すると該当するのが2つある

-rw-r--r--. 1 root root 2047 11月 13 17:54 2014 /etc/ssh/ssh_config
-rw-------. 1 root root 3913  3月  7 20:54 2014 /etc/ssh/sshd_config

本来なら

cd /etc/ssh
sudo grep key ssh_config sshd_config

というように
ファイルを2つ指定して行うけど
もっとたくさんの設定ファイルになってくると
これは非効率的

なので *をつかって複数ファイルを対象に調べる

sudo grep key /etc/ssh/*config

結果はどちらでも同じになる

/etc/ssh/sshd_config:#HostKey /etc/ssh/ssh_host_key
/etc/ssh/sshd_config:#HostKey /etc/ssh/ssh_host_rsa_key
/etc/ssh/sshd_config:#HostKey /etc/ssh/ssh_host_dsa_key
/etc/ssh/sshd_config:# Lifetime and size of ephemeral version 1 server key
/etc/ssh/sshd_config:#PubkeyAuthentication yes
/etc/ssh/sshd_config:#AuthorizedKeysFile	.ssh/authorized_keys
/etc/ssh/sshd_config:# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
/etc/ssh/sshd_config:# Change to no to disable s/key passwords

このワイルドカードと呼ばれる*の一斉検索は
ソースコードなどをみるときにも使える

また、 -r オプションで検索すれば
ファイル名ではなく、ディレクトリを指定して調べることもできる

例えば
wordpress の投稿内容を表示する
the_content
をテーマのどこにあるか調べるのなら

grep -r the_content /var/www/html/wordpress/wp-content/themes/twentyfifteen/

とすれば

/var/www/html/wordpress/wp-content/themes/twentyfifteen/content-page.php:	<?php the_content(); ?>
/var/www/html/wordpress/wp-content/themes/twentyfifteen/content-link.php:	the_content( sprintf(
/var/www/html/wordpress/wp-content/themes/twentyfifteen/inc/template-tags.php:	$has_url = get_url_in_content( get_the_content() );
/var/www/html/wordpress/wp-content/themes/twentyfifteen/image.php:		the_content();
/var/www/html/wordpress/wp-content/themes/twentyfifteen/content.php:	the_content( sprintf(


という結果になる

なお、ソースコードを調べる場合
量がおおいときもあるので
そんなときには
less コマンドをつかうと見やすくなる

覚えると便利な grep オプション

覚えると便利な grep オプション

検索結果から除外したいものがある場合
-v オプションを使うと便利

例えば

grep 'sh$' /etc/services

を実行すると


bvcontrol       1236/udp                        # Daniel J. Walsh
cybercash       551/tcp                 # cybercash
cybercash       551/udp                 # cybercash
slush           1966/tcp                # Slush
slush           1966/udp                # Slush
novell-zen      2544/tcp                # Management Daemon Refresh
novell-zen      2544/udp                # Management Daemon Refresh
trustestablish  2573/tcp                # Trust Establish
trustestablish  2573/udp                # Trust Establish
simple-push     3687/tcp                # simple-push
simple-push     3687/udp                # simple-push
synchromesh     4548/tcp                # Synchromesh
synchromesh     4548/udp                # Synchromesh
fmp             4745/tcp                # Funambol Mobile Push
fmp             4745/udp                # Funambol Mobile Push
nfoldman        7393/tcp                # nFoldMan Remote Publish
nfoldman        7393/udp                # nFoldMan Remote Publish

というように tcp と udp の両方がでてくる

でも udp の行はいらない、というのなら

grep 'sh$' /etc/services | grep -v udp

とすれば
udp の結果は除外される


cybercash       551/tcp                 # cybercash
slush           1966/tcp                # Slush
novell-zen      2544/tcp                # Management Daemon Refresh
trustestablish  2573/tcp                # Trust Establish
simple-push     3687/tcp                # simple-push
synchromesh     4548/tcp                # Synchromesh
fmp             4745/tcp                # Funambol Mobile Push
nfoldman        7393/tcp                # nFoldMan Remote Publish


これを使えば、結果からコメントアウトされたものを除いて
設定ファイルをみることができる

コメントアウトは
先頭に # がついている行なので
grep -v ^#
を使えば簡単に除外できる

例えば、apache の設定ファイルの
/etc/httpd/conf/httpd.conf
の中から
/var/www/
の行を調べたいけど、
#でコメントアウトされた行は除くというなら

cat /etc/httpd/conf/httpd.conf | grep var/www | grep -v ^#

とすれば

DocumentRoot "/var/www/html"
<Directory "/var/www/html">
Alias /icons/ "/var/www/icons/"
<Directory "/var/www/icons">
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
<Directory "/var/www/cgi-bin">
Alias /error/ "/var/www/error/"
    <Directory "/var/www/error">


というように必要な部分だけみることができる

結婚式招待状の素材について

結婚式招待状の素材について

まずは
結婚式招待状 素材で検索

http://verandaher.blog.fc2.com/blog-entry-247.html

を参考に

このページの広告にあった
weekly100 sale

もみてみた

まずは招待状を作成するのに必要な素材を調べます

これは
招待状 手作り 必要なもの
で検索すれば簡単にでてきたので

今回は
結婚式の手作り招待状に必要なアイテム 用意するもの


招待状を作成しよう

を参考にしました

まず必要なものは

招待状の本状
封筒
付箋
返信用はがき
寿切手
会場案内図
封緘

の7つ

この内、素材としてほしいものは
本状
返信はがき
封筒
シール
あと、必要に応じて付箋
この5つがあればok

必要なものはわかったので
次に素材の購入先を調べることに

ここで重要になるのが、商品そのものの値段と
送料
ネットで購入するにあたっては
安くても送料まで見ないと思わぬ金額になったりします

今回、いくつか見てみました
Primage の場合は
関東、中部の場合、
583円になります
他の地域は
配送・お支払い・返品交換について

に記載されています
なお、5000円以上だと送料無料になります

次に調べたのが
PIARY
こちらは全国一律で800円になります
詳しくは
お届け方法・配送料について

に記載されています

また、Weekly100SALEを行っている
AMO LEAF ですが
送料は全国一律で 740円でした
詳しくは
支払い・納品

に記載されています

これを元に
まず、予算として結婚式場で出してもらった
見積もりを元に素材の金額を考えます

今回の場合は、税込みで
1枚あたり、432円ですので
これを元に購入するようにします

Libre Office Calc で変数の中身を表示するには

ドットインストールで VBA Excel をみて
これを LibreOffice Calc でもできないか試してみました

今回
#10 Integer型の変数を使ってみよう

xの値をイミディエイトウインドウに表示しようとしたけど

LibreOffice Calc の場合
イミディエイトウインドウがないので
別のデバッグ方法を調べることになりました

検索するには
デバッグ calc libre Print
で検索したところ
Printで変数を表示&チェックしよう
を参考に Print を使うことで出力可能になりました

Option VBASupport 1
Sub VariableTest()

	Dim x As Integer
	x=10
'	Range("A1").Value=x
'	Debug.Print x
'	Debug.Print x
	Print x
End Sub

とすることで
ダイアログで表示されるようになります

libre

正規表現について

正規表現について

とりあえず
/etc/service を検索する
この中から
80/tcp
80/udp
を調べる

grep '80/.p' /etc/services

これだといろいろとでてくる

理由は
. が正規表現の意味では
なんでもいいから1文字ってことだから

なので

grep '80/..p' /etc/services

を実行すると
80のあとに何か2文字あり
そのあとにpがあること
という意味になる

. が2つなら2文字という意味

次は、ちょっと描き方を変えて検索する

grep '80/[tu][cd[]p' /etc/services

これだと
tcp
udp
に該当するものがでる
これは正規表現で
[] で囲むことで文字の指定をしているから

[tu]
だと
t か u
になる
これで最初の文字がt か u
で始まるものになる

次に2文字目が
[cd]
なんで、cか d が2文字目のもの
という意味になる

そして3文字目は p だけなので
条件を満たすのは
tcp
udp
のどちらかという意味になる

あとは検索先を /etc/service
と指定しているので
ここから検索している

この[]をブラケットという

これを使えば、ポート番号を指定して検索できる

grep '[2-8]000/tcp' /etc/services 

とすると

sieve-filter    2000/tcp        cisco-sccp      # Sieve Mail Filter Daemon
x11             6000/tcp        X               # the X Window System
afs3-fileserver 7000/tcp                        # file server itself
quake           26000/tcp
hbci            3000/tcp                # HBCI
#remoteware-cl  3000/tcp                # RemoteWare Client
terabase        4000/tcp                # Terabase
commplex-main   5000/tcp                #
irdmi           8000/tcp                # iRDMI
entextxid       12000/tcp               # IBM Enterprise Extender SNA XID Exchange
scotty-ft       14000/tcp               # SCOTTY High-Speed Filetransfer
hydap           15000/tcp               # Hypack Data Aquisition
biimenu         18000/tcp               # Beckman Instruments, Inc.
snapenetio      22000/tcp               # SNAPenetIO
inovaport1      23000/tcp               # Inova LightLink Server Type 1
med-ltp         24000/tcp               # med-ltp
icl-twobase1    25000/tcp               # icl-twobase1
nxlmd           28000/tcp               # NX License Manager
mbus            47000/tcp               # Message Bus

というようにポート番号での検索が簡単になる

ちなみに [] の中で ^ を使うと否定の意味になる

これは ! とかと同じ意味になる

もし特定の番号以外を調べたいというのなら

grep '[^2-8]000/tcp' /etc/services

を実行すれば

cadlock2        1000/tcp                #
cslistener      9000/tcp                # CSlistener
ndmp            10000/tcp               # Network Data Management Protocol
irisa           11000/tcp               # IRISA
igrid           19000/tcp               # iGrid Server
dnp             20000/tcp               # DNP
irtrans         21000/tcp               # IRTrans Control
safetynetp      40000/tcp               # SafetyNET p

という結果になる

次に0が1回以上繰り返して
続く文字が
/tcp という行を探すのなら

grep '00*/tcp' /etc/services

を実行する

ちなみに
*は0回以上の繰り返しという意味なので

grep '0*/tcp' /etc/services

だと意味が変わってしまう

これを利用して数理が4つのあと /tcp
となっている行を探すのなら

grep '[0-9][0-9][0-9][0-9]*/tcp' grep /etc/services

とすればいい

でも通常はこんな面倒な書き方はせず

grep -E で拡張正規表現を使う

5桁の数字のあとに /tcp とかいてある行なら

grep -E '[0-9]{5}/tcp' /etc/services

とすればいい

 {} の中に繰り返す回数を書けばオK

HTML の emmet で li*5 とかいて
li が5つというようなかんじ

次に ^ だけど
{} 以外では先頭という意味になる
vim とかで先頭の文字を指定して検索するときにも使える

Linux のシステムファイルは
#でコメントアウトしているので
試しにコメントアウトされている行を検索するのなら
grep ‘^#’ /etc/services
とすれば
先頭が#で始まる行を調べることができる

逆に行末を調べたいのなら $ をつけて調べる
shが行末になっている部分を探すのなら

grep 'sh$' /etc/services 

とする

書く順番が
行頭を探すのなら
^探したい文字
となり

行末を探すのなら
探したい文字$
というように書くようになる

結婚式招待状作成

結婚式招待状作成

http://maruai.co.jp/pri/download/
に無料のテンプレがあるので
ダウンロード

ただし、ものによっては商品購入者のみダウンロード可能なものがある
あじさいはダメだった

ここは Microsoft Word が必須になるので
別のものを検索

http://www.kamizukan.jp/wedding/useful_info/template.php
に無料テンプレがあるので
こちらを試すことに

今回は、この中からティアラテンプレートをダンロード
招待状のサイズが
A4
A4ワイド
と2つあるため、どちらがよいかわからないので
両方ダウンロード

ちなみに、テンプレファイルの拡張子は
.doc
なので MicroSoft Word のファイルになる

今回、Mac で作業しているので
これを編集するソフトが必要

ということで互換性のありそうな LibreOffice をダウンロードすることに

https://ja.libreoffice.org/download/libreoffice-fresh/?type=mac-x86&version=4.3&lang=ja
から
Mac OS X x86_64 (10.8 or newer required)
を選んでダウンロード

ダウンロードできたら
LibreOffice_4.4.3の .dmg 拡張子のファイルを
ダブルクリック

これでLibreOffice をどうするかでてくるので
Applications にドラッグ&ドロップ

スクリーンショット 2015-06-14 17.22.15

これでキーボードの F4 を押すと
すべてのアプリ一覧がでるので
libre
で検索すると
LibreOffice が表示されるので
これを起動

スクリーンショット 2015-06-14 17.26.01

スクリーンショット 2015-06-14 17.26.16

OpenFIle でファイルを開けるので
ダウンロードしてきたテンプレファイルを開きます

スクリーンショット 2015-06-14 17.33.13

これで無事に開き、編集することができました

スクリーンショット 2015-06-14 17.37.07

LibreOffice は
Windows
Mac
Linux
でも使えるので、いろいろ作成してみようと思います

文面やデザインなどはテンプレを使うことにしたのですが
次に印刷する素材です

このあたりも調べてみようと思います

ちなみに、Mac でのスクショの取り方は
http://weekly.ascii.jp/elem/000/000/234/234838/
を参考にしました

cmd + shift + 3 で全画面のスクショ
cmd + shift +4 で範囲指定
cmd + shift + 4 のあとにスペースキーを押すとウインドウが対象になるので
これで左クリックすると、ウインドウ単位のスクショがとれます

jQuery Mobile のテーマ作成

jQuery Mobile のテーマ作成

wordpress で スマホ向けテーマをつくろうとして
思い出した jQuery Mobile

そして今回の参考サイトは
WordPress のテーマを jQuery Mobile でスマートフォン対応に

まず Theme Roller だけど
テーマローラーの概要(jQuery Mobile 1.0.1 日本語リファレンス)
をみようとしたけど
バージョンが古くなっているためか
見ることができないので
Theme Roller を調べることに

Theme Roller については
jQuery Mobileのテーマを設定(&ThemeRollerによる自作テーマ作成)するには?

を参考にさせていただきました

このTheme Roller は
ThemeRoller for jQuery Mobile

これの略称みたい

これを使うことでテーマの作成ができます

サイトにアクセスすると
最初にダイアログがでてくるので、
Get Rolling をクリックします

theme

次に、Global タブの中のメニューで
全体のレイアウトを作成していきます

theme2

設定できる項目は

Font Family はフォント

Corner Radiiあボタンなどの角丸

Icon はアイコン
Box Shadow はボックスの影効果
となっています

ちなみに、ゼロからつくるのではなく
jQuery Mobile のデフォルトテーマからつくるのなら

Import をクリックして
Import Default Theme をクリック

theme3

これでコードがインポートされるので
Import をクリックします

theme4

すると、適用したテーマが表示されます
AとBでの違いもわかります

theme5

テーマの作成が終わったらダウンロードします

Download をクリックすると
テーマの名前を入力するためのダイアログがでます

Theme Name にテーマの名前を入力します
今回は smart にしてみます

そして Download Zip をクリックすれば
ダウンロードできます

theme6

なお、Theme Name を入力しないとダウンロードできません

ダウンロードしたファイルは zip で圧縮されているので
解凍して、
その中にある themes フォルダを使います

LibreOffice Calc でマクロ

LibreOffice Calc でマクロ

ドットインストールで
Excel VBA があったけど
Ubuntu や MacBook Air に入れてあるのは
MS Office ではなく
LibreOffice

これを使ってマクロをやったり
ドットインストールの Excel VBAに挑戦してみたいので
設定

LibreOfficeでのVBAの実行方法

を参考に設定

幸い、私の環境も ubuntu 14.04 なので問題ないはず
なぜか、私の環境だと日本語化されていた
ツール > オプションでダイアログが開くので
セキュリティにある
マクロセキュリティをクリック

vba

次にセキュリティの強度設定になるので
中の
信頼されていないソースからのマクロ実行前に確認が求められます
をクリックし
OK

vba2

これでマクロセキュリティは変更したので
次に Java を実行できるようにする

LibreOffice の中にある 詳細 をクリック
そして
マクロの記録を有効にする(限定的)
にチェックをいれる

vba3

これで準備OK

ドットインストールだと
Excel なので
Visual Basic Editor を使っているけど

LibreOffice の Calc なので
ツール > マクロ > マクロの管理 >
LireOffice Basic …
を選ぶ

これでウインドウが表示される

次に、マクロをつくるので
新規作成をクリック

vba4

するとモジュール名を求められる
今回は試験的にやるので
Module1 のままでOK

vba5

これで
LibreOffice Basic IDE が起動する

vba6

ちなみに、
1行目に
Option VBASupport 1
を追加すると
VBAを有効化できるらしい

Linux 版 KindleGen のインストール

Linux 版 KindleGen のインストール

wordpress に Pripre プラグインを入れ
投稿記事を EPUB に変換

これを calibre で変換して kindle 本リリース
という予定だったけど、
リリースできず、先日 Amazon からメールが届きました

原因はサードパーティアプリで
mobi に変換すると
Kindle プラットフォームでは対応していない要素が含まれることがある
とのこと

このため、最新の Linux 版 KIndleGen ver2.9
をダウンロード

kindlegen

展開するためのディレクトリがほしいので

mkdir kindlegen

でディレクトリを作成

今回、解凍するのは
kindlegen_linux_2.6_i386_v2_9.tar.gz

tar.gz 圧縮ファイルを回答するには
tar コマンドを使う
このとき、そのまま回答すると、
カレントディレクトリ、つまり今のディレクトリに解凍されるので
-C オプションをつけて指定のディレクトリに解凍する

これは、解凍するときに様々なフォルダやファイルがあって
わかりにくくならないようにするため

ちなみに、オプションにつけるのは
大文字のCなので注意
小文字の c だと

tar: '-Acdtrux', '--delete' または '--test-label' オプションのうち 2つ以上指定することはできません
より詳しい情報は 'tar --help' または 'tar --usage' で.

とエラーになってしまう

tar コマンドについては
【 tar 】 ファイルを書庫化・展開する(拡張子.tarなど)

にオプションや使い方が載っているので
こちらを参考に

では実際に kindlegen の圧縮ファイルを解凍

 tar xfvz ダウンロード/kindlegen_linux_2.6_i386_v2_9.tar.gz -C ~/kindlegen/

これで kindlegen ディレクトリに解凍される

kindlegen2

でも、このままだと毎回ディレクトリ移動して面倒なので
パスを通しておく

vim .bashrc 

で設定ファイルを開く

なお、vim がない場合

sudo apt-get install vim

でインストールできる

ちょっと使いなれるまで難しめのテキストエディタだけど
ドットインストールで無料で学習できるので
覚えておくと、サーバーの操作にも役立つ
vim入門 (全18回)

vim の操作はおいておいて
.bashrc の編集

これは

export PATH=$PATH:~/kindlegen/

をファイルの最終行に追記する

変更を保存したら設定を反映するため

source .bashrc 

を実行

これで kindlegen コマンドが使えるようになります

実行するには
kindlegen 変換したいファイル名
となります

今回は ubuntu.epub を変換するので

 kindlegen ubuntu.epub

としました

ただ、変換した epub ファイルに問題があるようで
Mobi file built with WARNINGS!
となりました

32bit ではなく 64bit 環境なので

apt-get install lib32stdc++6 lib32z1 lib32z1-dev


32bit 互換ライブラリをいれてみたのですが
結果は変わらず

今後、Mac などでも検証してみる予定

ubuntu 右クリック設定変更

ubuntu 右クリック設定変更

Bender で Alt + マウス右クリックすると
ウインドウ操作のポップアップがでてしまう

right

これは Ubuntu のデフォルトのショートカットキーが
設定されているのが原因

How do I disable the alt-right click keyboard binding?

を参考に設定

sudo apt-get install dconf-tools


dconf-tools をインストール

次に

dconf-editor

で dconf エディタを起動

org > gnome > desktop > wm > Preferences

この中にある
mouse-button-modifier が
その設定になっている

right2

これはデフォルトで Alt になっているので
をダブルクリックし
に変えて Enter を押す

right3

この dconf エディタの使い方については
Ubuntu dconfエディター その1 – dconfについて・インストールと使い方

を参考にしました

注意点としては、
を空欄にしないこと

これをやってしまうと、マウスの右クリックの扱いが
ctrl + 右クリックになってしまうので
もしおかしくなってしまったら
デフォルトにリセットをクリックすることで元に戻せる