wcd(1) | 2017-01-03 | wcd(1) |
wcd - довільна зміна каталогу (Wherever Change Directory)
засіб для зміни каталогу (chdir) у DOS та Unix
wcd [параметри] [каталог]
Wcd — програма, що керується з командного рядка і надає змогу швидко змінювати каталоги. Вона економить час на введенні даних з клавіатури. Достатньо ввести лише частину назву каталогу і wcd перейде до цього каталогу. У wcd передбачено можливості пришвидшення вибору потрібного варіанта з декількох, створення альтернативних назв каталогів та блокування каталогів. Крім того, у wcd ви зможете скористатися повноекранною інтерактивною навігацією деревом каталогів з швидким пошуком.
Ідеї wcd часткового запозичено з Norton Change Directory (NCD). Першу версію NCD у The Norton Utilities, Release 4 для DOS було випущено 1987 року компанією Пітера Нортона (Peter Norton).
Wcd було портовано на різні командні оболонки: command.com для DOS, cmd.exe та PowerShell для Windows, cmd.exe для OS/2 і командні оболонки Unix, зокрема Bourne (sh), Bourne Again (bash), Korn (ksh), Z (zsh) та C (csh), а також інші оболонки, що працюють у будь-якій операційній системі.
У Wcd передбачено підтримку 8-бітових наборів символів на усіх системах та додаткову підтримку Unicode. Докладніше про це у розділі «ЛОКАЛІЗАЦІЯ».
Щоб дізнатися більше про налаштовування wcd для особистого користування, зверніться до розділу «ВСТАНОВЛЕННЯ».
Типово (якщо не використано символів-замінників), wcd шукає каталог, назва якого починається з введених вами символів.
Наприклад, вказана нижче команда змінить каталог на каталог поточного користувача "/home/user/Desktop":
wcd Desk
Якщо буде виявлено декілька відповідників, wcd покаже користувачеві список цих відповідників. Після цього користувач зможе вибрати потрібний варіант декількома натисканнями клавіш (найчастіше, достатньо одного натискання).
У wcd передбачено підтримку таких символів-замінників:
* відповідає будь-якій послідовності символів (нульової або більшої довжини) ? відповідає довільному символу [НАБІР] відповідає довільному символу з вказаного набору, [!НАБІР] або [^НАБІР] відповідає будь-якому символу, що не належить до вказаного набору.
Набір символів може складатися з окремих символів або діапазонів символів. Діапазон слід вказувати так: символ дефіс символ, наприклад, "0-9" або "A-Z". Мінімальним набором символів у конструкції "[..]" є "[0-9a-zA-Z_]". Можна використовувати символи з розширеного набору (тобто 8-бітові символи), якщо у системі передбачено підтримку цих символів. Щоб придушити використання символів з набору "[]*?!^-\" для побудови синтаксичних лексем у межах конструкцій "[..]" тобто їхнього буквального використання, додавайте перед цими символами символ зворотної риски ("\").
Використання символів-замінників надає доступ до досить потужних можливостей з пошуку. Наприклад, за допомогою вказаного нижче виразу можна знайти будь-який каталог, назва якого завершується на «top»:
wcd *top
Знайти каталоги, у назві яких будь-де міститься частина «top»:
wcd *top*
Знайти будь-який каталог, назва якого починається з «a», «b» або «c»:
wcd [a-c]*
Крім того, можна вказати частину шляху до каталогу. У наведеному нижче прикладі wcd шукатиме каталог, назва якого починається з «Desk», шлях якого відповідає шаблону *me/Desk*.
wcd me/Desk
Можна використовувати будь-який вираз, що містить риски та символи замінники. Приклад:
wcd src*/*1?/a*2
Якщо у виразі не використано символів-замінників, а wcd знаходить повний відповідник з вказаним шляхом і назвою, wcd типово проігнорує усі відповідники, які могло б бути знайдено з використанням символів-замінників. Типову поведінку програми можна змінити за допомогою параметра -w.
Інтерактивний навігатор ієрархією каталогів можна запустити за допомогою параметра -g.
wcd -g
Wcd створює файл даних ієрархії (treedata) у каталогах, звідки виконується пошук. У системах Unix та Windows wcd додає символічні посилання на файл treedata під час сканування диска, але не переходить за створеними посиланнями. Перехід за посиланнями може призвести до зациклювання wcd у ієрархії каталогів або сканування великих масивів каталогів у мережі.
Крім того, wcd може переходити до каталогів, яких немає у файлі treedata. Приклад:
wcd ..
Якщо wcd буде виявлено відповідник критерію пошуку, але програма не зможе перейти до цього каталогу, буде виконано спробу вилучення каталогу з типового файла treedata, але не з додаткового файла treedata. Див. також параметр -k.
Wcd зберігає на диску стос переходів за каталогами. Типовим обсягом стосу є 10. Перехід стосом здійснюється циклічно. Див. параметри -z, -, + та =.
У середовищах з декількома користувачами для переходу до каталогів, що належать іншим користувачам, можна скористатися параметром -u.
У операційних системах DOS і Windows можна використовувати як роздільник між каталогами як символ «/», так і символ «\».
У системах DOS та Windows передбачено можливість переходу до каталогу на іншому диску. Для цього достатньо перед назвою каталогу на диску вказати назву диска.
wcd d:games
У версіях для Windows (для командного рядка, PowerShell, MSYS, zsh, cygwin) передбачено підтримку шляхів UNC LAN Windows для SMB без літер дисків, наприклад "\\назва_сервера\назва_ресурсу". У wcd для командного рядка Windows для автоматичного прив’язування шляху UNC до літери диска використовується команда «pushd». У In Windows PowerShell, MSYS, zsh та Cygwin передбачено повноцінну підтримку шляхів UNC. Шлях UNC може бути поточним робочим каталогом.
У wcd передбачено три різні інтерфейси вибору потрібного варіанта зі списку відповідників. Інтерфейс можна вибрати під час збирання програми.
Першим інтерфейсом є звичайні інтерфейси введення та виведення (stdin/stdout). До термінала буде виведено нумерований список варіантів. Користувач зможе вибрати відповідний варіант введенням його номера з наступним натисканням клавіші <Enter>. У цьому інтерфейсі не передбачено можливостей гортання для довгих списків. Для цього доведеться користуватися можливостями з гортання термінала або консолі. Код цього інтерфейсу доволі малий і портований.
Другий інтерфейс побудовано на основі бібліотеки conio. У ньому передбачено можливості гортання. Користувачу буде показано список з літерним позначенням пунктів. Для вибору пункту у списку достатньо натиснути клавішу з відповідною літерою. Цей інтерфейс працює швидше, оскільки треба натискати менше клавіш. Після вибору варіанта, якщо це можливо, зображення на екрані буде відновлено до стану перед показом варіантів. Якщо користувач надає перевагу цифровому позначенню пунктів, можна скористатися параметром -N.
Третій інтерфейс побудовано на основі бібліотеки curses. Він подібний до інтерфейсу на основі conio. Версія wcd на основі curses має додатковий «графічний» інтерфейс. За його допомогою користувач зможе вибрати каталог у повноекранному інтерактивному навігаторі ієрархією каталогів. Передбачено навігацію та пошук у стилі vim(1). Задіяти цей інтерфейс можна за допомогою параметра -g.
За допомогою параметра командного рядка -o програму можна завжди перевести до стандартного інтерфейсу stdin/stdout.
За допомогою цього параметра можна швидко додати поточний шлях до типового файла ієрархії каталогів. Повторне сканування усього диска у певних випадках може бути досить тривалою справою.
wcd -A . wcd -A /home -A /etc wcd -A d: -A e: -A \\server\share
У Windows можна виконати сканування усіх каталогів спільного використання на сервері локальної мережі Windows за допомогою такої команди: "wcd -A \\назва_сервера".
Див. також параметри -S, -s та -E.
Wcd додає поточний шлях до файла блокування. Це означає, що wcd ігноруватиме усі відповідники з поточного каталогу і усіх його підкаталогів.
Файл блокувань (ban) можна редагувати у текстовому редакторі. Передбачено підтримку символів-замінників. Відповідність назв встановлюється за абсолютними шляхами.
Заблоковані шляхи не виключаються зі шляхів сканування диска. Щоб виключити заблоковані шляхи, скористайтеся параметром -xf.
1. Спробувати знайти відповідник у файлах ієрархії (treedata). 2. Якщо нічого не знайдено, спробувати відкрити каталог, назву якого було введено.
У безпосередньому режимі CD wcd виконує обробку запиту у зворотному порядку.
1. Cпробувати відкрити каталог, назву якого було введено. 2. Якщо не вдалося, знайти відповідник у файлах ієрархії (treedata).
Типово, файл стосу та скрипт переходу зберігаються на диску C:, якщо не встановлено значення змінної середовища HOME. Цим параметром можна скористатися, якщо диск C: захищено від запису. Цей параметр слід вказувати перед параметрами роботи зі стосом -, + та =.
За допомогою цього параметр можна швидко додати поточний шлях до додаткового файла ієрархії.
Wcd запускає текстовий «графічний» інтерфейс на основі curses. Користувач може вибрати каталог за допомогою повноекранного інтерактивного навігатора ієрархією каталогів. Передбачено навігацію і пошук у стилі vim(1).
Якщо рядок пошуку не вказано, wcd показує усю ієрархію каталогів з типового та додаткового файлів даних ієрархії.
Якщо рядок пошуку вказано, список відповідників буде показано як ієрархію каталогів.
Типове компонування ієрархії подібне до компонування каталогів у початковій версії NCD у DOS. Різниця у компонуванні полягає у тому, що у NCD усі каталоги одного рівня було вирівняно однаковим відступом у всьому дереві. Це було можливим у NCD, оскільки максимальна довжина назви каталогу у DOS дорівнювала 12 (8.3) символам. У сучасних операційних системах назви каталогів можуть бути дуже довгими і різниця у довжинах може бути дуже великою. Тому теки однакового рівня вкладеності не вирівняно за однією лінією за усією ієрархією каталогів у wcd, а лише за гілками ієрархії. Отже, під час руху вгору-вниз ієрархією каталогів користувач спостерігатиме за зсувами списку у різні боки.
Навігаційна поведінка у wcd абсолютно збігається з початковою версією NCD. Наприклад, якщо ви натиснете клавішу зі стрілкою вниз, ви перейдете до наступного каталогу з тим самим рівнем вкладеності, переходячи гілками ієрархії. Це пришвидшує навігацію ієрархією каталогів.
Поведінку засобу навігації можна змінити за допомогою параметрів -Ta, -TC та -Tc.
У цьому режимі wcd не показуватиме списку, якщо для вказаної назви буде знайдено декілька відповідників. Wcd просто перейде до першого ж відповідника. Якщо wcd буде викликано знову з тими самими аргументами, програма змінить каталог на наступний пункт у списку тощо.
Wcd виведе назву каталогу, що якого переходитиме до стандартного виведення (stdout). Отже можна скористатися декількома способами встановлення. Можна створити таку функцію для сумісної з POSIX командної оболонки:
wcd () { cd "$($HOME/bin/wcd.exe -j $@)" }
Якщо ви користуєтеся застарілою командною оболонкою, у якій не передбачено підтримки заміни команди «$()», вам доведеться скористатися підставлянням команди у застарілому стилі з одинарними відкривними лапками.
wcd () { cd "`$HOME/bin/wcd.exe -j $@`" }
У системах Windows, якщо використано командну оболонку 4NT, можна створити такі альтернативні назви:
alias wcd `cd %@execstr[wcdwin32.exe -z 0 -j %1]`
Подібний метод усуває потребу у скрипті переходу, отже, параметр -j можна використати у поєднанні з параметром -GN.
Зберігати шляхи до файла даних ієрархії каталогів, якщо wcd не може перейти до відповідного каталогу. Типовою поведінкою програми є вилучення шляхів з файла даних ієрархії, якщо wcd не може перейти до відповідного каталогу. Якщо буде використано цей параметр, програма не вилучатиме відповідних записів каталогів.
Не виконувати читання з типового файла даних ієрархії каталогів. Файл даних відносних шляхів до каталогів має бути вже створено за допомогою параметра wcd +S. Крім того, ШЛЯХ може безпосередньо вказувати на файл.
Приклад. Припустімо, що іншу систему змонтовано до точки монтування "/mnt/network":
wcd -n /mnt/network src
Wcd відкриває файл даних відносних шляхів до каталогів у "/mnt/network/". У цьому файлі містяться шляхи відносно відповідного каталогу.
Wcd з інтерфейсом на основі conio або curses (див. розділ щодо інтерфейсів) типово показує список варіантів з пунктами, позначеними літерами. Якщо використано параметр -N, пункти у списку буде пронумеровано. Незалежно дві параметра -N, користувач може натиснути клавішу з літерою або номером для вибору пункту зі списку відповідників.
Якщо з певних причин інтерфейсом на основі conio або curses у wcd не можна або не бажано користуватися, користувач може перемкнути програму на інтерфейс stdin/stdout за допомогою параметра -o.
Якщо каталог є порожнім, wcd вилучить його і спробує вилучити відповідний запис з файла даних ієрархії каталогів.
Wcd вилучить каталог та усі його підкаталоги та файли і витре записи відповідних каталогів з файла даних ієрархії каталогів.
Наявний типовий файл даних ієрархії каталогів буде перезаписано.
Типовий каталог сканування можна перевизначити за допомогою змінної середовища "WCDSCAN". Див. розділ «ЗМІННІ СЕРЕДОВИЩА».
Unix:
wcd -S / wcd -S /home -A /etc -A /usr
DOS/Windows:
wcd -S c:/ wcd -S c: -A d: -A \\server\share
У версіях для Windows можна виконати сканування усіх каталогів спільного використання на сервері локальної мережі Windows за допомогою такої команди: "wcd -S \\назва_сервера".
Типово, wcd вилучає "/tmp_mnt/" з відповідників. Каталог "/tmp_mnt" використовується засобом автоматичного монтування. Таку обробку можна вимкнути за допомогою параметра -t.
У типовому режимі компонування ієрархії у стилі NCD параметр -Ta вимикає перехід до непов’язаних каталогів.
У режимі компактної ієрархії альтернативний режим робить навігацію подібною до навігації у програмах для керування файлами з графічним інтерфейсом, зокрема Провіднику Windows або KDE Konqueror у Linux. Натискання клавіш зі стрілками вгору і вниз пересуває позначення теки на один рядок вгору або вниз. Першим натисканням клавіші зі стрілкою ліворуч можна згорнути підтеки, наступне натискання — перехід ліворуч.
Перемкнутися між режимами типової і альтернативної навігації без перезапуску програми можна за допомогою натискання комбінації клавіш Shift-A.
Якщо увімкнено режим альтернативної навігації, у нижньому правому куті екрана ви побачите літеру «A».
Стандартний нецентрований режим, який мінімізує рух самої ієрархії на екрані, аналогічний до оригінального режиму NCD.
Якщо увімкнено режим ієрогліфів, у нижньому правому куті екрана ви побачите літеру «C».
У Unix/Cygwin базовим каталогом для домашніх каталогів користувачів вважається "/home". Wcd шукатиме файли "/home/USER/.treedata.wcd" та "/home/USER/.wcd/.treedata.wcd", саме у цьому порядку, і читатиме дані з першого ж із цих файлів, який буде знайдено і який виявиться придатним до читання. У DOS/Windows базовим каталогом для домашніх каталогів користувачів вважається "\\users", отже, wcd намагається прочитати дані з файлів "\\users\USER\treedata.wcd" та "\\users\USER\.wcd\treedata.wcd".
Якщо буде використано цей параметр, wcd виключить шлях з назвою ШЛЯХ та усі його підкаталоги з переліку шляхів для сканування диска. Передбачено підтримку символів-замінників та встановлення відповідності за абсолютними шляхами. Параметр -x у команді можна використовувати декілька разів.
wcd -x <шлях1> -x <шлях2> -s
Параметр -x слід вказувати до усіх параметрів сканування (-s, -S, +S, -A, -E).
У системах DOS/Windows слід вказати літеру диска, якщо не визначено змінної середовища HOME або WCDHOME. Приклад:
wcd -x c:/temp -S c:
У інших випадках літеру диска не слід вказувати.
wcd -x /temp -s
Якщо використано цей параметр, wcd виключить усі шляхи зі списку у файлі ФАЙЛ та усі підкаталоги цих шляхів зі сканування диска. Передбачено підтримку символів-замінників та встановлення відповідності за абсолютними шляхами. Шляхи має бути вказано по одному на рядок. Слід пам’ятати, що wcd ігноруватиме початкові та завершальні пробіли у рядку, оскільки такі пробіли є некоректними символами у назвах каталогів. Параметр -xf можна вказувати декілька разів. Якщо ви хочете виключити усі заблоковані шляхи зі сканування, можна зробити так (приклад для wcd у unix):
wcd -xf ~/.ban.wcd -s
Передбачено підтримку символів-замінників. Наприклад, щоб виключити усі каталоги Subversion з файлами, призначеними для адміністрування копії сховища, додайте рядок "*/.svn".
Параметр -xf слід вказувати до усіх параметрів сканування (-s, -S, +S, -A, -E).
Wcd не проситиме користувача підтвердити дію відповіддю «так» або «ні», відповіддю завжди вважається «так». Цей параметр можна поєднати з параметром -rmtree. Параметр слід вказувати до параметрів, використання яких може призвести до появи питань, на які має відповідати користувач.
Типовим розміром стосу є 10. Дії зі стосом можна вимкнути встановленням значення 0. Цей параметр слід використовувати перед будь-якими іншими параметрами, що призводять до дій зі стосом (-,+,=). Якщо цього не зробити, стосу буде повернуто типовий розмір 10.
Правильна команда:
wcd -z 50 -
Новим розміром стосу буде 50, wcd перейде на один крок назад у стосі. Помилковою була б така команда:
wcd - -z 50
Wcd повернеться на один каталог назад у стосі, розміру ж стосу буде повернуто типове значення 10. Параметр -z 50 буде проігноровано.
Додайте цей параметр як перший параметр до альтернативної команди wcd або функції, де ця програма використовується. Приклад для сумісних з POSIX командних оболонок:
wcd () { wcd.exe -z 50 "$@" . ${WCDHOME:-${HOME}}/bin/wcd.go }
Повернутися на один каталог назад. Команда "wcd -" поверне вас на один каталог назад. Щоб повернутися на більшу кількість кроків, додайте до неї кількість кроків. Приклад: "wcd -3". Перехід стосом каталогів є циклічним.
Перейти вперед на один каталог. Команда "wcd +" призведе до переходу на один каталог вперед. Щоб повернутися на більшу кількість кроків, додайте до неї кількість кроків. Приклад: "wcd +2". Перехід стосом каталогів є циклічним.
Скористайтеся цим параметром, якщо ви призабули скільки пунктів залишилося попереду і позаду у стосі. У відповідь на команду з цим параметром програма виведе вміст стосу для наступного вибору номера пункту. Поточне місце у стосі буде позначено зірочкою, "*".
Поточний робочий каталог командної оболонки Unix можна змінити лише за допомогою вбудованої команди cd(1). Тому програму завжди викликають функцією або за альтернативною назвою. Ця функція або альтернативна назва зберігається у скрипті командної оболонки (скрипті переходу), який створюється програмою wcd. Wcd може працювати лише після визначення функції або альтернативної назви.
Іншим варіантом внесення змін до поведінки встановленої вами програми є визначення значень змінних середовища HOME та WCDHOME. Див. розділ ЗМІННІ СЕРЕДОВИЩА.
Для командних оболонок POSIX (ksh, bash, zsh, etc.) у Unix, Linux, Cygwin або типовій оболонці MSYS додайте таку функцію до файла запуску оболонки (наприклад, у Bash використовується файл "$HOME/.bashrc"):
wcd () { <ШЛЯХ>/wcd.exe "$@" . ${WCDHOME:-${HOME}}/bin/wcd.go }
Замініть ШЛЯХ на адресу каталогу, до якого встановлено виконуваний файл wcd. Перезавантажте файли ініціалізації оболонки або запустіть нову оболонку.
Розташування скрипту переходу, "wcd.go", є різним для різних оболонок.
Wcd для bash у DJGPP DOS потрібна інша функція. Скрипт переходу не буде записано до каталогу "bin" і, якщо одночасно визначено WCDHOME та HOME, скрипт переходу буде записано до c:/.
wcd () { <ШЛЯХ>/wcd.exe "$@" . ${WCDHOME:-${HOME:-"c:"}}/wcd.go }
Версія wcd для WinZsh теж має свої особливості. Немає каталогу "bin".
wcd () { <ШЛЯХ>/wcd.exe "$@" . ${WCDHOME:-${HOME}}/wcd.go }
Докладніший опис можна знайти у розділі «ФАЙЛИ».
Додайте такі альтернативні назви до файла запуску оболонки, "$HOME/.cshrc" або "$HOME/.tcshrc" :
if ( ${?WCDHOME} ) then alias wcd "<ШЛЯХ>/wcd.exe \!* ; source $WCDHOME/bin/wcd.go" else alias wcd "<ШЛЯХ>/wcd.exe \!* ; source $HOME/bin/wcd.go" endif
Замініть ШЛЯХ на адресу каталогу, до якого встановлено виконуваний файл wcd. Перезавантажте файли ініціалізації оболонки або запустіть нову оболонку.
Розпакуйте архів zip і додайте каталог "bin" до вашої змінної середовища PATH.
Програма для Windows, що працює у вікні командної оболонки Windows (Command Prompt) не може змінити поточного каталогу, але це може зробити скрипт .bat. Пакетний скрипт "wcd.ba"» запускає програму wcd, яка створює новий пакетний скрипт, "wcdgo.bat". Після цього "wcd.bat" запускає скрипт "wcdgo.bat", який здійснює зміну каталогу.
У командній оболонці Windows VISTA та новіших версій користувачі мають обмежений доступ до каталогів. Що отримати доступ до усіх каталогів, вам знадобляться права доступу адміністратора. Запустити командну оболонку з правами адміністратора можна так: наведіть вказівник миші на піктограму командної оболонки, клацніть правою кнопкою миші і виберіть у контекстному меню пункт Запуск від імені адміністратора.
Додайте вказану нижче функцію до вашого профілю користувача PowerShell. Дані щодо місця зберігання цього профілю зберігаються у змінній $profile. Слід також визначити змінну середовища HOME або WCDHOME.
function wcd { <ШЛЯХ>\wcdwin32psh.exe $args & $env:HOME\wcdgo.ps1 }
Замініть ШЛЯХ на адресу каталогу, до якого встановлено виконуваний файл wcd. Запустіть новий сеанс роботи у PowerShell. У Wcd для PowerShell передбачено роботу лише з файловими системами. Забезпечення роботи з іншими джерелами файлових даних не передбачено.
У командній оболонці OS/2 (cmd.exe) програма OS/2 не може змінювати робочого каталогу. Ось чому wcd створює командний скрипт ("wcdgo.cmd"), який має бути виконано у поточній оболонці. Скрипт "wcd.cmd" спочатку запускає програму "wcdos2.exe", яка створює скрипт "wcdgo.cmd". Після цього "wcd.cmd" запускає скрипт wcdgo.cmd.
export LANG=uk українська export LANG=uk_UA українська, Україна export LANG=ru_UA російська, Україна export LANG=es_ES іспанська, Іспанія export LANG=es_MX іспанська, Мексика export LANG=en_USiso88591 англійська, США, кодування Latin-1
Повний список мов та кодів краї наведено у підручнику з gettext(1): <http://www.gnu.org/software/gettext/manual/gettext.html#Language-Codes>. У системах Unix для отримання даних щодо локалі можна скористатися командою locale(1).
Якщо вами буде вибрано мову, перекладу якою немає, буде показано стандартні повідомлення англійською мовою.
Якщо ви встановили wcd до каталогу, відмінного від типового, вам варто встановити значення змінної середовища WCDLOCALEDIR так, щоб вона вказувала на каталог з файлами перекладів.
Приклад для cmd у Windows:
set WCDLOCALEDIR=c:/my_prefix/share/locale
Приклад для оболонки POSIX:
export WCDLOCALEDIR=$HOME/share/locale
Під час визначення параметрів упорядковування перевага надається змінній середовища LC_COLLATE, а не змінній LANG. Якщо ви вкажете для LC_COLLATE значення "C" або "POSIX", упорядковування за параметрами локалі буде вимкнено. Наприклад, якщо ви хочете скористатися українською мовою інтерфейсу, але не хочете використовувати українські параметри упорядковування, ви можете зробити так:
export LANG=uk_UA export LC_COLLATE=C
export LC_CTYPE=en_US.UTF-8
Існує дві групи кодових сторінок: кодові сторінки DOS (OEM) та кодові сторінки Windows (ANSI). Типовим кодуванням для Windows, якщо систему налаштовано на західноєвропейські параметри регіону, є ANSI CP1252. У програмах Windows, наприклад у notepad, використовується ця типова загальносистемна кодова сторінка ANSI. У консолі Windows типово використовується кодова сторінка OEM (CP437 або CP850) для сумісності з програмами DOS. Якщо ви використовуєте версію wcd для DOS у консолі Windows, програма не працюватиме, оскільки у ній використовується кодова сторінка DOS. Але у версії wcd для DOS не передбачено підтримку довгих назв каталогів та мережевих дисків у Windows.
Версія wcd для Windows є типовою програмою Windows, вона використовуватиме загальносистемну кодову сторінку ANSI Windows. Отже, у західноєвропейській локалізації Windows програма використовуватиме кодову сторінку CP1252 для назв каталогів та повідомлень. З метою забезпечення однорідності виведення даних, незалежно від активної кодової сторінки, усі версії wcd для Windows перетворюють виведені дані у форматі ANSI у формат Unicode у командній оболонці та PowerShell.
У консольних растрових шрифтах передбачено оригінальну кодову сторінку OEM, що встановлюється разом з Windows, отже, вам слід змінити шрифт консолі на Lucida Console, щоб літери з Unicode (та ANSI) було показано належним чином.
Версії wcd без підтримки Unicode до версії 5.2.0 виводять дані у форматі ANSI. Для цих застарілих версій кодову сторінку консолі слід зробити еквівалентною до загальносистемної кодової сторінки (змінюється на 1252), щоб забезпечити належну роботу wcd для Windows зі спеціальними символами, зокрема символами з акцентами, символами кирилиці та символом євро.
Загальносистемну кодову сторінку Windows можна змінити за допомогою регіональних параметрів «Панелі керування». Кодову сторінку консолі Windows можна змінити за допомогою команди "chcp".
Програма виводить дані щодо справжнього кодування символів у відповідь на команду "wcd -V". Щоб визначити активну кодову сторінку консолі Windows, введіть команду "chcp".
У wcd може бути передбачено підтримку Unicode. Щоб визначити, чи було зібрано wcd з підтримкою Unicode, скористайтеся командою "wcd -V". Якщо у вашому терміналі або консолі та шрифті передбачено підтримку, ви зможете бачити символ євро та китайські ієрогліфи.
Перетворення у Unicode у wcd виконується програмно. У ядрі програми усі дані обробляються як потік даних. У широкі символи Unicode перетворюються лише рядки, що виводяться на екран. Wcd повністю покладається на функції libc і не містить специфічного для UTF-8 коду. Див. також <http://www.cl.cam.ac.uk/~mgk25/unicode.html>
У wcd передбачено необов’язкову підтримку встановлення відповідності за Unicode з нормалізацією. Щоб визначити, чи передбачено у wcd підтримку нормалізації, скористайтеся командою "wcd -V". У wcd з підтримкою нормалізації Unicode відповідність назв Unicode виконується на основі сумісної еквівалентності. Без підтримки нормалізації Unicode відповідність назв встановлюється за двійковою еквівалентністю. Див. також <http://en.wikipedia.org/wiki/Unicode_normalization>
UTF-8 у Unix/Linux
Щоб у вашій консолі або терміналі можна було переглядати символи UTF-8, у консолі і терміналі також має бути передбачено підтримку UTF-8. У версії xterm, яка постачається разом з XFree86 4.0 або наступними версіями, передбачено підтримку UTF-8. Щоб задіяти цю підтримку, запустіть xterm(1) у локалі UTF-8 і скористайтеся шрифтом з кодуванням iso10646-1, наприклад за допомогою такої команди:
LC_CTYPE=en_GB.UTF-8 xterm -u8 -fn '-Misc-Fixed-Medium-R-SemiCondensed--13-120-75-75-C-60-ISO10646-1'
У сучасних дистрибутивах GNU/Linux типовою використовується кодування UTF-8. Можна працювати і з іншими багатобайтовими кодуваннями символів, але належного тестування працездатності з цими кодуванням не виконувалося.
У wcd припускається, що кодуванням файлів даних ієрархії каталогів є кодування символів поточної локалі. До файлів даних ієрархії каталогів символ позначки порядку байтів (BOM) не записується.
UTF-16 у Windows
У Windows підтримку Unicode передбачено у всіх версіях PowerShell та у командній оболонці Windows у Windows 7 (та новіших версіях). Unicode також працює у Take Command або TCC/LE створених JP Software, якими можна скористатися у старіших версіях Windows (XP/Vista).
У Windows усі назви каталогів на диску кодуються за допомогою UTF-16. У програмах Windows без підтримки Unicode символи Unicode перетворюються у символи типової кодової сторінки ANSI. Для символів, які не є частиною регіонального кодування, це перетворення є неможливим, отже програми без підтримки Unicode виводитимуть замість них символ знаку питання або помилковий символ.
Wcd з підтримкою Unicode читатиме закодовані у UTF-16 назви каталогів і перетворюватиме дані до UTF-8 у внутрішньому коді. Усі дані файлів ієрархії каталогів буде закодовано у UTF-8. Ці дані є несумісними з версіями wcd без підтримки Unicode. Wcd створить скрипт переходу у кодуванні UTF-8.
Усі версії Windows PowerShell можуть запускати скрипти у кодуванні UTF-8, якщо у скрипті є символ BOM UTF-8.
Починаючи з Windows 7, у командній оболонці Windows передбачено можливість змінити за допомогою пакетного скрипту каталог на каталог з літерами Unicode у назві. Кодуванням назви каталогу має бути UTF-8, а пакетний скрипт не повинен містити позначки порядку байтів (BOM). Слід змінити активну кодову сторінку командної оболонки на 65001 (UTF-8) до виконання команди cd. Wcd для командної оболонки створити такий скрипт переходу ("wcdgo.bat"). Цей скрипти спочатку змінюватиме кодову сторінку на 65001, потім змінюватиме каталог, і нарешті, повертатиме початкове значення параметрів кодової сторінки.
Якщо літери буде показано не так, як слід, вам слід встановити шрифт True Type Lucida Console (не растровий шрифт).
Версія wcd для Windows без підтримки Unicode може читати файли даних ієрархії каталогів у кодуванні Unicode, починаючи з версії 5.2.0, якщо у файлі є позначка порядку байтів (BOM) (див. <http://en.wikipedia.org/wiki/Byte_order_mark>), але не може змінювати каталоги на каталоги з тими літерами Unicode у назві, які не є частиною типової кодової сторінки ANSI системи. Версія wcd для Windows з підтримкою Unicode записує BOM до файлів ієрархії каталогів у кодуванні UTF-8, починаючи з версії 5.2.0, отже, ці файли можна читати за допомогою notepad.
UTF-8 у Cygwin
У Cygwin передбачено підтримку Unicode, починаючи з версії 1.7. Шар обробки Cygwin виконує перетворення назв каталогів Windows у UTF-16 до UTF-8. Отже, програми, зокрема wcd, не потрібно перейматися процедурами перетворення, вони можуть обробляти дані у кодуванні UTF-8, як це робиться у Unix/Linux. Встановити кодування символів UTF-8 можна за допомогою змінної середовища LANG або LC_CTYPE. Ймовірно, вам доведеться пересканувати ваші диски. Якщо ви користуєтеся типовою консоллю Cygwin, вам слід встановити для неї шрифт True Type Lucida Console (не растровий шрифт).
Версія wcd для Cygwin поводиться точно так само, як версія wcd для Unix. Мітка порядку байтів (BOM) не записується до файлів даних ієрархії каталогів. Кодуванням файлів вважається кодування символів локалі Cygwin.
Якщо встановлено змінну середовища WCDHOME, використовуватиме WCDHOME замість HOME. Усі файли "*.wcd" є текстовими файлами. Їх можна редагувати у звичайному текстовому редакторі. Версія wcd для командної оболонки Windows поводиться так само, як версія для DOS. Версія wcd для Cygwin поводиться як версія для Unix.
DOS: \treedata.wcd або %HOME%\treedata.wcd Unix: $HOME/.treedata.wcd
DOS: \extra.wcd або %HOME%\extra.wcd Unix: $HOME/.extra.wcd
DOS: \ban.wcd або %HOME%\ban.wcd Unix: $HOME/.ban.wcd
DOS: \alias.wcd або %HOME%\alias.wcd Unix: $HOME/.alias.wcd
DOS: c:\stack.wcd або %HOME%\stack.wcd Unix: $HOME/.stack.wcd
Назву файла стосу можна змінити за допомогою змінної середовища WCDSTACKFILE. Див. розділ «ЗМІННІ СЕРЕДОВИЩА».
bash для DOS: c:/wcd.go або $HOME/wcd.go командна оболонка Windows: c:\wcdgo.bat або %HOME%\wcdgo.bat Windows PowerShell: $env:HOME\wcdgo.ps1 WinZsh: $HOME/wcd.go Cygwin/MSYS: $HOME/bin/wcd.go командна оболонка OS/2: c:\wcdgo.cmd або %HOME%\wcdgo.cmd Unix: $HOME/bin/wcd.go
DOS: <шлях>\rtdata.wcd Unix: <шлях>/.rtdata.wcd
HOME також визначає місце, звідки слід розпочинати сканування диска, якщо використано параметр -s. Перевизначити це місце можна за допомогою змінної середовища WCDSCAN.
У версіях для Unix, Cygwin, Windows PowerShell, WinZsh та MSYS слід встановити значення HOME або WCDHOME. Для інших версій wcd використання цих змінних є необов’язковим.
Якщо змінну HOME встановлено у DOS/Windows, wcd розташує свої файли (treedata.wcd, extra.wcd, alias.wcd, ban.wcd, wcd.go) у каталозі HOME. Після встановлення змінної поведінка wcd стає еквівалентною до версії wcd для Unix. Типово, wcd скануватиме диск, починаючи з HOME. Сканування дисків не виконуватиметься у автоматичному режимі після зміни диска. Про потребу у скануванні слід повідомити явно. Приклад:
wcd -S c: -A d: -A e:
Після цього встановлення відповідності каталогів буде загальним на усіх сканованих дисках.
З версіях wcd до версії 5.1.5 типовий каталог сканування можна змінити також за допомогою змінної WCDHOME. У наступних версіях таку поведінку було змінено. Починаючи з версії 5.1.5, WCDHOME не змінює типового каталогу сканування. Див. параметр -s. Починаючи з версії 5.1.5, для перевизначення типового каталогу сканування слід використовувати змінну середовища WCDSCAN.
Приклад для командних оболонок DOS, Windows, OS/2:
set WCDHOME=C:\Users\erwin\wcd
Приклад для командних оболонок типу POSIX:
export WCDHOME="$HOME/.wcd"
Приклад для командних оболонок типу Csh:
setenv WCDHOME "$HOME/.wcd"
Приклади для командних оболонок DOS, Windows, OS/2:
set WCDSCAN=C:\Users\erwin;D:\data set WCDSCAN=%HOMEDRIVE%%HOMEPATH%;\\projectdrive\projectX
Приклад для командних оболонок типу POSIX:
export WCDSCAN="$HOME:/projectdisk/projectX"
Приклад для командних оболонок типу Csh:
setenv WCDSCAN "$HOME:/projectdisk/projectX"
Приклад для командних оболонок DOS, Windows, OS/2:
set WCDFILTER=projects;doc
Приклад для командних оболонок типу POSIX:
export WCDFILTER="projects:doc"
Приклад для командних оболонок типу Csh:
setenv WCDFILTER "projects:doc"
Приклад для командних оболонок DOS, Windows, OS/2:
set WCDEXCLUDE=*/windows;*/temp;*CVS
Приклад для командних оболонок типу POSIX:
export WCDEXCLUDE="/dev:/tmp:*CVS"
Приклад для командних оболонок типу Csh:
setenv WCDEXCLUDE "/dev:/tmp:*CVS"
Використання файла з унікальною назвою на основі поточного часу у форматі РРРММДД-ГГХХСС для кожної відкритої інтерактивної командної оболонки:
export WCDSTACKFILE=$HOME/.wcd/stack.$(date +%Y%m%d-%H%M%S)
Для окремого стосу на кожний екземпляр xterm(1) скористайтеся змінної середовища WINDOWID для xterm:
export WCDSTACKFILE=$HOME/.wcd/stack.$WINDOWID
Для GNU screen(1), використання окремого стосу на екземпляр screen:
export WCDSTACKFILE=$HOME/.wcd/stack.$WINDOW
set PDC_RESTORE_SCREEN=1
У Windows передбачено можливість зберігання лише буфера незначного обсягу. Тому повне відновлення не завжди можливе. Якщо вміст буфера є доволі значним, до консолі після виходу з wcd буде виведено випадкові символи.
sh(1), bash(1), csh(1), ksh(1), zsh(1), locale(1), ncurses(1),
Wcd створено Erwin Waterlander <waterlan@xs4all.nl>
Домашня сторінка проекту: <http://waterlan.home.xs4all.nl/>
SourceForge: <http://sourceforge.net/projects/wcd/>
Форматування сторінки підручника було виконано Jari Aalto <jari.aalto@cante.net>.
Початкову версію NCD було створено Brad Kingsbury для пакунка "Norton Utilities" Пітера Нортона близько 1987 року. Див. також <http://www.softpanorama.org/OFM/norton_change_directory_clones.shtml>
2017-01-03 | wcd |