[Terminal | ターミナル] manコマンドとか

2012/02/29

こんにちは。きんくまです。

最近Terminalをよく使ってるんですけど、なんていうか何でもアリなんだなと思ってきています。

例えば、16進数でバイナリを見るコマンドが用意されてたり

kinkuma$ hexdump samplefile
0000000 cf fa ed fe 07 00 00 01 03 00 00 80 02 00 00 00
0000010 0d 00 00 00 20 06 00 00 85 00 20 00 00 00 00 00
0000020 19 00 00 00 48 00 00 00 5f 5f 50 41 47 45 5a 45
0000030 52 4f 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000040 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00

似たコマンドでodとかもあったり。

文字コード変換はiconvがデフォルトで使えて、nkfというのもあるのですけど、homebrewとかで簡単にインストールできたり。

ファイルの更新日を変更したかったら、touchコマンドというのがあったり。

そんで、今日気がついたのだけど、ヘルプを見るmanコマンドというのがあるのですが、
てっきりunixのコマンドだけのヘルプなのかなと思ったら、Cの標準関数も引けるんですね。知らんかったですよ。
こんな感じに。

kinkuma$ man memcpy

ネットワーク系でhtonlという関数があるんですけど、こういうマニアック(?)なのも載ってるんですね。

関数の使い方に辞書使ったり、ネットで検索してたりしたのだけれど、関数自体の使い方になれてくれば、「あれの引数と戻り値なんだっけ? ヘッダファイルは何いれとけばいいの?」みたいな時にこれだけでなんとかなりそうな感じです。

FTP用のCUIコマンドっていうかCUIアプリでncftpというのがあるんですけど、ファイルを1個アップするだけだったりするときに便利です。
私はFTPのGUIはFilezilla使っていまして。いくつものディレクトリに分かれているときとかは、こっちの方が慣れているし、やりやすいのですが、ファイルの数が少量だったりするとCUIは便利かもしれないですね。

あとは、wgetとcurlというネットワーク上からファイルをダウンロードするコマンドがありまして、ブラウザ経由でファイルを保存するよりは割と便利だったりします。
テストサーバーから自分の持っていないファイルを引っ張るときとか。

それで、Terminalのこの手のコマンド見つけては「うは。こんなのもあるのか!?  なんか節操ないなー」と苦笑いしつつも、「おお、unixすげえなー」と思ったりしてます。

今までこういうちょっとした作業用に「何かフリーのGUIアプリないかなー?」と検索していたのですけど、「これCUIコマンドでないの?」みたいに検索することが増えてきている次第です。

■追記

manコマンドで候補がいくつか出てくるときに、どうするかについてです。
acceptというsocketのコマンドをひきたいとして。

そのままman accept とコマンドを実行するとアップルのcupsaccept(8) というコマンドが引かれてしまいます。
なので、-fオプションをつけて、man -f acceptとすると候補のリストが出ます。

BIO_s_accept(3ssl), BIO_set_accept_port(3ssl), BIO_get_accept_port(3ssl), BIO_set_nbio_accept(3ssl), BIO_set_accept_bios(3ssl), BIO_set_bind_mode(3ssl), BIO_get_bind_mode(3ssl), BIO_do_accept(3ssl) - accept BIO
accept(2)                - accept a connection on a socket
accept(8), cupsaccept/cupsreject(8) - accept/reject jobs sent to a destination
femail(8)                - accept mail on behalf of a real MTA
getstr(3x), getnstr(3x), wgetstr(3x), wgetnstr(3x), mvgetstr(3x), mvgetnstr(3x), mvwgetstr(3x), mvwgetnstr(3x) - accept character strings from curses terminal keyboard

今回の場合はソケットの関数をひきたかったので、accept(2)が正解のようです。なので、括弧の中のものをオプションとしてコマンドを実行。

man 2 accept

そうすると目的のものを引くことができました!

ACCEPT(2)                   BSD System Calls Manual                  ACCEPT(2)

NAME
     accept -- accept a connection on a socket

SYNOPSIS
     #include 

     int
     accept(int socket, struct sockaddr *restrict address, socklen_t *restrict address_len);
以下マニュアルがつづく

■さらに追記
Wikiによると、この番号はカテゴリだそうで。

章	内容
1	汎用コマンド
2	システムコール
3	Cライブラリ 関数
4	特殊なファイル(主に /dev にあるデバイス)
5	ファイル形式とその使用法
6	ゲーム
7	その他
8	システム管理コマンドとデーモン

今回は2をひいたので、これはUNIXのシステムコールのカテゴリということになります。


自作iPhoneアプリ 好評発売中!
フォルメモ - シンプルなフォルダつきメモ帳
ジッピー電卓 - 消費税や割引もサクサク計算!

ページトップへ戻る