У меня есть два файла functions.txt и functions.ps1.

В командной строке PS, когда я нажимаю tab в каталоге, первый вариант, который появляется, это «functions.txt».

Однако, если я наберу "del", а затем нажму "tab", первым выбором будет «functions.ps1».

Это кажется последовательным.

Есть ли какая-то логика за этим, это совпадение, или это злые бесы пытаются обмануть меня, удалив не тот файл?

2 ответа2

0

Ответ, по-видимому, заключается в том, что для завершения вкладки действительно используются два разных алгоритма, чтобы решить, какой файл будет первым в зависимости от ситуации.

В этих примерах файл "ab" создается до того, как файл "aa" и завершение табуляции в "a" (третья строка) вызывает "ab" (файл, созданный первым).

PS P:\> echo hello > ab

PS P:\> echo hello > aa

PS P:\> .\ab

Но завершение табуляции на "a" после "del" делает это:

PS P:\> del .\aa

Однако, создание файлов наоборот дает такой результат:

PS P:\> echo hello > aa

PS P:\> echo hello > ab

PS P:\> .\aa

На вкладке "a" после "del" также отображается "aa":

PS P:\> del .\aa
0

Если вы запускаете:

gci | sort

В каталоге вы увидите, что он сортирует символы (., $,! И т.д.) AZ & az, насколько я могу судить,

Shell> .\ **TAB**

в этом каталоге просто gci | сортировать в этом порядке (игнорируя символы до конца).

Я также предполагаю, что сначала сортируется имя файла, а затем расширение. Итак, для вашего примера, functions.ps1 предшествует functions.txt. Я вижу такое же поведение с Del TAB, или просто.\ TAB

Это похоже на следующий пример каталога файлов:

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---         2/10/2012   2:51 PM          0 foo1
-a---         2/10/2012   2:52 PM          0 foo1.ps1
-a---         2/10/2012   2:52 PM          0 foo1.txt
-a---         2/10/2012   2:51 PM          0 foo2
-a---         2/10/2012   2:51 PM          0 foo2.ps1
-a---         2/10/2012   2:52 PM          0 foo2.txt

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .