As rookie

ルーキーインフラエンジニアがインフラのこと以外も結構書いてしまうブログ

manの登録の仕方

英語が苦手な人にmanページの日本語表示の仕方教えてあげたいなと思い(はい。私も苦手です。)

manページの日本語化をした。

この方のapt-get コマンド通りに実行すれば大丈夫

d.hatena.ne.jp

sudo apt-get manpages-ja-dev manpages-ja

これで

/usr/share/man/ja/man1/

の中にgz が追加されるのではないでしょうか

ですが、愚かな私は

manpages-ja はインストールしたもののmanpages-ja-dev はインストールしませんでした。

そこでたちはだかった壁

man ssh
SSH(1)                                     BSD General Commands Manual                                    SSH(1)

NAME
     ssh — OpenSSH SSH client (remote login program)

SYNOPSIS
     ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E log_file]
         [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [-L address] [-l login_name]
         [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address] [-S ctl_path]
         [-W host:port] [-w local_tun[:remote_tun]] [user@]hostname [command]

DESCRIPTION
     ssh (SSH client) is a program for logging into a remote machine and for executing commands on a remote
     machine.  It is intended to provide secure encrypted communications between two untrusted hosts over an
     insecure network.  X11 connections, arbitrary TCP ports and UNIX-domain sockets can also be forwarded over
     the secure channel.

---------------------------------- 以下略 --------------------------------------------------------

つら、sshは英語かよ。

sshの日本語manページなんて探せば見つかるっしょ!

ありました。

OpenSSH 日本語マニュアルページ

正確にはopensshのmanページですね

ってことはmanコマンドsshも日本語化できるってことですね!

manのsshを日本語化する手順

まず上記opensshのmanが乗ってあるサイトからtar.gzをダウンロードします。 そしてtarで展開してそれをmanの1 セクションに移動させます

mkdir openssh-man
cd openssh-man
curl -o openssh.man.tar.gz https://euske.github.io/openssh-jman/openssh-jman-730p1.tar.gz
tar zxvf openssh.man.tar.gz
sudo cp *.1 /usr/share/man/ja/man1/

みてみましょう

man ssh
名前
     ssh — OpenSSH SSH クライアント (リモート ログイン プログラム)

書式
     ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bindするアドレス] [-c 暗号方式] [-D [bindするアドレス:]ポート] [-E ロ
     グファイル] [-e エスケープ文字] [-F 設定ファイル] [-I pkcs11] [-i identityファイル]
     [-J [ユーザ@]ホスト[:ポート]] [-L アドレス] [-l ログイン名] [-m MAC指定] [-O 制御コマンド] [-o オプション]
     [-p ポート] [-Q 問い合わせオプション] [-R アドレス] [-S 制御用パス名] [-W ホスト:ポート]
     [-w ローカルtun[:リモートtun]] [ユーザ@]ホスト名 [コマンド]

説明
     ssh (SSH クライアント) はリモートマシンにログインしたり、 リモートマシン上でコマンドを実行するためのプログ
     ラムです。 これは安全でないネットワーク上にある 2 つの信頼されていないホスト間で、 暗号化された安全な通信を
     提供します。X11 接続や 任意の TCP ポートおよび UNIX-ドメイン ソケットなども安全な通信路を通して転送できま
     す。

     ssh は指定された ホスト名 に接続し、 (オプションが指定された場合はその ユーザ で) ログインします。 ユーザは
     リモートマシンに対して、 本人であることを証明する必要があります。 これにはいくつの方法のうち、ひとつを使い
     ます (下記参照) :

     コマンド が指定された場合、リモートホスト上では ログインシェルのかわりにそのコマンドが実行されます。

---------------------------------- 以下略 --------------------------------------------------------

$LANGに日本語設定してないひとはしましょう。

locale -a | grep JP
ja_JP.utf8

でもしあるなら

LANG=`locale -a | grep JP`

