{"id":26680093,"url":"https://github.com/mgree/mute","last_synced_at":"2026-04-22T16:01:33.899Z","repository":{"id":282590570,"uuid":"948737259","full_name":"mgree/mute","owner":"mgree","description":"silence a command after the fact","archived":false,"fork":false,"pushed_at":"2026-03-27T20:56:10.000Z","size":88,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-12T16:04:24.952Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mgree.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-14T21:43:20.000Z","updated_at":"2026-03-27T20:54:57.000Z","dependencies_parsed_at":"2025-03-15T17:19:02.050Z","dependency_job_id":"521ec548-6c8c-4406-aa39-c7c8d77d7e32","html_url":"https://github.com/mgree/mute","commit_stats":null,"previous_names":["mgree/mute"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/mgree/mute","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgree%2Fmute","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgree%2Fmute/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgree%2Fmute/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgree%2Fmute/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mgree","download_url":"https://codeload.github.com/mgree/mute/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgree%2Fmute/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31974954,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-26T06:26:32.960Z","updated_at":"2026-04-18T16:00:58.990Z","avatar_url":"https://github.com/mgree.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mute\n\n[![Run tests](https://github.com/mgree/mute/actions/workflows/test.yaml/badge.svg)](https://github.com/mgree/mute/actions/workflows/test.yaml)\n\n`mute $PID` silences `$PID`---closing STDOUT and STDIN (or, if you\nlike, every file descriptor pointing to a terminal).\n\nGUI applications often produce debugging or error output as they\nrun. If you start a GUI application from a terminal and forget to\nredirect their output, these messages can clutter your\nterminal. `mute` attaches to a running process and intervenes,\nredirecting output to `/dev/null`.\n\n## Getting started\n\n```\nUsage: mute [-tfandv] [-o TARGET] PID [FD ...]\n\n  -t         only close FDs if they are ttys (if no FDs specified, will close all tty FDs)\n  -f         close FDs unconditionally\n  -a         append to TARGET rather than truncating\n  -n         dry run; shows the GDB script to be used, but does not run it\n  -d         debug mode (shows debugging output on stdout; repeat to increase output)\n  -v         show version information and exit\n  -o TARGET  redirect FDs to TARGET [default: /dev/null]\n             relative paths are relative to `mute`'s current directory, not PID's\n\n  FD can be a decimal number or one of stdout, stderr, or stdin\n\n  Running `mute PID` is the same as `mute -t PID stdout stderr`: FDs 1 and 2 will be\n  closed if they are tty FDs.\n```\n\n### Dependencies\n\n`mute` uses the GNU debugger, `gdb`, to intervene on processes. `mute`\nwill not work without `gdb`.\n\nAutodetecting file descriptors that point at ttys with `mute -t`\ncurrently depends on `procfs`, and will fail if `/proc/PID/fd/` does\nnot exist.\n\n### Installing\n\nAll you really need is the [`mute`\nscript](https://raw.githubusercontent.com/mgree/mute/main/mute). For a nicer, more formal install, you can [download a release](https://github.com/mgree/mute/releases) and do a standard install:\n\n```shellsession\n$ wget -q https://github.com/mgree/mute/releases/download/latest/mute-latest.tgz\n$ tar xzf mute-latest.tgz\n$ cd mute-*\n$ ./configure\nchecking for a BSD-compatible install... /usr/bin/install -c\nchecking for gdb... yes\nchecking for mktemp... yes\nchecking for pandoc (for manpage)... yes\nchecking for gzip (for manpage)... yes\nchecking for expect (for tests)... yes\nchecking for sleep (for tests)... yes\nconfigure: creating ./config.status\nconfig.status: creating Makefile\n------------------------------------------------------------------------\nmute version 0.1.0\n\nPrefix: /usr/local\nCompiling utilities:\n\nTo build and install, run:\n\n  make \u0026\u0026 make install\n------------------------------------------------------------------------\n$ make \u0026\u0026 make install\npandoc --standalone --from markdown-smart --to man -o man/mute.1 man/mute.1.md\ngzip \u003cman/mute.1 \u003eman/mute.1.gz\n/usr/bin/install -c -d /usr/local/bin\n/usr/bin/install -c -m 755 mute /usr/local/bin\n/usr/bin/install -c -d /usr/local/share/man/man1\n/usr/bin/install -c -m 644 man/mute.1.gz /usr/local/share/man/man1\n```\n\nAs usual, you can use `./configure --prefix` to control the installation prefix.\n\nIf you clone [the repo](https://github.com/mgree/mute), you will need\nto run `autoconf` to generate the `configure` script, which will\ngenerate the `Makefile`.\n\n### Running tests\n\nYou can run the test suite using `./run_tests.sh` or `make test`.\n\n```shellsession\n$ make test\n./run_tests.sh\nRUNNING ALL 17 TESTS FOR mute\n\nSCRIPT TEST force.explicit12.sh:               PASS\n\nSCRIPT TEST force.only1.sh:                    PASS\n\nSCRIPT TEST saved.123.sh:                      PASS\n\nSCRIPT TEST saved.12.sh:                       PASS\n\nSCRIPT TEST error.badpid.sh:                   PASS\n\nSCRIPT TEST force.output.sh:                   PASS\n\nSCRIPT TEST racy.force.implicit12.sh:          PASS\n\nSCRIPT TEST force.names.sh:                    PASS\n\nSCRIPT TEST force.output.append.sh:            PASS\n\nSCRIPT TEST force.implicit12.sh:               PASS\n\nSCRIPT TEST saved.321.sh:                      PASS\n\nEXPECT TEST auto.saved.allttys.exp:            PASS\n\nEXPECT TEST auto.names.exp:                    PASS\n\nEXPECT TEST auto.saved.implicit12.exp:         PASS\n\nEXPECT TEST auto.implicit12.exp:               PASS\n\nEXPECT TEST auto.notty1.implicit12.exp:        PASS\n\nEXPECT TEST auto.explicit12.exp:               PASS\n\nSUMMARY: PASSED 17/17 TESTS, FAILED 0 TESTS\n```\n\nThe `run_tests.sh` script accepts filters on its arguments in case you\nwould like to run a particular test.\n\n### Contributing\n\nAll contributions must be signed off as\n[GPLv3](https://github.com/mgree/mute/blob/main/LICENSE), i.e., a PR\nmust include a `Signed-off-by:` line.\n\nProject-specific lints are run in `run_lints.sh`; PRs that do not pass\nthe linter will not be accepted. If at all possible, PRs should come\nwith tests that confirm the new behavior.\n\n## Version history\n\n+ v0.1.0\n  - Initial release.\n\n## License\n\nThis project is licensed under the GNU General Public License,\nversion 3. See\n[LICENSE](https://raw.githubusercontent.com/mgree/mute/main/LICENSE)\nfor details.\n\nCopyright (c) 2025 Michael Greenberg.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmgree%2Fmute","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmgree%2Fmute","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmgree%2Fmute/lists"}