ラベル Windows の投稿を表示しています。 すべての投稿を表示
ラベル Windows の投稿を表示しています。 すべての投稿を表示

2017年8月2日水曜日

Linux、Mac(bash)やdos(WindowsPowerShell)のコマンド

基本的な「bash」や「dos」のコマンドを、
少しの間使わないだけで、ちょいちょい打ち間違える。
ちょっとメモっておく。


リスト表示


bash
ls -lha
オプション
「-l」 リスト表示。パーミッション等の詳細情報も表示
「-h」 データサイズの単位を読みやすく変更
「-a」 .ファイル(隠しファイルを表示)

dos
dir


現在の階層確認


bash
pwd

dos
dir


文字列ファイルの作成


bash、PowerShell
echo "aaa" > ./test.txt
echo "bbb" >> ./test.txt

dos
copy con .¥test.txt
「dos」のみ可「PowerShell」だと「con」が使えないので注意。
「CTRL+Z」か「CTRL+C」で文字入力終了。
「dos」だと階層に「/」が使えないので「¥」を使う事。


文字列ファイルの表示


bash
less ./test.txt
cat ./test.txt | less
「less」はスクロール可(一応「more」も使える)
「スペース」か「f」で1画面進む。
「b」で1画面戻る。
「q」でスクロール表示終了。
(「cat」は複数の文字列ファイルを連結する事も出来る)

dos
type .¥test.txt | more


リネーム(ファイルやフォルダ)


bash
ファイルリネーム
mv ./test.txt ./test2.txt
フォルダリネーム
mv ./test/ ./test2/

dos
rename .¥test.txt test2.txt
ren .¥test.txt test2.txt
リネーム先にパスの指定は出来ないので注意。
(フォルダのリネームはフォルダ名で指定)


ファイルの削除


bash
rm ./test.txt

dos
del .¥test.txt


フォルダ作成、削除


bash
フォルダ作成
mkdir ./test
フォルダ削除
rm -rf ./test
オプション
「-r」 フォルダ内を再帰的に削除
「-f」警告を表示しない

dos
フォルダ作成
mkdir .¥test
フォルダ削除
rmdir /s .¥test
オプション
「/s」フォルダ内を再帰的に削除


ファイル、フォルダ移動


bash
ファイル移動
mkdir ./aaa
mv ./test.txt ./aaa/
フォルダ移動
mkdir ./aaa
mv ./test/ ./aaa/

dos
ファイル移動
mkdir .¥aaa
move .¥test.txt .¥aaa¥
フォルダ移動
mkdir .¥aaa
move .¥test .¥aaa¥


ファイル、フォルダのコピー


bash
ファイルコピー
cp ./test.txt ./test2.txt
フォルダコピー
mkdir ./aaa
cp -r ./test/ ./aaa/
オプション
「-r」 フォルダ内を再帰的にコピー

dos
ファイルコピー
copy .¥test.txt .¥test2.txt
フォルダコピー
mkdir .¥aaa
xcopy /e /c /h .¥test .¥aaa¥
オプション
「/e」フォルダ内が空でもフォルダをコピー
「/c」コピー時のエラーを無視
「/h」隠しファイルやシステムファイルも全てコピー


画面のクリア


bash
clear

dos
cls
「PowerShell」は「clear」も使える。


権限(パーミッション)変更


bash
フルアクセス
chmode 777 ./test.txt
「r読み→4」「w書き→2」「x実行→1」の合計値をそれぞれに指定。
参考→http://qiita.com/shisama/items/5f4c4fa768642aad9e06


パーミッション説明
「ls -lha」で表示されるパーミッション
「drwxrwxrwx」
一番左の文字が
「d」フォルダ
「I」シンボリックリンク
次の左から3文字ずつ
「所有者」「所有グループ」「その他」それぞれの権限を表します。
それぞれの権限は「r」読み「w」書き「x」実行となります。


リンク作成、削除


bash
シンボリックリンク作成
ln -s ./test.txt ./test2.txt
フォルダのシンボリックリンク作成時は、
作成元と作成先のパスの最後に「/」を入れない事!

シンボリックリンク削除
unlink ./test2.txt
シンボリックリンクは「rm」でも削除できるが、絶対に使わない事!
(フォルダのシンボリックリンクを削除する時、
パスの最後に「/」を入れると実体の方を削除してしまう為!)

Macの「エイリアス」は「シンボリックリンク」とは違う物なので注意する事。

ハードリンク作成、削除
作成はシンボリックリンク作成時の「-s」オプション外せばOK
削除はシンボリックリンクと同じ(rmは使わない事!)


PowerShellスクリプトの実行(拡張子.ps1の実行)


WindowsPowerShell
Set-ExecutionPolicy RemoteSigned
.\test.ps1
Set-ExecutionPolicy Restricted
セキュリティーポリシーをを変更して戻している。
問い合わせには「はい」で答える。


dos
powershell -NoProfile -ExecutionPolicy Unrestricted .\test.ps1
オプション
「-NoProfile」ユーザープロファイルを使用しない。
「-ExecutionPolicy Unrestricted」ローカルもリモートも実行
セキュリティーポリシーを一時的に変更している。
参考→http://qiita.com/tomoko523/items/df8e384d32a377381ef9







以下のサイトを参考にしました。

Linuxコマンド:Windowsコマンド対応表
http://qiita.com/asmin/items/d53e71ed98a377ca7823





2017年4月28日金曜日

C# VisualStudio for Mac でGtk#を使ってみた。gtk-sharp

「VisualStudio for Mac」を入れてはみたが、
MacのGUI作るのに「Gtk#」使っている人を見ないのでちょっと触ってみました。
(「Xamarin.Form」はMac非対応です。
 「Xamarin.Mac」から「cocoa」のUIを使った方がMacライクなUIになります。)
