Linux」カテゴリーアーカイブ

bash: ホスト名のIPアドレスを取得する方法

bashシェル上で単純にホスト名に対するIPアドレスを取得したかったのでメモ

digコマンドに +short オプションを付けると結果がとてもシンプル

$ dig +short www.kwonline.org
34.85.103.60

これを応用してrouteコマンドの結果からdefaultのゲートウェイホスト名のIPを調べる際に使ってる。
routeの結果がこうなんだが

$ route
カーネルIP経路テーブル
受信先サイト    ゲートウェイ    ネットマスク   フラグ Metric Ref 使用数 インタフェース
default         ntt.setup       0.0.0.0         UG    0      0        0 wlp1s0

このntt.setupというWifiルーターのホスト名をササっとシェルで取得したいのでこうなった。

$ route |grep default|sed -n '1p' |awk '{print $2}'|xargs dig +short
192.168.1.1

ncコマンド(netcat)でファイル転送

Virtualboxやらクラウドで、VM同士でササっと単発でファイルを転送したい時に使うのでメモ

サーバー側(ファイル転送元)
9999番ポートを開けてファイルおいとく

nc -lvp 9999 < input.txt

クライアント側(ファイル受け先)
サーバー(10.0.0.1)の9999番ポートからファイルをもらう

nc 10.0.0.1 9999 > output.txt

クライアントからサーバーに接続されると、サーバー側のターミナルにメッセージが表示される。

Listening on [0.0.0.0] (family 0, port 9999)
Connection from 10.0.0.101 50908 received!

クライアント側は何も表示されないので、Ctrl-Cで終わらす。
で、クライアント側にoutput.txtが出来上がっていればOK。

Xubuntu: Emacs上でemacs-mozcを使って日本語入力

Emacs上でemacs-mozc使ったら日本語入力が快適なのでメモ

まずはaptでemacs-mozc-binをインストール

$ sudo apt install emacs-mozc-bin

~/.emacs.d/init.el を編集してpackageを有効化する

