内容へ移動
nofuture.tv
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
linux:tips
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== Linux Tips ====== Linuxについて雑多なメモ。もしくはtips ====== デスクトップ ====== ===== マウスポインタを一定時間で非表示にしたい ===== Ubuntuは、マウスポインタを一定時間動かさないと消えるようになってます。 これをDebianでも実現したいと思って調べたら、[[https://packages.debian.org/search?keywords=unclutter&searchon=names&suite=all§ion=all|unclutter]]を使うと一定時間で消すことができるそうです。 ===== rtcwakeを使って好きな時間にスリープから復帰 ===== * ネタ元: Wake Your Linux Up From Sleep for a Cron Job: http://www.osnews.com/story/24111/Wake_Your_Linux_Up_From_Sleep_for_a_Cron_Job util-linuxに入ってるrtcwakeを使うと好きな時間にスリープから復帰できるそ う。たとえば3分後に復帰させたい場合はこんな感じ $ sudo /usr/sbin/rtcwake -m mem -s 180 するとスリープに入って3分後、自動的に復帰します。 $ /usr/sbin/rtcwake --help 使い方: rtcwake [オプション] -d | --device <デバイス> rtc デバイスを選択する (rtc0|rtc1|...) -l | --local ローカル時間として RTC を使う -m | --mode standby|mem|... sleep mode -s | --seconds <seconds> 指定秒スリープする -t | --time <time_t> time to wake -u | --utc RTC uses UTC -v | --verbose メッセージを表示する -V | --version バージョンを表示する 特定の時間だと-tを使えばいいと思うけど、UNIX Timeっぽいので変換しないと ダメかも。あと時計もローカルとUTCでは変わるので、それぞれオプションを付 けないといけないかも。 ということで2010年12月1日12時にスリープから復帰させようとしたら $ date +%s --date "2010-12-01 12:00" 1291172400 $ sudo /usr/sbin/rtcwake -m mem -l -t 1291172400 ですかね。 ===== Xが無い環境でXが必要なプログラムをXvfbとx11-vncで動かす ===== サーバーなどXが無い環境でXが必要なプログラムを動かしたいけど、余計なも のを動かしたくないというときにXvfbは有効だけど、それで起動した場合、設 定を変更するなど、ちょっとしたGUIからの操作をどうするか問題になるときが あると思います。 そういうときにx11-vncを使うと、必要な時だけVNCを接続し て操作できます。 SSHなどでリモートマシンに接続して、必要なプログラムをインストールします。 $ sudo aptitude install xvfb x11-vnc 環境変数「DISPLAY」を設定してxvfbを起動。詳しくはman Xvfb $ export DISPLAY=":1" $ xvfb :1 -screen 0 1024x768x24 & あとはXが必要なプログラムを起動して終わりですが、本題はその動かしたプロ グラムをちょっといじりたい時なので、それをどうするかというとx11-vncを使 います。 リモートマシン上でx11-vncを起動します。 $ x11-vnc あとはクライアントマシンからVNCクライアントを使ってリモートマシンに接続します。 作業が終わってVNCの接続を切断すればリモート側のx11-vncも終了するので、 ムダにリソースを使わずに済みますね。 ===== Linux版Skypeで複数アカウントを使う ===== Skypeを仕事とプライベートで分けている人も多いと思いますが、そういう時のTips。 === オプション一覧 === <code> Usage: skype [options] Options: --dbpath=<path> Specify an alternative path to store Skype data files. Default: ~/.Skype --resources=<path> Specify a path where Skype can find its resource files. Default: /usr/share/skype --disable-api Disable Skype Public API. --pipelogin Command line login. "echo username password | skype --pipelogin" --version Display version information and exit. </code> === アカウントを複数分ける === 設定を保存するディレクトリを指定する **--dbpath** というオプションがあ るので、これに別ディレクトリを指定すると別のアカウントを指定できます。 $ skype --dbpath=~/.Skype-otheraccount と指定して起動すると設定を分けられます。 ===== アカウント名とパスワードの入力を省きたい ===== 普通にGUIから設定してもいいのですが、**--pipelogin** オプションもあるの で使ってみます。 このオプションを使うとパイプから受け取った文字列「ユー ザー名 パスワード」でログインできます。 例では単純に「echo username password | skype --pipelogin」と書いてあり ますが、そのままではちょっと危ないので、 $ echo "ユーザー名 パスワード" ~/.Skype-otheraccount/passwd $ chmod 600 ~/.Skype-otheraccount/passwd $ cat ~/.Skype-otheraccount/passwd | skype --pipelogin とするのがよいかと思います。 ===== NetworkManagerにGNOME Keyring Managerの認証を起動させない ===== NetworkManagerアイコンの「接続を編集する」からネットワークの接続設定を 開き、ボタンの横にある「全てのユーザーに利用可能」にチェックを入れ、適 用ボタンを押す。 ===== Linuxデスクトップ環境でプログラムメニューを非インタラクティブに追加する ===== Linuxデスクトップ環境でプログラムメニューを追加するには、通常、デスクトッ プ環境のメニュー編集などを使いますが、インタラクティブではなくプログラ ムなどから自動で追加する場合は、所定のファイルを作成し追加する必要があ ります。その設定方法について調べたのでメモ。 ==== 参考 ==== * [[http://www.freedesktop.org/wiki/Specifications/menu-spec|freedesktop.org - Specifications/menu-spec]] * [[http://www.atmarkit.co.jp/flinux/rensai/linuxtips/714gnomemenu.html|@IT:GNOMEメニューを編集するための基礎知識]] * [[http://www.atmarkit.co.jp/flinux/rensai/linuxtips/717addgnomemenu.html|@IT:GNOMEメニューにサブメニューや項目を追加するには]] * [[http://wiki.mandriva.com/en/Development/Howto/XDGMenuSystem|Development/Tasks/Packaging/Policies/Menu - Mandriva Community Wiki]] ==== アプリケーションを起動するための「*.desktop」ファイルを作る ==== (ファイル名).desktop という名前で以下のようなファイルを作成します。 面倒な場合はデスクトップ環境で「アプリケーションの起動を追加」などでデ スクトップ上にランチャを作れば、desktopファイルが作成されるので、それを 利用するとよいでしょう。 サンプルのようにxdg-openから起動するようにして実行属性をつけておくと、 デスクトップ環境でなくてもdesktopファイルからアプリケーションを起動する ことができて便利です。 <code> #!/usr/bin/env xdg-open [Desktop Entry] Encoding=UTF-8 Version=1.0 Type=Application Terminal=false Exec=(実行ファイル) Name=(名前) Name[ja]=(日本語ロケールでの名前) Comment=(コメント) Comment[ja]=(日本語ロケールでのコメント) Icon=(アイコンファイル) Categories=(カテゴリ) </code> ==== アプリケーションが入るディレクトリを指定する「*.directory」ファイルを作る ==== (ファイル名).directory という名前で以下のようなファイルを作成します。 desktopファイルに似ていますが、ファイル名の拡張子がdirectoryになってい ることと、TypeにDirectoryが指定されていることに注意。 <code> [Desktop Entry] Type=Directory Name=(名前) Icon=(アイコンファイル) </code> ==== メニュー階層を指定するXMLファイル「*.menu」ファイルを作る ==== (ファイル名).menu という名前で以下のようなXMLファイルを作成します。 XMLなので一見ややこしそうに見えますが、実際のところはApplicationsの下に Menu階層を作り、NameとDirectoryに上で作った *.Directory ファイルを指定 しているだけです。 メニューについて古い資料だとシステムワイドのmenuファイルを変更して階層 を追加していますが、その必要はなく、application-mergedディレクトリに、 この作成したmenuファイルを置けば追加することができます。 <code> <!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN" "http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd"> <Menu> <Name>Applications</Name> <Menu> <Name>(名前)</Name> <Directory>(上で作ったdirectoryファイル).directory</Directory> </Menu> </Menu> </code> ==== 「*.desktop」「*.directory」「*.menu」ファイルを指定のディレクトリに置く ==== 作成した*.desktop, *.directory, *.menuそれぞれのファイルを指定のディレクトリに配置します。 * システムワイドの場合 * アプリケーション(*.desktop): /usr/share/applications/ * ディレクトリ(*.directory): /usr/share/desktop-directories/ * メニュー(*.menu): /etc/xdg/menus/applications-merged/ * ユーザーローカルの場合 * アプリケーション(*.desktop): $(HOME)/.local/share/applications/ * ディレクトリ(*.directory): $(HOME)/.local/share/desktop-directories/ * メニュー(*.menu): $(HOME)/.config/menus/applications-merged/ ---- ====== サウンド・グラフィック・マルチメディア ====== ===== MP3タグをUTF-8に変換 ===== * 元ネタ: http://wiki.linuxmce.org/index.php/Converting_MP3_Tags_To_UTF-8 mid3iconvを使ってSJIS/CP932で書き込んだMP3のタグをUTF-8に一気に変換できます。 $ sudo apt-get install python-mutagen $ find . -name "*.mp3" -print0 | xargs -0 mid3iconv -e CP932 -d ===== Video4Linux2のデフォルト設定を変更する ===== xawtvをインストールしておく。 $ apt-get install xawtv デフォルトの状態を確認する。currentが現在の状態。 $ v4lctl list attribute | type | current | default | comment -----------+--------+---------+---------+------------------------------------- norm | choice | NTSC-M- | NTSC | NTSC NTSC-M NTSC-M-JP NTSC-M-KR NTSC-443 PAL PAL-BG PAL-H PAL-I PAL-DK PAL-M PAL-N PAL-Nc PAL-60 SECAM SECAM-B SECAM-G SECAM-H SECAM-DK SECAM-L SECAM-Lc input | choice | Composi | Televis | Television Composite1 S-Video audio mode | choice | mono | mono | mono stereo lang1 lang2 bright | int | 128 | 128 | range is 0 => 255 contrast | int | 128 | 128 | range is 0 => 255 color | int | 128 | 128 | range is 0 => 255 hue | int | 0 | 0 | range is -128 => 127 volume | int | 31 | 31 | range is 0 => 31 mute | bool | on | on | NTSC Japanに変更する。 $ v4lctl setnorm NTSC-M-JP 入力をComposite1に変更。 $ v4lctl setinput Composite1 ステレオに変更 $ v4lctl setattr "audio mode" stereo ===== GIMPで缶バッジ画像を書く ===== 長くなったのでこちらで。 * [[diary/20110214.html#p02|http://www.nofuture.tv/diary/20110214.html#p02]] ===== PDFをディスプレイで見るために最適化する ===== Inkscapeで画像をペタペタ貼ったPDFを作成したら、かなりファイルサイズが大 きくなってしまったので最適化する方法を探してみた。 * ネタ元: Ubuntu Tip:Howto reduce PDF file size from command line | Ubuntu Geek: http://www.ubuntugeek.com/ubuntu-tiphowto-reduce-adobe-acrobat-file-size-from-command-line.html GhostScriptでスクリーン用に最適化できるそうです。 $ gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=(出力ファイル名).pdf (オリジナルファイル名).pdf ps|epsに出力してラッパーのps2pdfを使うほうがお手軽かも。 $ ps2pdf14 -dPDFSETTINGS=/ebook -sPAPERSIZE=a4 (オリジナルファイル名).ps (出力ファイル名).pdf //-dPDFSETTINGS=//で指定できるPDFの最適化レベルはこんな感じ。 ps2pdf: PostScript-to-PDF converter: http://ghostscript.com/doc/current/Ps2pdf.htm ^ /screen | selects low-resolution output similar to the Acrobat Distiller "Screen Optimized" setting. | ^ /ebook | selects medium-resolution output similar to the Acrobat Distiller "eBook" setting. | ^ /printer | selects output similar to the Acrobat Distiller "Print Optimized" setting. | ^ /prepress | selects output similar to Acrobat Distiller "Prepress Optimized" setting. | ^ /default | selects output intended to be useful across a wide variety of uses, possibly at the expense of a larger output file. | 用紙サイズの//-sPAPERSIZE=//は、A3などのときは指定しておきます。 (指定しないとA4にぶった切られます) ===== PDFを複数のjpg/pngなどの画像に変換と複数の画像をPDFにする ===== * 元ネタ: Linux.com :: ImageMagick: A graphics wizard for the command line: http://www.linux.com/archive/feature/113978 ImageMagickのconvertコマンドを使う。 たとえばexample.pdfをexample-(連番).pngにする場合は以下のようにする。 %04dの意味は0で埋めて4桁の連番。 $ convert example.pdf exmaple-%04d.png Convertにはいろいろなオプションがあるので、たとえば書き出す画像を320x240ピクセルの画像にしたければ以下のようにする。 $ convert example.pdf -geometry 320x240 exmaple-%04d.png 300dpiの画像に変換するにはオプションの//[[http://www.imagemagick.org/script/command-line-options.php#units|-unit]]//に単位「PixelsPerInch」を、 //[[http://www.imagemagick.org/script/command-line-options.php#density|-density]]//に「300」を指定する。 $ convert example.pdf -units PixelsPerInch -density 300 exmaple-%04d.png 逆に複数の画像をPDFにはするには以下のようにすればよい。 $ convert example*jpg example.pdf 上記のことを組み合わせるとイメージに変換したののち、画像修正、PDFに変換もできる。 [[http://www.imagemagick.org/script/mogrify.php|mogrify]]は[[http://www.imagemagick.org/script/convert.php|convert]]と同じだけれど、画像を一括上書き変換するコマンド。 $ convert example.pdf -units PixelsPerInch -density 300 exmaple-%04d.png $ mogrify -type GrayScale -level 0%,80%,0.75 exmaple-*png $ convert example-*png example.pdf ===== Inkscapeでai(Illustrator形式ファイル)とeps(カプセル化Postscript形式)のファイルを扱う ===== 書きかけ * Debian -- sid の python-uniconvertor パッケージに関する詳細: http://packages.debian.org/ja/sid/python-uniconvertor * [[diary/20081127.html#p01|http://www.nofuture.tv/diary/20081127.html#p01]] vecteezyというベクター画像を配布しているサイトがあります。 * http://www.vecteezy.com/ うれしいことにIllustratorのai形式以外にもeps、svg形式も配布しているので、 喜んでeps画像をダウンロードしてInkscapeで読み込ませると、こんな感じに穴 が埋まります。(画像の真ん中「EPSで読み込ませたもの」参照) * [[http://www.vecteezy.com/vf/172-Organic-Design-Elements|Organic Design Elements]] / [[http://benblogged.com/|Ben Blogged]] (CC-by 3.0) 「線」のデータはあるけど「塗り」の部分の色が変換されてない? Inkscapeはsvgしか扱えないので、[[http://www.pstoedit.net/|pstoedit]]を 呼び出してsvgに変換してから読み込んでいるようです。 手で「pstoedit -f plot-svg (元の画像ファイル).eps (出力ファイル).svg」とsvgに変換して読み 込ませると、inkscapeで読みこんだものと同じように穴が埋まる。 原因がpstoeditということがわかったので、いろいろ試してみたのですが、わかった事は - ai形式のファイルがあるならInkscape 0.46では直接読み込めるので、まずはそれを読みこんでみる。(Illustrator 9.0以降のai形式でpdfデータがくっついていれば、それを読み込んでいるっぽい) epsしかない、もしくはダメな場合(読み込めない、画像がおかしい場合)はpdfに変換して読み込ませる。 - ai形式でもInkscapeから直接読み込めないファイルがあります。その場合にはuniconverter(Debianパッケージ名はpython-uniconverter)を使ってPDFに変換して読み込みます。 - pdfに変換するには <del>pstoedit</del> epstopdfを使ってpdfに変換してInkscapeに読み込ませる。(**svgには変換しない**) 変換法方は <del>pstoedit -f gs:pdfwrite (元の画像ファイル).eps (出力ファイル).pdf</del> epstopdf (元の画像ファイル).eps --outfile=(出力ファイル).pdf でおk。(画像の左「PDFで読み込ませたもの」参照) - それでもダメならsk([[http://www.skencil.org/|Skencil]])形式に変換して読み込む。変換方法は「pstoedit -f sk (元の画像ファイル).eps (出力ファイル).sk」な感じ。ただCMYK→RGB変換がうまくいかないのか色合いが若干変わります。(画像の右「Skencilで読み込ませたもの」参照) === 「-ssp」オプションをつけるといい? === 書いた直後に、こんなの見つけてしまった。 * [[https://bugs.launchpad.net/inkscape/+bug/168448|Bug #168448 in Inkscape: “Fails to Import EPS Properly”]] 確かに//-ssp//つけるとSkencilで読み込ませたのと同じになる。 === 2009.11.19追記 === Inkscapeでeps画像を読み込む場合、pdfに変換して読み込ませることには変わ りありませんが、変換をpstoeditでおこなうよりepstopdf(debianでは texlive-extra-utilsパッケージに収録)を使った方が、より精度よくInkscape で読み込めるようです。 ===== A3サイズ1枚のPDFをA4サイズ2枚のPDFに変換する ===== Windows上でA3サイズのPDFをポスター印刷しようとしたら、EPSONのプリンタド ライバで対応しているポスター印刷は4枚の倍数じゃないことと、Adobe Reader 9は分割印刷できないので調べてみた。 結果、Windows上じゃなくてLinux上の [[http://pdfposter.origo.ethz.ch/|pdfposter]]を使うとよいことが分かった のでメモ。 (pdfposterはWindows版もあるけど、インストールしようとすると 落ちてしまう。なぜ?) インストールはDebianなら //aptitude install pdfposter// で終わり。 使い方は $ pdfposter -p 2x1a4 input.pdf output.pdf pdfposterでの分割についての例は [[http://pdfposter.origo.ethz.ch/wiki/examples|pdfposterのExamples]]に 乗ってるので、それも参照。 ページ単位でPDFを分割・結合するには、[[http://www.pdfsam.org/|PDFsam (PDF Split and Merge)]]が便利。 Debianなら //aptitude install pdfsam// でサクっとインストールできます。 ---- ====== サーバー・ネットワーク ====== ===== SSHの多段接続 ===== AからCへSSHで接続したいけど、Bを経由しないといけない場合のSSHの接続の仕方。 $ ssh -t -L 2223:localhost:2222 USER_B@ADDRESS_B ssh -t -L 2222:localhost:22 USER_C@ADDRESS_C ===== SSHで接続して自宅の音楽を聞く(mt-daapd over SSH) ===== 家の中はmt-daapdで音楽を飛ばしているけど、外からでも聞けないかなと思っ てググッてみたら、単純にポートフォワードしてあげるとよいそうな。 ということで、こんな感じでSSHをバックグラウンド動かして、bansheeなどプ レイヤーのほうでlocalhost:3689を追加してあげると聞けた。 $ ssh -Nf -L 3689:localhost:3689 (ユーザー名)@daapd.example.com ===== ロリポップのftpにcurlftpsとlftpつなぐ ===== ロリポップのサイトをいじることになってlftpやcurlftpsで接続しようとして も、なぜか撥ねられる。ロリポップの設定を見ても何も書いてないし、 * 各種FTPソフトの設定方法 / ホームページ / マニュアル - ロリポップ!: http://lolipop.jp/manual/hp/ftp-set/ どうしたもんかと思えば、通常のftpなのにTLSを要求しているらしい。 * メモ捨て場: lftp ログインできない: http://hidemon-memo.blogspot.jp/2010/07/lftp.html ということでcurlftpfsでマウントするならこんな感じにする。 $ curlftpfs -o tlsv1,user=(ユーザー名) (FTPサーバー) マウントディレクトリ/ lftpの場合はこう。 lftp :~> set ftp:ssl-allow off ===== rsyncの使い方 ===== バックアップと取る時にrsyncを使うけれど、使い方を忘れるのでメモ。 基本はこの形 rsync -auvvz src/ dest/ ^ a | ファイル情報を保つ | ^ u | 新しければ更新しない | ^ vv | vを重ねてより冗長表示にする | ^ z | 圧縮をかける。圧縮はなんでも効果があるわけではないので、ソースによって見極める | 試すときには ''-n'' / ''--dry-run'' オプション。 リスト一覧を取るには ''--list-only'' オプション。 rsyncはソースディレクトリの最後にスラッシュがつくかつかないかで挙動が変わる。 考え方としては、 スラッシュがあるとき「''rsync -auvvz src/ dest/''」は、「''cp src/* dest/''」、 スラッシュがないとき「''rsync -auvvz src dest/''」は、「''cp src/ dest/''」 というふうに考える。 ローカルでコピーをする場合は、''-W''/''--whole-file''オプションをつける。 (ローカルではdelta-xfer algorithmを無効にしてコピーするとよいらしい) 大きなファイルを扱う場合は、隠しファイルを作らずファイルを直接書き換える ''--inplace'' オプションをつける。 ===== xhostの安全な使い方 ===== xhostの接続許可を出すとき「めんどくさいからxhost +で全開でいいやー」と か、ちょっと気を使う人なら「xhost +localhost」みたいな感じにしますが、 ユーザー限定で使えますよ、ということでこんな感じにするとよいです。 <code> $ xhost +SI:localuser:<user name> </code> ===== ssh-copy-idでポートを指定する ===== ssh-copy-id という、SSHの公開鍵をリモートマシンにコピーして ~/.ssh/authorized_keyに設定してくれる便利コマンドがありますが、ポート番 号を変更している場合は下のようにするとよいです。 $ ssh-copy-id '-p 2222 -i ~/.ssh/vbox.pub debian@localhost' ===== wgetでサイトの情報を調べる ===== wgetで $ wget -S --spider <URI> なんてすると何もダウンロードせずサーバーレスポンスヘッダだけ返してくれます。 $ wget -S --spider http://josm.openstreetmap.de/josm-latest.jar スパイダーモードが有効です。リモートファイルが存在してるか確認します。 --2011-02-18 11:17:08-- http://josm.openstreetmap.de/josm-latest.jar josm.openstreetmap.de をDNSに問いあわせています... 85.214.112.59, 2a01:238:4000:0:21:6879:9ac1:9e7e josm.openstreetmap.de|85.214.112.59|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... HTTP/1.1 200 OK Date: Fri, 18 Feb 2011 02:17:08 GMT Server: Apache/2.2.14 (Ubuntu) Last-Modified: Wed, 16 Feb 2011 02:31:45 GMT ETag: "78800b-6551cf-49c5d14ff2640" Accept-Ranges: bytes Content-Length: 6640079 Keep-Alive: timeout=15, max=100 Connection: Keep-Alive Content-Type: application/java-archive 長さ: 6640079 (6.3M) [application/java-archive] リモートファイルが存在します。 シェルスクリプトで簡単に更新情報を調べることができますね。 Wgetを使ってシェルスクリプトで更新情報を調べるスクリプトを書くときの注 意としては、wgetはメッセージを標準出力ではなくて```標準エラー出力```に メッセージを出しているので、普通にパイプをつないでgrepなどは使えません。 $ wget -S --spider <URI> 2>&1 | grep Last-Modified みたいなかんじに書きます。 ===== curlでサイトの情報を調べる ===== curlでも調べることができるそうです。 $ curl -I <URI> こんな感じ。 $ curl -s -I http://josm.openstreetmap.de/josm-latest.jar HTTP/1.1 200 OK Date: Mon, 25 Jul 2011 01:17:16 GMT Server: Apache/2.2.14 (Ubuntu) Content-Length: 6411527 Last-Modified: Wed, 21 Aug 2011 01:31:36 GMT Content-Type: application/x-jar こっちは標準出力にメッセージが出すので素直にgrepできるのですが、パイプ でつなぐとなぜかヘッダ以外のメッセージを出してしまうので、トラブルを防 ぐため明示的に「-s(--silent)」オプションをつけてメッセージを抑えるとい いかもしれません。 * サイレントオプション無し $ curl -I http://josm.openstreetmap.de/josm-latest.jar | grep "200 OK" % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 6261k 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 HTTP/1.1 200 OK * サイレントオプション有り $ curl -s -I http://josm.openstreetmap.de/josm-latest.jar | grep "200 OK" HTTP/1.1 200 OK ---- ====== ファイル処理 ====== ===== SJISのzipアーカイブを展開する ===== unzipではなく7zipを使ってLANG=Cで展開してconvmvでファイル名を修復する。 $ LANG=C 7z x (SJIS_archive).zip $ convmv -f sjis -t utf8 --notest (SJIS_archive_filename) ===== ディレクトリ構造を比較する ===== 似たような構造のAディレクトリとBディレクトリにあるファイルを比較するには''diff''に''-q''オプションをつけるとよい。 $ diff -qr a/ d/ (-qrとなってるのは再帰するため) ---- ===== ファイルを分割する ===== 大きなファイルを分割するには split を使います。 $ split [オプション]... [入力ファイル [接頭語]] ^ オプション ^ 意味 | ^ -l | 分割する行数(テキストファイル) | ^ -b | 分割するバイト数 (K, M, G, T, P, E, Z, Y (1024ごと) or KB, MB, ... (1000ごと)) | ^ -n | 分割する数 | ^ -a | 接尾語の文字数 | ^ -d | 接尾語を数字にする | 2Gごとに分割するならこんな感じ。 $ split -b 2G [分割したいファイル名] [分割ファイルの接頭語] ファイルを10に分割して、接尾語を3桁の数字にするならこんな感じ。 $ split -n 10 -a 3 -d [分割したいファイル名] [分割ファイルの接頭語] ===== マルチコアCPUを使ったgzip圧縮を使う ===== マルチコアCPUに対応したgzipに、[[http://zlib.net/pigz/|pigz]]というのがあります。 これを使うと並列して圧縮を行うので、大きなファイルも早く圧縮できるはず。 debianでは apt-get install pigz でインストールできます。 使い方は $ pigz -p (プロセス数) [FILE] で、tarと組み合わせる場合はgzipの代わりにこんな感じ。 $ tar cvf - | pigz -p (プロセス数) > [FILE] プロセスはCPUコア+2ぐらいが、ちょうどいいような気がします。 ====== シェルスクリプト/プログラミング ====== ===== bashのreadで引数を省略する ===== シェルスクリプトを書く時、「while read (変数)」という形でファイルを読み込んで処理しますが、変数が一つの場合、これを省略することができます。 「省略するとどの変数を見ればいいのか?」という疑問がありますが、省略された場合に使われる「REPLY」という変数が用意されているので、これを使います。 * http://linuxjm.sourceforge.jp/html/GNU_bash/man1/bash.1.html#lbAW > REPLY > 組み込みコマンド read に引き数が与えられなかったときに読み込まれた行が設定されます。 ====== ハードウェア ====== ===== HP Compaq 2230s/CT Notebook PCのマイクデバイスのレベル調整 ===== [[http://h50146.www5.hp.com/products/portables/2230s_ct/|HP Compaq 2230s/CT Notebook PC]]のマイクデバイスのレベル調整はDigitalでする。 内蔵マイクと外部マイクのレベル調整は、排他仕様なので外部マイクを差すと 外部マイクの調整に切り替わる。 ---- ====== 開発 ====== ===== chrootで復旧させる場合にマウントしておくデバイスファイル ===== Linux from scratchからコピペ。 mount -v --bind /dev $LFS/dev mount -vt devpts devpts $LFS/dev/pts mount -vt tmpfs shm $LFS/dev/shm mount -vt proc proc $LFS/proc mount -vt sysfs sysfs $LFS/sys ===== Rawイメージファイルのサイズを拡張する ===== ddとかで切り出したrawイメージファイルのサイズを大きくするには、空ファイ ルを作ってcatでくっつけてやればいいみたい。 元のRawイメージファイルをhoge.imgとして $ dd if=/dev/zero of=temp.img bs=1M count=2048 $ cat hoge.img temp.img > fuga.img あとは出来上がったイメージファイルに対してpartedなどでパーティションサ イズを変更すればおk. $ sudo /sbin/parted fuga.img ===== geditに日本語テキストの文字コードを自動認識させる ===== <note warning> 古い情報です。 今は「ファイルを開く」ダイアログにある、「エンコーディング」メニューから認識させたい文字コードを追加できます。 </note> 文字コードを自動認識する候補にSJISだとかEUC-JPだとかが入っていないので、ハナっから自動認識の対象になっていないそうな。 ということでgconfに日本語の設定を追加すると、日本語テキストの文字コードを自動認識していくれる。 $ gconftool-2 --set /apps/gedit-2/preferences/encodings/auto_detected --type string "UTF-8,SHIFT_JIS,EUC-JP,ISO-2022-JP,CURRENT,ISO-8859-15,UTF-16" ==== ハードディスクのUUIDを調べる ==== === 1. /dev/disk/by-uuid/を見る === $ ls -la /dev/disk/by-uuid/ 合計 0 drwxr-xr-x 2 root root 120 2009-03-19 00:10 . drwxr-xr-x 6 root root 120 2009-03-19 00:10 .. lrwxrwxrwx 1 root root 10 2009-03-19 00:10 03855885-0780-4f75-a5bf-918fc7639121 -> ../../sda2 lrwxrwxrwx 1 root root 10 2009-03-19 00:10 2c345055-e89f-4494-9dcb-efd706336d2f -> ../../sda1 lrwxrwxrwx 1 root root 10 2009-03-19 00:10 348f0466-e0f5-4595-adab-78755050d249 -> ../../sda5 lrwxrwxrwx 1 root root 10 2009-03-19 00:10 daef5c4d-6d6a-4ecb-bacb-06ed5507a42c -> ../../sda6 === 2. vol_idコマンドを使う === # vol_id --export /dev/sda5 ID_FS_USAGE=other ID_FS_TYPE=swap ID_FS_VERSION=2 ID_FS_UUID=348f0466-e0f5-4595-adab-78755050d249 ID_FS_UUID_ENC=348f0466-e0f5-4595-adab-78755050d249 ID_FS_LABEL=swap ID_FS_LABEL_ENC=swap ID_FS_LABEL_SAFE=swap ===== KDEでコンテキストメニューに追加する ===== //~/.kde/share/apps/konqueror/servicemenus///にhoge.desktopのようなファイルを置く。 ===== Network Managerで接続するには ===== 無線LANなどをNetwork Managerを使って自動的に接続するためには以下の条件が必要です。 - /etc/network/interfacesのネットワーク設定をdhcpもしくは設定しない。 - ユーザーをnetdevグループに追加する。 ===== カーネルのALSAのバージョンを調べる ===== /usr/src/linux/include/sound/version.h に書いてあります。 ===== GUIで自動的にsudoを使う ===== ==== gksuを使う ==== gconfの/apps/gksu/sudo-modeを設定する。 gconf-editorで変更するか、~.gconf/apps/gksu/%gconf.xmlに <code> <?xml version="1.0"?> <gconf> <entry name="sudo-mode" type="bool" value="true"></entry> ←この行追加 </gconf> </code> と書いておく。 ==== kdesuを使う ==== /etc/kde3/kdesurcか~/.kde/share/config/kdesurcに [super-user-command] super-user-command=sudo と書いておく。 ===== mltermのterminfoを作る ===== [[http://mlterm.sourceforge.net/|mlterm]]のソースを取ってきて展開。 展開したディレクトリのdoc/termで # tic mlterm.ti としてterminfoを登録。 ===== initrdイメージを展開する ===== 拡張子にだまされてたけど、いつのころからかinitrdの中身がイメージファイルからcpioで固めてgzipで圧縮したものに変わってたのでメモ。 * [[http://www.linux.or.jp/JF/JFdocs/kernel-docs-2.6/filesystems/ramfs-rootfs-initramfs.txt.html|JF: Linux Kernel 2.6 Documentation: ramfs-rootfs-initramfs.txt]] ==== 展開 ==== cpio -i -d -H newc -F initramfs_data.cpio --no-absolute-filenames ==== 圧縮 ==== <code bash> #!/bin/sh # Copyright 2006 Rob Landley <rob@landley.net> and TimeSys Corporation. # Licensed under GPL version 2 if [ $# -ne 2 ] then echo "usage: mkinitramfs directory imagename.cpio.gz" exit 1 fi if [ -d "$1" ] then echo "creating $2 from $1" (cd "$1"; find . | cpio -o -H newc | gzip) > "$2" else echo "First argument must be a directory" exit 1 fi </code> ===== alsaのCMI8738で光入出力を使う ===== ==== 光出力 ==== ミキサーで//IEC958 Output//をオンにする。 ==== 光入力 ==== ミキサーで //IEC958 In Select// をオンにする。 モニターするには//IEC958 In Monitor//をオンにする。 ===== メールをMH形式からmboxに移行 ===== WanderlustからMozilla Thunderbirdに移行したのでメモ。 MHからmboxにするには [[http://people.freebsd.org/~daichi/|後藤大地]]さんが 変換スクリプトを作っておられるので、それを使います。 http://people.freebsd.org/~daichi/src/mh2thunderbird とりあえずDebianではnmhを入れておけば使えます。 nmhを使うには最初にinstall-mhを実行しないとダメなんで実行しておきます。 $ sudo apt-get install nmh $ /usr/bin/mh/install-mh あとは $ mh2thunderbird -o ~/.mozilla-thunderbird/fuga/Mail てな感じで実行。 ===== cannaのローマ字かな変換テーブルの変更。 ===== なぜかCannaのATOKキーバインドには、「ヴァ」行が登録されていないので登録する。 バイナリになってるローマ字かな変換テーブルをテキストに戻す。 $ dpromdic just.cbp > exapmle.txt 変換したテーブルにエディタでなんとか「ヴァ」行を追加してテーブルをバイナリに戻す。 $ mkromdic example.txt .cannaのテーブルを指定してる所を、作ったローマ字かな変換テーブルのファイル名に変更する。 <code> ;(setq romkana-table "just.cbp") (setq romkana-table "example.cbp") </code> ===== afioを使って640M MOに/homeをファイル名、ログ、ファイルリストは日付でバックアップする ===== 参考: [[http://www.linux.or.jp/JF/JFdocs/Backup-mini-HOWTO/|Backup-mini-HOWTO]], [[http://www.sixnine.net/regexp/|Regular Expression(正規表現)]], [[http://www.linux.or.jp/JM/html/GNU_grep/man1/grep.1.html|JM Project:grep(オプション)]] D=`date -I` ; find /home/ | grep -v hogehoge | afio -ovZ -s 630m -L ./$D.log ./$D.afz 2>&1 | tee ./$D.list sudo bash -c "find home/ | afio -ovZ -L /home/note/note-boot.log /home/note/note-boot.afz 2>&1 | tee /home/note/note-boot.list" ちなみに書き戻すときは afio -ivZ (ファイル名) {{tag>linux shellscript tips}}
linux/tips.txt
· 最終更新: 2014/11/29 10:19 by
nogajun
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