1. ホーム
  2. スクリプト・コラム
  3. その他

cygwinの経験

2022-02-07 12:24:38
cygwinのヒント
1. cygwinでWindowsのディスクにアクセスする
cd /cygdrive/c
cd c:
2. cygwinコマンドのWindowsへの統合
cygwinがd:/develop/cygwinにインストールされていると仮定して、d:/develop/cygwin/binをシステム変数PATHに追加します(同じコマンドがいくつか先に実行された場合、findなどのWindowsコマンドではなくcygwinコマンドを先に実行するように、できればWindowsよりも前に追加してください)。
cmd.exe で tar czvf xxx.tgz を直接実行することもできます。/
ls、more、less、find、grepなど、基本的にすべてのコマンドが利用可能です。
3. TGZでバックアップ
cygwinのBINをPATHに追加します。
BATファイルをビルドします。
エコーオフ
d:
cd d:\website8thmanage
tar czvf 8thmanage.tgz 8thmanage
4. SHELLスクリプトを使用したWindows
cygwinのBINをPATHに追加します。
CYGWINのディレクトリ/var/の下にスクリプトt.shをビルドします。t.sh内のパスは$CYGWINからの相対パスであり、中のCドライブにアクセスする必要がある場合は、/cygdrive/c/を使用してくださいことに注意します。
Windowsで実行します。
d:\cygwin ﹑bash d:\cygwin ﹑vart.sh
(定期的に実行することができます)
5. Windows システムのユーザーを同期させる
mkpasswd -l > /etc/passwd
mkgroup -l > /etc/group
ドメインがある場合は、-d domainnameを追加する必要があります。
6. システムサービスのインストール
cygrunsrv
7. cygwing で rsync を使用する
a.rsyncコンポーネントのインストール
b.cygwinでサーバーを設定します。
vi /etc/rsyncd.conf
... .scretsファイル=/etc/tom.ipaddr.pas
設定ファイルは、私が書いた別のrsyncの記事を参照してください、注意:パスワードファイルのパーミッションは0400でなければなりません。
chmod 0400 /etc/tom.ipaddr.pas
c.サーバーを起動する
rsync --daemon
d.クライアントサイドの同期化
クライアント側のcygwinで、rsync syncを実行します。具体的なコマンドは、別のrsyncの記事を参照してください。
8. cygwinでSSHDを使用する
a.cygrunsrc、opensshがインストールされている必要があります。
b.ssh-host-config -yを実行します。
CYGWIN=が表示されるまでずっと入力し、tty ntsecと入力し、もう一度入力します。
(または、システム環境変数CUGWIN=nesec ttyを追加する)。
c. すでにSSHDサービスをWindowsのサービスにインストールし、サービスの中で直接起動したり閉じたりすることができます。
(cygrunsrc -S sshd または net start sshd)
9. 中国語表示
vi ~/.bashrc
# ls と dir コマンドを中国語と色で表示するようにする。
alias ls='ls --show-control-chars --color' です。 
alias dir='dir -N --color' です。
# プロンプトを中国語にするために中国語環境に設定する
エクスポート LANG="zh_CN.GBK"
# 中国語のエンコーディングでエクスポートする
エクスポート OUTPUT_CHARSET="GBK"
~/.inputrc は 
完了時に大文字小文字を区別しない設定にする 
メタフラグをオンにする 
出力メタを設定する 
変換メタをオフに設定する 
cygwin.batスクリプトは。 
エコーオフ 
MAKE_MODE=UNIXに設定します。 
--------------------------------
インストール
直接http://www.cygwin.com下载一个安装程序,setup.exe。このプログラムは単なるインストーラーで、すべてのモジュールはネットワークからダウンロードされ、インストールされます。あるいは、cygwin.iso のイメージをダウンロードして、直接 CD にイメージ化し、CD からローカルにインストールすることもできます。この方がはるかに速く、切断のことを考える必要もありません。
Xでの中国語対応
ロケール対応
Cygwinのロケールサポートは常に問題がありますが、XプログラムがまだXLOCALEを使用できることは良いことです。
zh_CN.GB2312ではなく、zh_CN.gbkを使用することが推奨されます。
プログラムを移植する際、libcygwin.a の setlocale に接続させるのではなく、 libX11.a の _Xsetlocale を使うように注意する必要があります。その方法は、移植したプログラムのソースコード全体をチェックして 
#インクルード 
に変更するだけです。 
#define X_LOCALE
#インクルード 
また、プログラムのリンクライブラリに-lX11を追加することに注意してください。
もし結果に自信がなければ、Dependency Walkerでプログラムがcygwin1.dllのsetlocaleに接続しているかどうかを確認し、もしそうなら、それが欠けていることを確認することができます。
中国語フォント
PCFドットマトリクスフォント
GTK1.xやその他一部の古いXプログラムはXフォントを使用しています。
例えば、zh_CN.gbk を使用する場合は GBK でエンコードされたフォント、zh_CN.GB2312 を使用する場合は GB2312 でエンコードされたフォントを用意する必要があることに注意しましょう。
zh_CN.GB2312を使用する場合、RedOfficeに付属するドットフォントパッケージはこちらです。
TTFからttf2bdfで展開してbdf形式にし、bdf2pcfでpcf形式のフォントファイルを取得することが可能です。
(ここにTTF2BDFのWindowsバージョンです、あなたはBDFフォントのうち、WindowsのTTFフォントを変換することができます、手動でファイルヘッダを編集するBDFを取得した後、エンコーディング文は、正しい変更することに注意してください)
取得
フォントを入手したら、それをディレクトリに置き、mkfontdir を実行して fonts.dir を生成し、xset +fp を使用します。
TTFフォント
多くの新しいアプリケーション(GTK2など)は、フォントの表示にfontconfig/libxft2を使用しており、TTFフォントのサポートが充実しています(Xではfreetype、xftモジュールによりTTFフォントをサポートしていましたが、CJKフォントのサポートはあまり良くありませんし、これらのモジュールはCygwinでは利用できないようです)。
Linuxでarphicフォントのパッケージを使用することは完全に可能です。 Linuxがインストールされていない場合は、http://packages.debian.org下载相应的包、7zipでttfファイルを展開することができます。
フォントファイルを入手したら、どこかのディレクトリの下に置き、/etc/fonts/local.confを編集して、フォントのパスを:
/path/to/my/ttf/fonts 自分で使うだけなら、何も設定を変えずにフォントファイルを ~/.fonts 以下に置いておけば、長くても 30 秒で fontconfig がフォントを見つけ出します。
中国語入力方式
Old Huang (hzhr) は miniChinput を Cygwin に移植しました。私は fcitx-1.8.5 と 3.0 も移植しました。両方とも私のウェブサイト http://www.oliwen.com/bama で見ることができます...。
一般に、LC_CTYPEとXMODIFIERSを設定すれば、(XIMに対応していないプログラムを除き)プログラム上で入力メソッドを有効にすることができます。
LC_CTYPE=zh_CN.gbk
XMODIFIERS="@im=Chinput"。
エクスポート LC_CTYPE XMODIFIERS
fcitxの場合、XMODIFIERSは何でも設定できる(ただし、必ず設定する)ので、"@im=Chinput"と設定すれば、chinputもfcitxも普通に使えるようになります。
VIのBackspaceボタンとDeleteボタンの異常
まず、$TERMの設定がcygwinであることを確認します。
echo $TERM
そうでない場合は、次のように設定してください。
TERM = cygwin 
エクスポートTERM
BackspaceとDeleteの2つのキーは、通常の状態で動作する唯一のキーです。どちらを使うかは、$HOME/.bash_profileにある
stty イレーズ '^H' //ctrl+v, ctrl+h 
stty erase '^? 
---------- ---------- ----
Cygwin ユーザーズガイド
1 はじめに
cygwinは、cygnus solutions(eCosで有名な会社ですが、現在はRedhatに買収されています)が開発したフリーソフトウェアで、Windowsプラットフォーム上で動作するunixエミュレーション環境です。UNIX/Linuxオペレーティング環境の学習や、UNIXからWindowsへのアプリケーションの移植、特殊な開発作業、特にgnuツールセットを使ったWindows上での組み込みシステム開発には非常に有効です。中国での組み込みシステム開発の人気が高まるにつれ、より多くの開発者がcygwinに興味を持つようになりました。この記事では、その紹介をします。
2つのメカニズム
シグナスはまず、gcc、gdb、gasなどの開発ツールを、win32のターゲットファイルを生成・解釈できるように改良しました。そして、これらのツールをウィンドウズ・プラットフォームに移植する必要がありました。一つの選択肢は、これらのツールのソースコードをwin32のapiに基づいて大幅に変更することでしたが、これは明らかに多くの作業を必要とします。つまり、win32のAPIにはないunixスタイルのコール(fork, spawn, signals, select, socketなど)をカプセル化する共有ライブラリ(cygwin dll)を書いたのです。つまり、win32のapiをベースにunix系ライブラリのエミュレーション層を書き込んでいるのです。したがって、これらのツールのソースコードをこの共有ライブラリにリンクすれば、unixホスト上のクロスコンパイラを利用して、windowsプラットフォーム上で動作するツールセットを生成することができるのである。Windowsに移植された開発ツールをもとに、cygnusは徐々に他のツール(ソースコードにほとんど手を加えず、設定スクリプトだけで済むもの)をWindowsに移植していきました。このようにして、bashや開発ツール、ユーザーツールをwindowsプラットフォームで動かすと、unixで作業しているような感覚になります。
cygwinの実装の詳細については、http://cygwin.com/cygwin-ug-net/highlights.html を参照してください。
3 cygwinのインストールとセットアップ
3.1 インストール
ネットワーク版のcygwinをインストールするには、http://cygwin.com、"Install Cygwin Now!"をクリックしてください。これにより、まずsetup.exeというGUIインストーラーがダウンロードされ、cygwinの完全なコピーがダウンロードされます。各画面の指示に従って、簡単にインストールすることができます。
3.2 環境変数
cygwinは、最も重要な環境変数がすでに設定されている.batファイルを提供します。それを使ってbashを起動するのが最も安全な方法です。この.batファイルはcygwinがあるルートディレクトリにインストールされています。 このファイルは自由に編集してください。
CYGWIN変数は、cygwinランタイムシステムの様々なグローバル設定を行うために使用されます。CYGWINを設定せずに起動したり、bashを実行する前にdosボックスでttyに設定したり、以下のような形式で設定することができます。 
C:\> set CYGWIN=tty notitle glob 
PATH変数は、cygwinアプリケーションによって、不可知論的なファイルを検索するためのパスのリストとして使用されます。cygwinプロセスが開始されると、この変数はWindowsフォーマット(例: C:\WinNT;C:\WinNT) からUnixフォーマット(例: /WinNT/system32:/WinNT)に変換されます。bashを実行せずにcygwinツールセットを使用したい場合は、PATHに少なくともx:↵cygwin↵binを含める必要があります。ここでx:↵cygwinはあなたのシステム上のcygwinディレクトリです。
HOME変数はホームディレクトリを指定するためのもので、bashを実行する前にこの変数を定義しておくことをお勧めします。cygwinプロセス起動時にこの変数もwindows形式からunix形式に変換され、例えば筆者のマシンでのHOMEの値はC: \(dos コマンド set HOME, set HOME=XXX で設定できます)、bashで echo $HOME とすると、値は /cygdrive/c となります .
TERM変数は、端末の種類を指定します。設定すると、自動的にcygwinに設定されます。
LD_LIBRARY_PATH は cygwin の関数 dlopen() で .dll ファイルを検索するパスのリストとして使われ、この変数も windows 形式から unix 形式に変換されます。ほとんどのCygwinアプリケーションはdlopenを使用しないので、この変数は必要ありません。 
3.3 cygwinの最大記憶容量を変更する
デフォルトでは、Cygwinプログラムは384MB(プログラム+データ)以上のメモリを割り当てることができません。ほとんどの場合、この制限を変更する必要はありません。しかし、より多くの実メモリまたは仮想メモリが必要な場合は、レジストリのHKEY_LOCAL_MACHINEまたはHKEY_CURRENT_USERセクションを変更する必要があります。DWORDキーheap_chunk_in_mbを作成し、その値を希望するメモリ制限値(10進数MB)に設定します。この設定は、cygwinのregtoolを使用して行うこともできます。例を挙げると、以下のようになります。
regtool -i set /HKLM/Software/Cygnus Solutions/Cygwin/heap_chunk_in_mb 1024
regtool -v list /HKLM/Software/Cygnus Solutions/Cygwin
4 cygwinを使用する
この段落では、cygwinと従来のunixシステムとの違いについて説明します。
4.1 パス名のマッピング
4.1.1 はじめに
cygwinはwin32とposixスタイルの両方のパスをサポートし、パスセパレータはフォワードスラッシュまたはバックスラッシュのいずれかになります。UNCパス名にも対応しています。(ネットワークにおいて、UNCはファイルの場所を決定する方法であり、ユーザーはストレージデバイスの物理的な場所を気にすることなくファイルを使用することができ、ユーザーにとって便利である。この仕様は、Windows OSやNovell NetwareなどのOSで、ローカルネーミングシステムに代わるものとして採用されている。UNCでは、ファイルがどのディスク(またはボリューム)にあるか、サーバーがどこにあるかを気にする必要はない。単に次のような形式でファイルにアクセスすればよいのである。
\server name ╱share name ╱file name ╱path
(共有名は、ファイルが存在するボリュームまたはストレージデバイスの論理識別子と呼ばれることもありますが、ユーザーがそれらのボリュームまたはストレージデバイスが物理的にどこにあるかを気にする必要がないように使用されています)。
Posix準拠のオペレーティングシステム(linuxなど)には、ディスクレターという概念はありません。すべての絶対パスはディスクレターではなく、スラッシュで始まります(例:c:)。すべてのファイルシステムはそのサブディレクトリです。例えば、2つのハードディスクがあり、そのうちの1つがルートで、もう1つは/disk2というパスの下にある場合があります。
UNIXシステム上の多くのプログラムは、単一のposixファイルシステム構造の存在を仮定しているので、cygwinは、これらのプログラムがWindows上で正しく実行できるように、win32ファイルシステム専用の内部posixビューを維持します。必要な場合、cygwinはwin32とposixのパス間の変換を実行するためにこのマッピングを使用します。
4.1.2 cygwin マウントテーブル
cygwinのマウントプログラムは、win32ディスクドライブとネットワーク共有パスをcygwinの内部posixディレクトリツリーにマップするために使用されます。これは、典型的なunixのマウントプログラムと同様の概念です。unixに馴染みがなく、windowsの背景を持つ人にとって、マウントプログラムは初期のdosコマンドjoinに非常に似ており、ドライブレターを取って、他のパスのサブディレクトリにするものです。
パスマッピング情報は、現在のユーザーのcygwinマウントテーブルに格納され、それは順番にWindowsレジストリにあります。マウントテーブルには2種類あり、ユーザーごとの固有のテーブルと、システム全体のマウントテーブルがあり、各cygwinユーザーのマウントテーブルはシステムテーブルから継承されます。システムテーブルは、適切な権限を持つユーザー(Windows ntの管理者)によってのみ変更することができます。
現在のユーザーのマウントテーブルは、レジストリの "HKEY_CURRENT_USER/Software/Red Hat, Inc./Cygwin/mounts v" で確認することができます。システムテーブル 
は、HKEY_LOCAL_MACHINEの下に存在します。
posixルートパス/は、デフォルトではシステムパーティションを指しますが、mountコマンドを使用してWindowsファイルシステム内の任意のパスにリダイレクトすることができます。cygwinは常にwin32パスからposixパスを生成するときにマウントテーブルで最も長い接頭辞を使用します。例えば、c:が/cと/の両方にインストールされている場合、cygwinはC:/foo/barを/c/foo/barに変換します。
mountコマンドが引数なしで呼ばれた場合、Cygwinの現在のインストールポイント一式がリストアップされます。以下の例では、ディスクcはPOSIXルートであり、ディスクdは/dにマップされています。この場合、ルートは全ユーザーに見えるシステム全体のインストールポイントで、/dは現在のユーザーにしか見えません。
c:\&g; マウント
f:\cygwinbin on /usr/bin type system (binmode)
f:\cygwin on /usr/lib type system (binmode)
f:\cygwin on / type system (binmode)
e:\src on /usr/src type system (binmode)
c: /cygdrive/c タイプのユーザー (binmode,noumount)上にある。
e: /cygdrive/e タイプのユーザー (ビンモード,noumount)上
また、mountコマンドで新しいマウントポイントを追加し、umountで削除することができます。
Cygwinが既存のインストールポイントを元にwin32パスをposixパスに変換できない場合、Cygwinは自動的にデフォルトのposixパス/cygdriveのインストールポイントに変換してくれます。 例えば、CygwinがZ: \にアクセスし、Zドライブが現在インストールテーブルにない場合、Z:さまは/cygdrive/Zに自動で変換されます。
各インストールポイントには、特別な属性を付与することができます。自動的にインストールされるパーティションは "auto"インストールと表示されます。また、マウントポイントは、"textmode" か "binmode" かを選択できます。これは、テキストファイルとバイナリファイルが同じように扱われるかどうかを決定するための属性です。
4.1.3 その他のパス関連情報
cygpathツールは、シェルスクリプトでwin32-posixパスフォーマット変換を実行する機能を提供します。