Космос в доски / псевдоним для окон?

Я пытаюсь запустить команду Artisan от Laravel внутри контейнера (docker), задав псевдоним doskey.

Моя идея была:

php artisan=docker-compose exec apache php artisan $1

Однако это не позволяет мне использовать пробел в ключе. Есть идеи как этого добиться?

Я сделал небольшой графический инструмент для Windows, чтобы запускать команды https://github.com/thomasmoors/DockerArtisan

2 ответа

Решение

Я должен в этом случае дать отрицательный ответ - использование пробелов в имени доски невозможно. Doskey был создан для командной строки (cmd), поэтому он довольно прост по своей концепции.

Это невозможно по моему мнению, так как:

  • В команде doskey, такой как doskey a b=ab, это принимает "а" для недопустимой опции
  • Команда doskey не принимает кавычки вокруг имени макроса.

Вот несколько тестов, которые я провел:

Как видите, некоторые специальные символы принимаются, но только без пробелов.

Даже без пробелов в имени макроса doskey является старой программой для DOS и может работать в PowerShell только с трудом. Это противоречит PSReadLine модуль, который опирается на встроенные функции ввода с консоли. Я проверил это:

Как видите, вам нужно выполнить два дополнительных действия:

  • Выполните команду Remove-Module PSReadLine
  • Добавьте в команду doskey параметр /exename=powershell.exe

Когда оба они выполнены, команда выполняется правильно и выдает правильную ошибку.

Мой лучший совет - не использовать doskey в PowerShell. Doskey старый, а PowerShell новый, и их можно использовать только вместе с трудом. Я действительно не думаю, что доски настолько полезен, чтобы быть незаменимым.

Попробуйте найти другое решение для ваших часто используемых команд. Например, храните команды в исполняемых файлах, таких как .ps1 или же .cmd или же .bat внутри папки, которую вы добавили бы в PATH.

Альтернативным решением для этого является создание .batфайл и запустите его с параметрами. Я использую это решение для запуска magento2команды.
Пример:

@ECHO OFF
IF "%1"=="clean" (
    php bin/magento c:c & goto :exit

)  
:exit 

имя файла: magento.bat и когда я печатаю magento clean это работает php bin/magento c:c.

Нет способа достичь этого. В макронаме Doskey не должно быть пробела.

Вот лишь один пример того, что затрудняет использование пробелов в именах команд:

скажем, я определяю два макроса:

doskey a b=echo 'ran cmd [a b] with input ' $*
doskey a b c=echo 'ran cmd [a b c] with input ' $*

Если вы наберете команду C:\src>a b c efg как переводчик мог узнать, имели ли вы в виду run cmd [a b] with input [c efg] или же run cmd [a b c] with input [efg]. Это применимо к любому исполняемому файлу, а не только к командам doskey, и если вы попытаетесь обойти его, вы потенциально ограничите ввод, который может принимать команда, на основе других команд, начинающихся с того же имени.

Другие вопросы по тегам