「Gtk#」は「Gtk+」のC#版です。
ついでに「Gtk#」を使って、
Windowsとのクロスプラットフォーム開発がどの程度できるかテストしてみます。


Macで「Gtk#」を使ってみる


とりあえず新しいプロジェクトを作成。
「Gtk#」を選びます。

私は「testGtk」の名前で新規プロジェクトを作成しました。

「ユーザーインターフェィス」の「MainWindow」を選択すると、

無事に「デザイナ」が立ち上がりました。
コントロールを配置します。
「ツールボックス」から「Fixed」を配置。
続いて「Button」と「Label」を配置します。
「button1」のプロパティを変更します。
「Button Properties」の「Label」を
「GtkButton」から「開始」に変更して下さい。

「デザイナ」の下にチラ見している「ソース」を選択すると、
ソースコードが表示されます。

「MainWindow」クラス内の一番下に以下のコードを追加します。
  //ボタンクリックイベント
  protected void ButtonClicked_Event(object sender, EventArgs e)
  {
    var task = System.Threading.Tasks.Task.Run(new System.Action(()=>{
      for (int i = 0; i < 6; i++)
      {
        label1.Text = zenRep(i.ToString()) + "秒";
        System.Threading.Thread.Sleep(1000);
      }
    }));
  }

  // 半角文字列を全角文字列へ変換
  private string zenRep(string s)
  {
    var resultStr = s;
    resultStr = System.Text.RegularExpressions.Regex.Replace(resultStr, "[0-9]", (p) => ((char)(p.Value[0] - '0' + '0')).ToString());
    resultStr = System.Text.RegularExpressions.Regex.Replace(resultStr, "[A-Z]", (p) => ((char)(p.Value[0] - 'A' + 'A')).ToString());
    return resultStr;
  }

コードを追加したら、表示を「デザイナ」に戻して
「ボタン」の「シグナル」の「clicekd」イベントの「ハンドラー」へ
クリックイベントのメソッド名を入れます。
「ButtonClicked_Event」と入力して下さい。



これで完成です。
「コマンド+エンター」等で「実行」してみましょう。
以下のようなFormが表示されます。



開始ボタンを押してみると…

無事「0秒」〜「5秒」までカウントされます。



クラスプラットフォーム化


クロスプラットフォームで動くかテストする為に、
完成した「VisualStudio for Mac」の「ソリューション」をフォルダごと
「Windows」側へコピーするか、共有して下さい。

次に、
「Gtk#for.NET」を「Windows」にインストールします。
「Windows」で以下のサイトへ行きます。
http://www.mono-project.com/download/#download-win
以下のファイルをダウンロード。


インストールを進めて下さい。

問題なくインストールが終了したら、
「Windows」の「VisualStudio」で「ソリューション」を開き、
実行してみて下さい。


「Windows」側でも無事動きました。
「0秒」〜「5秒」までカウントされます。
非同期処理も問題無く動いています。


感想


簡単な物であればすぐ実用に使えそうな気がします。
UIの見え方は「Gtk#」独特の物となりますが、
「Mac」と「Windows」のUIを共通で気軽に作れるのは凄く魅力的です。
ただ今の所、
プラットフォーム毎のショートカットの制御がわかりません。
誰か教えて下さい…

「Gtk#」のチュートリアルはここ。
http://www.mono-project.com/docs/gui/gtksharp/tutorials/

「Windows」側でのGUIデザイナ用エディタについて…
「Stetic」→「Monodevelop」「Xamarin Studio」に含まれている。「Gtk2」のみ対応
「Glade」→「Gtk2」「Gtk3」両方に対応
「VisualStudio」に組み込まれたGUIデザイナは今の処存在しない。
直接コードで書く事も選択肢に入るかも…。
http://grbd.github.io/posts/2016/01/29/gtksharp-part-2-setting-up-glade/

補足
「Gtk#」でダイアログを表示させる。
        //「Gtk#」のダイアログ
        //「using」は使えないので注意
        var md = new MessageDialog(
            this, DialogFlags.Modal, MessageType.Info,
            ButtonsType.Ok, "てすと\r\nテスト");
        md.Run();
        md.Destroy(); //←「Dispose()」は使えないので注意
ちょっと面倒な印象。
参考→http://7shi.hateblo.jp/entry/2012/04/24/233941



個人的メモ…

MacOS10.11.6上でlabelの半角欧文が文字化けした際、
解決はしなかったが勉強になったサイト。
「Gtk#」の日本語が文字化けに関する対処が書かれている。
http://kki-zakki.blogspot.jp/2008/12/monodevelop-20-alphamac-os-x.html

https://discussionsjapan.apple.com/thread/10052914?start=0

「gtkrc」ファイルをいじる
→「Visual Studio.app/Contents/Resources/lib/monodevelop/bin」
http://reiji1020.hatenablog.com/entry/2012/07/12/203443

フォント「サンフランシスコ」入れてもダメだった
https://www.ipentec.com/document/document.aspx?page=software-font-download-apple-san-francisco
https://developer.apple.com/fonts/

欧文系は全部試してダメだったので、たぶん日本語フォントっぽい。

「SuitcaseFusion」の問題だったみたい。
「Helvetica」をシステムから引っ張り出して、
「SuitcaseFusion」へ登録し直したら解決した。


winとmacのクロスプラットフォームなGUIならば
「electron.net」を検討してみるのも良いかも


teratail:Macで開発できるまでの手間が少なくて、
MacとWindowsで動作するGUIの
Twitterクライアントを作るにはどの言語が良いでしょうか。
https://teratail.com/questions/65420

↑Topへ