1年後期のプログラミング科目の中で,「Linuxで使いこなしたいコマンド」を話そうと,コマンドを整理してみました.
ファイル/ディレクトリ操作
コンパイル関連
- 実行ファイルを指定する:cc -o program program.c
- ccを使わずにコンパイルする:make program
- コンパイルに成功したら実行する:make program && ./program
- 最適化する:cc -O program.c
- 不要な情報を取り除く:cc -s program.c
- 前処理後のソースファイルを求める:cc -E program.c | less
- ソースファイルを細かくチェックする:cc -Wall program.c
- C89基準で細かくチェックする:cc -Wall -ansi -pedantic program.c
- デバッガ:gdb
- プロファイラ:gprof
便利なコマンド
- 引数を出力する:echo
- 日時を知る:date
- コマンドに別名をつける:alias
- オンラインマニュアルを引く:man
- コマンドがどこにあるか探す:which
- 計算をする:bc
- コマンドを終了させる:kill
- 環境変数を指示してコマンドを実行する:env
- 繰り返し:for, foreach
- OSの様々な情報を表示する:top
高度な処理
授業でどうするか
もともと,毎回の授業で,余談の時間を設け,コンパイル関連のコマンドを順に説明しようと考えていました.上記の「コンパイル関連」について,gprof以外は毎年,終わりのほうの授業で整備してリリースしていたのですが,これを小出しにしようというもくろみです.
なのですが,初回はccだけ,次はcc -o,というのでは学習に面白みがないので,より広く,コマンドとして実行できるようになりたいものを,探してみたのでした.
リストを作ってみると,全部話すには余談の域を超えることに気がつきました.本論は本論,余談は余談としたいので,上のコマンドからつまみ食い的に取り上げ,解説することにします.
なお,上記コマンドは,1年後期,あるいは大学を卒業するまでに,学ぶべきコマンドのmaximumでもminimumでもない点には注意が必要です.例えば,ddとawkとcrontabは意図的にリストから外しました.forを学ぶのなら,ifやtest,caseも学ぶべきですが,やはり外しました.コマンドではありませんが,バックグラウンドにする&,コマンドを連結・複合化する;,|,&&,||,` `,リダイレクション,ワイルドカードと正規表現についても,別途学ぶべきでしょう.