CommandLine Interface
コマンドラインツールなど
シェルソフトウェアやシェルスクリプトについてもこのセクションで扱う。
ターミナルソフトウェアについてはSoftware > ターミナルを見よ。
リファレンス
- SS64 Command line reference … Linux, macOS etc.
- macOSのmanはやや古いかも。不備が散見される
シバン
- 英語表記 … shebang, shbang
- 日本語 … シェバンとも
UNIX系OSで、実行スクリプトの先頭に書かれる #!
で始まる行のこと。
ここにはふつう、インタプリタの絶対パスを書く。
あるいは、 env
コマンドを用いた #!/usr/bin/env bash
のような表記もよく用いられる。
参考:
制約
envコマンドは普通、複数引数を取ることができない。
例えば、Ubuntu v18で #!/usr/bin/env awk -f
のようにすると、下のようなエラーが出る:
$ cat foo.txt | test.awk
/usr/bin/env: `awk -f': そのようなファイルやディレクトリはありません`
そのため、引数を渡したくなったら、 #!/path/to/interpreter ARGS
の形にすることになりそう。
NOTE:
- BSD系OSだと複数引数取れるっぽい
参考:
- shell - Invoking a script, which has an awk shebang, with parameters (vars) - Stack Overflow
- scripting - Shebang line with
#!/usr/bin/env command --argument
fails on Linux - Unix & Linux Stack Exchange
direnv
https://github.com/direnv/direnv
Documentation:
- Installation
- macOSはHomebrewを使える
- Ubuntuはaptかsnapで入れられる
- Setup
- Bash:
eval "$(direnv hook bash)"
をbashrcに書く - Zsh:
eval "$(direnv hook zsh)"
をzshrcに書く
- Bash:
ロギング
script
参考:
How-to
ターミナルでEOFを入力する方法
- Unix系OS:
Ctrl-D
- Windows:
Ctrl-Z
参考:
用語
TTY
TTY(テレタイプ端末)とは - IT用語辞典 e-Wordsより:
利用者が入力した文字を別の機器に送信したり、別の機器から受信した文字情報を利用者に提示したりする機能を持った端末やソフトウェアのこと
元々はteletypewriterの略。
Linuxだと tty
コマンドで標準入出力デバイスの名前を表示できる。