https://www.youtube.com/watch?v=nC3-b6zUfrY
アニメ『中間管理録トネガワ』
カイジのスピンオフです。こちらもざわざわ言ってます。名前だけで引っ張るナレーション最高です。
今回学習するコマンドを、nameというキーワードで、探したいと思います。
man -k使います。
takk@deb9:~/tmp$ man -k name | head nicknames (5) - NIS マップ用のニックネーム変換テーブル arch (1) - マシンのハードウェア名を出力する (un... basename (1) - ファイル名からディレクトリと接尾辞... basename (3) - パス名を解析して各部分を取り出す canonicalize_file_name (3) - 正規化された絶対パス名を返す dirname (1) - ファイル名の最後の要素を削除する dirname (3) - パス名を解析して各部分を取り出す dnsdomainname (1) - システムの DNS ドメイン名を表示する domainname (1) - システムの NIS/YP ドメイン名を表示・... domainname (8) - 現在のドメイン名を設定・表示する takk@deb9:~/tmp$
man -k nameで全抽出すると、ライブラリ等も表示されますので、コマンド(1)に絞ります。
takk@deb9:~/tmp$ man -k name | grep '(1)' arch (1) - マシンのハードウェア名を出力する (un... basename (1) - ファイル名からディレクトリと接尾辞... dirname (1) - ファイル名の最後の要素を削除する dnsdomainname (1) - システムの DNS ドメイン名を表示する domainname (1) - システムの NIS/YP ドメイン名を表示・... dpkg-name (1) - Debian パッケージを完全パッケージ名に... hostname (1) - システムのホスト名を表示・設定する logname (1) - ユーザのログイン名を表示する namei (1) - 終端が見つかるまでパス名を辿る nisdomainname (1) - システムの NIS/YP ドメイン名を表示・... uname (1) - システム情報を表示する volname (1) - ボリューム名を返す ypdomainname (1) - システムの NIS/YP ドメイン名を表示・... addr2line (1) - convert addresses into file names and line numbers. apropos (1) - search the manual page names and descriptions bsd-from (1) - print names of those who have sent mail chfn (1) - change real user name and information getent (1) - get entries from Name Service Switch libraries git-archive (1) - Create an archive of files from a named tree git-check-mailmap (1) - Show canonical names and email addresses of contacts git-check-ref-format (1) - Ensures that a reference name is well formed git-mv (1) - Move or rename a file, a directory, or a symlink git-name-rev (1) - Find symbolic names for given revs git-update-ref (1) - Update the object name stored in a ref safely gtk-query-settings (1) - Utility to print name and value of all GtkSettings... gvfs-rename (1) - Rename a file hostnamectl (1) - Control the system hostname ifnames (1) - Extract CPP conditionals from a set of files killall (1) - kill processes by name logresolve (1) - Resolve IP-addresses to hostnames in Apache log files mkfifo (1) - make FIFOs (named pipes) montage (1) - create a composite image by combining several separa... montage-im6 (1) - create a composite image by combining several separa... montage-im6.q16 (1) - create a composite image by combining several separa... mv (1) - move (rename) files mysql_fix_extensions (1) - normalize table file name extensions nmtui-hostname (1) - Text User Interface for controlling NetworkManager nsenter (1) - run program with namespaces of other processes nslookup (1) - query Internet name servers interactively pathchk (1) - check whether file names are valid or portable pgrep (1) - look up or signal processes based on name and other ... pkill (1) - look up or signal processes based on name and other ... prename (1) - renames multiple files pwd (1) - print name of current/working directory readlink (1) - print resolved symbolic links or canonical file names rename (1) - renames multiple files rename.ul (1) - rename files resolveip (1) - resolve host name to IP address or vice versa showrgb (1) - display an rgb color-name database ssh-argv0 (1) - replaces the old ssh command-name as hostname handling systemd-escape (1) - Escape strings for usage in system unit names systemd-resolve (1) - Resolve domain names, IPV4 and IPv6 addresses, DNS r... tnameserv (1) - Interface Definition Language (IDL). tty (1) - print the file name of the terminal connected to sta... unshare (1) - run program with some namespaces unshared from parent users (1) - print the user names of users currently logged in to... x86_64-linux-gnu-addr2line (1) - convert addresses into file names and line... xfontsel (1) - point and click selection of X11 font names zipnote (1) - write the comments in zipfile to stdout, edit commen... takk@deb9:~/tmp$
一番最後のzipnoteが気になりました。なぜ気になったのかというと、英語が難しかったから。write the comments in zipfile from ではなくて、to stdoutなんですね。
または、read the comments in zipfile to stdoutではないのだろうか、私は、コマンドより、英語の方が勉強必要そうです。
さて、man zipnote。
zipnote(1) General Commands Manual zipnote(1) NAME zipnote - write the comments in zipfile to stdout, edit comments and rename files in zipfile SYNOPSIS zipnote [-w] [-b path] [-h] [-v] [-L] zipfile ARGUMENTS zipfile Zipfile to read comments from or edit.
zipファイルにコメントを埋め込めるんですね。さっそくzip作ってから確認してみましょう。
takk@deb9:~/tmp$ echo HELLO > a.txt takk@deb9:~/tmp$ cat a.txt HELLO takk@deb9:~/tmp$ zip a.zip a.txt adding: a.txt (stored 0%) takk@deb9:~/tmp$
zipファイルができたので、zipnoteでコメントを確認します。
takk@deb9:~/tmp$ zipnote a.zip @ a.txt @ (comment above this line) @ (zip file comment below this line) takk@deb9:~/tmp$
3行表示されました。
次はコメントを書き換えてみます。
man zipnoteでOPTIONを確認します。
OPTIONS -w Write comments to a zipfile from stdin (see below). -b path Use path for the temporary zip file. -h Show a short help. -v Show version information. -L Show software license.
-wを使い、stdinで渡せば良さそうです。やってみます。
takk@deb9:~/tmp$ echo 'This is a Hello file' | zipnote -w a.zip zipnote error: Invalid comment format (unexpected input) takk@deb9:~/tmp$
エラーになりました。一応zipnoteで確認。
takk@deb9:~/tmp$ zipnote a.zip @ a.txt @ (comment above this line) @ (zip file comment below this line) takk@deb9:~/tmp$
やはりコメントは変わってません。
man zipnoteを読み進めるとやり方が書いてありました。
まず、コメントをファイルに書き出して、
takk@deb9:~/tmp$ zipnote a.zip > comment takk@deb9:~/tmp$ cat comment @ a.txt @ (comment above this line) @ (zip file comment below this line) takk@deb9:~/tmp$
書き出したファイルをvim等で編集します。
takk@deb9:~/tmp$ vim comment
新たなコメントには、@の横に=をつけておきます。
takk@deb9:~/tmp$ cat comment @ a.txt @=This is a Hello file. @ (comment above this line) @ (zip file comment below this line) takk@deb9:~/tmp$
書き換えたファイルを-wオプションで適応します。
takk@deb9:~/tmp$ zipnote -w a.zip < comment takk@deb9:~/tmp$
zipnoteでコメントを書き出してみると、
takk@deb9:~/tmp$ zipnote a.zip @ This is a Hello file. @ (comment above this line) @ (zip file comment below this line) takk@deb9:~/tmp$
コメントが変更されていました。
コメントの変更ルールが謎なので、それはまた別の機会にzipnoteのソースを確認することにします。
コメント