情報の分析
1. Linux
ツールの活用
Chris Plaintail
目次
1 Cygwin の紹介 Cygwin とは ダウンロードとインストール 2 コマンドとシェルの基本 コマンドの入力 3 リダイレクトとパイプライン 標準入出力 リダイレクトとヒアドキュメント パイプライン パイプライン 4 Cygwin のファイルシステム 階層構造とパスUinux
ツールの活用
Unix は 豊富なプログラミング環境や様々なツール を提供する OS である.この優れた環境を Micorsoft Windows上に実現するフリーソフトウェアが Cygwin で ある.Cygwin を使って,簡単なプログラミングを学習し よう. まずは,環境の準備,そして コマンドラインからの 入力の実習である.Cygwin
とは
...is it?a large collection of GNU and Open Source tools which provide functionality similar to a Linux distribution on Windows.
a DLL (cygwin1.dll) which provides substantail POSIX API functionality.
... isn’t it?
a way to run native Linux apps on Windows. You must rebuild your application from source if you want it to run on Windows.
a way to magically make native Windows apps aware of UNIX⃝functionalty like signals, ptys, etc. Again, you needR
to build your apps form source if you want to take advantage of Cygwin functionality.
ダウンロードとインストール
Cygwinのサイトから setup-86.exe (setup-86 64.exe) を実行 ダウンロード方法選択 インストール先(フォルダ)選択 パッケージファイルの保存先(フォルダ)選択 インターネットの接続方法選択 サーバの選択 ツールの選択
起動とショートカット
[スタート]-[すべてのプログラム (P)]-[プログラム] -[Cygwin]-[Cygwin Bash Shell]
配色・フォント設定
(設定保存のためショートカットを複製) 環境変数 HOME で設定されている場所に, 設定ファイル .bash_profile.
入力書式
□ コマンド ・ オプション ・ 引数 [...]$ コマンド オプション 引数 半角英数文字 コマンド・引数・オプションの間は半角スペース [...]$ pwd [...]$ date -u [...]$ date --help [...]$ date -d"2011-09-21 9:52:00" +%s [...]$ echo Hello [...]$ echo -n Helloコマンド入力例
□スクリーンクリア [....]$ clear □ユーザー名表示 [....]$ whoami
マニュアルページ
□マニュアルページ [....]$ man コマンド名 j または [return] 1 行進む k 1 行戻る f または [space] 1 ページ進む b 1 ページ戻る p 先頭に戻る q 終了キー入力を助ける機能
ヒストリー機能 ↑ (CTRL-p) ↓ (CTRL-n) コマンドライン編集機能 ← (CTRL-b) → (CTRL-f) Del (CTRL-d) コマンド名・ファイル名の補完機能 TAB TAB☆ここで登場した主なコマンド
pwd カレントディレクトリの表示 date 日時の表示(および設定) echo テキストの表示 man マニュアルページの表示 clear スクリーンのクリア whoami ユーザー名表示標準入出力
標準入力 −→ コマンド −→ 標準出力
(キーボード) (ディスプレー)
cat
リダイレクト
□出力リダイレクト(上書き) date > ファイル名 □出力リダイレクト(追記) date >> ファイル名 □入力リダイレクト cat < ファイル名 cat ファイル名ヒアドキュメント
cat <<終了文字列
文字列EOF が入力されるまで
標準入力からのデータが
ファイルfilename.txt に書き込まれる. cat <<EOF > filename.txt
⇕
パイプライン
コマンドの標準出力を別のコマンドの標準入力へ引き渡す printenv | wc -l
printenv | less printenv | head -5
printenv | grep HOME
printenv | grep -v HOME
パイプライン
つぎの入力は互いに同じ結果をもたらす printenv | less printenv > filename.txt less < filename.txt パイプラインは何段でも接続して利用することができる. 処理 A | 処理 B | 処理 C ...パイプライン
【問 1】 次のコマンド入力を考えよ.1 printenvの出力の 10 - 15 行目だけを抽出して表示する.
2 printenvの出力の行数をカウントして出力する.
3 printenvの出力から HOME と daito を含む行を抽出して表
示する.また,その行数を出力する.
4 printenvの出力から HOME を含むが daito を含まない行の
みを抽出して表示する.また,その行数を出力する.
5 printenvの出力から HOME を含まず daito を含む行のみを
☆ここで登場した主なコマンド
cat ファイル内容の出力 head 先頭の出力 tail 末尾の出力 less 逐次表示 wc 文字数・行数の表示 grep 文字列検索 printenv 環境変数の表示階層構造
ルート (/):cygwin のインストール場所 C:\cygwin (C:\daito\apps\cygwin) ホーム (~): C:\cygwin\home\ユーザ名 (Z:\) ドライブ:/cygdrive C:→ /cygdrive/c Z:→ /cygdrive/z主要なフォルダ
(cygwin)
C: cygwin (/) etc home ユーザ名 cygdrive c zパス
カレントの確認と移動 pwd cd 移動先 cd 相対指定(カレントが基準) 名前 .. 絶対指定(ルートが基準) /ディレクトリ閲覧(ファイル名のリスト)
lsコマンド ls [オプション] [パス] ls -l ls -a ls -d ls /ディレクトリ閲覧(ファイル名のリスト)
ls -l /etc
total 1344
-r--r--- 1 root wheel 237 2 17 19:53 RsLicense drwxr-xr-x 3 root wheel 102 10 31 2004 X11
-rw-r--r-- 1 root wheel 515 10 26 2013 afpovertcp.cfg
lrwxr-xr-x 1 root wheel 15 10 26 2013 aliases -> postfix/aliases -rw-r--- 1 root wheel 16384 10 26 2013 aliases.db
drwxr-xr-x 11 root wheel 374 3 29 01:05 apache2 drwxr-xr-x 18 root wheel 612 5 16 20:40 asl -rw-r--r-- 1 root wheel 975 10 26 2013 asl.conf
-rw-r--r-- 1 root wheel 377737 9 21 2013 authorization.deprecated -rw-r--r-- 1 root wheel 1935 10 26 2013 autofs.conf
-r--r--r-- 1 root wheel 745 10 26 2013 bashrc -rw-r--r-- 1 root wheel 189 10 26 2013 csh.cshrc -rw-r--r-- 1 root wheel 121 10 26 2013 csh.login -rw-r--r-- 1 root wheel 39 10 26 2013 csh.logout drwxr-xr-x 3 root wheel 102 9 11 2013 defaults
ディレクトリ閲覧(ファイル名のリスト)
-r--r--- 1 root wheel 237 2 17 19:53 RsLicense drwxr-xr-x 3 root wheel 102 10 31 2004 X11
-rw-r--r-- 1 root wheel 515 10 26 2013 afpovertcp.cfg
lrwxr-xr-x 1 root wheel 15 10 26 2013 aliases -> postfix/aliases -rw-r--- 1 root wheel 16384 10 26 2013 aliases.db
drwxr-xr-x 11 root wheel 374 3 29 01:05 apache2 -rw-r--r-- 1 root wheel 975 10 26 2013 asl.conf -r--r--r-- 1 root wheel 745 10 26 2013 bashrc
1文字目
d : ディレクトリ(フォルダ)
l : シンボリックリンク
ファイル・ディレクトリ操作
ファイルのコピー・移動・削除 cp コピー元 コピー先 mv 移動元 移動先 rm ファイル名 ディレクトリ作成・削除 mkdir ディレクトリ rmdir ディレクトリ テキストファイルの検査・部分表示 wc ファイル名 head ファイル名 tail ファイル名 less ファイル名 コマンドファイルのパス検索 コマンド 29 / 39ワイルドカード
? 任意の 1 文字 * 0文字以上の任意文字列 [...] [...] 内の任意の 1 文字 ls /e?? ls -l /e??/[ah]* ls -l -d /e??/[ah]* 【問 2】 次の各コマンドによって何が起こるか. 1 cp /etc/hosts* ./☆ここで登場した主なコマンド
pwd カレントディレクトリの表示 cd カレントディレクトリの移動 ls ファイル・ディレクトリのリスト cp ファイル・ディレクトリのコピー mkdir ディレクトリの作成 mv ファイルの移動 rm ファイルの削除 wc ファイルに含まれる行数・単語数・文字数の表示 which コマンドファイルのパス表示初期設定ファイル
システム設定 /etc/bashrc ユーザ設定 ~/.bashrc または ~/.bash_profile (例)bash 起動直後のカレントフォルダを HOME 以外にする:.bash profile
cd /cygdrive/z/CS-A環境変数
代表的環境変数 PS1:プロンプト文字列 HOME:ホームフォルダ PATH:コマンドサーチパス . . . 環境変数の設定とグローバル化 環境変数名=値環境変数の参照
すべての環境変数 printenv HOME=/home/... LANG=ja_JP.UTF-8 PATH=/bin:/usr/bin:... SHELL=/usr/bin/bash ... 個別参照 echo $PS1 echo $PATHプロンプト文字列
PS1
変数設定 PS1="[\u@\h]$ " \u : ユーザ名 \h : ホスト名 \d : 日付 \t : 時刻 \w : ワークフォルダ \! : ヒストリ番号 \# : コマンド番号 \n : 改行 グローバル化 export export PS1コマンドサーチパス
PATH
パスの追加
PATH=/cygdrive/z/CS-A:$PATH グローバル化 export
export PATH
次のようにも書ける;
初期設定ファイルの例
ホームフォルダに .bash profile
.bash profile
cd /cygdrive/z/CS-A
PATH=/cygdrive/z/CS-A:$PATH export PATH
export PS1="[\u@\h]$ " ...
☆ここで登場した主なコマンド
export 変数のグローバル化
printenv 環境変数の一覧表示