今さら聞けない linux コマンドラインツールテクニック その1 rev. 2
TRANSCRIPT
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 1/53
今さら聞けないLinux コマンドラインツールテクニック
その 1 rev. 2
武山 文信日本 openSUSE ユーザ会
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 2/53
みなさん
って何かご存知ですか?
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 3/53
正しいのはどれ?
● 1. サーバールームでモフモフできるカメレオン型ガジェット
● 2. Ruby で簡単に Web アプリを作れるフレームワーク
● 3. 今年で20周年のドイツ生まれの Linux ディストリビューション
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 4/53
正解
● 3. 今年で20周年のドイツ生まれの Linux ディストリビューション– S.u.S.E Linux 4.2 で独自のディストリビューションになってから
● Q: RedHat 系ですか? Debian 系ですか?A: どちらでもありません!
● Q: OpenSUSE ですか?openSUSE ですか?A: o は小文字です。IPhone ではなく、iPhone なのと同じです
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 5/53
デスクトップはこんな感じ
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 6/53
YaST でかんたん設定
SSH からもアクセスできる TUI 版→
● ソフトウェアのインストールハードディスクとファイルシステムの設定
● ネットワークの設定● Samba サーバーの設定● ユーザの追加…
詳しくは OSC Kansai/Kyoto 2015の資料を参照: http://www.slideshare.net/ftake/ok-yastlinux
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 7/53
インドネシア ジョグジャカルタ特別州の小中学校のPCにopenSUSE を採用
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 8/53
2つの openSUSE
Tumbleweed常に最新 安定
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 9/53
openSUSE Tumbleweed
● ローリング・リリース– 週に3回程度新しいバージョンがリリース
● 常に最新バージョンのカーネルやアプリケーション、ライブラリを使いたい人向け– アプリケーション時に、新しいコンパイラやライブラリでも
動くかをいち早く確認できる
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 10/53
openSUSE Leap
● SUSE Linux Enterprise ベースの安定志向ディストリビューション– 年に1回のマイナーアップデート(サービスパック)– 3年に1度程度のメジャーアップデート
● エンタープライズ版に openSUSE 独自のパッケージを追加– デスクトップ環境:
Plasma 5, GNOME 3, XFCE, MATE, LXQt, etc.– 合計: 約 9000 パッケージ
● 有償サポートが不要なサービス運用や、常用のデスクトップ環境に最適
CentOS + Fedoraのような感じ
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 11/53
openSUSE Leap 42.2
● openSUSE Leap 42.x の最初のマイナーアップデート– 11月16日リリース
● openSUSE Leap の各プラットフォームをアップデート– SUSE Linux Enterprise 12 SP2 がベース– Kernel 4.4– KDE Plasma 5.8 LTS、GNOME 3.20、Cinnamon 3.07 など
● 半年間のアップデート期間– 42.1 の利用者は半年の間に 42.2 へアップデートする
● ARM 版のリリース
New!
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 12/53
最近のトピック
● openSUSE Leap 42.3 は早めにリリース予定– SUSE Linux Enterprise SP3 ベース
● 開発環境としての openSUSE– コンパイラや開発ツールを充実させる– Go, Rust, Haskell, …
● openSUSE.Asia Summit 2017 の日本開催に向けて– openSUSE を中心としたアジア地域の OSS コミュニティが
一堂に会するイベント
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 13/53
コマンドラインツールテクニック
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 14/53
昨今のイケイケな ICT 業界
圧倒的な 圧倒的な Mac Mac 率!率!私も学生のとき使っていました私も学生のとき使っていました
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 15/53
だって
● bash, zsh, …● grep, find, diff, patch, sed, ...● Python, Ruby, ...● Git, Subversion, …
今では必須のコマンドラインツールたち!
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 16/53
Windows あるある
● MinGW (GCC) + MSYS をインストールして● Python をインストールして● Ruby をインストールして● Git for Windows (+ Git Bash) をインストールして● Tortoise SVN をインストールして● やっぱり Cygwin もインストールして● MSYS2 もインストールして● Haskell Stack もインストールして● …
Bash
Bash
Bash
BashBash
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 17/53
Microsoft も動いた!
http://japanese.engadget.com/2016/03/30/windows-10-bash-ubuntu-linux/
openSUSE も動く!
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 18/53
システムに 5 つくらい Bash が入っていたりしますよね?
.bashrc が全然同期されていなかったり…
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 19/53
Linux ならコマンドツールがすぐに使えます!Cygwin とか Homebrew とか Mac Ports とかは不要!
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 20/53
今日ちょっと伝えたいこと
Linux デスクトップを開発環境に使う!
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 21/53
コマンドラインツールテクニック
● もっと効率よく作業できるのに– コマンドラインツールを使いこなせていない人を見ていて
● 新しいツール・変わってしまったツール
● もっと良い方法がある!という場合は教えてください– 資料の作成過程でいろいろと教えてもらいました
40分のセミナーで収めるには…
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 22/53
今日のコマンドラインツールテクニック
1. よいターミナルアプリケーションを使う
2. 圧縮された tar を展開する
3. カーソルの移動はショートカットを
4. 入力補完と履歴を使う
5. 関連付けられたアプリケーションで開く
6. 色付きコマンド
7. Human readable!
8. ホームディレクトリに戻る
9. 前にいたディレクトリに戻る
10.{,} でファイル名の繰り返し入力を防ぐ
11.tree 系コマンド
12.環境変数を指定して実行
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 23/53
1. よいターミナルアプリケーションを使うコマンドプロンプトはダメ
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 24/53
1. よいターミナルアプリケーションを使う
● コマンドを入力するアプリケーション– Konsole, GNOME Terminal, ...
● ショートカットによるコピー&ペースト– Ctrl+Shift+C– Ctrl+Shift+V
● 画面のタブ分割
Windows の人は mintty や、よい SSH クライアントを使ってください
ウェブページのサンプルも簡単コピペ!
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 25/53
2. 圧縮された tar を展開する意外と知られていない、最近のオプション
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 26/53
2. 圧縮された tar を展開する
$ tar xvf hoge.tar.xz$ tar xvf fuga.tar.gz
● 昔は圧縮アルゴリズムを指定する z や j が必要だった– では xz のときは?
● 今の GNU tar は、圧縮アルゴリズムの指定不要!– x: extract– v: verbose (展開中にメッセージがたくさん出る)– f: この後ろにファイル名
イマドキ xz!
と言っても10年くらい前から
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 27/53
3. カーソルの移動と削除はショートカットを!矢印キーを連打していませんか?
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 28/53
3. カーソルの移動と削除はショートカットを
● カーソル移動系: ホームポジションから指が動かない!– Ctrl + P ↑ previous – Ctrl + N ↓ next– Ctrl + F → forward– Ctrl + B ← backward– Ctrl + A Home (行の先頭へ移動)– Ctrl + E End (行の最後へ移動)
● 削除系– Ctrl + H Backspace– Ctrl + D Delete– Ctrl + K カーソルから右側を切り取り– Ctrl + U カーソルから左側を切り取り
※設定で Caps Lock キーをCtrl にすると使いやすい
パスワードを打ち間違えたときに便利
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 29/53
4. 入力補完と履歴を使う毎回コマンドを最初から最後まで入力していませんか?
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 30/53
4. 入力補完と履歴を使う 1/3
● 入力補完– ファイル名やコマンド名を途中まで入力して Tab キーで
続き補完してくれる
$ lv pen
$ lv pen-pineapple-apple-pen.txt
Tab キー
日本語のテキストファイルを見るコマンド
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 31/53
4. 入力補完と履歴を使う 2/3
● 直近のコマンドを繰り返し入力– 1つ前のコマンドなら ↑ か Ctrl + P– 2つ前のコマンドならもう1回 ↑か Ctrl + P
● コマンドの一部修正はカーソル移動ショートカットと合わせ技
$ chmod 700 directory1 testd2 folder3$
$ chmod 700 directory1 testd2 folder3
$ chmod 700 directory1 testd2 folder3
$ chmod -R 700 directory1 testd2 folder3
-R 忘れた
Ctrl + P
Ctrl + A
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 32/53
4. 入力補完と履歴を使う 3/3
● 履歴から検索– Ctrl + R を押すと検索をする欄が出てくる– 過去に打ったコマンドの一部を入力
● さらに Ctrl + R でマッチするものでさらに1つ古いものを表示
– Ctrl + S で行き過ぎたときに戻る● 事前に stty コマンドでXON を無効にする必要あり
$ bundle exec rake db:seed bck-i-search: seed_
$ bck-i-search: _
$ stty -ixon
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 33/53
5. 関連付けられたアプリケーションで開くGUI アプリを使いたい
やっぱり GUI でも操作したい
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 34/53
5. 関連付けられたアプリケーションで開く
● カレントディレクトリをファイルブラウザで開きたい– 選択してファイルを動かしたいとき…など
● 関連付けられたアプリケーションでファイルを開く
$ xdg-open .
$ xdg-open geeko.jpg
フォルダ名
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 35/53
6. 色付きコマンドの活用コマンドの出力結果を見やすく
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 36/53
6. 色付きコマンドの活用 1/3
● $ ls --color– フォルダ名やシンボリックリンクに色がつき、区別しやすい– -F オプションもおすすめ
● ディレクトリ名の後に /● シンボリックリンク名の後に @
$ ls -f --color /etcConsoleKit/ gssapi_mech.conf pki/DIR_COLORS gtk-2.0/ plymouth/HOSTNAME@ gtk-3.0/ polkit-1/HOSTNAME.rpmsave host.conf polkit-default-privs.local…
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 37/53
6. 色付きコマンドの活用 2/3
● $ grep --color– マッチした部分に色がつく
$ grep --color intel /var/log/Xorg.0.log[ 48102.004] (II) LoadModule: "intel"[ 48102.004] (II) Loading /usr/lib64/xorg/modules/drivers/intel_drv.so[ 48102.014] (II) Module intel: vendor="X.Org Foundation"
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 38/53
6. 色付きコマンドの活用 3/3
● $ colordiff– 削除された部分が「赤」、追加された部分が「青」になる– -u: + 記号と – 記号で追加と削除を表現する universal フォーマット
--- scribus-1.4.4.mod/scribus/pageitem_textframe.cpp 2014-12-06 02:13:59.599941139 +0900+++ scribus-1.4.4.mod/scribus/pageitem_textframe.cpp.mod 2014-12-08 22:56:23.540099486 +0900@@ -846,7 +847,7 @@ } static int checkCJKBreakAfter(QChar ch) {- unsigned int code[] = {0x201C, 0xFF08, 0xFF3B, 0xFF5B, 0xFF5F, 0xFF62, 0xFF0D, 0};+ unsigned int code[] = {0x201C, 0x300C, 0xFF08, 0xFF3B, 0xFF5B, 0xFF5F, 0xFF62, 0xFF0D, 0}; for (int i = 0; code[i]; ++i) if (code[i] == ch.unicode()) Return 0;
$ colordiff -u 変更前のファイル 変更後のファイル
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 39/53
7. Human readableちょうどよい単位系で大きさを表示
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 40/53
7. Human readable
● ちょうどよい単位 (KB, MB, ...) で容量を表示してくれるhuman readable (-h) オプションを持つコマンドがある– ls, df, du など
$ ls -lh合計 602M-rw-r--r-- 1 geeko users 602M 10月 26 23:54 jumanpp-1.01.tar.xz-rw-r--r-- 1 geeko users 2.1K 10月 24 23:09 vlc.ymp
$ df -hファイルシス サイズ 使用 残り 使用% マウント位置… 中略 …tmpfs 933M 0 933M 0% /sys/fs/cgroup/dev/sda2 61G 8.4G 52G 15% /
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 41/53
おまけ
● 毎回 -F とか -h とか --color とかめんどくさい● ls と打ったときに ls -Fh --color と入力したことにする
– .bashrc に次の内容を記述
alias ls='ls -Fh --color'
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 42/53
8. ホームディレクトリに戻るさっと戻るには?
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 43/53
8. ホームディレクトリに戻る
● パラメータを指定しない
● 他の方法(長い)
$ cd
$ cd ~
$ cd $HOME
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 44/53
9. 直前にいたディレクトリに戻る間違えて cd してしまったときは?
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 45/53
9. 直前にいたディレクトリに戻る
$ cd -
~/Documents/Projects/myapp$ pwd/home/geeko/Documents/Projects/myapp/
~/Documents/Projects/myapp$ cd
~/$ cd -~/Documents/Projects/myapp$
間違えてホームに戻ってしまった
でも大丈夫
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 46/53
10. {,}でファイル名の繰り返し入力を防ぐ
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 47/53
10. {,}でファイル名の繰り返し入力を防ぐ
● ファイル名の最後に「.back」をつけてリネーム、コピーしたい
● 「XXX{左側,右側}YYY」は「XXX左側YYY XXX右側YYY」に置換される
$ cp pen-pineapple-apple-pen.txt pen-pineapple-apple-pen.txt.back
$ cp pen-pineapple-apple-pen.txt{,.back}
$ cp pen-pineapple-apple-pen.txt pen-pineapple-apple-pen.txt.back
Before
After
$ cp pen-pineapple-apple-pen{,-back}.txt
$ cp pen-pineapple-apple-pen.txt{.back,}
拡張子の前
.backから戻す
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 48/53
11. tree 系コマンドの活用親子関係を手っ取り早く見る
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 49/53
● ディレクトリ構造: tree
11. tree 系コマンドの活用
● プロセスの親子関係: pstree
$ tree /etc/X11 /etc/X11├── Xmodmap├── Xmodmap.remote├── Xresources├── xdm│ ├── GiveDevices│ ├── Keyboard.map│ ├── README.SUSE│ ├── README.security│ ├── RunChooser│ ├── SUSEconfig.xdm
$ pstreesystemd─┬─ModemManager─┬─{gdbus} │ └─{gmain} ├─NetworkManager─┬─dhclient │ ├─{gdbus} │ └─{gmain} ├─agetty ├─at-spi-bus-laun─┬─dbus-daemon │ ├─{dconf worker} │ ├─{gdbus} │ └─{gmain} ├─at-spi2-registr─┬─{gdbus} │ └─{gmain} ├─auditd───{auditd} ├─avahi-daemon ├─bluetoothd ├─cron ├─cupsd
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 50/53
12. 環境変数を設定して実行する~/.bashrc で設定しなくてもよい
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 51/53
12. 環境変数を設定して実行する
● どんなときでも ~/.bashrc などに書きがち– 解説記事などにそう書いてあるから– 今後、ずっと設定したままにするなら OK
● 一時的に環境変数を設定して実行することも可能– 変数名=値 コマンド 引数
$ HTTP_PROXY=http://proxy.example.com:8080 wget http://…/….tar.xz
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 52/53
次回予告
● PATH ってなんでしたっけ?● 大量の画像をまとめて変換● パイプとリダイレクト● 出力を切り取る● chmod +● fb, bg, Ctrl + Z● SSH のデフォルトオプション● コマンド置換
2017/01/28Linux コマンドラインツールテクニック その1 rev. 2 53/53
Geeko Magazine Sp 2016 夏
● コミックマーケットC91で頒布● 内容
– 今さら聞けないコマンドラインツールテクニック
– Ambiguous Character Width問題– openSUSE Leap 42.2 と
SoftEther VPN で作る VPN 環境– SiLK を使った巨大パケット解析
● 本日の販売はありません– 明日のイベントかくじ引きで
New!