わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

Linuxで使いこなしたいコマンド

1年後期のプログラミング科目の中で,「Linuxで使いこなしたいコマンド」を話そうと,コマンドを整理してみました.

ファイル/ディレクトリ操作

  • カレントディレクトリを知る:pwd
  • ディレクトリを作る:mkdir, mkdir -p
  • ディレクトリを移動する:cd
  • ファイル一覧を得る:ls -aFl
  • ファイルを移動またはコピーする:mv, cp, cp -a
  • ファイルの中身を知る:cat
  • ファイルを見る:more, less, lv
  • ファイルをダンプする:od
  • ファイルのパーミッションを変更する:chmod
  • ファイルを削除する:rm, rm -Rf
  • ディスク容量を知る:du, df

コンパイル関連

  • 実行ファイルを指定する: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

高度な処理

  • アーカイブする:tar cvzf, tar xvzf, zip, unzip
  • 日本語コードを変換する:nkf
  • 行単位で抽出・変換する:grep, sed
  • URLからファイルをダウンロードする:wget
  • 単純な通信をする:telnet
  • SSHを使ってログインやファイルのやりとりをする:ssh, scp, rsync
  • LL (Lightweight Language)で処理をする:perl, ruby, python
  • ファイルの差分を求める:diff
  • バージョン管理をする:svn, git
  • スクリーンエディタ:vim
  • メールを送る:mail, sendmail

授業でどうするか

もともと,毎回の授業で,余談の時間を設け,コンパイル関連のコマンドを順に説明しようと考えていました.上記の「コンパイル関連」について,gprof以外は毎年,終わりのほうの授業で整備してリリースしていたのですが,これを小出しにしようというもくろみです.
なのですが,初回はccだけ,次はcc -o,というのでは学習に面白みがないので,より広く,コマンドとして実行できるようになりたいものを,探してみたのでした.
リストを作ってみると,全部話すには余談の域を超えることに気がつきました.本論は本論,余談は余談としたいので,上のコマンドからつまみ食い的に取り上げ,解説することにします.
なお,上記コマンドは,1年後期,あるいは大学を卒業するまでに,学ぶべきコマンドのmaximumでもminimumでもない点には注意が必要です.例えば,ddとawkとcrontabは意図的にリストから外しました.forを学ぶのなら,ifやtest,caseも学ぶべきですが,やはり外しました.コマンドではありませんが,バックグラウンドにする&,コマンドを連結・複合化する;,|,&&,||,` `,リダイレクション,ワイルドカード正規表現についても,別途学ぶべきでしょう.