More Related Content
Similar to ロボットシステム学2015年第9回
Similar to ロボットシステム学2015年第9回 (20)
More from Ryuichi Ueda (20)
ロボットシステム学2015年第9回
- 6. フィルタコマンド
• 多数: grep, find, wc, ...
– /bin/下等
• grep
– ファイルの中の語句を検索するコマンド
• find
– ファイルを列挙するコマンド
– findはファイルをたくさん列挙する
• 使いにくくないか?
Oct. 7, 2015 ロボットシステム学 6
ueda@remote:~$ grep ueda /etc/passwd
ueda:x:1000:1000:Ryuichi UEDA,,,:/home/ueda:/bin/bash
ueda@remote:~$ find /etc/
/etc/
/etc/insserv
/etc/insserv/overrides
...
- 7. コマンドの組み合わせ
• 標準入出力をパイプでつなぐ
• 特定のファイルを探すには?
– 例: passwdファイルってどこにあったけ?
– grepと組み合わせる
Oct. 7, 2015 ロボットシステム学 7
ueda@remote:~$ sudo find | grep passwd
[sudo] password for ueda:
./var/lib/dpkg/info/passwd.postinst
./var/lib/dpkg/info/base-passwd.postinst
./var/lib/dpkg/info/passwd.preinst
...
- 8. • 正規表現でさらに絞り込む
– 下の例: 「passwd」で終わっている行の抽出
• $: 行末を表す
• 他に^[].*等特殊な記号
Oct. 7, 2015 ロボットシステム学 8
ueda@remote:~$ sudo find / | grep '/passwd$'
/var/tmp/etc/init.d/passwd
/var/tmp/etc/cron.daily/passwd
/var/tmp/etc/passwd
/var/tmp/etc/pam.d/passwd
/etc/cron.daily/passwd
/etc/passwd
/etc/pam.d/passwd
/usr/share/bash-completion/completions/passwd
/usr/share/doc/passwd
/usr/share/lintian/overrides/passwd
/usr/bin/passwd
- 9. • 正規表現の例
– /etc/servicesの調査
• 上級者向け
– AWKとgrepで10000番ポート以上のレコードを
抽出のこと
Oct. 7, 2015 ロボットシステム学 9
###80を検索###
$ cat /etc/services | grep 80
###80番ポートのレコードだけ検索###
$ cat /etc/services | grep '[^0-9]80/'
###ftpという語句を検索###
$ cat /etc/services | grep ftp
###最初がftpで始まる行を検索###
$ cat /etc/services | grep ^ftp
- 10. 他の組み合わせ
• 抽出、重複除去、計数等を役割分担
– 例1: /var/log/auth.logからsudoに関する記録の行数を求める
– 例2: 誰がどのシェルを使っているか調べる
Oct. 7, 2015 ロボットシステム学 10
$ cat /var/log/auth.log | grep sudo | wc -l
68
###これでも良い###
$ cat /var/log/auth.log | grep sudo -c
68
ueda@remote:~$ cat /etc/passwd | awk -F:
'{print $NF}' | sort | uniq -c
1
6 /bin/bash
4 /bin/false
1 /bin/sync
17 /usr/sbin/nologin
- 11. – 例3: 日本語の文字数を数える
• 改行コードも数えてしまう
Oct. 7, 2015 ロボットシステム学 11
ueda@remote:~$ echo あいうえお > a
ueda@remote:~$ wc -m a
6 a
###改行コードを削除して数える###
ueda@remote:~$ cat a | tr -d 'n' | wc -m
5
- 14. ueda@ubuntu:~$ sudo apt-get install git
###自身の名前とe-mail アドレスを記録しておく###
ueda@ubuntu:~$ git config --global user.name "Ryuichi Ueda"
ueda@ubuntu:~$ git config --global user.email "ueda@hogehoge.com"
ueda@ubuntu:~$ git config --global core.editor vim
###確認###
ueda@ubuntu:~$ cat .gitconfig
[user]
name = Ryuichi Ueda
email = ueda@hogehoge.com
[core]
editor = vim
Gitのインストール
• インストール
• 自身の名前(ハンドルネーム)、メールアドレスを登録
• 使用するエディタの登録
• 確認
Oct. 7, 2015 ロボットシステム学 14
- 15. リポジトリを作る
• リポジトリ(repository)
– 貯蔵庫、倉庫、納骨堂、埋葬所
– 要はバージョン管理するディレクトリ
• 2種類
– リモートリポジトリ
– ローカルリポジトリ
• Git の基本的な使い方(あくまで基本)
– リモートリポジトリをどこかに置き、そこから自分のマシンに
それをクローンしてローカルリポジトリを作成
– ローカルリポジトリで何かファイルを更新したら
リモートリポジトリに反映
Oct. 7, 2015 ロボットシステム学 15
- 16. リモートリポジトリの作成
• リポジトリ: ただのディレクトリ
– gitコマンドでディレクトリの中にバージョン管理の
ためのファイルとディレクトリが作られる
Oct. 7, 2015 ロボットシステム学 16
stu@lecture:~$ mkdir TestRepo.git
stu@lecture:~$ cd TestRepo.git/
###共同作業用の基本的なリモートリポジトリの作り方###
stu@lecture:~/TestRepo.git$ git init --bare --shared
Initialized empty shared Git repository in /home/stu/TestRepo.git/
###中にバージョン管理用のファイルやディレクトリが作成される###
stu@lecture:~/TestRepo.git$ l
HEAD branches/ config description hooks/ info/ objects/ refs/
- 18. リポジトリにコードを追加
• (なんでもいいが)右の
ようなファイルを一つ、
ローカルに置く
• 「addしてstatus見てpush」
– git add: これからリポジトリに登録するファイルをステージング
• 複数のファイルの更新や削除があるときは「git add -A .」
– git status: ステージングされたファイルの一覧の確認
– git push: リポジトリに反映
Oct. 7, 2015 ロボットシステム学 18
pi@raspberrypi ~/TestRepo $ ls
hoge.bash
pi@raspberrypi ~/TestRepo $ cat hoge.bash
#!/bin/bash
echo hoge
pi@raspberrypi ~/TestRepo $ git add hoge.bash
pi@raspberrypi ~/TestRepo $ git status
...
pi@raspberrypi ~/TestRepo $ git commit -m "Add a file"
- 19. リモートのリポジトリへの反映
• git push
– ローカルのリポジトリの内容をリモートへ
• うまくいったら、一度、ローカルのリポジトリを消して、
もう一度クローンしてみましょう
Oct. 7, 2015 ロボットシステム学 19
pi@raspberrypi ~/TestRepo $ git push origin master #次回からはgit pushだけで良い
stu@lecture.ueda.asia's password:
Counting objects: 3, done.
Writing objects: 100% (3/3), 235 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://stu@lecture.ueda.asia:443/home/stu/TestRepo
* [new branch] master -> master
- 25. • リポジトリのセットアップ方法のページが表示される
• "Quick setup"に従う
– httpsを押す
• 学内だとsshが使えない
– 表示される文字列をURL欄右のクリップボードにコピーして、
git cloneしてローカルリポジトリを作る
– 自分でリポジトリを作ってローカルにクローンして、
何か変更を加えてpushしてみましょう
Oct. 7, 2015 ロボットシステム学 25
- 26. 他人のコードの利用
• GitHub 上で他のアカウントのリポジトリをfork
– ryuichiueda/testtestをフォークしてみてください
– 手順
1. 自分のアカウントにログインした状態で
ryuichiueda/testtestを探す
2. リポジトリのページ右上のfork ボタンを押す
3. ローカルのリポジトリを作る
– ウェブ画面でhttpsを選んでURIをコピーしてclone
Oct. 7, 2015 ロボットシステム学 26