これで私の環境はすぐに英語と日本語すぐに変わります。

CLIからgoogleの検索をしたい

こんにちは!

最近ようやく、この言葉がわかるようになりました。

GUIしかないとやる気が出ない」

初めて聞いたのが3年前ぐらいで、「こいつ何言ってんだ?GUIの方がわかりやすいだろ」って思っていました。

でも今ならどこがわかりにくいとか具体的なことまで言えませんがその気持ちが分かる気がします。

CLIに慣れてきて一歩「できる奴ら」に近づいた気になっています。

本題

CLIで色々していて、わざわざgoogle chrome開くの面倒だなってときが来ました。

そこで僕は「CLIブラウジングできるようなもの作ったらOKじゃね?」って考えました。

探したらありました。悔しいですね。普通に有名そうなやつですね

lynx

というものがあるんですね

Ubuntuなら

sudo apt-get install lynx

でインストールできます。

簡単な説明をすると、

lynx <URL>

で特定のwebページをCUIで表示することができます。普通にブラウジングしている感じです。

結局すること検索するぐらいだしgoogleにアクセスするようにすれば良いや~

からcliから直接googleで検索したいや~

に知らぬまになっていました。

ってことでCLIブラウザを1から作るほどの技術力はないので、lynxを使ってgoogle検索できるようにしました。

超簡単です。シェルスクリプトを作っただけです。

for x in "$@"
do
  query=$query$x+
done
lynx https://google.co.jp/search?q=$query

それがこちら

URLに直接検索する文字列を与えれることができれば検索は容易だなって思っていたらやっぱりできました

引数が $queryに代入されそれをURLにつなげて検索するというとても単純なものです。

これをgoogle として保存します。実行権限も与えます

そして/usr/bin/の配下に保存すると

google as rookie

等でCLIから検索できるようになりました。GIFのキャプチャを乗せたいが方法がわからないのでまたこんど乗せます

pythonのパッケージをcurlするためのURL知りたいだけなのにchromeをわざわざ開かないといけなかったのが いまではchromeを開かずにURLを知れるようになりました。

反省点を踏まえて(Mo-ikutsuneruto Calender)

どうもこんにちは!

僕は12月1日からソロアドベントカレンダーと題して、毎日ブログを更新しようとしていました。

ですが、実際は11日目にしてブログの更新は止まりました。

改めて考えてみたのですが、そもそも25個もネタがありません。

25日連続でブログを書くなんてとてもしんどいです。

ってことで、開き直りと反省をバネに

もういくつ寝るとカレンダーを開始します。

Mo-ikutstuneruto calender(和製)

もういくつ寝ると、お正月〜

12月31日まで毎日ブログを更新して1月1日は9時にうるう秒を眺めて2度寝でも決め込みたいものです。

さっそく今日の記事後ほど投稿しよう!!

反省点を踏まえた結果(非技術)

こんにちは

Mo-ikutsuneruto Calender 1日目の記事です。

すら書くことのできないクズ野郎ということが判明しました

mokicks.hatenablog.com

見てる人は少ないだろうが、それでも謝罪します。

すいませんでした。

書かなかったことにびびって自分のブログのURLにすらアクセスできませんでした。

これからは開き直って、ちょうど良い頻度でブログを更新します。

manのセクションとmanファイル(11日坊主)

  • この記事はsolo_advent_calender 2016年12月11日のものです。

こんにちは ショート advent calender11日目です。

manで気になったことがあったので調べた結果です。

普段コマンドのことで分からなかったことがあったらman 使ったら良いっていう認識でサーバー触ってます。

ではそのmanのファイルはどこにいるのでしょう

どうやら$MANPATH にmanファイルが置かれているディレクトリがありそう。

echo $MANPATH

謎の空白が帰ってきた。これはちょっとわからない。 一度置いといて

manの設定は/etc/man.config 書いてあります。 そこに

MANPATH /usr/share/man

