!Mac OS X-10.15.7 !ruby-2.7.1p83
イントロ
目的
CUI(character user interface) を駆使できると作業がめちゃくちゃ早くなります.例えば,こないだ探し物をしていて便利だったのは,Macで
find . -name '*.key' | xargs open
とすると,子directoryに存在する全てのkeynoteファイルを開けてくれます.こんなのを知っていると,文字だけでなく,画像を含んだ探し物でも効率化することができます.
CUI vs GUIと対立的に考えるのではなく,CUI x GUIとして両方のいいところをとって,自分の生産性を劇的にあげましょう.
効率向上のkeyとなるのはCoC(Convention over configuration, 設定よりも既約)と,key-bindです.GUIでもkey-bind(ctrl-c, ctrl-v, alt-TAB, alt-wなんてね)が使えれば,それだけで生産性が上がります.
Shell[I] command基本
Shell(殻)ってのは,operating systemの中心(Kernel: 核)の外側にあって,keyboardの入力を受け取って,Kernelへ渡して,スクリーンへいい感じで出力するという機能を受け持つという動作からついた名前です.Shellにはいくつもの派生があります.UbuntuとかはBash(Bourneさんが書いたshellに生まれ変わって,born again したshell)をdefaultで使っていますが,Fish, Zshってのが今の流行です.
Shellに命令(command)を投げてやり取りするため,command line interface(CLI)やcharacter user interface(CUI)と呼ばれます.
commandは
command [objects]
あるいは
command [options] [ojbects]
というのが基本形です.[]は省略可能を意味します.optionsは - 記号の後ろに文字character(short option)で打つか,-- の後ろにフル記述(long option)で打つかの2種類があります.
man man
を確かめてください. man のmanualが表示されます.NAME(コマンド名), SYNOPISI(形式), OPTION(オプション), DESCRIPTION(機能説明)なんかが表示されます.終わるのは q (uit)です.
Shell[II] directory関連
まずはdirectory(フォルダー呼ぶかも)関連の命令です.ファイルを整理するための電話帳(directory)という意図です.directory pathには相対パスと絶対パスがあります.Excelの絶対参照と相対参照と同じ意味です.
![]() |
|---|
| Fig. ディレクトリー構造と絶対パス,相対パス. |
-
explorer.exe .#open(mac),xdg-open(linux) -
mkdir [DIR]# make dir -
pwd# 絶対パスの表示 print working dir -
cd [DIR]# change dir -
cd ..# 一つ上のdirへch -
ls -lat# list long, all, and time
なんかです.
Shell[III] process関連
process関連の操作として用意されているコマンドは
-
ps,top# process status, -
fg,bg# fore, back ground -
kill -9 PID# kill process id
なんかです.
Emacs でc-zでstopしてShellに戻ってきても,ps あるいは top するとEmacsが動いていることが確認できます.これは,Emacsがbgにいて, fg すると操作がShellからEmacsに渡されることを意味します.Emacsを使っていて,気づかぬ間にたくさんのEmacsが立ち上がってしまっていることがあります.そうすると,折角の編集結果が失われることがあります.気がついたら kill でそのprocessを消すようにしてください.たくさんある時は,強制的にいったんUbuntuを落として入り直す方がいいです.
ワイルドカード*と補完とパイプ
'なんでも文字'を意味する * (アステリスク)は便利です.
ls *.org
さらに補完ってのがあるんで,
ls R :kbd:'TAB'
とかで,R以下の文字をいい感じで補完(auto completion)してくれます.
さらにpipeという機能を使うと,commandの出力を次の入力にすることができます.それが冒頭に示した,
find . -name '*.key' | xargs open
です. find はファイルを探す汎用命令で,-nameだと名前で,
find . -size 0
だとサイズが0のファイルを現在のdirectory(.)から探してくれます.他に変更時間とか指定できます.縦棒 | が出力を次の入力として渡すパイプに相当します.xargs は出力を受け取って命令の目的格[object]につないでくれます.
copy to clip board
clip boardにテキストをcopyしたい時は,
pwd | pbcopy
pbはpasteboardの略.
- source ~/git_hub/ruby_docs/chart_style_ruby/c01_shell.org
