続きを読む>node hoge.js
(中略)
Error: Invalid package config ¥¥?¥C:¥path¥to¥package.json
(中略)
code: 'ERR_INVALID_PACKAGE_CONFIG'
Windows11でbatファイルをスタートにピン留めする
課題:
通常のアプリケーション(exeファイル)は右クリックメニューに「スタートにピン留めする」があるので、これでピン留めできるのだが、batファイルの右クリックメニューには「スタートにピン留めする」が無いため、ピン留めすることができない。
Windows10の壁紙(背景)をスライドショーにし、対象のフォルダに右クリックメニューから画像を追加する
結論:シンボリックリンクを作成するPowerShellスクリプトを右クリックメニューに追加する。
続きを読むWindows10 .ps1ファイルをダブルクリックした時にメモ帳ではないエディタで開きたい
※Windows11は、この記事の方法では出来ません。普通に関連付けを変更すればOKです。但し、アイコンも変わってしまいます。
(右クリックして「PowerShell で実行」は残したい。)
私はTeraPadの使い手なので、PowerShellスクリプト(*.ps1)がTeraPadで開くようにします。同じ方法で他のプログラムで開くことも可能なはずです。
検索ボックスまたは win+r のファイル名を指定して実行に「regedit」と入力してレジストリエディターを開きます。
レジストリを編集するので、PCの動作がおかしくなるかもしれません。念の為にバックアップを取っておきましょう。(ファイル > エクスポート > 適当なファイル名で保存)
コンピューター¥HKEY_CLASSES_ROOT¥Microsoft.PowerShellScript.1¥Shell¥Open¥Command
(規定) を右クリックして「修正」を押します。
値のデータを
"C:\Windows\System32\notepad.exe" "%1"
から
"C:¥Program Files (x86)¥TeraPad¥TeraPad.exe" "%1"
に変更します。
ファイルパスは適宜かえてください。
"%1"が無いと新規ファイルを開いてしまうので、忘れずに付けてください。
これでOKを押すと、変更が即時反映されます。
*.ps1をダブルクリック(開く)して、指定したエディタでファイルが開けば成功です。
Windows PowerShellを使うならCopilotが便利
心なしかMicrosoft製だからPowerShellについてちゃんと答えてくれる気がします。
もちろん、他の言語の話もちゃんとしているとは思いますが。
ちょっと変わったことをお願いすると変になるのは、生成AIらしさかなと感じます。みんながやっている常識的なことには強いんですけど。
PowerShellでwingetすると「ソースを更新できませんでした」と表示される
結論:PowerShellを管理者権限で実行すればOKでした。
続きを読むPowerToysでNumLockにBackSpace機能をキーマップした状態でリモートデスクトップでNumLockキーを押すと何故か16文字消えてしまう
表題の問題にしばらく悩まされまして、結論から書きますと、リモートデスクトップ接続する際に
オプションの表示 > ローカルリソース > キーボード
のプルダウンメニューから「このコンピューター」を選択することで解消しました。
(「全画面表示の使用時のみ」だと、リモートPCが全画面表示でもウィンドウ状態でも問題が起きていました。)
Windows10でTelnetサーバを立てる(WSLを使う)
結論から書くと、Windows10自体でTelnetサーバは立てられないのでWSLでTelnetを使います。
Windows11でも有効な手順だと思います。
WSLをインストールする
WSL (Windows Subsystem for Linux) をインストールします。
(WSLはWindowsで動くLinuxです。)
Microsoft Storeで入手可能です。
あるいは、PowerShellで wsl --install します。
ディストリビューションはどれでも大丈夫だと思います(一部手順は異なってきます)が、私はUbuntuを入れました。
再起動を求められたら再起動します。
WSLを起動する
初回はユーザ名とパスワードを設定します。
WSLでtelnetをインストールする
先にaptをアップデートしてから、telnetをインストールします。
sudoで実行するコマンドではパスワードが聞かれるので、パスワードを入力してください。
sudo apt update sudo apt install telnetd sudo apt install inetutils-inetd
WSLでtelnetを起動する
sudo /etc/init.d/inetutils-inetd start
このとき、ファイアウォールが接続を許可するか聞いてきたら許可してください。
# 私は何故か初回で聞いてこず、再起動して再実行したら聞かれました。
# Windows10のファイアウォールの設定の仕組みをよく知らない、詳しい方がいらしたら教えて下さい。
WSL1の場合はこれでtelnetサーバのセットアップ完了です。
WindowsのIPアドレスにtelnetでアクセスしてください。
telnetを終了するには下記のコマンドを用います。
sudo /etc/init.d/inetutils-inetd stop
(WSL2の場合)PowerShellでポートフォワーディングする
WSLには、WSL1とWSL2があり、ネットワークの仕組みが異なります。
WSL1のtelnetサーバにはWindowsと同じIPアドレス(の23番ポート)でアクセスすることができます。
WSL2にはホストのWindowsと異なるプライベートアドレスが割り振られるので、他のマシンから直接アクセスすることができません。(2022年2月時点のWindows10の場合。現在この仕様は変更が検討されているようです。)
このため、WSL2の場合はポートフォワーディング(ポート転送)が必要になります。
WSLのバージョンを確認するには、PowerShellで wsl --list --verbose と入力します。
wsl --list --verbose NAME STATE VERSION * Ubuntu Running 2
VERSIONが2であれば、管理者権限のPowerShellで下記ポートフォワーディングの設定も行います。
netsh interface portproxy add v4tov4 listenport=23 connectaddress=localhost
WSL2の初期バージョンでは、localhostだと上手くいかないかもしれません。
その場合、WSL2のバージョンを上げるか、
WSL2のIPアドレスをifconfigなどで確認し、そのアドレスをconnectaddressに指定してください。
※WSL2のIPアドレスは起動のたびに変化します。
ポートフォワーディングの状況を確認するには下記コマンドを用います。
netsh interface portproxy show all
WSL2の場合はこれでtelnetサーバのセットアップ完了です。
WindowsのIPアドレスにtelnetでアクセスしてください。
ポートフォワーディングを終了するには下記コマンドを用います。
netsh interface portproxy delete v4tov4 listenport=23
tcshでの文字列比較(パターンマッチング)
#!/bin/tcsh -x # 単純比較(完全一致・不一致) == != if (str == str) then echo "True" # ←これ else echo "False" endif if (str != str) then echo "True" else echo "False" # ←これ endif
#!/bin/tcsh -x # パターンマッチング =~ !~ # ワイルドカードを使用できる if (str =~ s*) then echo "True" # ←これ else echo "False" endif if (str =~ s?r) then echo "True" # ←これ else echo "False" endif if (str =~ {str,ing}) then echo "True" # ←これ else echo "False" endif if (str =~ st[abp-t]) then echo "True" # ←これ else echo "False" endif
ワイルドカードは正規表現とは異なります。
* 任意の0文字以上の文字
? 任意の1文字
[ ] いずれかの1文字。ハイフンで範囲指定
{ , } コンマで区切られた文字列のいずれか
上記を組み合わせて使用することもできる。
パターンマッチで使用できるワイルドカードは下記記事を参考にさせていただきました。
・Linux【ワイルドカードと正規表現】の違いと変換,展開の動作 ~ ls, grep, findでの具体例の解説~
https://milestone-of-se.nesuke.com/sv-basic/linux-basic/wildcard-regular-expression/
シェルの種類によってif文や条件式の書き方が異なります。
tcshでシェルスクリプトを書こうと思ってググってもシェルの種類が混同されて出てくるので困ることがあり、自分用のメモとして書きました。
2022/02/12(土)追記
引用ではなく、スーパーpre記法でシンタックスハイライトができました。ありがとう、はてなブログ。
ソースコードを色付けして表示する(シンタックスハイライト) - はてなブログ ヘルプ