こんにちは。きんくまです。
最近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 #includeint 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アプリ 好評発売中!
・フォルメモ - シンプルなフォルダつきメモ帳
・ジッピー電卓 - 消費税や割引もサクサク計算!
■ LINEスタンプ作りました!
毎日使える。とぼけたウサギ