LoginSignup
0

チャート式Ruby-Appendix-I(Shell)

Last updated at Posted at 2020-10-21

!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の絶対参照と相対参照と同じ意味です.

img
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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0