百日半狂乱

Shut the fuck up and write some code!!

Linuxターミナル、コマンドtips その1: キーボードショートカットとディレクトリの移動

(2019/06/29追記) 実践的、網羅的かつ簡潔にまとまったドキュメントを見つけたのでメモ(日本語訳もある)*1

github.com

このtipsはこれからLinuxを使っていく必要がある人、特に端末操作に苦戦している人、もしくは端末操作に対して嫌悪感すら抱いている人に向けて書いたものです.きっかけはRebuild.fmのep41*2.少しでも端末操作が楽しく気持ち良くなればこれ幸い.

rebuild.fm

Linuxターミナルtips

今回は、キーボードショートカットを中心に極基本をば。

ちなみにWindows

キーボードショートカットキーの一覧

ちなみにMac

CheatSheet

commandボタン長押しで、起動しているアプリのショートカット一覧が表示されるアプリらしい

Linux(Ubuntu)

ターミナル起動

ctrl+alt+t

開いた後のカレントディレクトリはホームディレクト

タブを開く

ctrl+shift+t

開いた後のカレントディレクトリは変わらない

タブの移動

alt+1,2,3,4,...

左から1,2,3,4,...に割り当てられている.マウス要らず.

新たにターミナルを開く

ctrl+shift+n

開いた後のカレントディレクトリは変わらない

ターミナルを閉じる

$ exit
ctrl+d

画面リセット

ctrl+l

ディレクトリ構造を俯瞰する、FHSを理解する

$ sudo apt-get install tree
# ルートディレクトリ以下を俯瞰
$ tree -d / | more
# ホームディレクトリ以下を俯瞰
$ tree -d ~/ | less

-dオプション:ディレクトリのみ表示

moreやlessコマンドはビューア(lessの方が便利)、qで終了

Linuxのファイル階層構造を理解する

Filesystem Hierarchy Standard

確認:絶対パス相対パスの違いは?

ファイルの表示とディレクトリの移動

ファイルの階層構造と自分の現在位置(カレントディレクトリ)を意識しながら、以下の操作をやってみる.

カレントディレクトリのファイル一覧を表示する

$ ls

ファイル一覧の詳細表示

$ ls -lath

カレントディレクトリのパスを表示

$ pwd 

カレントディレクトリに移動する

cd .

一つ上のディレクトリに移動する

cd ..

前にいたディレクトリに移動

$ cd -

ホームディレクトリに移動

$ cd
$ cd ~/

コマンド入力支援関連

ターミナルのemacsキーバインド

ctrl+[f,b,p,n,a,e,k,y,d]

余談:emacsのコマンド

ctrl+x ctrl+s #セーブ
ctrl+x ctrl+c #終了

Emacs Cheat Sheet

コマンド履歴を表示する

$ history

誰かにターミナル上で色々やってもらった場合、後でヒストリを見て技を盗むと良い.

コマンドのタブ補完

  • コマンド入力途中にtabを押すと自動補完してくれる、超便利
  • Macの場合はデフォルトで入っていないので以下を参考

http://www.kameneko.com/terminal-tab/

tab tab による一覧表示

  • 候補が複数ある状態でtabを2回押すと候補一覧が出力される、超便利

インクリメンタルサーチ

ctrl+r

ctrl+rを押す度に別の候補を表示、超便利

一つ前のコマンドを実行する

$ !!

ジョークコマンド

sl

$ sudo apt-get install sl
$ sl
$ man sl #多彩なオプション!!

apt-getのスーパー牛さんパワー

$ apt-get moo

aptitudeのスーパー牛さんパワー

$ atitude -h #ヘルプの一番最後を見てみよう
$ aptitude moo
$ aptitude -v moo
$ aptitude -vv moo
...続く...

その他のジョークコマンド

Linuxのジョークコマンド11個をまとめてみた

manコマンド

$ man man #manコマンドのマニュアル、一瞥の価値あり
$ man printf #コマンド
$ man 1 printf #コマンド
$ man 2 send #システムコール
$ man 3 printf #ライブラリ

ググるのも良いけど、manを叩いた方が早いこともある(コマンドのオプションや、C言語の関数の引数、戻り値とか)

C言語のマニュアルが出ないと思ったら、2や3をつけてみると良い

zsh

ここまでの話はデフォルトのコマンドシェルであるbashベースの話

更に高機能なコマンドシェルにzshというものがある

oh my zshを使えば設定なしで今すぐ使い始められる

zshとoh-my-zshのインストール

$ sudo apt-get install zsh
$ curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh

試しに使ってみる

$ /bin/zsh

次回のログインからログインシェルをzshにする

$ chsh -s /bin/zsh
$ source ~/.zshrc

chshについてはman chshを叩く

*1:毎日それこそ息するように使っているものから、必要な時に覚えてなくて毎回ググっているものまで、ベタだけどまさに当時これが手元にあればなぁという内容になっていて良くできている。このブログを読んでくれるのも嬉しいけど、何ができて何を調べれば良いかをまず知る目的で一回このドキュメントも一通り読んでおくと、"あれどうやるんだっけなー"などとボヤきつつ当てもなくググる時間を減らせるはず。要チェック。

*2:経緯:これまでそんなにLinuxを使っていたわけではない研究室の後輩の端末操作を後ろから見ていると、こうしたら一発で解決するのになと思うことが多々あり、かと言っていちいち指摘していたら本題から逸れるしで、かなり悶々としていた時期がありました.ちょうどその頃に、「naoya_itoの火を噴いたシェルtips」を拝見し、Rebulid: 41でもtipsの共有について触れられその内容に激しく同感.tips集を作成し、研究室内で小さな勉強会を開きました.