という記述が!とりあえず移動

cd /usrshare/man

このディレクトリの中にenkoja がありました。

私の環境では日本語でmanが表示されているので

cd ja
ls
man1  man2  man3  man4  man5  man6  man7  man8  man9

さらにディレクトリが9個もある。。。

どれをみれば設定ファイルがあるんだ?何の数字?

結論からいうとこの数字はセクションの数字です。

セクションとは、ドキュメントの内容の分類だそうです。

セクションの数字の対応表

Linuxコマンド集 - 【 man 】 オンライン・マニュアルを参照する:ITpro

このページで記されてますので参考にします。

そしてmanコマンドで

コマンドのセクションは何番と何番があるのかというのは

man -f <コマンド>

で確認することができます。たとえば

$ man -f passwd

passwd               (1)  - update user's authentication tokens
passwd               (5)  - password file

というふうに表示されます。

そして

$ cd man5

$ ls | grep passwd
passwd.5.gz

やはりmanの5番目のディレクトリにpasswd関係のファイルがありました。

ですが、gzip形式で圧縮されているようです。

これを展開して中身を見たい気持ちはありますが、今日はここまで。

PS. manの6番目のセクションはゲーム らしいのですが、man6 に格納されている.gzファイル名でmanを実行するとゲームの説明がみれることに気づきました。 ここも深くみていきたいものです。

Linuxのバッククォート(10日坊主)

  • この記事はsolo_advent_calender 2016年12月10日のものです。

こんにちは ショート advent calender10日目です。

本来は土曜日にあげるはずだったやつです。

mokicks.hatenablog.com

これの続きで、 シングルクォート、ダブルクォートときたらバッククォートですよね

コマンドをバッククォート`` で囲むとコマンドの実行結果が展開される。コマンドの標準出力を変数に代入したりできます

$ today=`date`

$ echo date #バッククォートで囲まないとただの文字列だと認識する
date

$ echo $today
2016年 12月 10日 土曜日 23:42:15 JST

$ hoge=neko

$ echo '$hoge' is "$hoge"
$hoge is neko

$ pure=`echo '$hoge' is "$hoge"` # 変数pureに` $hoge is neko` を代入

$ $pure
-bash: $hoge: コマンドが見つかりません #$pureには`$hoge is neko` が入っているので$hogeがコマンドとして入力される

$ echo $pure
hoge is neko
$ $pure

の部分で$hogeコマンドを実行しようとして、失敗しているが、

$ $hoge

を実行すると -bash: neko: コマンドが見つかりません

となります。普通に$hogeを呼び出すと変数hogeに入っているnekoが実行されるのに、なぜ$hoge コマンドを実行しようとしたのか。

echo でシングルクォートで囲って出力したものは、見かけ上では分からないが文字列ということになってそう

$ '$hoge'
-bash: $hoge: コマンドが見つかりません

という結果になる。変数の$hoge は知っているが、文字列の$hogeは知らないという感じですね。

実際にデータがどのように認識されているのかを調べる方法を調べよう

Linuxのシングルクォートとダブルクォート(?日坊主)

  • この記事はsolo_advent_calender 2016年12月9日のものです。

こんにちは ショート advent calender9日目です。

金曜日に書き忘れ、土曜日にまとめて書こうと思っていると、土曜日も気づいたら終わっている。そんなことありますよね。

はい。

シングルクォート'' の場合は単純に文字列として出力する。 ダブルクォートは"" の場合は変数展開してくれる。です

$ hoge=neko # 変数hogeに文字列nekoを入れる

$ echo hoge 
hoge

$ echo $hoge # 変数を表示するには先頭に$をつける
neko

$ echo '$hoge' # $hogeを文字列として表示
$hoge

$ echo "$hoge" #変数を展開して表示
neko

$ echo "I love $hoge" # 文字列に変数を埋め込む
I love neko

$ echo '$hoge' is "$hoge" # 
$hoge is neko