Це команда pathchkposix, яку можна запустити в постачальнику безкоштовного хостингу OnWorks за допомогою однієї з наших численних безкоштовних робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн емулятор Windows або онлайн емулятор MAC OS
ПРОГРАМА:
ІМ'Я
pathchk — перевірити імена шляхів
СИНТАКСИС
pathchk [−стр] [−П] ім'я шляху...
ОПИС
Команда pathchk утиліта повинна перевірити, що один або кілька імен шляху є дійсними (тобто вони могли б
використовуватися для доступу або створення файлу без синтаксичних помилок) і переносимого (тобто,
немає результатів скорочення імені файлу). Більш детальна перевірка портативності забезпечується −стр
та −П Варіанти.
За замовчуванням, pathchk утиліта повинна перевірити кожен компонент кожного ім'я шляху на основі операнда
на базову файлову систему. Для кожного потрібно написати діагностику ім'я шляху операнд
що:
* Довше за {PATH_MAX} байт (див Шлях Змінна Цінності у Базових визначеннях
том POSIX.1-2008, )
* Містить будь-який компонент, довше ніж {NAME_MAX} байт у своєму каталозі
* Містить будь-який компонент у каталозі, який не доступний для пошуку
* Містить будь-яку послідовність байтів, яка не дійсна в каталозі, що містить
Формат діагностичного повідомлення не вказується, але має вказувати помилку
виявлені та відповідні ім'я шляху операнд.
Не вважається помилкою, якщо один або кілька компонентів a ім'я шляху операнд ні
існує до тих пір, поки може бути файл, що відповідає імені шляху, зазначеному відсутніми компонентами
створено, що не порушує жодної з перевірок, зазначених вище.
ВАРІАНТИ
Команда pathchk утиліта повинна відповідати тому Base Definitions POSIX.1-2008, розділ
12.2, Утиліта синтаксис керівні вказівки.
Підтримується наступний варіант:
−стр Замість того, щоб виконувати перевірки на основі базової файлової системи, напишіть a
діагностика для кожного ім'я шляху операнд, що:
* Довше за {_POSIX_PATH_MAX} байт (див мінімальний Цінності в Базі
Том визначень POSIX.1-2008, )
* Містить будь-який компонент, довше ніж {_POSIX_NAME_MAX} байт
* Містить будь-який символ у будь-якому компоненті, якого немає в імені переносного файлу
набір символів
−П Напишіть діагностику для кожного ім'я шляху операнд, що:
* Містить компонент, першим символом якого є характер
* Пусто
ОПЕРАНДИ
Підтримується наступний операнд:
ім'я шляху Ім’я шляху, яке потрібно перевірити.
STDIN
Не використовується.
ВХІД ФАЙЛИ
Ні.
НАВКОЛИШНЄ СЕРЕДОВИЩЕ ЗМІННІ
Наступні змінні середовища мають впливати на виконання pathchk:
МОВА Надайте значення за замовчуванням для змінних інтернаціоналізації, які не встановлені або
нуль. (Дивіться том Base Definitions POSIX.1-2008, розділ 8.2,
Internationalization Змінні пріоритет інтернаціоналізації змінних
використовується для визначення значень категорій мовного стандарту.)
LC_ALL Якщо встановлено не порожнє значення рядка, замініть значення всіх інших
змінні інтернаціоналізації.
LC_CTYPE Визначте локаль для інтерпретації послідовностей байтів текстових даних
як символи (наприклад, однобайтові на відміну від багатобайтових символів у
аргументи).
LC_MESSAGES
Визначте місцевий стандарт, який слід використовувати для впливу на формат і вміст
діагностичні повідомлення, записані у стандартну помилку.
NLSPATH Визначте розташування каталогів повідомлень для обробки LC_MESSAGES.
АСИНХРОННИЙ ПОДІЇ
За замовчуванням.
ВИСТАВКА
Не використовується.
STDERR
Стандартна помилка повинна використовуватися лише для діагностичних повідомлень.
ВИХІД ФАЙЛИ
Ні.
ПОВЕРНЕНІ ОПИС
Ні.
EXIT СТАТУС
Повинні бути повернуті такі вихідні значення:
0 All ім'я шляху операнди пройшли всі перевірки.
>0 Сталася помилка.
НАСЛІДКИ OF ПОМИЛКИ
За замовчуванням.
Команда після розділам він має інформативний.
ЗАСТОСУВАННЯ ВИКОРИСТАННЯ
Команда тест утиліту можна використовувати, щоб визначити, чи даний шлях називає існуючий файл;
однак він не вказує на те, чи є будь-який компонент імені шляху
було скорочено в каталозі, де функція _POSIX_NO_TRUNC не діє. The
pathchk утиліта не перевіряє наявність файлу; він виконує перевірки, щоб визначити чи
ім'я шляху існує або може бути створено без урізання компонента імені шляху.
Команда noclobber параметр в оболонці (див комплект спеціальні вбудовані) можна використовувати для атомарного
створити файл. Як і вся семантика створення файлів у томі системних інтерфейсів
POSIX.1‐2008, він гарантує атомарне створення, але все ще залежить від додатків, які потрібно узгодити
конвенцій та співпрацювати з використанням файлів після їх створення.
Щоб переконатися, що ім’я шляху відповідає вимогам переносимості імені файлів, додатки
слід використовувати обидва −стр та −П варіанти разом.
ПРИКЛАДИ
Щоб переконатися, що всі імена шляхів в імпортованому архіві обміну даними є законними та
однозначно щодо поточної системи:
# це приклад передбачає Що немає імена шляхів in архів
# містити символів.
людина −f архів | sed −e 's/[^[:alnum:]]/\\&/g' | ксарг pathchk −−
if [ $? −екв 0 ]
потім
людина −р −f архів
ще
нудьгувати Розслідувати проблеми перед тим імпорт файли.
вихід 1
fi
Щоб переконатися, що всі файли в поточній ієрархії каталогів можна перемістити в будь-яку систему
відповідно до обсягу системних інтерфейсів POSIX.1‐2008, який також підтримує людина
утиліта:
знаходити . −викон pathchk −стр −П {} +
if [ $? −екв 0 ]
потім
людина −w −f ../архів .
ще
нудьгувати Портативний архів не може be створено.
вихід 1
fi
Щоб переконатися, що введений користувачем ім’я шляху називає файл, який можна читати, і що програма може
створити файл, який розширює заданий шлях без усічення та без перезапису
існуючий файл:
випадок $− in
*C*) reset="";;
*) reset="set +C"
комплект −C;;
що С
тест −р "$шлях" && pathchk "$path.out" &&
rm "$path.out" > "$path.out"
if [ $? −ne 0 ]; потім
printf "%s: %s НЕ знайдений or %s.out зазнає невдачі \
створення перевірки.\n" $0 "$шлях$шлях"
$reset # скидання noclobber варіант in випадок a пастка
# on EXIT залежить on його.
вихід 1
fi
$reset
ОБРОБКА < "$шлях" > "$path.out"
У цьому прикладі зроблені наступні припущення:
1. ОБРОБКА представляє код, який використовується програмою $шлях раз це
перевірив це $path.out працює за призначенням.
2. Стан noclobber параметр невідомий, коли цей код викликається і має бути
встановлюється при виході до стану, в якому він був, коли був викликаний цей код. (В скидання змінна є
використовується в цьому прикладі для відновлення початкового стану.)
3. Зверніть увагу на використання:
rm "$path.out" > "$path.out"
а pathchk команда вже перевірила, на даний момент, що $path.out НЕ
усічений.
б. З noclobber набір параметрів, оболонка перевіряє це $path.out вже не робить
існують перед викликом rm.
c. Якщо оболонку вдалося створити $path.out, rm видаляє його так, що
програма може знову створити файл у ОБРОБКА крок.
d. Якщо ОБРОБКА крок хоче, щоб файл уже існував під час його виклику:
rm "$path.out" > "$path.out"
слід замінити на:
> "$path.out"
який перевіряє, що файл ще не існував, але залишає $path.out на місці
для використання ОБРОБКА.
ОБГОВОРЕННЯ
Команда pathchk утиліта була новою для стандарту ISO POSIX‐2:1993. Воно, поряд з комплект
−C(noclobber) параметр, доданий до оболонки, замінює mktemp, validfnam та створювати
утиліти, які з'явилися в перших пропозиціях. Усі ці утиліти були спробами вирішити
кілька поширених проблем:
* Перевірте дійсність (для кількох різних визначень ``дійсного'') імені шляху
надається користувачем, створюється програмою або імпортується із зовнішнього джерела.
* Атомно створити файл.
* Виконуйте різні функції обробки рядків для створення тимчасового імені файлу.
Команда створювати утиліта, включена в ранню пропозицію, забезпечує перевірку та атомарне створення
при одноразовому виклику утиліти; це ортогональні питання, і їх не потрібно групувати
в одну утиліту. Зауважте, що noclobber Параметр також надає спосіб створення a
блокування для синхронізації процесу; оскільки він забезпечує атомний створювати, немає раси
між перевіркою на існування та наступним створенням, якщо його не було.
Маючи таку функцію, як tmpnam() у стандарті ISO C є важливим у багатьох високорівневих
мови. Проте мова програмування оболонки має вбудовані маніпуляції з рядками
засоби, що спрощує створення тимчасових імен файлів. Потрібні імена
очевидно, залежать від програми, але часто мають форму, подібну до:
$TMPDIR/абревіатура_додатка$$.Суфікс
У випадках, коли існує ймовірність суперечки щодо даного суфікса, проста оболонка та цінності or
в той час як цикл можна використовувати з оболонкою noclobber можливість створити файл без ризику
колізії, якщо програми намагаються використовувати той самий простір імен файлів
співпрацювати з використанням файлів після їх створення.
Для історичних цілей, −стр не перевіряє використання характер як
перший символ у компоненті імені шляху або порожній символ ім'я шляху операнд.
Майбутнє НАПРЯМКИ
Ні.
Використовуйте pathchkposix онлайн за допомогою служб onworks.net