# jaywcjlove/linux-command ships a Markdown corpus and a data.json, not a CLI

> jaywcjlove/linux-command collects manuals for more than 600 Linux commands as Markdown and renders them into a static search page, an npm data package, and a Docker image. It works well as an index for a command you half-remember, and it is the wrong authority for anything you plan to run unattended.

**jaywcjlove/linux-command** — Linux Linux. Linux command encyclopedia search tool, including Linux command manuals, detailed explanations, learning, and collection.

- Repository: https://github.com/jaywcjlove/linux-command
- Website: https://jaywcjlove.github.io/linux-command
- Stars: 36,974 · Forks: 6,597
- Language: Markdown
- License: MIT
- Published: 2026-08-04 · Updated: 2026-08-18 · Language: en
- Canonical page: https://hysenlabs.com/projects/jaywcjlove-linux-command

## The command/ directory is the product and dist/data.json is only the build output

The repository splits into three pieces that matter to a reader. Markdown files live in command/, a build script in scripts/ writes generated output into dist/, and template/ plus assets/ hold the page shell. package.json names dist/data.json as the package entry point, and the build runs through node scripts/build.mjs. The deployable site is a fourth thing: a gh-pages branch you can clone onto any static host, and the README says you can instead take the Markdown files out of command and render them into HTML yourself. The page at jaywcjlove.github.io/linux-command is refreshed by GitHub Action after pushes, which means every result you land on was produced by that build. It is a corpus reader, not a live probe of your machine. Nothing in that pipeline touches the binaries on the computer you are reading from, and the README never states which distribution or release any entry was written against, so a page can describe flags your installed version does not accept.

## The npm package installs a data blob, and package.json has no bin field

package.json publishes two directories, command and dist, and points main at dist/data.json. There is no bin field, and there is no dependencies block, only devDependencies, so nothing in the published package can be executed on install. The keyword list still says cli, Linux, Command, which is the one place the package implies a command line tool, but the payload is a data set and a folder of Markdown. Running the build yourself is a different exercise, and the scripts show the shape of it:

```
"start": "npm run build",
"build": "node scripts/build.mjs",
"dash": "npm run build && node scripts/dash.mjs"
```

The engines field asks for node >= 16.0.0, and that constraint binds you only if you clone the repository and run those scripts. A consumer of the published data never reaches the devDependencies, which is where the real toolchain lives: markdown-to-html-cli, ejs, stylus, uglify-js, fs-extra, sitemap-generator, sqlite3, compressing, @uiw/github-corners, @wcj/dark-mode, colors-cli. Expect to write the search interface yourself and to decide how the JSON becomes a list of results.

## The Dockerfile copies a .deploy folder the repository does not contain

The container path is two instructions long and has a visible gap. The Dockerfile starts from a third-party static site image and then copies a directory named .deploy into the image root:

```
FROM wcjiang/docker-static-website:latest
COPY ./.deploy .
```

That .deploy directory is not one of the top-level entries in the repository, and the comment in the file names .dockerignore as the control for what ends up inside the image, so .deploy is treated as a build product that someone assembles before the image is created. A plain docker build against a fresh clone stops at the COPY step, which is the first thing a self-hoster hits. The second thing is the base image: the tag is latest, with no digest and no version, so two builds months apart can sit on different runtimes, and every byte the site serves passes through an image you did not write. The README links a Docker Hub repository, wcjiang/linux-command, which makes the image and the gh-pages branch two separate copies of the same site that can drift apart.

## The maintainer hands both accuracy and copyright to the reader

The README is unusually direct about the two risks that follow from a crowd-sourced catalog. The text was gathered from the internet and from reader submissions, the repository is non-profit, copyright stays with the original authors, and the maintainer states that he cannot fully guarantee the correctness of the content and accepts no responsibility for legal problems or risk. That is a disclaimer with real consequences. On accuracy, each page is a third party's paraphrase, so an option list can be stale or wrong for your kernel and your userspace, and no step in the pipeline checks a command page against a real binary. On licensing, the MIT file covers the repository's own code while the prose under command/ carries whatever terms came with its original source, so folding the corpus into a product you sell is your exposure rather than the maintainer's. Confirm each command against the man page on the machine where you intend to run it.

