それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

WSLでWindowsのパスとLinuxのパスを変換

WSLのパスを変換したい。

WindowsUbuntuのパスを相互に変換できたら、シェルスクリプトとか作るのに便利ですよね。

調べたら、できるので歓喜した

wsl wslpath PATH

WindowsLinux

WindowsのパスをWSL のLinuxのパスに変換する

C:\Users\takuya>wsl wslpath  C:/Users/takuya/Desktop/
/mnt/c/Users/takuya/Desktop/

Linuxwindows

Linux のパスをWindowsに変換する。

C:\Users\takuya>wsl wslpath -w /mnt/c/Users/takuya/Desktop/
C:\Users\takuya\Desktop

コマンドプロンプト(PS)以外

上記の例は、コマンドプロンプト( cmd.exe ) と PowerShell( PS ) で動作させているのですが。

WSLのBashの中からどうやってやるのかとなると、少しめんどくさい。

/mnt/c/windows/system32/wsl.exe wslpath -w /mnt/c

このようにして、直接指定しないとWSLのBashにはWindowsへの$PATHが通ってないので、手軽には使えない。

PATHを設定して通せばいいかというと、WSLからWindowsへのPATHをつけると色々不便なのでAliasくらいがいいのではないでしょうか。

phpで'rm -rf'で再帰的に空じゃないフォルダを消す。

php で rm -rf をする方法を探してた

PHPの組み込み機能をすごく上手につかった方法を発見したのでメモ。

<?php
function rm_rf($dir){
  $entries = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS),
    RecursiveIteratorIterator::CHILD_FIRST
  );
  
  foreach ($entries as $entry) {
    $func = ($entry->isDir() ? 'rmdir' : 'unlink');
    $func($entry->getRealPath());
  }
  rmdir($dir);
}

これを使うと、再帰的な削除でドットファイル再帰的な関数呼び出しも発生しない。頭いいなぁ。と思う。

RecursiveDirectoryIteratorで、ドット除去したファイル一覧を取得して、 RecursiveIteratorIterator::CHILD_FIRSTで、引数に指定されたディレクトリを最後に回す。

そうすると、foreach だけですべて削除が完成する。よく考えてある。というか RecursiveIteratorIteratorはそのためにあったんだと感心する。

以前の資料

php rmdir() で空じゃないフォルダを消すには? - それマグで!

gitlab をインストールしたらクローラー拒否を忘れずに

gitlab をインストールしたら、クローラー設定を拒否しとこう

GitLabをオンプレミスでインストールするときは、たいてい他社・他人に見られたくないレポジトリだったりするので、存在を検索に出したくないので 念の為にクローラーを切っていおくのがいいと思う。

対象ファイル。

/opt/gitlab/embedded/service/gitlab-rails/public/robots.txt
takuya@:nginx$ sudo cat /opt/gitlab/embedded/service/gitlab-rails/public/robots.txt
# See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
#
# To ban all spiders from the entire site uncomment the next two lines:
User-Agent: *
Disallow: /