(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/"))
(add-to-list 'package-archives  '("marmalade" . "https://marmalade-repo.org/packages/"))
(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/"))
(package-initialize)

Emacsを起動して、M-x package-list-packages を開き、「mozc」を選んで「Install」する

mozcパッケージインストール後、再び ~/emacs.d/init.el を編集してmozcパッケージを有効化する

(require 'mozc)
(set-language-environment "Japanese")
(setq default-input-method "japanese-mozc")
(prefer-coding-system 'utf-8)

これでOK.
Emacs起動後 Ctrl + \ で日本語IMをオンオフする。

Xubuntu: ターミナルで電卓

Xubuntu 18.04でイチイチ「MATE電卓」アプリを開くよりも手っ取り早いのでメモ。

bcというターミナル電卓が軽くてイイ。

$ bc
bc 1.07.1
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006, 2008, 2012-2017 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 

bcを起動したら、あとは数式を入れてEnterすれば結果が出る。
1+1
398*1.08
(75*3)-50
など

1+1
2
398*1.08
429.84
(75*3)-30
195

Ctrl+Dで終了

Xubuntu 18.04 で rclone を使ってGoogleドライブと同期する

rcloneでGoogleドライブとローカルを同期したのでメモ。

aptでrcloneをインストールする

$ sudo apt install rclone

それからrclone configで初期設定。

$ rclone config
2019/06/26 10:48:23 NOTICE: Config file "/home/hoge/.config/rclone/rclone.conf" not found - using defaults
No remotes found - make a new one
n) New remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
n/r/c/s/q> n

新規作成は「n」

name> Google

設定の名前をつける。
わかりやすく「Google」

Type of storage to configure.
Choose a number from below, or type in your own value
 1 / Amazon Drive
   \ "amazon cloud drive"
 2 / Amazon S3 (also Dreamhost, Ceph, Minio)
   \ "s3"
 3 / Backblaze B2
   \ "b2"
 4 / Dropbox
   \ "dropbox"
 5 / Encrypt/Decrypt a remote
   \ "crypt"
 6 / Google Cloud Storage (this is not Google Drive)
   \ "google cloud storage"
 7 / Google Drive
   \ "drive"
 8 / Hubic
   \ "hubic"
 9 / Local Disk
   \ "local"
10 / Microsoft OneDrive
   \ "onedrive"
11 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ "swift"
12 / SSH/SFTP Connection
   \ "sftp"
13 / Yandex Disk
   \ "yandex"
Storage> 7   

Googleドライブは「7」

Google Application Client Id - leave blank normally.
client_id> 
Google Application Client Secret - leave blank normally.
client_secret> 
Remote config
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine or Y didn't work
y) Yes
n) No
y/n> y

client_idとclient_secretは何もいれずにEnter
そして「y」を押すとブラウザが開いてGoogle認証ログインするので、rcloneを「許可」するを選ぶ

Waiting for code...
Got code
--------------------
[Google]
client_id = 
client_secret = 
token = {"access_token":"...","token_type":"Bearer","refresh_token":"...","expiry":"2019-06-26T11:52:02.661189132+09:00"}
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y

ターミナルに戻り、「y」

Current remotes:

Name                 Type
====                 ====
Google               drive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q

設定完了。
「q」で終了

そしたらローカルにフォルダ作って、リモートと同期

$ mkdir googledrive
$ cd googledrive
$ rclone sync Google: .

しばらく待つとリモートからローカルへの同期が完了する。

逆はこうだが、ローカルにないリモートのファイルが消されちゃうので、-n オプションつけて注意しながら同期という運用でカバー。

$ cd googledrive
$ rclone sync -n . Google:

Xubuntu 18.04 のダークテーマを有効にする

Xubuntu 18.04のダークテーマを有効化したのでメモ

~/.config/gtk-3.0/settings.ini に下記をコピペして再ログインする。
ファイルがなければ作る。

[Settings]
gtk-application-prefer-dark-theme=true

Google BigQueryでタブ区切りTSVをインポート&エクスポート

すごいよく使うけどよく忘れるのでメモ

TSVのインポート
※ヘッダあり・10行未満のエラーは無視

$ bq load --source_format=CSV --encoding=UTF-8 --field_delimiter='\t' --skip_leading_rows=1 --max_bad_records=10 project:dataset.table file.tsv id:int64,name:string,...

TSVでエクスポート
※ヘッダなし

$ bq extract --destination_format=CSV --print_header=false --field_delimiter='\t' project:dataset.table gs://gcsbucket/file.tsv

Ubuntu 18.04 に Scala をインストール

Ubuntu(Xubuntu) 18.04にScalaをインストールしたんだが、REPLで打ち込んだ文字がエコーされなかったのでメモ

まずはaptでscalaをインストール

$ sudo apt install scala

インストールしたらscalaのREPLを起動

$ scala

と、REPLが起動するんだが、何を打ち込んでもターミナルにエコーされない。
構わずに「println(“hoge”)」と入力してEnterを押すと「hoge」と出るので、エコーだけの問題

解決策は、ここに書いてあった。JLine2ライブラリの問題。
sbt – Scala REPL no echo on input – Stack Overflow

以下の手順で直った。

$ wget https://launchpad.net/~lokkju/+archive/ubuntu/java-compat/+build/16458066/+files/libjline2-java_2.14.6-1ubuntu1~bionicppa1_all.deb
$ sudo dpkg -i libjline2-java_2.14.6-1ubuntu1~bionicppa1_all.deb

これでREPLが正常に動作する。

HuaweiのHonor MagicbookにXubuntu 18.04をインストール

PCを買い替えたのでメモ。
ファーウェイのHonor Magicbookをgeekbuying.comから購入。
ネットでの注文から出荷まで5営業日、それからちょうど7日後に到着。

Huawei Honor Magicbook laptop AMD Ryzen 5 3500U Quad Core 14″ IPS 1920*1080 8GB DDR4 512GB SSD

こいつはWindows中国版がプレインストールされていて、起動と同時に中国語で喋りだすw

中国版Windows。地域選択で「日本」を選んでも日本語にはならない。

「待て、慌てるな、これは孔明の罠だ!」と司馬仲達っぽいセリフを脳内で唱えつつ、
Windowsに用はないので即座にXubuntuクリーンインストールの計を実行。

中国語で喋り続けるMagicbookにXubuntuのインストールUSBを刺して再起動。

BIOS画面を開くには、起動時にF2キーを押しっぱなしでOK。
Fast BootとSecure Bootを無効にして、BootオプションではGeneral UEFIからの起動を選択。

で、さらに再起動後インストーラが起動するので、HDDを消去してからXubuntuをインストール完了。

MagicbookにXubuntuをクリーンインストール

あとは諸々設定するんだが、どうも画面の輝度が調整出来ない。
※そしていまだに未解決。

ググってgrubの起動オプション変えたり、無理やり /sys/class/backlight/acpi_video0/brightness 書き換えたり。
あとはAMDが公開してるGPUドライバーをインストールしたりと試すが変わらず。
で、そんな事してたらVirtubalboxが起動しなくなった。。

screen 0 does not appear to be DRI2 capable

というエラーを吐いて落ちる。

仕方ないので輝度調整は一旦諦めて、amdgpu-pro-uninstallでドライバー削除。

$ sudo amdgpu-pro-uninstall
$ sudo apt autoremove
$ sudo dpkg-reconfigure xorg

再起動したらVirtualboxも起動した。

そのうちカーネルパラメータいじったりアップデートで直るだろうからしばらく放置。

nkfでUTF-8のBOMを削除する

nkfでBOM付きのUTF-8をBOMなしのUTF-8Nに一発変換したかったのでメモ

hoge.txtのBOMを削除

$ nkf --overwrite --oc=UTF-8 hoge.txt

おまけ:hoge.txtにBOMを追加

$ nkf --overwrite --oc=UTF-8-BOM hoge.txt