## Mirror hosts enter the list through an open issue, without a review of who serves them

Because the canonical site is hard to reach from China, the README carries a long list of mirrors: linux.citie.dpdns.org, linux.zenroly.com, itool123.cn, 235978.xyz, hycer.cn, chaoxi.online, iced.eu.org, 85604608.xyz, ykkit.cn, geekswg.js.cool, szsyw.cn, lukix.xyz, lihaicheng.cn, kkcry.com. Adding one is a matter of recommendation or a pull request against issue 649, and the stated purpose of that process is to raise search engine weight and speed up indexing. The mechanism has a side effect worth naming: a hostname gets listed without anyone reading what is being served there, and a mirror operator can edit any page it returns. For a reader that means a page fetched from a mirror carries one fewer guarantee than the same page on jaywcjlove.github.io, where the text at least matches the last push to master. There is also a separate English deployment at benben17.github.io/linux-command, which is its own site with its own update cycle.

## Release tags trail the working tree by about seven months

The version number here describes a content snapshot, not the state of the code you receive. The most recent release, v1.22.0, is dated 2026-02-02, preceded by v1.21.0 on 2025-07-09 and v1.20.0 on 2025-02-21, and package.json still reads 1.22.0 even though the last push to master is dated 2026-09-06, roughly seven months later. The site therefore keeps moving while the tag sits still, and pinning a version downstream freezes February content with nothing in the version string to say so. The intervals are uneven too, about five months between v1.20.0 and v1.21.0 and about seven before the next one, which reads as editorial sweeps rather than a release schedule. The project is not idle, and renovate.json plus the CI workflow referenced in the README mean dependency updates land on a cadence you cannot infer from the version number either.

## Nothing in the corpus ties a command to a distro, a version, or a real binary

Here is what this catalog cannot do for you. It carries no notion of distribution, so systemd-era tools, SysV-era tools, GNU coreutils variants and busybox applets all sit in one flat directory with no marker telling you which family a page describes. It runs no flag verification, so a page can outlive the option it documents. It offers no terminal client, because the package ships no binary, and no offline index, because what you search is a static page rather than something a script can query on a machine with no network. The README also does not document a search syntax, so you navigate the way the page allows and download the HTML to grep it yourself. If you need to find a command whose name you cannot place, this is a decent index. If you need a reference you can trust inside a script or a runbook, it is not the place to build on.

## Conclusion

Use it as an index, not as documentation: search when you cannot place a command, then confirm the syntax against the man page on the machine that will actually run it. Skip it for automated tooling, because the published package contains data and no executable, and treat any mirror hostname as unverified. Before redistributing anything from the command directory, check the copyright yourself, since the maintainer assigns that risk to the reader.

## FAQ

### What are basic Linux commands in the linux-command collection?

jaywcjlove/linux-command holds manuals and detailed write-ups for more than 600 Linux commands, collected from the web and from reader submissions, and serves them through a static search page at jaywcjlove.github.io/linux-command.

### How do I install jaywcjlove/linux-command?

The README names three routes rather than one install line: the npm package at npmjs.com/package/linux-command, a Docker Hub image at wcjiang/linux-command, and the gh-pages branch you can clone onto a static host. The npm package contains a command directory and a dist folder, with no binary in it.

### What does jaywcjlove/linux-command mean by the Linux command line?

Here the phrase points at a browsable catalog rather than a shell. The site is a static page with a QR code for mobile search, refreshed by GitHub Action after each push, and a separate English deployment lives at benben17.github.io/linux-command.

### How do I look up linux command find in jaywcjlove/linux-command?

Per-command detail lives in the Markdown files under the command directory, which the README says you can take and render into HTML yourself, or reach through the site search page. The repository ships no command line client for querying those pages.

### Does linux-command rank commands such as ls?

Entries including ls are part of the same collection of more than 600 commands, indexed together and without a ranking, so the project does not answer with a top-N list. Use the site search to reach the page for the specific command you need.

## Sources

- [Official documentation](https://jaywcjlove.github.io/linux-command)
- [Official README](https://github.com/jaywcjlove/linux-command#readme)
- [Project repository](https://github.com/jaywcjlove/linux-command)
- [Release notes](https://github.com/jaywcjlove/linux-command/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/jaywcjlove-linux-command
