These docs are under active development and cover the v0.20 Kobicha security model.
On this page
reference 1 min read

pathchk

pathchk checks whether a path name is valid and usable. It tells you, before you try to create a file, whether the name would be rejected — because it is too long, contains an unusable component, or could not be reached.

pathchk [options] name...
$ pathchk /home/jack/projects/notes.txt
$ echo $?
0

pathchk prints nothing when a name is fine; it prints a diagnostic and fails when a name is not. It is meant for scripts that build up path names and want to fail early, with a clear message, instead of discovering the problem halfway through an operation.

Like the other name commands in this topic, pathchk does not require the file to exist — it is checking the name, not looking for the file.

What the default check covers

With no options, for each name pathchk checks:

  • that the name is not empty;
  • that no part of the name exceeds the length limits of the file systems the path would actually touch;
  • that the leading directories of the name can be searched.

Stricter checks

The options replace "valid on this system" with "valid across a wide range of systems" — useful when a name has to work somewhere other than where you are checking it.

Option Adds
-p Check against a fixed, conservative set of length limits instead of the local file system's, and flag characters that are not broadly portable.
-P Reject an empty name, and reject any component that begins with -.
--portability Apply both -p and -P — the strictest check.

A name with a leading - on a component is worth catching: many commands would read it as an option rather than a file name. -P flags exactly that class of trouble.

Exit status

Code Meaning
0 Every name passed every requested check.
1 At least one name failed. A diagnostic naming the problem was printed.