batch-file
Различия между Batch (Windows) и Terminal (Linux)
Поиск…
Вступление
Пакет и bash совершенно разные. Пакетные флаги обозначаются символом
/
, а флаги bash -
. Капитализация имеет значение в bash, но (почти) вовсе не в партии. Имена переменных пакета могут содержать пробелы, имена переменных bash не могут. В конечном счете, оба способа управления и взаимодействия с командной строкой. Неудивительно, что существует достаточное количество перекрытий между возможностями двух систем.
замечания
-
bitsadmin
устарел в пользу командлета PowerShell BITS, но по-прежнему работает с Windows 10 версии 1607 -
certutil
разделяет пары шестнадцатеричных цифр пробелом, поэтомуmd5sum
вернет примерное значениеd41d8cd98f00b204e9800998ecf8427e
, тогда какcertutil
отображает то же значение, что иd4 1d 8c d9 8f 00 b2 04 e9 80 09 98 ec f8 42 7e
- Чтобы
cd
к другому диску (например, от C: до D :), должен использоваться флаг/d
-
del
не может удалять папки, вместо этого использоватьrm
-
grep
намного мощнее, чемfind
иfindstr
, сравнивать их почти несправедливо;find
не имеет возможностей регулярного выражения, аfindstr
имеет чрезвычайно ограниченные возможности регулярного выражения ([az]{2}
недопустим синтаксис, но[az][az]
is) -
for
циклов в командной строке Windows могут использоваться только односимвольные имена переменных; это единственный раз, когда имена переменных пакета зависят от регистра -
for
циклов в командной строке также используйте переменную form%A
вместо%A%
-for
циклов в пакетных скриптах используйте переменную form%%A
-
md
автоматически создает любые необходимые родительские каталоги, в то время какmkdir
требуется флаг-p
-
rem
не может использоваться в качестве встроенного символа комментария, если ему не предшествует символ&
-
::
не может использоваться как встроенный комментарий вообще, а также не должен использоваться внутри кодового блока (набор скобок)
- Обратите внимание, что некоторые команды Windows, такие как
ping
все еще используют-
как флаги
Пакетные команды и их эквиваленты Баша
партия | удар | Описание |
---|---|---|
command /? | man command | Показывает помощь для команды |
bitsadmin | wget или curl | Загружает удаленный файл |
certutil -hashfile file_name MD5 | md5sum file_name | Получает контрольную сумму MD5 имени_файла |
cd | pwd | Отображает текущий каталог |
cd directory | cd directory | Изменяет текущий каталог на указанный |
cls | clear | Очищает экран |
copy | cp | Копирует файл или файлы из исходного пути в целевой путь |
date | date | Отображает дату или устанавливает ее на основе ввода пользователем. |
del | rm | Удаляет файл или файлы |
dir | ls | отображает список файлов и каталогов в текущем каталоге |
echo | echo | Отображает текст на экране |
exit | return | Выходит скрипт или подпрограмма |
exit | logout | Закрывает командную строку или терминал |
fc | diff | Сравнивает содержимое двух файлов |
find "string" file_name | grep "string" file_name | Ищет имя_файла для строки |
findstr "string" file_name | grep "string" file_name | Ищет имя_файла для строки |
for /F %A in (fileset*) do something | for item in fileset*; do; something; done | Сделайте что-нибудь для каждого файла в наборе файлов |
for /F %A in ('command') do something | `command` | Возвращает вывод команды |
for /L %A in (first,increment,last) do something | for item in `seq first increment last`; do; something; done | Начинается сначала и подсчитывается с помощью приращения, пока не достигнет последнего |
forfiles | find | Ищет файлы, соответствующие определенным критериям |
if "%variable%"=="value" ( | if [ "variable"="value" ]; then | Сравнивает два значения |
ipconfig | ifconfig | Отображает информацию IP |
md | mkdir | Создает новые папки |
mklink | ln -s | Создает символическую ссылку |
more | more | Отображает один экран вывода одновременно |
move | mv | Перемещает файл или файлы из исходного пути в целевой путь |
pause | read -p "Press any key to continue" | Приостанавливает выполнение сценария до тех пор, пока пользователь не нажмет кнопку |
popd | popd | Удаляет верхнюю запись из стека каталога и переходит в новую верхнюю директорию |
pushd | pushd | Добавляет текущий каталог в стек каталога и переходит в новый верхний каталог |
ren | mv | Переименование файлов |
rem или :: | # | Комментарии строки кода |
rd | rmdir | Удаляет пустые каталоги |
rd /s | rm -rf | Удаляет каталоги независимо от того, были они пусты или нет |
set variable=value | variable=value | Устанавливает значение переменной в значение |
set /a variable=equation | variable=$((equation)) | Выполняет математику (пакет может использовать только 32-битные целые числа) |
set /p variable=promptstring | read -p "promptstring" variable | Получает пользовательский ввод и сохраняет его в переменной |
shift | shift | Сбрасывает аргументы на 1 (или n, если предусмотрено) |
sort | sort | Сортировка по алфавиту по строке |
tasklist | ps | Показывает список запущенных процессов |
taskkill /PID processid | kill processid | Убивает процесс с помощью PID processid |
time /t | date | Отображает текущее время |
type | cat | Отображает содержимое файла |
where | which | Ищет текущий каталог и PATH для файла или команды |
whoami | id | Отображает имя и группу текущего пользователя |
Пакетные переменные и их эквивалент Bash
партия | удар | Описание |
---|---|---|
%variable% | $variable | Регулярная переменная |
!variable! | $variable | Переменная внутри блока кода, когда setlocal enabledelayedexpansion |
%errorlevel% или ERRORLEVEL | $? | Возвращает статус предыдущей команды: 0 в случае успеха, 1 (или что-то еще), если нет |
%1 , %2 , %3 и т. Д. | $1 , $2 , $3 и т. Д. | Параметры, заданные скрипту |
%* | $* | Все параметры, заданные скрипту |
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow