コマンドラインの使い方などの基本に加えて、基本はシステムの構造を理解することだと思います。
WindowsからUnixに移行するときの最大の違いは、システムがどのように組み合わされているかを理解することです。Windowsは、そのAPIとCOMのような基礎となるOSコンポーネントの手段によって互いに適合します。これは多くの場合プログラマーから抽象化されていますが、長い間コーディングすると、COMスレッドモデルやGDIなどについて知ることができます。Unixはまったく異なる方法で適合します。Unixは、小さなコンポーネントを構築し、それらからIPCを使用して(多くの場合単純なパイプを介して)より大きなシステムを構築するという考えに基づいています。
あなたは簡潔なリソースを求め、そして少なくとも私にとって、Unixがプログラミング環境としてどのように機能するかを理解するための唯一の出発点は、Kernighan and Pikeの著書Unix Programming Environmentです。本自体は少し時代遅れに感じられますが、Unixの哲学とは何か、コーディングの際に「Unixの方法」をどのように活用できるかを示す完璧な例です。
少なくともそのページをざっと見れば、Unixを使用してより優れたプログラムを作成する方法を理解できるでしょう。あなたが自分をWindowsの男だと識別したとしても、そこから得られる知識は、デザインパターンやソフトウェアエンジニアリングの慣習と同様に、多かれ少なかれ普遍的です。
詳細を知りたい場合-おそらくあなたの仕事のためか、多分それが好きだったから-Unixプログラミング環境を読んだ後、スティーブンスのUNIX(R)環境での高度なプログラミングを試してみてください。それはカーニハンとパイクの本をよく補足し、両方の後、あなたは私がUnixプログラマーが知っていると期待するほとんどのことをカバーするでしょう。ネットワークプログラミングに関するStevensの本もあり、これもお勧めです。
Linuxのほかに、試してみる価値のある2つのOSがあります。1つはPlan9で、これはある意味でUnixよりも優れたUnixであり、もう1つはOpenBSDです。OpenBSDは小規模なチームによって構築されているため、非常に一貫性があり、十分に文書化されているので、それをざっと見ていて楽しいです。