gitコマンドメモ

はじめに よく使うが、man gitをメモしたいので記事作成。 man gitより引用 GIT(1) Git Manual GIT(1) NAME git - the stupid content tracker SYNOPSIS git [-v | --version] [-h | --help] [-C <path>] [-c <name>=<value>] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path] [-p|--paginate|-P|--no-pager] [--no-replace-objects] [--bare] [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>] [--config-env=<name>=<envvar>] <command> [<args>] DESCRIPTION Git is a fast, scalable, distributed revision control system with an unusually rich command set that provides both high-level operations and full access to internals. See gittutorial(7) to get started, then see giteveryday(7) for a useful minimum set of commands. The Git User’s Manual[1] has a more in-depth introduction. After you mastered the basic concepts, you can come back to this page to learn what commands Git offers. You can learn more about individual Git commands with "git help command". gitcli(7) manual page gives you an overview of the command-line command syntax. A formatted and hyperlinked copy of the latest Git documentation can be viewed at https://git.github.io/htmldocs/git.html or https://git-scm.com/docs. OPTIONS -v, --version Prints the Git suite version that the git program came from. This option is internally converted to git version ... and accepts the same options as the git-version(1) command. If --help is also given, it takes precedence over --version. -h, --help Prints the synopsis and a list of the most commonly used commands. If the option --all or -a is given then all available commands are printed. If a Git command is named this option will bring up the manual page for that command. Other options are available to control how the manual page is displayed. See git-help(1) for more information, because git --help ... is converted internally into git help .... -C <path> Run as if git was started in <path> instead of the current working directory. When multiple -C options are given, each subsequent non-absolute -C <path> is interpreted relative to the preceding -C <path>. If <path> is present but empty, e.g. -C "", then the current working directory is left unchanged. This option affects options that expect path name like --git-dir and --work-tree in that their interpretations of the path names would be made relative to the working directory caused by the -C option. For example the following invocations are equivalent: git --git-dir=a.git --work-tree=b -C c status git --git-dir=c/a.git --work-tree=c/b status -c <name>=<value> Pass a configuration parameter to the command. The value given will override values from configuration files. The <name> is expected in the same format as listed by git config (subkeys separated by dots). Note that omitting the = in git -c foo.bar ... is allowed and sets foo.bar to the boolean true value (just like [foo]bar would in a config file). Including the equals but with an empty value (like git -c foo.bar= ...) sets foo.bar to the empty string which git config --type=bool will convert to false. --config-env=<name>=<envvar> Like -c <name>=<value>, give configuration variable <name> a value, where <envvar> is the name of an environment variable from which to retrieve the value. Unlike -c there is no shortcut for directly setting the value to an empty string, instead the environment variable itself must be set to the empty string. It is an error if the <envvar> does not exist in the environment. <envvar> may not contain an equals sign to avoid ambiguity with <name> containing one. This is useful for cases where you want to pass transitory configuration options to git, but are doing so on operating systems where other processes might be able to read your command line (e.g. /proc/self/cmdline), but not your environment (e.g. /proc/self/environ). That behavior is the default on Linux, but may not be on your system. Note that this might add security for variables such as http.extraHeader where the sensitive information is part of the value, but not e.g. url.<base>.insteadOf where the sensitive information can be part of the key. --exec-path[=<path>] Path to wherever your core Git programs are installed. This can also be controlled by setting the GIT_EXEC_PATH environment variable. If no path is given, git will print the current setting and then exit. --html-path Print the path, without trailing slash, where Git’s HTML documentation is installed and exit. --man-path Print the manpath (see man(1)) for the man pages for this version of Git and exit. --info-path Print the path where the Info files documenting this version of Git are installed and exit. -p, --paginate Pipe all output into less (or if set, $PAGER) if standard output is a terminal. This overrides the pager.<cmd> configuration options (see the "Configuration Mechanism" section below). -P, --no-pager Do not pipe Git output into a pager. --git-dir=<path> Set the path to the repository (".git" directory). This can also be controlled by setting the GIT_DIR environment variable. It can be an absolute path or relative path to current working directory. Specifying the location of the ".git" directory using this option (or GIT_DIR environment variable) turns off the repository discovery that tries to find a directory with ".git" subdirectory (which is how the repository and the top-level of the working tree are discovered), and tells Git that you are at the top level of the working tree. If you are not at the top-level directory of the working tree, you should tell Git where the top-level of the working tree is, with the --work-tree=<path> option (or GIT_WORK_TREE environment variable) If you just want to run git as if it was started in <path> then use git -C <path>. --work-tree=<path> Set the path to the working tree. It can be an absolute path or a path relative to the current working directory. This can also be controlled by setting the GIT_WORK_TREE environment variable and the core.worktree configuration variable (see core.worktree in git-config(1) for a more detailed discussion). --namespace=<path> Set the Git namespace. See gitnamespaces(7) for more details. Equivalent to setting the GIT_NAMESPACE environment variable. --bare Treat the repository as a bare repository. If GIT_DIR environment is not set, it is set to the current working directory. --no-replace-objects Do not use replacement refs to replace Git objects. See git-replace(1) for more information. --literal-pathspecs Treat pathspecs literally (i.e. no globbing, no pathspec magic). This is equivalent to setting the GIT_LITERAL_PATHSPECS environment variable to 1. --glob-pathspecs Add "glob" magic to all pathspec. This is equivalent to setting the GIT_GLOB_PATHSPECS environment variable to 1. Disabling globbing on individual pathspecs can be done using pathspec magic ":(literal)" --noglob-pathspecs Add "literal" magic to all pathspec. This is equivalent to setting the GIT_NOGLOB_PATHSPECS environment variable to 1. Enabling globbing on individual pathspecs can be done using pathspec magic ":(glob)" --icase-pathspecs Add "icase" magic to all pathspec. This is equivalent to setting the GIT_ICASE_PATHSPECS environment variable to 1. --no-optional-locks Do not perform optional operations that require locks. This is equivalent to setting the GIT_OPTIONAL_LOCKS to 0. --list-cmds=group[,group...] List commands by group. This is an internal/experimental option and may change or be removed in the future. Supported groups are: builtins, parseopt (builtin commands that use parse-options), main (all commands in libexec directory), others (all other commands in $PATH that have git- prefix), list-<category> (see categories in command-list.txt), nohelpers (exclude helper commands), alias and config (retrieve command list from config variable completion.commands) --attr-source=<tree-ish> Read gitattributes from <tree-ish> instead of the worktree. See gitattributes(5). This is equivalent to setting the GIT_ATTR_SOURCE environment variable. GIT COMMANDS We divide Git into high level ("porcelain") commands and low level ("plumbing") commands. HIGH-LEVEL COMMANDS (PORCELAIN) We separate the porcelain commands into the main commands and some ancillary user utilities. Main porcelain commands git-add(1) Add file contents to the index. git-am(1) Apply a series of patches from a mailbox. git-archive(1) Create an archive of files from a named tree. git-bisect(1) Use binary search to find the commit that introduced a bug. git-branch(1) List, create, or delete branches. git-bundle(1) Move objects and refs by archive. git-checkout(1) Switch branches or restore working tree files. git-cherry-pick(1) Apply the changes introduced by some existing commits. git-citool(1) Graphical alternative to git-commit. git-clean(1) Remove untracked files from the working tree. git-clone(1) Clone a repository into a new directory. git-commit(1) Record changes to the repository. git-describe(1) Give an object a human readable name based on an available ref. git-diff(1) Show changes between commits, commit and working tree, etc. git-fetch(1) Download objects and refs from another repository. git-format-patch(1) Prepare patches for e-mail submission. git-gc(1) Cleanup unnecessary files and optimize the local repository. git-grep(1) Print lines matching a pattern. git-gui(1) A portable graphical interface to Git. git-init(1) Create an empty Git repository or reinitialize an existing one. git-log(1) Show commit logs. git-maintenance(1) Run tasks to optimize Git repository data. git-merge(1) Join two or more development histories together. git-mv(1) Move or rename a file, a directory, or a symlink. git-notes(1) Add or inspect object notes. git-pull(1) Fetch from and integrate with another repository or a local branch. git-push(1) Update remote refs along with associated objects. git-range-diff(1) Compare two commit ranges (e.g. two versions of a branch). git-rebase(1) Reapply commits on top of another base tip. git-reset(1) Reset current HEAD to the specified state. git-restore(1) Restore working tree files. git-revert(1) Revert some existing commits. git-rm(1) Remove files from the working tree and from the index. git-shortlog(1) Summarize git log output. git-show(1) Show various types of objects. git-sparse-checkout(1) Reduce your working tree to a subset of tracked files. git-stash(1) Stash the changes in a dirty working directory away. git-status(1) Show the working tree status. git-submodule(1) Initialize, update or inspect submodules. git-switch(1) Switch branches. git-tag(1) Create, list, delete or verify a tag object signed with GPG. git-worktree(1) Manage multiple working trees. gitk(1) The Git repository browser. scalar(1) A tool for managing large Git repositories. Ancillary Commands Manipulators: git-config(1) Get and set repository or global options. git-fast-export(1) Git data exporter. git-fast-import(1) Backend for fast Git data importers. git-filter-branch(1) Rewrite branches. git-mergetool(1) Run merge conflict resolution tools to resolve merge conflicts. git-pack-refs(1) Pack heads and tags for efficient repository access. git-prune(1) Prune all unreachable objects from the object database. git-reflog(1) Manage reflog information. git-remote(1) Manage set of tracked repositories. git-repack(1) Pack unpacked objects in a repository. git-replace(1) Create, list, delete refs to replace objects. Interrogators: git-annotate(1) Annotate file lines with commit information. git-blame(1) Show what revision and author last modified each line of a file. git-bugreport(1) Collect information for user to file a bug report. git-count-objects(1) Count unpacked number of objects and their disk consumption. git-diagnose(1) Generate a zip archive of diagnostic information. git-difftool(1) Show changes using common diff tools. git-fsck(1) Verifies the connectivity and validity of the objects in the database. git-help(1) Display help information about Git. git-instaweb(1) Instantly browse your working repository in gitweb. git-merge-tree(1) Perform merge without touching index or working tree. git-rerere(1) Reuse recorded resolution of conflicted merges. git-show-branch(1) Show branches and their commits. git-verify-commit(1) Check the GPG signature of commits. git-verify-tag(1) Check the GPG signature of tags. git-version(1) Display version information about Git. git-whatchanged(1) Show logs with differences each commit introduces. gitweb(1) Git web interface (web frontend to Git repositories). Interacting with Others These commands are to interact with foreign SCM and with other people via patch over e-mail. git-archimport(1) Import a GNU Arch repository into Git. git-cvsexportcommit(1) Export a single commit to a CVS checkout. git-cvsimport(1) Salvage your data out of another SCM people love to hate. git-cvsserver(1) A CVS server emulator for Git. git-imap-send(1) Send a collection of patches from stdin to an IMAP folder. git-p4(1) Import from and submit to Perforce repositories. git-quiltimport(1) Applies a quilt patchset onto the current branch. git-request-pull(1) Generates a summary of pending changes. git-send-email(1) Send a collection of patches as emails. git-svn(1) Bidirectional operation between a Subversion repository and Git. Reset, restore and revert There are three commands with similar names: git reset, git restore and git revert. • git-revert(1) is about making a new commit that reverts the changes made by other commits. • git-restore(1) is about restoring files in the working tree from either the index or another commit. This command does not update your branch. The command can also be used to restore files in the index from another commit. • git-reset(1) is about updating your branch, moving the tip in order to add or remove commits from the branch. This operation changes the commit history. git reset can also be used to restore the index, overlapping with git restore. LOW-LEVEL COMMANDS (PLUMBING) Although Git includes its own porcelain layer, its low-level commands are sufficient to support development of alternative porcelains. Developers of such porcelains might start by reading about git-update-index(1) and git- read-tree(1). The interface (input, output, set of options and the semantics) to these low-level commands are meant to be a lot more stable than Porcelain level commands, because these commands are primarily for scripted use. The interface to Porcelain commands on the other hand are subject to change in order to improve the end user experience. The following description divides the low-level commands into commands that manipulate objects (in the repository, index, and working tree), commands that interrogate and compare objects, and commands that move objects and references between repositories. Manipulation commands git-apply(1) Apply a patch to files and/or to the index. git-checkout-index(1) Copy files from the index to the working tree. git-commit-graph(1) Write and verify Git commit-graph files. git-commit-tree(1) Create a new commit object. git-hash-object(1) Compute object ID and optionally create an object from a file. git-index-pack(1) Build pack index file for an existing packed archive. git-merge-file(1) Run a three-way file merge. git-merge-index(1) Run a merge for files needing merging. git-mktag(1) Creates a tag object with extra validation. git-mktree(1) Build a tree-object from ls-tree formatted text. git-multi-pack-index(1) Write and verify multi-pack-indexes. git-pack-objects(1) Create a packed archive of objects. git-prune-packed(1) Remove extra objects that are already in pack files. git-read-tree(1) Reads tree information into the index. git-symbolic-ref(1) Read, modify and delete symbolic refs. git-unpack-objects(1) Unpack objects from a packed archive. git-update-index(1) Register file contents in the working tree to the index. git-update-ref(1) Update the object name stored in a ref safely. git-write-tree(1) Create a tree object from the current index. Interrogation commands git-cat-file(1) Provide contents or details of repository objects. git-cherry(1) Find commits yet to be applied to upstream. git-diff-files(1) Compares files in the working tree and the index. git-diff-index(1) Compare a tree to the working tree or index. git-diff-tree(1) Compares the content and mode of blobs found via two tree objects. git-for-each-ref(1) Output information on each ref. git-for-each-repo(1) Run a Git command on a list of repositories. git-get-tar-commit-id(1) Extract commit ID from an archive created using git-archive. git-ls-files(1) Show information about files in the index and the working tree. git-ls-remote(1) List references in a remote repository. git-ls-tree(1) List the contents of a tree object. git-merge-base(1) Find as good common ancestors as possible for a merge. git-name-rev(1) Find symbolic names for given revs. git-pack-redundant(1) Find redundant pack files. git-rev-list(1) Lists commit objects in reverse chronological order. git-rev-parse(1) Pick out and massage parameters. git-show-index(1) Show packed archive index. git-show-ref(1) List references in a local repository. git-unpack-file(1) Creates a temporary file with a blob’s contents. git-var(1) Show a Git logical variable. git-verify-pack(1) Validate packed Git archive files. In general, the interrogate commands do not touch the files in the working tree. Syncing repositories git-daemon(1) A really simple server for Git repositories. git-fetch-pack(1) Receive missing objects from another repository. git-http-backend(1) Server side implementation of Git over HTTP. git-send-pack(1) Push objects over Git protocol to another repository. git-update-server-info(1) Update auxiliary info file to help dumb servers. The following are helper commands used by the above; end users typically do not use them directly. git-http-fetch(1) Download from a remote Git repository via HTTP. git-http-push(1) Push objects over HTTP/DAV to another repository. git-receive-pack(1) Receive what is pushed into the repository. git-shell(1) Restricted login shell for Git-only SSH access. git-upload-archive(1) Send archive back to git-archive. git-upload-pack(1) Send objects packed back to git-fetch-pack. Internal helper commands These are internal helper commands used by other commands; end users typically do not use them directly. git-check-attr(1) Display gitattributes information. git-check-ignore(1) Debug gitignore / exclude files. git-check-mailmap(1) Show canonical names and email addresses of contacts. git-check-ref-format(1) Ensures that a reference name is well formed. git-column(1) Display data in columns. git-credential(1) Retrieve and store user credentials. git-credential-cache(1) Helper to temporarily store passwords in memory. git-credential-store(1) Helper to store credentials on disk. git-fmt-merge-msg(1) Produce a merge commit message. git-hook(1) Run git hooks. git-interpret-trailers(1) Add or parse structured information in commit messages. git-mailinfo(1) Extracts patch and authorship from a single e-mail message. git-mailsplit(1) Simple UNIX mbox splitter program. git-merge-one-file(1) The standard helper program to use with git-merge-index. git-patch-id(1) Compute unique ID for a patch. git-sh-i18n(1) Git’s i18n setup code for shell scripts. git-sh-setup(1) Common Git shell script setup code. git-stripspace(1) Remove unnecessary whitespace. GUIDES The following documentation pages are guides about Git concepts. gitcore-tutorial(7) A Git core tutorial for developers. gitcredentials(7) Providing usernames and passwords to Git. gitcvs-migration(7) Git for CVS users. gitdiffcore(7) Tweaking diff output. giteveryday(7) A useful minimum set of commands for Everyday Git. gitfaq(7) Frequently asked questions about using Git. gitglossary(7) A Git Glossary. gitnamespaces(7) Git namespaces. gitremote-helpers(7) Helper programs to interact with remote repositories. gitsubmodules(7) Mounting one repository inside another. gittutorial(7) A tutorial introduction to Git. gittutorial-2(7) A tutorial introduction to Git: part two. gitworkflows(7) An overview of recommended workflows with Git. REPOSITORY, COMMAND AND FILE INTERFACES This documentation discusses repository and command interfaces which users are expected to interact with directly. See --user-formats in git-help(1) for more details on the criteria. gitattributes(5) Defining attributes per path. gitcli(7) Git command-line interface and conventions. githooks(5) Hooks used by Git. gitignore(5) Specifies intentionally untracked files to ignore. gitmailmap(5) Map author/committer names and/or E-Mail addresses. gitmodules(5) Defining submodule properties. gitrepository-layout(5) Git Repository Layout. gitrevisions(7) Specifying revisions and ranges for Git. FILE FORMATS, PROTOCOLS AND OTHER DEVELOPER INTERFACES This documentation discusses file formats, over-the-wire protocols and other git developer interfaces. See --developer-interfaces in git-help(1). gitformat-bundle(5) The bundle file format. gitformat-chunk(5) Chunk-based file formats. gitformat-commit-graph(5) Git commit-graph format. gitformat-index(5) Git index format. gitformat-pack(5) Git pack format. gitformat-signature(5) Git cryptographic signature formats. gitprotocol-capabilities(5) Protocol v0 and v1 capabilities. gitprotocol-common(5) Things common to various protocols. gitprotocol-http(5) Git HTTP-based protocols. gitprotocol-pack(5) How packs are transferred over-the-wire. gitprotocol-v2(5) Git Wire Protocol, Version 2. CONFIGURATION MECHANISM Git uses a simple text format to store customizations that are per repository and are per user. Such a configuration file may look like this: # # A '#' or ';' character indicates a comment. # ; core variables [core] ; Don't trust file modes filemode = false ; user identity [user] name = "Junio C Hamano" email = "[email protected]" Various commands read from the configuration file and adjust their operation accordingly. See git-config(1) for a list and more details about the configuration mechanism. IDENTIFIER TERMINOLOGY <object> Indicates the object name for any type of object. <blob> Indicates a blob object name. <tree> Indicates a tree object name. <commit> Indicates a commit object name. <tree-ish> Indicates a tree, commit or tag object name. A command that takes a <tree-ish> argument ultimately wants to operate on a <tree> object but automatically dereferences <commit> and <tag> objects that point at a <tree>. <commit-ish> Indicates a commit or tag object name. A command that takes a <commit-ish> argument ultimately wants to operate on a <commit> object but automatically dereferences <tag> objects that point at a <commit>. <type> Indicates that an object type is required. Currently one of: blob, tree, commit, or tag. <file> Indicates a filename - almost always relative to the root of the tree structure GIT_INDEX_FILE describes. SYMBOLIC IDENTIFIERS Any Git command accepting any <object> can also use the following symbolic notation: HEAD indicates the head of the current branch. <tag> a valid tag name (i.e. a refs/tags/<tag> reference). <head> a valid head name (i.e. a refs/heads/<head> reference). For a more complete list of ways to spell object names, see "SPECIFYING REVISIONS" section in gitrevisions(7). FILE/DIRECTORY STRUCTURE Please see the gitrepository-layout(5) document. Read githooks(5) for more details about each hook. Higher level SCMs may provide and manage additional information in the $GIT_DIR. TERMINOLOGY Please see gitglossary(7). ENVIRONMENT VARIABLES Various Git commands pay attention to environment variables and change their behavior. The environment variables marked as "Boolean" take their values the same way as Boolean valued configuration variables, e.g. "true", "yes", "on" and positive numbers are taken as "yes". Here are the variables: The Git Repository These environment variables apply to all core Git commands. Nb: it is worth noting that they may be used/overridden by SCMS sitting above Git so take care if using a foreign front-end. GIT_INDEX_FILE This environment variable specifies an alternate index file. If not specified, the default of $GIT_DIR/index is used. GIT_INDEX_VERSION This environment variable specifies what index version is used when writing the index file out. It won’t affect existing index files. By default index file version 2 or 3 is used. See git-update-index(1) for more information. GIT_OBJECT_DIRECTORY If the object storage directory is specified via this environment variable then the sha1 directories are created underneath - otherwise the default $GIT_DIR/objects directory is used. GIT_ALTERNATE_OBJECT_DIRECTORIES Due to the immutable nature of Git objects, old objects can be archived into shared, read-only directories. This variable specifies a ":" separated (on Windows ";" separated) list of Git object directories which can be used to search for Git objects. New objects will not be written to these directories. Entries that begin with " (double-quote) will be interpreted as C-style quoted paths, removing leading and trailing double-quotes and respecting backslash escapes. E.g., the value "path-with-\"-and-:-in-it":vanilla-path has two paths: path-with-"-and-:-in-it and vanilla-path. GIT_DIR If the GIT_DIR environment variable is set then it specifies a path to use instead of the default .git for the base of the repository. The --git-dir command-line option also sets this value. GIT_WORK_TREE Set the path to the root of the working tree. This can also be controlled by the --work-tree command-line option and the core.worktree configuration variable. GIT_NAMESPACE Set the Git namespace; see gitnamespaces(7) for details. The --namespace command-line option also sets this value. GIT_CEILING_DIRECTORIES This should be a colon-separated list of absolute paths. If set, it is a list of directories that Git should not chdir up into while looking for a repository directory (useful for excluding slow-loading network directories). It will not exclude the current working directory or a GIT_DIR set on the command line or in the environment. Normally, Git has to read the entries in this list and resolve any symlink that might be present in order to compare them with the current directory. However, if even this access is slow, you can add an empty entry to the list to tell Git that the subsequent entries are not symlinks and needn’t be resolved; e.g., GIT_CEILING_DIRECTORIES=/maybe/symlink::/very/slow/non/symlink. GIT_DISCOVERY_ACROSS_FILESYSTEM When run in a directory that does not have ".git" repository directory, Git tries to find such a directory in the parent directories to find the top of the working tree, but by default it does not cross filesystem boundaries. This Boolean environment variable can be set to true to tell Git not to stop at filesystem boundaries. Like GIT_CEILING_DIRECTORIES, this will not affect an explicit repository directory set via GIT_DIR or on the command line. GIT_COMMON_DIR If this variable is set to a path, non-worktree files that are normally in $GIT_DIR will be taken from this path instead. Worktree-specific files such as HEAD or index are taken from $GIT_DIR. See gitrepository- layout(5) and git-worktree(1) for details. This variable has lower precedence than other path variables such as GIT_INDEX_FILE, GIT_OBJECT_DIRECTORY... GIT_DEFAULT_HASH If this variable is set, the default hash algorithm for new repositories will be set to this value. This value is ignored when cloning and the setting of the remote repository is always used. The default is "sha1". See --object-format in git-init(1). Git Commits GIT_AUTHOR_NAME The human-readable name used in the author identity when creating commit or tag objects, or when writing reflogs. Overrides the user.name and author.name configuration settings. GIT_AUTHOR_EMAIL The email address used in the author identity when creating commit or tag objects, or when writing reflogs. Overrides the user.email and author.email configuration settings. GIT_AUTHOR_DATE The date used for the author identity when creating commit or tag objects, or when writing reflogs. See git- commit(1) for valid formats. GIT_COMMITTER_NAME The human-readable name used in the committer identity when creating commit or tag objects, or when writing reflogs. Overrides the user.name and committer.name configuration settings. GIT_COMMITTER_EMAIL The email address used in the author identity when creating commit or tag objects, or when writing reflogs. Overrides the user.email and committer.email configuration settings. GIT_COMMITTER_DATE The date used for the committer identity when creating commit or tag objects, or when writing reflogs. See git- commit(1) for valid formats. EMAIL The email address used in the author and committer identities if no other relevant environment variable or configuration setting has been set. Git Diffs GIT_DIFF_OPTS Only valid setting is "--unified=??" or "-u??" to set the number of context lines shown when a unified diff is created. This takes precedence over any "-U" or "--unified" option value passed on the Git diff command line. GIT_EXTERNAL_DIFF When the environment variable GIT_EXTERNAL_DIFF is set, the program named by it is called to generate diffs, and Git does not use its builtin diff machinery. For a path that is added, removed, or modified, GIT_EXTERNAL_DIFF is called with 7 parameters: path old-file old-hex old-mode new-file new-hex new-mode where: <old|new>-file are files GIT_EXTERNAL_DIFF can use to read the contents of <old|new>, <old|new>-hex are the 40-hexdigit SHA-1 hashes, <old|new>-mode are the octal representation of the file modes. The file parameters can point at the user’s working file (e.g. new-file in "git-diff-files"), /dev/null (e.g. old-file when a new file is added), or a temporary file (e.g. old-file in the index). GIT_EXTERNAL_DIFF should not worry about unlinking the temporary file — it is removed when GIT_EXTERNAL_DIFF exits. For a path that is unmerged, GIT_EXTERNAL_DIFF is called with 1 parameter, <path>. For each path GIT_EXTERNAL_DIFF is called, two environment variables, GIT_DIFF_PATH_COUNTER and GIT_DIFF_PATH_TOTAL are set. GIT_DIFF_PATH_COUNTER A 1-based counter incremented by one for every path. GIT_DIFF_PATH_TOTAL The total number of paths. other GIT_MERGE_VERBOSITY A number controlling the amount of output shown by the recursive merge strategy. Overrides merge.verbosity. See git-merge(1) GIT_PAGER This environment variable overrides $PAGER. If it is set to an empty string or to the value "cat", Git will not launch a pager. See also the core.pager option in git-config(1). GIT_PROGRESS_DELAY A number controlling how many seconds to delay before showing optional progress indicators. Defaults to 2. GIT_EDITOR This environment variable overrides $EDITOR and $VISUAL. It is used by several Git commands when, on interactive mode, an editor is to be launched. See also git-var(1) and the core.editor option in git-config(1). GIT_SEQUENCE_EDITOR This environment variable overrides the configured Git editor when editing the todo list of an interactive rebase. See also git-rebase(1) and the sequence.editor option in git-config(1). GIT_SSH, GIT_SSH_COMMAND If either of these environment variables is set then git fetch and git push will use the specified command instead of ssh when they need to connect to a remote system. The command-line parameters passed to the configured command are determined by the ssh variant. See ssh.variant option in git-config(1) for details. $GIT_SSH_COMMAND takes precedence over $GIT_SSH, and is interpreted by the shell, which allows additional arguments to be included. $GIT_SSH on the other hand must be just the path to a program (which can be a wrapper shell script, if additional arguments are needed). Usually it is easier to configure any desired options through your personal .ssh/config file. Please consult your ssh documentation for further details. GIT_SSH_VARIANT If this environment variable is set, it overrides Git’s autodetection whether GIT_SSH/GIT_SSH_COMMAND/core.sshCommand refer to OpenSSH, plink or tortoiseplink. This variable overrides the config setting ssh.variant that serves the same purpose. GIT_SSL_NO_VERIFY Setting and exporting this environment variable to any value tells Git not to verify the SSL certificate when fetching or pushing over HTTPS. GIT_ATTR_SOURCE Sets the treeish that gitattributes will be read from. GIT_ASKPASS If this environment variable is set, then Git commands which need to acquire passwords or passphrases (e.g. for HTTP or IMAP authentication) will call this program with a suitable prompt as command-line argument and read the password from its STDOUT. See also the core.askPass option in git-config(1). GIT_TERMINAL_PROMPT If this Boolean environment variable is set to false, git will not prompt on the terminal (e.g., when asking for HTTP authentication). GIT_CONFIG_GLOBAL, GIT_CONFIG_SYSTEM Take the configuration from the given files instead from global or system-level configuration files. If GIT_CONFIG_SYSTEM is set, the system config file defined at build time (usually /etc/gitconfig) will not be read. Likewise, if GIT_CONFIG_GLOBAL is set, neither $HOME/.gitconfig nor $XDG_CONFIG_HOME/git/config will be read. Can be set to /dev/null to skip reading configuration files of the respective level. GIT_CONFIG_NOSYSTEM Whether to skip reading settings from the system-wide $(prefix)/etc/gitconfig file. This Boolean environment variable can be used along with $HOME and $XDG_CONFIG_HOME to create a predictable environment for a picky script, or you can set it to true to temporarily avoid using a buggy /etc/gitconfig file while waiting for someone with sufficient permissions to fix it. GIT_FLUSH If this environment variable is set to "1", then commands such as git blame (in incremental mode), git rev-list, git log, git check-attr and git check-ignore will force a flush of the output stream after each record have been flushed. If this variable is set to "0", the output of these commands will be done using completely buffered I/O. If this environment variable is not set, Git will choose buffered or record-oriented flushing based on whether stdout appears to be redirected to a file or not. GIT_TRACE Enables general trace messages, e.g. alias expansion, built-in command execution and external command execution. If this variable is set to "1", "2" or "true" (comparison is case insensitive), trace messages will be printed to stderr. If the variable is set to an integer value greater than 2 and lower than 10 (strictly) then Git will interpret this value as an open file descriptor and will try to write the trace messages into this file descriptor. Alternatively, if the variable is set to an absolute path (starting with a / character), Git will interpret this as a file path and will try to append the trace messages to it. Unsetting the variable, or setting it to empty, "0" or "false" (case insensitive) disables trace messages. GIT_TRACE_FSMONITOR Enables trace messages for the filesystem monitor extension. See GIT_TRACE for available trace output options. GIT_TRACE_PACK_ACCESS Enables trace messages for all accesses to any packs. For each access, the pack file name and an offset in the pack is recorded. This may be helpful for troubleshooting some pack-related performance problems. See GIT_TRACE for available trace output options. GIT_TRACE_PACKET Enables trace messages for all packets coming in or out of a given program. This can help with debugging object negotiation or other protocol issues. Tracing is turned off at a packet starting with "PACK" (but see GIT_TRACE_PACKFILE below). See GIT_TRACE for available trace output options. GIT_TRACE_PACKFILE Enables tracing of packfiles sent or received by a given program. Unlike other trace output, this trace is verbatim: no headers, and no quoting of binary data. You almost certainly want to direct into a file (e.g., GIT_TRACE_PACKFILE=/tmp/my.pack) rather than displaying it on the terminal or mixing it with other trace output. Note that this is currently only implemented for the client side of clones and fetches. GIT_TRACE_PERFORMANCE Enables performance related trace messages, e.g. total execution time of each Git command. See GIT_TRACE for available trace output options. GIT_TRACE_REFS Enables trace messages for operations on the ref database. See GIT_TRACE for available trace output options. GIT_TRACE_SETUP Enables trace messages printing the .git, working tree and current working directory after Git has completed its setup phase. See GIT_TRACE for available trace output options. GIT_TRACE_SHALLOW Enables trace messages that can help debugging fetching / cloning of shallow repositories. See GIT_TRACE for available trace output options. GIT_TRACE_CURL Enables a curl full trace dump of all incoming and outgoing data, including descriptive information, of the git transport protocol. This is similar to doing curl --trace-ascii on the command line. See GIT_TRACE for available trace output options. GIT_TRACE_CURL_NO_DATA When a curl trace is enabled (see GIT_TRACE_CURL above), do not dump data (that is, only dump info lines and headers). GIT_TRACE2 Enables more detailed trace messages from the "trace2" library. Output from GIT_TRACE2 is a simple text-based format for human readability. If this variable is set to "1", "2" or "true" (comparison is case insensitive), trace messages will be printed to stderr. If the variable is set to an integer value greater than 2 and lower than 10 (strictly) then Git will interpret this value as an open file descriptor and will try to write the trace messages into this file descriptor. Alternatively, if the variable is set to an absolute path (starting with a / character), Git will interpret this as a file path and will try to append the trace messages to it. If the path already exists and is a directory, the trace messages will be written to files (one per process) in that directory, named according to the last component of the SID and an optional counter (to avoid filename collisions). In addition, if the variable is set to af_unix:[<socket_type>:]<absolute-pathname>, Git will try to open the path as a Unix Domain Socket. The socket type can be either stream or dgram. Unsetting the variable, or setting it to empty, "0" or "false" (case insensitive) disables trace messages. See Trace2 documentation[2] for full details. GIT_TRACE2_EVENT This setting writes a JSON-based format that is suited for machine interpretation. See GIT_TRACE2 for available trace output options and Trace2 documentation[2] for full details. GIT_TRACE2_PERF In addition to the text-based messages available in GIT_TRACE2, this setting writes a column-based format for understanding nesting regions. See GIT_TRACE2 for available trace output options and Trace2 documentation[2] for full details. GIT_TRACE_REDACT By default, when tracing is activated, Git redacts the values of cookies, the "Authorization:" header, the "Proxy-Authorization:" header and packfile URIs. Set this Boolean environment variable to false to prevent this redaction. GIT_LITERAL_PATHSPECS Setting this Boolean environment variable to true will cause Git to treat all pathspecs literally, rather than as glob patterns. For example, running GIT_LITERAL_PATHSPECS=1 git log -- '*.c' will search for commits that touch the path *.c, not any paths that the glob *.c matches. You might want this if you are feeding literal paths to Git (e.g., paths previously given to you by git ls-tree, --raw diff output, etc). GIT_GLOB_PATHSPECS Setting this Boolean environment variable to true will cause Git to treat all pathspecs as glob patterns (aka "glob" magic). GIT_NOGLOB_PATHSPECS Setting this Boolean environment variable to true will cause Git to treat all pathspecs as literal (aka "literal" magic). GIT_ICASE_PATHSPECS Setting this Boolean environment variable to true will cause Git to treat all pathspecs as case-insensitive. GIT_REFLOG_ACTION When a ref is updated, reflog entries are created to keep track of the reason why the ref was updated (which is typically the name of the high-level command that updated the ref), in addition to the old and new values of the ref. A scripted Porcelain command can use set_reflog_action helper function in git-sh-setup to set its name to this variable when it is invoked as the top level command by the end user, to be recorded in the body of the reflog. GIT_REF_PARANOIA If this Boolean environment variable is set to false, ignore broken or badly named refs when iterating over lists of refs. Normally Git will try to include any such refs, which may cause some operations to fail. This is usually preferable, as potentially destructive operations (e.g., git-prune(1)) are better off aborting rather than ignoring broken refs (and thus considering the history they point to as not worth saving). The default value is 1 (i.e., be paranoid about detecting and aborting all operations). You should not normally need to set this to 0, but it may be useful when trying to salvage data from a corrupted repository. GIT_COMMIT_GRAPH_PARANOIA When loading a commit object from the commit-graph, Git performs an existence check on the object in the object database. This is done to avoid issues with stale commit-graphs that contain references to already-deleted commits, but comes with a performance penalty. The default is "true", which enables the aforementioned behavior. Setting this to "false" disables the existence check. This can lead to a performance improvement at the cost of consistency. GIT_ALLOW_PROTOCOL If set to a colon-separated list of protocols, behave as if protocol.allow is set to never, and each of the listed protocols has protocol.<name>.allow set to always (overriding any existing configuration). See the description of protocol.allow in git-config(1) for more details. GIT_PROTOCOL_FROM_USER Set this Boolean environment variable to false to prevent protocols used by fetch/push/clone which are configured to the user state. This is useful to restrict recursive submodule initialization from an untrusted repository or for programs which feed potentially-untrusted URLS to git commands. See git-config(1) for more details. GIT_PROTOCOL For internal use only. Used in handshaking the wire protocol. Contains a colon : separated list of keys with optional values key[=value]. Presence of unknown keys and values must be ignored. Note that servers may need to be configured to allow this variable to pass over some transports. It will be propagated automatically when accessing local repositories (i.e., file:// or a filesystem path), as well as over the git:// protocol. For git-over-http, it should work automatically in most configurations, but see the discussion in git-http-backend(1). For git-over-ssh, the ssh server may need to be configured to allow clients to pass this variable (e.g., by using AcceptEnv GIT_PROTOCOL with OpenSSH). This configuration is optional. If the variable is not propagated, then clients will fall back to the original "v0" protocol (but may miss out on some performance improvements or features). This variable currently only affects clones and fetches; it is not yet used for pushes (but may be in the future). GIT_OPTIONAL_LOCKS If this Boolean environment variable is set to false, Git will complete any requested operation without performing any optional sub-operations that require taking a lock. For example, this will prevent git status from refreshing the index as a side effect. This is useful for processes running in the background which do not want to cause lock contention with other operations on the repository. Defaults to 1. GIT_REDIRECT_STDIN, GIT_REDIRECT_STDOUT, GIT_REDIRECT_STDERR Windows-only: allow redirecting the standard input/output/error handles to paths specified by the environment variables. This is particularly useful in multi-threaded applications where the canonical way to pass standard handles via CreateProcess() is not an option because it would require the handles to be marked inheritable (and consequently every spawned process would inherit them, possibly blocking regular Git operations). The primary intended use case is to use named pipes for communication (e.g. \\.\pipe\my-git-stdin-123). Two special values are supported: off will simply close the corresponding standard handle, and if GIT_REDIRECT_STDERR is 2>&1, standard error will be redirected to the same handle as standard output. GIT_PRINT_SHA1_ELLIPSIS (deprecated) If set to yes, print an ellipsis following an (abbreviated) SHA-1 value. This affects indications of detached HEADs (git-checkout(1)) and the raw diff output (git-diff(1)). Printing an ellipsis in the cases mentioned is no longer considered adequate and support for it is likely to be removed in the foreseeable future (along with the variable). DISCUSSION More detail on the following is available from the Git concepts chapter of the user-manual[3] and gitcore- tutorial(7). A Git project normally consists of a working directory with a ".git" subdirectory at the top level. The .git directory contains, among other things, a compressed object database representing the complete history of the project, an "index" file which links that history to the current contents of the working tree, and named pointers into that history such as tags and branch heads. The object database contains objects of three main types: blobs, which hold file data; trees, which point to blobs and other trees to build up directory hierarchies; and commits, which each reference a single tree and some number of parent commits. The commit, equivalent to what other systems call a "changeset" or "version", represents a step in the project’s history, and each parent represents an immediately preceding step. Commits with more than one parent represent merges of independent lines of development. All objects are named by the SHA-1 hash of their contents, normally written as a string of 40 hex digits. Such names are globally unique. The entire history leading up to a commit can be vouched for by signing just that commit. A fourth object type, the tag, is provided for this purpose. When first created, objects are stored in individual files, but for efficiency may later be compressed together into "pack files". Named pointers called refs mark interesting points in history. A ref may contain the SHA-1 name of an object or the name of another ref. Refs with names beginning ref/head/ contain the SHA-1 name of the most recent commit (or "head") of a branch under development. SHA-1 names of tags of interest are stored under ref/tags/. A special ref named HEAD contains the name of the currently checked-out branch. The index file is initialized with a list of all paths and, for each path, a blob object and a set of attributes. The blob object represents the contents of the file as of the head of the current branch. The attributes (last modified time, size, etc.) are taken from the corresponding file in the working tree. Subsequent changes to the working tree can be found by comparing these attributes. The index may be updated with new content, and new commits may be created from the content stored in the index. The index is also capable of storing multiple entries (called "stages") for a given pathname. These stages are used to hold the various unmerged version of a file when a merge is in progress. FURTHER DOCUMENTATION See the references in the "description" section to get started using Git. The following is probably more detail than necessary for a first-time user. The Git concepts chapter of the user-manual[3] and gitcore-tutorial(7) both provide introductions to the underlying Git architecture. See gitworkflows(7) for an overview of recommended workflows. See also the howto[4] documents for some useful examples. The internals are documented in the Git API documentation[5]. Users migrating from CVS may also want to read gitcvs-migration(7). AUTHORS Git was started by Linus Torvalds, and is currently maintained by Junio C Hamano. Numerous contributions have come from the Git mailing list <[email protected][6]>. http://www.openhub.net/p/git/contributors/summary gives you a more complete list of contributors. If you have a clone of git.git itself, the output of git-shortlog(1) and git-blame(1) can show you the authors for specific parts of the project. REPORTING BUGS Report bugs to the Git mailing list <[email protected][6]> where the development and maintenance is primarily done. You do not have to be subscribed to the list to send a message there. See the list archive at https://lore.kernel.org/git for previous bug reports and other discussions. Issues which are security relevant should be disclosed privately to the Git Security mailing list <[email protected][7]>. SEE ALSO gittutorial(7), gittutorial-2(7), giteveryday(7), gitcvs-migration(7), gitglossary(7), gitcore-tutorial(7), gitcli(7), The Git User’s Manual[1], gitworkflows(7) GIT Part of the git(1) suite NOTES 1. Git User’s Manual file:///usr/share/doc/git/html/user-manual.html 2. Trace2 documentation file:///usr/share/doc/git/html/technical/api-trace2.html 3. Git concepts chapter of the user-manual file:///usr/share/doc/git/html/user-manual.html#git-concepts 4. howto file:///usr/share/doc/git/html/howto-index.html 5. Git API documentation file:///usr/share/doc/git/html/technical/api-index.html 6. [email protected] mailto:[email protected] 7. [email protected] mailto:[email protected] Git 2.43.0 01/13/2025 GIT(1)

March 10, 2025

rubyメモ

はじめに ruby自体は、初めて学習した言語であり今でも一番よく使う言語。 あまり忘れるということもないが、改めて体系的にまとまっているであろうmanページをメモしたいので記事を作る。 man ruby より引用 RUBY(1) Ruby Programmer's Reference Guide RUBY(1) NAME ruby — Interpreted object-oriented scripting language SYNOPSIS ruby [--copyright] [--version] [-SUacdlnpswvy] [-0[octal]] [-C directory] [-E external[:internal]] [-F[pattern]] [-I directory] [-K[c]] [-T[level]] [-W[level]] [-e command] [-i[extension]] [-r library] [-x[directory]] [--{enable|disable}-FEATURE] [--dump=target] [--verbose] [--] [program_file] [argument ...] DESCRIPTION Ruby is an interpreted scripting language for quick and easy object-oriented programming. It has many features to process text files and to do system management tasks (like in Perl). It is simple, straight-forward, and extensi‐ ble. If you want a language for easy object-oriented programming, or you don't like the Perl ugliness, or you do like the concept of LISP, but don't like too many parentheses, Ruby might be your language of choice. FEATURES Ruby's features are as follows: Interpretive Ruby is an interpreted language, so you don't have to recompile programs written in Ruby to execute them. Variables have no type (dynamic typing) Variables in Ruby can contain data of any type. You don't have to worry about variable typing. Conse‐ quently, it has a weaker compile time check. No declaration needed You can use variables in your Ruby programs without any declarations. Variable names denote their scope - global, class, instance, or local. Simple syntax Ruby has a simple syntax influenced slightly from Eiffel. No user-level memory management Ruby has automatic memory management. Objects no longer referenced from anywhere are automatically col‐ lected by the garbage collector built into the interpreter. Everything is an object Ruby is a purely object-oriented language, and was so since its creation. Even such basic data as integers are seen as objects. Class, inheritance, and methods Being an object-oriented language, Ruby naturally has basic features like classes, inheritance, and meth‐ ods. Singleton methods Ruby has the ability to define methods for certain objects. For example, you can define a press-button ac‐ tion for certain widget by defining a singleton method for the button. Or, you can make up your own proto‐ type based object system using singleton methods, if you want to. Mix-in by modules Ruby intentionally does not have the multiple inheritance as it is a source of confusion. Instead, Ruby has the ability to share implementations across the inheritance tree. This is often called a ‘Mix-in’. Iterators Ruby has iterators for loop abstraction. Closures In Ruby, you can objectify the procedure. Text processing and regular expressions Ruby has a bunch of text processing features like in Perl. M17N, character set independent Ruby supports multilingualized programming. Easy to process texts written in many different natural lan‐ guages and encoded in many different character encodings, without dependence on Unicode. Bignums With built-in bignums, you can for example calculate factorial(400). Reflection and domain specific languages Class is also an instance of the Class class. Definition of classes and methods is an expression just as 1+1 is. So your programs can even write and modify programs. Thus you can write your application in your own programming language on top of Ruby. Exception handling As in Java(tm). Direct access to the OS Ruby can use most Unix system calls, often used in system programming. Dynamic loading On most Unix systems, you can load object files into the Ruby interpreter on-the-fly. Rich libraries In addition to the “builtin libraries” and “standard libraries” that are bundled with Ruby, a vast amount of third-party libraries (“gems”) are available via the package management system called ‘RubyGems’, namely the gem(1) command. Visit RubyGems.org (https://rubygems.org/) to find the gems you need, and explore GitHub (https://github.com/) to see how they are being developed and used. OPTIONS The Ruby interpreter accepts the following command-line options (switches). They are quite similar to those of perl(1). --copyright Prints the copyright notice, and quits immediately without running any script. --version Prints the version of the Ruby interpreter, and quits immediately without running any script. -0[octal] (The digit “zero”.) Specifies the input record separator ($/) as an octal number. If no digit is given, the null character is taken as the separator. Other switches may follow the digits. -00 turns Ruby into paragraph mode. -0777 makes Ruby read whole file at once as a single string since there is no legal character with that value. -C directory -X directory Causes Ruby to switch to the directory. -E external[:internal] --encoding external[:internal] Specifies the default value(s) for external encodings and internal encoding. Values should be sepa‐ rated with colon (:). You can omit the one for internal encodings, then the value (Encoding.default_internal) will be nil. --external-encoding=encoding --internal-encoding=encoding Specify the default external or internal character encoding -F pattern Specifies input field separator ($;). -I directory Used to tell Ruby where to load the library scripts. Directory path will be added to the load-path variable ($:). -K kcode Specifies KANJI (Japanese) encoding. The default value for script encodings (__ENCODING__) and external encodings (Encoding.default_external) will be the specified one. kcode can be one of e EUC-JP s Windows-31J (CP932) u UTF-8 n ASCII-8BIT (BINARY) -S Makes Ruby use the PATH environment variable to search for script, unless its name begins with a slash. This is used to emulate #! on machines that don't support it, in the following manner: #! /usr/local/bin/ruby # This line makes the next one a comment in Ruby \ exec /usr/local/bin/ruby -S $0 $* On some systems $0 does not always contain the full pathname, so you need the -S switch to tell Ruby to search for the script if necessary (to handle embedded spaces and such). A better construct than $* would be ${1+"$@"}, but it does not work if the script is being interpreted by csh(1). -T[level=1] Turns on taint checks at the specified level (default 1). -U Sets the default value for internal encodings (Encoding.default_internal) to UTF-8. -W[level=2] Turns on verbose mode at the specified level without printing the version message at the beginning. The level can be; 0 Verbose mode is "silence". It sets the $VERBOSE to nil. 1 Verbose mode is "medium". It sets the $VERBOSE to false. 2 (default) Verbose mode is "verbose". It sets the $VERBOSE to true. -W2 is the same as -w -a Turns on auto-split mode when used with -n or -p. In auto-split mode, Ruby executes $F = $_.split at beginning of each loop. -c Causes Ruby to check the syntax of the script and exit without executing. If there are no syntax er‐ rors, Ruby will print “Syntax OK” to the standard output. -d --debug Turns on debug mode. $DEBUG will be set to true. -e command Specifies script from command-line while telling Ruby not to search the rest of the arguments for a script file name. -h --help Prints a summary of the options. -i extension Specifies in-place-edit mode. The extension, if specified, is added to old file name to make a backup copy. For example: % echo matz > /tmp/junk % cat /tmp/junk matz % ruby -p -i.bak -e '$_.upcase!' /tmp/junk % cat /tmp/junk MATZ % cat /tmp/junk.bak matz -l (The lowercase letter “ell”.) Enables automatic line-ending processing, which means to firstly set $\ to the value of $/, and secondly chops every line read using chomp!. -n Causes Ruby to assume the following loop around your script, which makes it iterate over file name arguments somewhat like sed -n or awk. while gets ... end -p Acts mostly same as -n switch, but print the value of variable $_ at the each end of the loop. For example: % echo matz | ruby -p -e '$_.tr! "a-z", "A-Z"' MATZ -r library Causes Ruby to load the library using require. It is useful when using -n or -p. -s Enables some switch parsing for switches after script name but before any file name arguments (or before a --). Any switches found there are removed from ARGV and set the corresponding variable in the script. For example: #! /usr/local/bin/ruby -s # prints "true" if invoked with `-xyz' switch. print "true\n" if $xyz -v Enables verbose mode. Ruby will print its version at the beginning and set the variable $VERBOSE to true. Some methods print extra messages if this variable is true. If this switch is given, and no other switches are present, Ruby quits after printing its version. -w Enables verbose mode without printing version message at the beginning. It sets the $VERBOSE vari‐ able to true. -x[directory] Tells Ruby that the script is embedded in a message. Leading garbage will be discarded until the first line that starts with “#!” and contains the string, “ruby”. Any meaningful switches on that line will be applied. The end of the script must be specified with either EOF, ^D (control-D), ^Z (control-Z), or the reserved word __END__. If the directory name is specified, Ruby will switch to that directory before executing script. -y --yydebug DO NOT USE. Turns on compiler debug mode. Ruby will print a bunch of internal state messages during compila‐ tion. Only specify this switch you are going to debug the Ruby interpreter. --disable-FEATURE --enable-FEATURE Disables (or enables) the specified FEATURE. --disable-gems --enable-gems Disables (or enables) RubyGems libraries. By default, Ruby will load the latest version of each installed gem. The Gem constant is true if RubyGems is enabled, false if otherwise. --disable-rubyopt --enable-rubyopt Ignores (or considers) the RUBYOPT environment variable. By default, Ruby consid‐ ers the variable. --disable-all --enable-all Disables (or enables) all features. --dump=target Dump some information. Prints the specified target. target can be one of; version version description same as --version usage brief usage message same as -h help Show long help message same as --help syntax check of syntax same as -c --yydebug yydebug compiler debug mode, same as --yydebug Only specify this switch if you are going to debug the Ruby interpreter. parsetree parsetree_with_comment AST nodes tree Only specify this switch if you are going to debug the Ruby interpreter. insns disassembled instructions Only specify this switch if you are going to debug the Ruby interpreter. --verbose Enables verbose mode without printing version message at the beginning. It sets the $VERBOSE vari‐ able to true. If this switch is given, and no script arguments (script file or -e options) are present, Ruby quits immediately. ENVIRONMENT RUBYLIB A colon-separated list of directories that are added to Ruby's library load path ($:). Directories from this environment variable are searched before the standard load path is searched. e.g.: RUBYLIB="$HOME/lib/ruby:$HOME/lib/rubyext" RUBYOPT Additional Ruby options. e.g. RUBYOPT="-w -Ke" Note that RUBYOPT can contain only -d, -E, -I, -K, -r, -T, -U, -v, -w, -W, --debug, --disable-FEATURE and --enable-FEATURE. RUBYPATH A colon-separated list of directories that Ruby searches for Ruby programs when the -S flag is speci‐ fied. This variable precedes the PATH environment variable. RUBYSHELL The path to the system shell command. This environment variable is enabled for only mswin32, mingw32, and OS/2 platforms. If this variable is not defined, Ruby refers to COMSPEC. PATH Ruby refers to the PATH environment variable on calling Kernel#system. And Ruby depends on some RubyGems related environment variables unless RubyGems is disabled. See the help of gem(1) as below. % gem help GC ENVIRONMENT The Ruby garbage collector (GC) tracks objects in fixed-sized slots, but each object may have auxiliary memory al‐ locations handled by the malloc family of C standard library calls ( malloc(3), calloc(3), and realloc(3)). In this documentatation, the "heap" refers to the Ruby object heap of fixed-sized slots, while "malloc" refers to aux‐ iliary allocations commonly referred to as the "process heap". Thus there are at least two possible ways to trig‐ ger GC: 1 Reaching the object limit. 2 Reaching the malloc limit. In Ruby 2.1, the generational GC was introduced and the limits are divided into young and old generations, provid‐ ing two additional ways to trigger a GC: 3 Reaching the old object limit. 4 Reaching the old malloc limit. There are currently 4 possible areas where the GC may be tuned by the following 11 environment variables: RUBY_GC_HEAP_INIT_SLOTS Initial allocation slots. Introduced in Ruby 2.1, default: 10000. RUBY_GC_HEAP_FREE_SLOTS Prepare at least this amount of slots after GC. Allocate this number slots if there are not enough slots. Introduced in Ruby 2.1, default: 4096 RUBY_GC_HEAP_GROWTH_FACTOR Increase allocation rate of heap slots by this factor. Introduced in Ruby 2.1, default: 1.8, minimum: 1.0 (no growth) RUBY_GC_HEAP_GROWTH_MAX_SLOTS Allocation rate is limited to this number of slots, preventing excessive al‐ location due to RUBY_GC_HEAP_GROWTH_FACTOR. Introduced in Ruby 2.1, de‐ fault: 0 (no limit) RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR Perform a full GC when the number of old objects is more than R * N, where R is this factor and N is the number of old objects after the last full GC. Introduced in Ruby 2.1.1, default: 2.0 RUBY_GC_MALLOC_LIMIT The initial limit of young generation allocation from the malloc-family. GC will start when this limit is reached. Default: 16MB RUBY_GC_MALLOC_LIMIT_MAX The maximum limit of young generation allocation from malloc before GC starts. Prevents excessive malloc growth due to RUBY_GC_MAL‐ LOC_LIMIT_GROWTH_FACTOR. Introduced in Ruby 2.1, default: 32MB. RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR Increases the limit of young generation malloc calls, reducing GC frequency but increasing malloc growth until RUBY_GC_MALLOC_LIMIT_MAX is reached. In‐ troduced in Ruby 2.1, default: 1.4, minimum: 1.0 (no growth) RUBY_GC_OLDMALLOC_LIMIT The initial limit of old generation allocation from malloc, a full GC will start when this limit is reached. Introduced in Ruby 2.1, default: 16MB RUBY_GC_OLDMALLOC_LIMIT_MAX The maximum limit of old generation allocation from malloc before a full GC starts. Prevents excessive malloc growth due to RUBY_GC_OLDMAL‐ LOC_LIMIT_GROWTH_FACTOR. Introduced in Ruby 2.1, default: 128MB RUBY_GC_OLDMALLOC_LIMIT_GROWTH_FACTOR Increases the limit of old generation malloc allocation, reducing full GC frequency but increasing malloc growth until RUBY_GC_OLDMALLOC_LIMIT_MAX is reached. Introduced in Ruby 2.1, default: 1.2, minimum: 1.0 (no growth) STACK SIZE ENVIRONMENT Stack size environment variables are implementation-dependent and subject to change with different versions of Ruby. The VM stack is used for pure-Ruby code and managed by the virtual machine. Machine stack is used by the operating system and its usage is dependent on C extensions as well as C compiler options. Using lower values for these may allow applications to keep more Fibers or Threads running; but increases the chance of SystemStackError exceptions and segmentation faults (SIGSEGV). These environment variables are available since Ruby 2.0.0. All values are specified in bytes. RUBY_THREAD_VM_STACK_SIZE VM stack size used at thread creation. default: 524288 (32-bit CPU) or 1048575 (64-bit) RUBY_THREAD_MACHINE_STACK_SIZE Machine stack size used at thread creation. default: 524288 or 1048575 RUBY_FIBER_VM_STACK_SIZE VM stack size used at fiber creation. default: 65536 or 131072 RUBY_FIBER_MACHINE_STACK_SIZE Machine stack size used at fiber creation. default: 262144 or 524288 SEE ALSO https://www.ruby-lang.org/ The official web site. https://www.ruby-toolbox.com/ Comprehensive catalog of Ruby libraries. REPORTING BUGS • Security vulnerabilities should be reported via an email to [email protected]. Reported problems will be published after being fixed. • Other bugs and feature requests can be reported via the Ruby Issue Tracking System (https://bugs.ruby- lang.org/). Do not report security vulnerabilities via this system because it publishes the vulnerabilities immediately. AUTHORS Ruby is designed and implemented by Yukihiro Matsumoto <[email protected]>. See ⟨https://bugs.ruby-lang.org/projects/ruby/wiki/Contributors⟩ for contributors to Ruby. UNIX April 14, 2018 RUBY(1)

March 10, 2025

readelfコマンドメモ

はじめに ELFファイルを読むときに使うが、よく忘れるのでメモ。 よく使うオプション ヘッダだけ表示 readelf --file-header <filepath> 全ての情報を表示 readelf --all <filepath> man readelfより引用 READELF(1) GNU Development Tools READELF(1) NAME readelf - display information about ELF files SYNOPSIS readelf [-a|--all] [-h|--file-header] [-l|--program-headers|--segments] [-S|--section-headers|--sections] [-g|--section-groups] [-t|--section-details] [-e|--headers] [-s|--syms|--symbols] [--dyn-syms|--lto-syms] [--sym-base=[0|8|10|16]] [--demangle=style|--no-demangle] [--quiet] [--recurse-limit|--no-recurse-limit] [-U method|--unicode=method] [-X|--extra-sym-info|--no-extra-sym-info] [-n|--notes] [-r|--relocs] [-u|--unwind] [-d|--dynamic] [-V|--version-info] [-A|--arch-specific] [-D|--use-dynamic] [-L|--lint|--enable-checks] [-x <number or name>|--hex-dump=<number or name>] [-p <number or name>|--string-dump=<number or name>] [-R <number or name>|--relocated-dump=<number or name>] [-z|--decompress] [-c|--archive-index] [-w[lLiaprmfFsoORtUuTgAck]| --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=str-offsets,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index,=addr,=cu_index,=links]] [-wK|--debug-dump=follow-links] [-wN|--debug-dump=no-follow-links] [-wD|--debug-dump=use-debuginfod] [-wE|--debug-dump=do-not-use-debuginfod] [-P|--process-links] [--dwarf-depth=n] [--dwarf-start=n] [--ctf=section] [--ctf-parent=section] [--ctf-symbols=section] [--ctf-strings=section] [--sframe=section] [-I|--histogram] [-v|--version] [-W|--wide] [-T|--silent-truncation] [-H|--help] elffile... DESCRIPTION readelf displays information about one or more ELF format object files. The options control what particular information to display. elffile... are the object files to be examined. 32-bit and 64-bit ELF files are supported, as are archives containing ELF files. This program performs a similar function to objdump but it goes into more detail and it exists independently of the BFD library, so if there is a bug in BFD then readelf will not be affected. OPTIONS The long and short forms of options, shown here as alternatives, are equivalent. At least one option besides -v or -H must be given. -a --all Equivalent to specifying --file-header, --program-headers, --sections, --symbols, --relocs, --dynamic, --notes, --version-info, --arch-specific, --unwind, --section-groups and --histogram. Note - this option does not enable --use-dynamic itself, so if that option is not present on the command line then dynamic symbols and dynamic relocs will not be displayed. -h --file-header Displays the information contained in the ELF header at the start of the file. -l --program-headers --segments Displays the information contained in the file's segment headers, if it has any. --quiet Suppress "no symbols" diagnostic. -S --sections --section-headers Displays the information contained in the file's section headers, if it has any. -g --section-groups Displays the information contained in the file's section groups, if it has any. -t --section-details Displays the detailed section information. Implies -S. -s --symbols --syms Displays the entries in symbol table section of the file, if it has one. If a symbol has version information associated with it then this is displayed as well. The version string is displayed as a suffix to the symbol name, preceded by an @ character. For example foo@VER_1. If the version is the default version to be used when resolving unversioned references to the symbol then it is displayed as a suffix preceded by two @ characters. For example foo@@VER_2. --dyn-syms Displays the entries in dynamic symbol table section of the file, if it has one. The output format is the same as the format used by the --syms option. --lto-syms Displays the contents of any LTO symbol tables in the file. --sym-base=[0|8|10|16] Forces the size field of the symbol table to use the given base. Any unrecognized options will be treated as 0. --sym-base=0 represents the default and legacy behaviour. This will output sizes as decimal for numbers less than 100000. For sizes 100000 and greater hexadecimal notation will be used with a 0x prefix. --sym-base=8 will give the symbol sizes in octal. --sym-base=10 will always give the symbol sizes in decimal. --sym-base=16 will always give the symbol sizes in hexadecimal with a 0x prefix. -C --demangle[=style] Decode (demangle) low-level symbol names into user-level names. This makes C++ function names readable. Different compilers have different mangling styles. The optional demangling style argument can be used to choose an appropriate demangling style for your compiler. --no-demangle Do not demangle low-level symbol names. This is the default. --recurse-limit --no-recurse-limit --recursion-limit --no-recursion-limit Enables or disables a limit on the amount of recursion performed whilst demangling strings. Since the name mangling formats allow for an infinite level of recursion it is possible to create strings whose decoding will exhaust the amount of stack space available on the host machine, triggering a memory fault. The limit tries to prevent this from happening by restricting recursion to 2048 levels of nesting. The default is for this limit to be enabled, but disabling it may be necessary in order to demangle truly complicated names. Note however that if the recursion limit is disabled then stack exhaustion is possible and any bug reports about such an event will be rejected. -U [d|i|l|e|x|h] --unicode=[default|invalid|locale|escape|hex|highlight] Controls the display of non-ASCII characters in identifier names. The default (--unicode=locale or --unicode=default) is to treat them as multibyte characters and display them in the current locale. All other versions of this option treat the bytes as UTF-8 encoded values and attempt to interpret them. If they cannot be interpreted or if the --unicode=invalid option is used then they are displayed as a sequence of hex bytes, encloses in curly parethesis characters. Using the --unicode=escape option will display the characters as as unicode escape sequences (\uxxxx). Using the --unicode=hex will display the characters as hex byte sequences enclosed between angle brackets. Using the --unicode=highlight will display the characters as unicode escape sequences but it will also highlighted them in red, assuming that colouring is supported by the output device. The colouring is intended to draw attention to the presence of unicode sequences when they might not be expected. -X --extra-sym-info When displaying details of symbols, include extra information not normally presented. Currently this just adds the name of the section referenced by the symbol's index field, if there is one. In the future more information may be displayed when this option is enabled. Enabling this option effectively enables the --wide option as well, at least when displaying symbol information. --no-extra-sym-info Disables the effect of the --extra-sym-info option. This is the default. -e --headers Display all the headers in the file. Equivalent to -h -l -S. -n --notes Displays the contents of the NOTE segments and/or sections, if any. -r --relocs Displays the contents of the file's relocation section, if it has one. -u --unwind Displays the contents of the file's unwind section, if it has one. Only the unwind sections for IA64 ELF files, as well as ARM unwind tables (".ARM.exidx" / ".ARM.extab") are currently supported. If support is not yet implemented for your architecture you could try dumping the contents of the .eh_frames section using the --debug-dump=frames or --debug-dump=frames-interp options. -d --dynamic Displays the contents of the file's dynamic section, if it has one. -V --version-info Displays the contents of the version sections in the file, it they exist. -A --arch-specific Displays architecture-specific information in the file, if there is any. -D --use-dynamic When displaying symbols, this option makes readelf use the symbol hash tables in the file's dynamic section, rather than the symbol table sections. When displaying relocations, this option makes readelf display the dynamic relocations rather than the static relocations. -L --lint --enable-checks Displays warning messages about possible problems with the file(s) being examined. If used on its own then all of the contents of the file(s) will be examined. If used with one of the dumping options then the warning messages will only be produced for the things being displayed. -x <number or name> --hex-dump=<number or name> Displays the contents of the indicated section as a hexadecimal bytes. A number identifies a particular section by index in the section table; any other string identifies all sections with that name in the object file. -R <number or name> --relocated-dump=<number or name> Displays the contents of the indicated section as a hexadecimal bytes. A number identifies a particular section by index in the section table; any other string identifies all sections with that name in the object file. The contents of the section will be relocated before they are displayed. -p <number or name> --string-dump=<number or name> Displays the contents of the indicated section as printable strings. A number identifies a particular section by index in the section table; any other string identifies all sections with that name in the object file. -z --decompress Requests that the section(s) being dumped by x, R or p options are decompressed before being displayed. If the section(s) are not compressed then they are displayed as is. -c --archive-index Displays the file symbol index information contained in the header part of binary archives. Performs the same function as the t command to ar, but without using the BFD library. -w[lLiaprmfFsOoRtUuTgAckK] --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=str-offsets,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index,=addr,=cu_index,=links,=follow-links] Displays the contents of the DWARF debug sections in the file, if any are present. Compressed debug sections are automatically decompressed (temporarily) before they are displayed. If one or more of the optional letters or words follows the switch then only those type(s) of data will be dumped. The letters and words refer to the following information: "a" "=abbrev" Displays the contents of the .debug_abbrev section. "A" "=addr" Displays the contents of the .debug_addr section. "c" "=cu_index" Displays the contents of the .debug_cu_index and/or .debug_tu_index sections. "f" "=frames" Display the raw contents of a .debug_frame section. "F" "=frames-interp" Display the interpreted contents of a .debug_frame section. "g" "=gdb_index" Displays the contents of the .gdb_index and/or .debug_names sections. "i" "=info" Displays the contents of the .debug_info section. Note: the output from this option can also be restricted by the use of the --dwarf-depth and --dwarf-start options. "k" "=links" Displays the contents of the .gnu_debuglink, .gnu_debugaltlink and .debug_sup sections, if any of them are present. Also displays any links to separate dwarf object files (dwo), if they are specified by the DW_AT_GNU_dwo_name or DW_AT_dwo_name attributes in the .debug_info section. "K" "=follow-links" Display the contents of any selected debug sections that are found in linked, separate debug info file(s). This can result in multiple versions of the same debug section being displayed if it exists in more than one file. In addition, when displaying DWARF attributes, if a form is found that references the separate debug info file, then the referenced contents will also be displayed. Note - in some distributions this option is enabled by default. It can be disabled via the N debug option. The default can be chosen when configuring the binutils via the --enable-follow-debug-links=yes or --enable-follow-debug-links=no options. If these are not used then the default is to enable the following of debug links. Note - if support for the debuginfod protocol was enabled when the binutils were built then this option will also include an attempt to contact any debuginfod servers mentioned in the DEBUGINFOD_URLS environment variable. This could take some time to resolve. This behaviour can be disabled via the =do-not-use-debuginfod debug option. "N" "=no-follow-links" Disables the following of links to separate debug info files. "D" "=use-debuginfod" Enables contacting debuginfod servers if there is a need to follow debug links. This is the default behaviour. "E" "=do-not-use-debuginfod" Disables contacting debuginfod servers when there is a need to follow debug links. "l" "=rawline" Displays the contents of the .debug_line section in a raw format. "L" "=decodedline" Displays the interpreted contents of the .debug_line section. "m" "=macro" Displays the contents of the .debug_macro and/or .debug_macinfo sections. "o" "=loc" Displays the contents of the .debug_loc and/or .debug_loclists sections. "O" "=str-offsets" Displays the contents of the .debug_str_offsets section. "p" "=pubnames" Displays the contents of the .debug_pubnames and/or .debug_gnu_pubnames sections. "r" "=aranges" Displays the contents of the .debug_aranges section. "R" "=Ranges" Displays the contents of the .debug_ranges and/or .debug_rnglists sections. "s" "=str" Displays the contents of the .debug_str, .debug_line_str and/or .debug_str_offsets sections. "t" "=pubtype" Displays the contents of the .debug_pubtypes and/or .debug_gnu_pubtypes sections. "T" "=trace_aranges" Displays the contents of the .trace_aranges section. "u" "=trace_abbrev" Displays the contents of the .trace_abbrev section. "U" "=trace_info" Displays the contents of the .trace_info section. Note: displaying the contents of .debug_static_funcs, .debug_static_vars and debug_weaknames sections is not currently supported. --dwarf-depth=n Limit the dump of the ".debug_info" section to n children. This is only useful with --debug-dump=info. The default is to print all DIEs; the special value 0 for n will also have this effect. With a non-zero value for n, DIEs at or deeper than n levels will not be printed. The range for n is zero-based. --dwarf-start=n Print only DIEs beginning with the DIE numbered n. This is only useful with --debug-dump=info. If specified, this option will suppress printing of any header information and all DIEs before the DIE numbered n. Only siblings and children of the specified DIE will be printed. This can be used in conjunction with --dwarf-depth. -P --process-links Display the contents of non-debug sections found in separate debuginfo files that are linked to the main file. This option automatically implies the -wK option, and only sections requested by other command line options will be displayed. --ctf[=section] Display the contents of the specified CTF section. CTF sections themselves contain many subsections, all of which are displayed in order. By default, display the name of the section named .ctf, which is the name emitted by ld. --ctf-parent=member If the CTF section contains ambiguously-defined types, it will consist of an archive of many CTF dictionaries, all inheriting from one dictionary containing unambiguous types. This member is by default named .ctf, like the section containing it, but it is possible to change this name using the "ctf_link_set_memb_name_changer" function at link time. When looking at CTF archives that have been created by a linker that uses the name changer to rename the parent archive member, --ctf-parent can be used to specify the name used for the parent. --ctf-symbols=section --ctf-strings=section Specify the name of another section from which the CTF file can inherit strings and symbols. By default, the ".symtab" and its linked string table are used. If either of --ctf-symbols or --ctf-strings is specified, the other must be specified as well. -I --histogram Display a histogram of bucket list lengths when displaying the contents of the symbol tables. -v --version Display the version number of readelf. -W --wide Don't break output lines to fit into 80 columns. By default readelf breaks section header and segment listing lines for 64-bit ELF files, so that they fit into 80 columns. This option causes readelf to print each section header resp. each segment one a single line, which is far more readable on terminals wider than 80 columns. -T --silent-truncation Normally when readelf is displaying a symbol name, and it has to truncate the name to fit into an 80 column display, it will add a suffix of "[...]" to the name. This command line option disables this behaviour, allowing 5 more characters of the name to be displayed and restoring the old behaviour of readelf (prior to release 2.35). -H --help Display the command-line options understood by readelf. @file Read command-line options from file. The options read are inserted in place of the original @file option. If file does not exist, or cannot be read, then the option will be treated literally, and not removed. Options in file are separated by whitespace. A whitespace character may be included in an option by surrounding the entire option in either single or double quotes. Any character (including a backslash) may be included by prefixing the character to be included with a backslash. The file may itself contain additional @file options; any such options will be processed recursively. SEE ALSO objdump(1), and the Info entries for binutils. COPYRIGHT Copyright (c) 1991-2024 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". binutils-2.42 2025-02-05 READELF(1)

March 8, 2025

gpgコマンドメモ

はじめに rvmでrubyをインストールしようとしたところ実行要求されたコマンドにgpg2コマンドが含まれていたので学習メモ。 そもそも、GnuPGがあり、それのバージョンとして2系があり、これがgpg2として新しいコマンドになっているみたい。 しかし、それも今は昔、今ではgpgコマンドが2系として提供されていることが多い。 手元のUbuntuでは、逆にgpg2コマンドがgpgコマンドへのエイリアスになっていた。 gpgコマンド自体は用意されている。 which gpg /usr/bin/gpg 今でも、gpg2コマンド自体は用意されている。 which gpg2 /usr/bin/gpg2 ただし、それはgpgコマンドへのエイリアスになっている。 which gpg2 lrwxrwxrwx 1 root root 3 Apr 7 2024 /usr/bin/gpg2 -> gpg gpgのバージョンは2系。 gpg --version gpg (GnuPG) 2.4.4 libgcrypt 1.10.3 Copyright (C) 2024 g10 Code GmbH License GNU GPL-3.0-or-later <https://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Home: /home/ubuntu/.gnupg Supported algorithms: Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256 Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224 Compression: Uncompressed, ZIP, ZLIB, BZIP2 gpg2のバージョンももちろん2系(エイリアスなので、0番目のコマンドライン引数に依存してなければ結果は同じになるはず)。 ...

March 6, 2025

rvm学習メモ

はじめに rvmコマンドについてよく忘れるのでメモする。 気づいたこと rvm は、デフォルトでOpenSSLとリンクしない。 rvm reinstall ruby-3.1.0 --with-openssl で、opensslと一緒にビルドできる(manにない…)。 ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION' で、rubyがopensslを利用可能な状態かわかる。 RVM コマンド チートシート 1. RVM とは RVM (Ruby Version Manager) は、Ruby のバージョン管理ツール。 複数の Ruby バージョンをインストール・切り替えでき、プロジェクトごとに異なるバージョンを使用可能。 2. RVM のインストール コマンド 説明 \curl -sSL https://get.rvm.io | bash -s stable RVM のインストール source ~/.rvm/scripts/rvm RVM の環境を適用 3. Ruby のインストール・管理 コマンド 説明 rvm list known インストール可能な Ruby のバージョン一覧を表示 rvm install 3.2.0 指定した Ruby バージョンをインストール rvm uninstall 3.1.0 指定した Ruby バージョンをアンインストール rvm list インストール済みの Ruby バージョン一覧を表示 rvm use 3.2.0 指定した Ruby バージョンを使用 rvm --default use 3.2.0 デフォルトの Ruby バージョンを設定 rvm current 現在使用中の Ruby バージョンを表示 4. Gemset の管理 コマンド 説明 rvm gemset list 現在の Ruby バージョンの Gemset を一覧表示 rvm gemset create mygemset Gemset を作成 rvm gemset use mygemset 指定した Gemset を使用 rvm --default gemset use mygemset デフォルトの Gemset を設定 rvm gemset delete mygemset 指定した Gemset を削除 5. プロジェクトごとの Ruby バージョン設定 コマンド 説明 echo "3.2.0" > .ruby-version プロジェクトディレクトリで Ruby バージョンを指定 echo "mygemset" > .ruby-gemset プロジェクトディレクトリで Gemset を指定 rvm use . .ruby-version と .ruby-gemset を適用 6. RVM の更新・削除 コマンド 説明 rvm get stable RVM を最新の安定版に更新 rvm reload RVM の設定をリロード rvm implode RVM を完全に削除 7. まとめ RVM は Ruby のバージョンを柔軟に管理できる Gemset を活用するとプロジェクトごとに独立した環境を構築できる .ruby-version や .ruby-gemset を設定すると、プロジェクトごとに自動でバージョンが切り替わる RVM を適切に活用し、開発環境を整理しよう! ...

March 6, 2025

nvim学習メモ

はじめに よく忘れるのでメモ。 私の環境はastronvimなので、これについても書く。 レジスタを見る コマンド 内容 :registers(:reg) レジスタの一覧を見る :echo @a 特定のレジスタの値を見る registers の読み方 "<register名>: レジスタ名 ダブルクォートのあとにレジスタ名がある。 Type Name Content c "" aaa l "0 bbb^J … … … Typeの意味 Type 意味 c 文字(Character) l 行(Line) b ブロック(Block) レジスタの値に含まれる、^Jは何? 改行。行単位でレジスタに入っている場合、基本的に含まれる。 nvimでは、\nが^Jで表現されるらしい。 また、astronvimにおいては、"を押すとregisters一覧が見られる。 このときには、改行文字は消されて表示される。 レジスタの名前ごとの役割 レジスタは名前と役割が対応している。下記に示す。 レジスタ一覧 レジスタ 役割 説明 " (無名レジスタ) デフォルト yank (y), delete (d), change (c) の操作で自動的に使用される 0 最新のヤンク 直近の yank (y) でコピーされたテキスト 1~9 削除履歴 delete (d), change (c) で削除されたテキストが保存される (1 が最新) a~z 名前付き マクロ用。"ay や "ap のように指定して使用可能。追記 ("A など大文字) も可能 * クリップボード (X11) X11 の PRIMARY クリップボード (選択テキスト) + クリップボード X11 の CLIPBOARD または Windows/macOS のシステムクリップボード - 小レジスタ 短い削除テキストを保存 (行をまたがない削除・変更) . 最後に挿入したテキスト 直前の i/a/o で挿入したテキスト % 現在のファイル名 カレントバッファのファイル名を取得 : コマンド履歴 直近の Ex コマンド (: で実行したコマンド) # 代替ファイル名 CTRL-^ で切り替えられる直前のバッファのファイル名 = 式レジスタ "=3+4 のように入力して計算結果を取得 _ ブラックホール /dev/null のようなもの。ここに保存するとテキストが完全に破棄される 実験で気づいたこと [や!などの存在しないレジスタ名をペーストすると、無名レジスタの値が利用される 一方、#レジスタの値がないときに#レジスタの値をペーストしようとするとエラーが出る ddやccで行削除した値は、ちゃんと1-9のレジスタにLILOで、入っていくのに、sやdiw、ciwなどだと無名レジスタや-レジスタに入るだけ、履歴は保存されない。 Type=cのレジスタは、値の途中に^Jが入ることがない。 Type=bのレジスタは、値の途中に^Jが入る場合はあるが、最後に入ることはない。 :putおよびインサートモードの<Ctrl>-rの場合、珍しくレジスタを指定する際に"をつける必要がない。 +にWindows/macOSとあるが、Ubuntuでも同様に動作した。 自分のUbuntu環境の場合、基本的に*は空であった。 d$で消した場合は、Type=cでレジスタに保存される(最後の改行は消されないし、レジスタに保存もされない)。 ビジュアルブロックモードで削除した場合、blockとして削除履歴に保存される。 式レジスタ(=)の使い方 "= を押して式レジスタに設定したい値を入力。エンターで決定。 ...

March 5, 2025

manコマンドメモ

はじめに man の使い方をメモ 例 man 3 strncpy これは、C標準ライブラリのLinux実装(つまり、glibc実装)。 https://man7.org/linux/man-pages/man3/strncpy.3.html man manより引用 MAN(1) Manual pager utils MAN(1) NAME man - an interface to the system reference manuals SYNOPSIS man [man options] [[section] page ...] ... man -k [apropos options] regexp ... man -K [man options] [section] term ... man -f [whatis options] page ... man -l [man options] file ... man -w|-W [man options] page ... DESCRIPTION man is the system's manual pager. Each page argument given to man is normally the name of a program, utility or function. The manual page associated with each of these arguments is then found and displayed. A section, if provided, will direct man to look only in that section of the manual. The default action is to search in all of the available sections following a pre-defined order (see DEFAULTS), and to show only the first page found, even if page exists in several sections. The table below shows the section numbers of the manual followed by the types of pages they contain. 1 Executable programs or shell commands 2 System calls (functions provided by the kernel) 3 Library calls (functions within program libraries) 4 Special files (usually found in /dev) 5 File formats and conventions, e.g. /etc/passwd 6 Games 7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7), man-pages(7) 8 System administration commands (usually only for root) 9 Kernel routines [Non standard] A manual page consists of several sections. Conventional section names include NAME, SYNOPSIS, CONFIGURATION, DESCRIPTION, OPTIONS, EXIT STATUS, RETURN VALUE, ERRORS, ENVIRONMENT, FILES, VERSIONS, STANDARDS, NOTES, BUGS, EXAMPLE, AUTHORS, and SEE ALSO. The following conventions apply to the SYNOPSIS section and can be used as a guide in other sections. bold text type exactly as shown. italic text replace with appropriate argument. [-abc] any or all arguments within [ ] are optional. -a|-b options delimited by | cannot be used together. argument ... argument is repeatable. [expression] ... entire expression within [ ] is repeatable. Exact rendering may vary depending on the output device. For instance, man will usually not be able to render italics when running in a terminal, and will typically use underlined or coloured text instead. The command or function illustration is a pattern that should match all possible invocations. In some cases it is advisable to illus‐ trate several exclusive invocations as is shown in the SYNOPSIS section of this manual page. EXAMPLES man ls Display the manual page for the item (program) ls. man man.7 Display the manual page for macro package man from section 7. (This is an alternative spelling of "man 7 man".) man 'man(7)' Display the manual page for macro package man from section 7. (This is another alternative spelling of "man 7 man". It may be more convenient when copying and pasting cross-references to manual pages. Note that the parentheses must normally be quoted to protect them from the shell.) man -a intro Display, in succession, all of the available intro manual pages contained within the manual. It is possible to quit between suc‐ cessive displays or skip any of them. man -t bash | lpr -Pps Format the manual page for bash into the default troff or groff format and pipe it to the printer named ps. The default output for groff is usually PostScript. man --help should advise as to which processor is bound to the -t option. man -l -Tdvi ./foo.1x.gz > ./foo.1x.dvi This command will decompress and format the nroff source manual page ./foo.1x.gz into a device independent (dvi) file. The redi‐ rection is necessary as the -T flag causes output to be directed to stdout with no pager. The output could be viewed with a pro‐ gram such as xdvi or further processed into PostScript using a program such as dvips. man -k printf Search the short descriptions and manual page names for the keyword printf as regular expression. Print out any matches. Equiva‐ lent to apropos printf. man -f smail Lookup the manual pages referenced by smail and print out the short descriptions of any found. Equivalent to whatis smail. OVERVIEW Many options are available to man in order to give as much flexibility as possible to the user. Changes can be made to the search path, section order, output processor, and other behaviours and operations detailed below. If set, various environment variables are interrogated to determine the operation of man. It is possible to set the "catch-all" vari‐ able $MANOPT to any string in command line format, with the exception that any spaces used as part of an option's argument must be es‐ caped (preceded by a backslash). man will parse $MANOPT prior to parsing its own command line. Those options requiring an argument will be overridden by the same options found on the command line. To reset all of the options set in $MANOPT, -D can be specified as the initial command line option. This will allow man to "forget" about the options specified in $MANOPT, although they must still have been valid. Manual pages are normally stored in nroff(1) format under a directory such as /usr/share/man. In some installations, there may also be preformatted cat pages to improve performance. See manpath(5) for details of where these files are stored. This package supports manual pages in multiple languages, controlled by your locale. If your system did not set this up for you auto‐ matically, then you may need to set $LC_MESSAGES, $LANG, or another system-dependent environment variable to indicate your preferred locale, usually specified in the POSIX format: <language>[_<territory>[.<character-set>[,<version>]]] If the desired page is available in your locale, it will be displayed in lieu of the standard (usually American English) page. If you find that the translations supplied with this package are not available in your native language and you would like to supply them, please contact the maintainer who will be coordinating such activity. Individual manual pages are normally written and maintained by the maintainers of the program, function, or other topic that they docu‐ ment, and are not included with this package. If you find that a manual page is missing or inadequate, please report that to the main‐ tainers of the package in question. For information regarding other features and extensions available with this manual pager, please read the documents supplied with the package. DEFAULTS The order of sections to search may be overridden by the environment variable $MANSECT or by the SECTION directive in /etc/manpath.con‐ fig. By default it is as follows: 1 n l 8 3 0 2 3type 3posix 3pm 3perl 3am 5 4 9 6 7 The formatted manual page is displayed using a pager. This can be specified in a number of ways, or else will fall back to a default (see option -P for details). The filters are deciphered by a number of means. Firstly, the command line option -p or the environment variable $MANROFFSEQ is inter‐ rogated. If -p was not used and the environment variable was not set, the initial line of the nroff file is parsed for a preprocessor string. To contain a valid preprocessor string, the first line must resemble '\" <string> where string can be any combination of letters described by option -p below. If none of the above methods provide any filter information, a default set is used. A formatting pipeline is formed from the filters and the primary formatter (nroff or [tg]roff with -t) and executed. Alternatively, if an executable program mandb_nfmt (or mandb_tfmt with -t) exists in the man tree root, it is executed instead. It gets passed the man‐ ual source file, the preprocessor string, and optionally the device specified with -T or -E as arguments. OPTIONS Non-argument options that are duplicated either on the command line, in $MANOPT, or both, are not harmful. For options that require an argument, each duplication will override the previous argument value. General options -C file, --config-file=file Use this user configuration file rather than the default of ~/.manpath. -d, --debug Print debugging information. -D, --default This option is normally issued as the very first option and resets man's behaviour to its default. Its use is to reset those options that may have been set in $MANOPT. Any options that follow -D will have their usual effect. --warnings[=warnings] Enable warnings from groff. This may be used to perform sanity checks on the source text of manual pages. warnings is a comma- separated list of warning names; if it is not supplied, the default is "mac". To disable a groff warning, prefix it with "!": for example, --warnings=mac,!break enables warnings in the "mac" category and disables warnings in the "break" category. See the “Warnings” node in info groff for a list of available warning names. Main modes of operation -f, --whatis Approximately equivalent to whatis. Display a short description from the manual page, if available. See whatis(1) for details. -k, --apropos Approximately equivalent to apropos. Search the short manual page descriptions for keywords and display any matches. See apro‐ pos(1) for details. -K, --global-apropos Search for text in all manual pages. This is a brute-force search, and is likely to take some time; if you can, you should specify a section to reduce the number of pages that need to be searched. Search terms may be simple strings (the default), or regular expressions if the --regex option is used. Note that this searches the sources of the manual pages, not the rendered text, and so may include false positives due to things like comments in source files, or false negatives due to things like hyphens being written as "\-" in source files. Searching the rendered text would be much slower. -l, --local-file Activate "local" mode. Format and display local manual files instead of searching through the system's manual collection. Each manual page argument will be interpreted as an nroff source file in the correct format. No cat file is produced. If '-' is listed as one of the arguments, input will be taken from stdin. If this option is not used, then man will also fall back to interpreting manual page arguments as local file names if the argu‐ ment contains a "/" character, since that is a good indication that the argument refers to a path on the file system. -w, --where, --path, --location Don't actually display the manual page, but do print the location of the source nroff file that would be formatted. If the -a option is also used, then print the locations of all source files that match the search criteria. -W, --where-cat, --location-cat Don't actually display the manual page, but do print the location of the preformatted cat file that would be displayed. If the -a option is also used, then print the locations of all preformatted cat files that match the search criteria. If -w and -W are both used, then print both source file and cat file separated by a space. If all of -w, -W, and -a are used, then do this for each possible match. -c, --catman This option is not for general use and should only be used by the catman program. -R encoding, --recode=encoding Instead of formatting the manual page in the usual way, output its source converted to the specified encoding. If you already know the encoding of the source file, you can also use manconv(1) directly. However, this option allows you to convert several manual pages to a single encoding without having to explicitly state the encoding of each, provided that they were already in‐ stalled in a structure similar to a manual page hierarchy. Consider using man-recode(1) instead for converting multiple manual pages, since it has an interface designed for bulk conver‐ sion and so can be much faster. Finding manual pages -L locale, --locale=locale man will normally determine your current locale by a call to the C function setlocale(3) which interrogates various environment variables, possibly including $LC_MESSAGES and $LANG. To temporarily override the determined value, use this option to supply a locale string directly to man. Note that it will not take effect until the search for pages actually begins. Output such as the help message will always be displayed in the initially determined locale. -m system[,...], --systems=system[,...] If this system has access to other operating systems' manual pages, they can be accessed using this option. To search for a manual page from NewOS's manual page collection, use the option -m NewOS. The system specified can be a combination of comma delimited operating system names. To include a search of the native operat‐ ing system's manual pages, include the system name man in the argument string. This option will override the $SYSTEM environ‐ ment variable. -M path, --manpath=path Specify an alternate manpath to use. By default, man uses manpath derived code to determine the path to search. This option overrides the $MANPATH environment variable and causes option -m to be ignored. A path specified as a manpath must be the root of a manual page hierarchy structured into sections as described in the man-db manual (under "The manual page system"). To view manual pages outside such hierarchies, see the -l option. -S list, -s list, --sections=list The given list is a colon- or comma-separated list of sections, used to determine which manual sections to search and in what order. This option overrides the $MANSECT environment variable. (The -s spelling is for compatibility with System V.) -e sub-extension, --extension=sub-extension Some systems incorporate large packages of manual pages, such as those that accompany the Tcl package, into the main manual page hierarchy. To get around the problem of having two manual pages with the same name such as exit(3), the Tcl pages were usually all assigned to section l. As this is unfortunate, it is now possible to put the pages in the correct section, and to assign a specific "extension" to them, in this case, exit(3tcl). Under normal operation, man will display exit(3) in preference to exit(3tcl). To negotiate this situation and to avoid having to know which section the page you require resides in, it is now possible to give man a sub-extension string indicating which package the page must belong to. Using the above example, supply‐ ing the option -e tcl to man will restrict the search to pages having an extension of *tcl. -i, --ignore-case Ignore case when searching for manual pages. This is the default. -I, --match-case Search for manual pages case-sensitively. --regex Show all pages with any part of either their names or their descriptions matching each page argument as a regular expression, as with apropos(1). Since there is usually no reasonable way to pick a "best" page when searching for a regular expression, this option implies -a. --wildcard Show all pages with any part of either their names or their descriptions matching each page argument using shell-style wild‐ cards, as with apropos(1) --wildcard. The page argument must match the entire name or description, or match on word boundaries in the description. Since there is usually no reasonable way to pick a "best" page when searching for a wildcard, this option implies -a. --names-only If the --regex or --wildcard option is used, match only page names, not page descriptions, as with whatis(1). Otherwise, no ef‐ fect. -a, --all By default, man will exit after displaying the most suitable manual page it finds. Using this option forces man to display all the manual pages with names that match the search criteria. -u, --update This option causes man to update its database caches of installed manual pages. This is only needed in rare situations, and it is normally better to run mandb(8) instead. --no-subpages By default, man will try to interpret pairs of manual page names given on the command line as equivalent to a single manual page name containing a hyphen or an underscore. This supports the common pattern of programs that implement a number of subcommands, allowing them to provide manual pages for each that can be accessed using similar syntax as would be used to invoke the subcom‐ mands themselves. For example: $ man -aw git diff /usr/share/man/man1/git-diff.1.gz To disable this behaviour, use the --no-subpages option. $ man -aw --no-subpages git diff /usr/share/man/man1/git.1.gz /usr/share/man/man3/Git.3pm.gz /usr/share/man/man1/diff.1.gz Controlling formatted output -P pager, --pager=pager Specify which output pager to use. By default, man uses pager, falling back to cat if pager is not found or is not executable. This option overrides the $MANPAGER environment variable, which in turn overrides the $PAGER environment variable. It is not used in conjunction with -f or -k. The value may be a simple command name or a command with arguments, and may use shell quoting (backslashes, single quotes, or double quotes). It may not use pipes to connect multiple commands; if you need that, use a wrapper script, which may take the file to display either as an argument or on standard input. -r prompt, --prompt=prompt If a recent version of less is used as the pager, man will attempt to set its prompt and some sensible options. The default prompt looks like Manual page name(sec) line x where name denotes the manual page name, sec denotes the section it was found under and x the current line number. This is achieved by using the $LESS environment variable. Supplying -r with a string will override this default. The string may contain the text $MAN_PN which will be expanded to the name of the current manual page and its section name surrounded by "(" and ")". The string used to produce the default could be expressed as \ Manual\ page\ \$MAN_PN\ ?ltline\ %lt?L/%L.: byte\ %bB?s/%s..?\ (END):?pB\ %pB\\%.. (press h for help or q to quit) It is broken into three lines here for the sake of readability only. For its meaning see the less(1) manual page. The prompt string is first evaluated by the shell. All double quotes, back-quotes and backslashes in the prompt must be escaped by a pre‐ ceding backslash. The prompt string may end in an escaped $ which may be followed by further options for less. By default man sets the -ix8 options. The $MANLESS environment variable described below may be used to set a default prompt string if none is supplied on the command line. -7, --ascii When viewing a pure ascii(7) manual page on a 7 bit terminal or terminal emulator, some characters may not display correctly when using the latin1(7) device description with GNU nroff. This option allows pure ascii manual pages to be displayed in ascii with the latin1 device. It will not translate any latin1 text. The following table shows the translations performed: some parts of it may only be displayed properly when using GNU nroff's latin1(7) device. Description Octal latin1 ascii ───────────────────────────────────────────── continuation hyphen 255 ‐ - bullet (middle dot) 267 • o acute accent 264 ´ ' multiplication sign 327 × x If the latin1 column displays correctly, your terminal may be set up for latin1 characters and this option is not necessary. If the latin1 and ascii columns are identical, you are reading this page using this option or man did not format this page using the latin1 device description. If the latin1 column is missing or corrupt, you may need to view manual pages with this option. This option is ignored when using options -t, -H, -T, or -Z and may be useless for nroff other than GNU's. -E encoding, --encoding=encoding Generate output for a character encoding other than the default. For backward compatibility, encoding may be an nroff device such as ascii, latin1, or utf8 as well as a true character encoding such as UTF-8. --no-hyphenation, --nh Normally, nroff will automatically hyphenate text at line breaks even in words that do not contain hyphens, if it is necessary to do so to lay out words on a line without excessive spacing. This option disables automatic hyphenation, so words will only be hyphenated if they already contain hyphens. If you are writing a manual page and simply want to prevent nroff from hyphenating a word at an inappropriate point, do not use this option, but consult the nroff documentation instead; for instance, you can put "\%" inside a word to indicate that it may be hyphenated at that point, or put "\%" at the start of a word to prevent it from being hyphenated. --no-justification, --nj Normally, nroff will automatically justify text to both margins. This option disables full justification, leaving justified only to the left margin, sometimes called "ragged-right" text. If you are writing a manual page and simply want to prevent nroff from justifying certain paragraphs, do not use this option, but consult the nroff documentation instead; for instance, you can use the ".na", ".nf", ".fi", and ".ad" requests to temporar‐ ily disable adjusting and filling. -p string, --preprocessor=string Specify the sequence of preprocessors to run before nroff or troff/groff. Not all installations will have a full set of pre‐ processors. Some of the preprocessors and the letters used to designate them are: eqn (e), grap (g), pic (p), tbl (t), vgrind (v), refer (r). This option overrides the $MANROFFSEQ environment variable. zsoelim is always run as the very first preproces‐ sor. -t, --troff Use groff -mandoc to format the manual page to stdout. This option is not required in conjunction with -H, -T, or -Z. -T[device], --troff-device[=device] This option is used to change groff (or possibly troff's) output to be suitable for a device other than the default. It implies -t. Examples (provided with Groff-1.17) include dvi, latin1, ps, utf8, X75 and X100. -H[browser], --html[=browser] This option will cause groff to produce HTML output, and will display that output in a web browser. The choice of browser is determined by the optional browser argument if one is provided, by the $BROWSER environment variable, or by a compile-time de‐ fault if that is unset (usually lynx). This option implies -t, and will only work with GNU troff. -X[dpi], --gxditview[=dpi] This option displays the output of groff in a graphical window using the gxditview program. The dpi (dots per inch) may be 75, 75-12, 100, or 100-12, defaulting to 75; the -12 variants use a 12-point base font. This option implies -T with the X75, X75-12, X100, or X100-12 device respectively. -Z, --ditroff groff will run troff and then use an appropriate post-processor to produce output suitable for the chosen device. If groff -mandoc is groff, this option is passed to groff and will suppress the use of a post-processor. It implies -t. Getting help -?, --help Print a help message and exit. --usage Print a short usage message and exit. -V, --version Display version information. EXIT STATUS 0 Successful program execution. 1 Usage, syntax or configuration file error. 2 Operational error. 3 A child process returned a non-zero exit status. 16 At least one of the pages/files/keywords didn't exist or wasn't matched. ENVIRONMENT MANPATH If $MANPATH is set, its value is used as the path to search for manual pages. See the SEARCH PATH section of manpath(5) for the default behaviour and details of how this environment variable is handled. MANROFFOPT Every time man invokes the formatter (nroff, troff, or groff), it adds the contents of $MANROFFOPT to the formatter's command line. MANROFFSEQ If $MANROFFSEQ is set, its value is used to determine the set of preprocessors to pass each manual page through. The default preprocessor list is system dependent. MANSECT If $MANSECT is set, its value is a colon-delimited list of sections and it is used to determine which manual sections to search and in what order. The default is "1 n l 8 3 0 2 3type 3posix 3pm 3perl 3am 5 4 9 6 7", unless overridden by the SECTION direc‐ tive in /etc/manpath.config. MANPAGER, PAGER If $MANPAGER or $PAGER is set ($MANPAGER is used in preference), its value is used as the name of the program used to display the manual page. By default, pager is used, falling back to cat if pager is not found or is not executable. The value may be a simple command name or a command with arguments, and may use shell quoting (backslashes, single quotes, or double quotes). It may not use pipes to connect multiple commands; if you need that, use a wrapper script, which may take the file to display either as an argument or on standard input. MANLESS If $MANLESS is set, its value will be used as the default prompt string for the less pager, as if it had been passed using the -r option (so any occurrences of the text $MAN_PN will be expanded in the same way). For example, if you want to set the prompt string unconditionally to “my prompt string”, set $MANLESS to ‘-Psmy prompt string’. Using the -r option overrides this envi‐ ronment variable. BROWSER If $BROWSER is set, its value is a colon-delimited list of commands, each of which in turn is used to try to start a web browser for man --html. In each command, %s is replaced by a filename containing the HTML output from groff, %% is replaced by a single percent sign (%), and %c is replaced by a colon (:). SYSTEM If $SYSTEM is set, it will have the same effect as if it had been specified as the argument to the -m option. MANOPT If $MANOPT is set, it will be parsed prior to man's command line and is expected to be in a similar format. As all of the other man specific environment variables can be expressed as command line options, and are thus candidates for being included in $MANOPT it is expected that they will become obsolete. N.B. All spaces that should be interpreted as part of an option's argu‐ ment must be escaped. MANWIDTH If $MANWIDTH is set, its value is used as the line length for which manual pages should be formatted. If it is not set, manual pages will be formatted with a line length appropriate to the current terminal (using the value of $COLUMNS, and ioctl(2) if available, or falling back to 80 characters if neither is available). Cat pages will only be saved when the default formatting can be used, that is when the terminal line length is between 66 and 80 characters. MAN_KEEP_FORMATTING Normally, when output is not being directed to a terminal (such as to a file or a pipe), formatting characters are discarded to make it easier to read the result without special tools. However, if $MAN_KEEP_FORMATTING is set to any non-empty value, these formatting characters are retained. This may be useful for wrappers around man that can interpret formatting characters. MAN_KEEP_STDERR Normally, when output is being directed to a terminal (usually to a pager), any error output from the command used to produce formatted versions of manual pages is discarded to avoid interfering with the pager's display. Programs such as groff often produce relatively minor error messages about typographical problems such as poor alignment, which are unsightly and generally confusing when displayed along with the manual page. However, some users want to see them anyway, so, if $MAN_KEEP_STDERR is set to any non-empty value, error output will be displayed as usual. MAN_DISABLE_SECCOMP On Linux, man normally confines subprocesses that handle untrusted data using a seccomp(2) sandbox. This makes it safer to run complex parsing code over arbitrary manual pages. If this goes wrong for some reason unrelated to the content of the page being displayed, you can set $MAN_DISABLE_SECCOMP to any non-empty value to disable the sandbox. PIPELINE_DEBUG If the $PIPELINE_DEBUG environment variable is set to "1", then man will print debugging messages to standard error describing each subprocess it runs. LANG, LC_MESSAGES Depending on system and implementation, either or both of $LANG and $LC_MESSAGES will be interrogated for the current message locale. man will display its messages in that locale (if available). See setlocale(3) for precise details. FILES /etc/manpath.config man-db configuration file. /usr/share/man A global manual page hierarchy. STANDARDS POSIX.1-2001, POSIX.1-2008, POSIX.1-2017. SEE ALSO apropos(1), groff(1), less(1), manpath(1), nroff(1), troff(1), whatis(1), zsoelim(1), manpath(5), man(7), catman(8), mandb(8) Documentation for some packages may be available in other formats, such as info(1) or HTML. HISTORY 1990, 1991 – Originally written by John W. Eaton ([email protected]). Dec 23 1992: Rik Faith ([email protected]) applied bug fixes supplied by Willem Kasdorp ([email protected]). 30th April 1994 – 23rd February 2000: Wilf. ([email protected]) has been developing and maintaining this package with the help of a few dedicated people. 30th October 1996 – 30th March 2001: Fabrizio Polacco <[email protected]> maintained and enhanced this package for the Debian project, with the help of all the community. 31st March 2001 – present day: Colin Watson <[email protected]> is now developing and maintaining man-db. BUGS https://gitlab.com/man-db/man-db/-/issues https://savannah.nongnu.org/bugs/?group=man-db 2.12.0 2023-09-23 MAN(1)

March 3, 2025

astronvim学習メモ

はじめに astronvimについて、メモ。 nvimと2ページできてしまっているので、そのうち整理する。 AstroNvim コード編集チートシート 公式チートシート https://docs.astronvim.com/mappings 1. AstroNvimとは AstroNvim は、Neovim をベースにした高度にカスタマイズ可能なモダンな IDE スタイルの設定。 LSP、Treesitter、Telescope などを統合し、快適な開発環境を提供する。 2. 基本的なキーバインド ファイル操作 キーバインド 説明 <leader> f f ファイル検索 (Telescope find_files) <leader> f g ファイル内容検索 (Telescope live_grep) <leader> f r 最近開いたファイル (Telescope oldfiles) <leader> e ファイルエクスプローラー (nvim-tree) コード編集 キーバインド 説明 <leader> c a コードアクション (LSP code action) <leader> c r 変数リネーム (LSP rename) <leader> c f フォーマット (LSP format) <leader> c o インポート整理 (LSP organize imports) 移動 キーバインド 説明 gd 定義へジャンプ (LSP go to definition) gD 宣言へジャンプ (LSP go to declaration) gr 参照を検索 (LSP references) gi 実装を検索 (LSP go to implementation) <C-d> / <C-u> 半ページスクロール (下/上) バッファ管理 キーバインド 説明 <leader> b n 新しいバッファを作成 <leader> b d 現在のバッファを削除 <Tab> / <S-Tab> バッファ間を移動 ターミナル キーバインド 説明 <leader> t t ターミナルを開く (toggleterm) <leader> t h ターミナルを水平方向に開く <leader> t v ターミナルを垂直方向に開く Git キーバインド 説明 <leader> g g Git ステータス (LazyGit) <leader> g b Git ブランチ (Telescope git_branches) <leader> g c Git コミット履歴 (Telescope git_commits) デバッグ (DAP) キーバインド 説明 <leader> d b ブレークポイントをトグル <leader> d r デバッガー開始 (DAP start) <leader> d s ステップ実行 (DAP step) 3. まとめ AstroNvim は、デフォルトで多くの機能を備えており、カスタマイズも容易。 LSP、Telescope、Git、DAP などの統合により、効率的なコード編集が可能。 主要なキーバインドを覚えることで、快適な Neovim 開発環境を構築できる。 ...

March 3, 2025

socket学習メモ

はじめに ソケット通信について学習したことをメモ。 ソケット通信の概要 1. ソケット通信とは ソケット通信とは、ネットワークを介してプロセス間通信(IPC)を行うための仕組み。 TCP/IP プロトコルを使用してデータを送受信することが一般的。 socket, bindなどのインターフェースはPOSIXレベルで定義されている。 2. ソケットの種類 ソケットの種類 説明 ストリームソケット (SOCK_STREAM) TCP に基づくソケット。信頼性のある通信を提供。 データグラムソケット (SOCK_DGRAM) UDP に基づくソケット。接続レスで高速な通信を提供。 RAWソケット (SOCK_RAW) IP パケットレベルの通信を行う低レベルのソケット。 シーケンスパケットソケット (SOCK_SEQPACKET) メッセージ指向で順序制御された通信を提供。 3. ソケット通信の基本フロー (TCP) サーバー側 ソケット作成 (socket()) アドレスとポートのバインド (bind()) クライアントからの接続待機 (listen()) 接続受け入れ (accept()) データの送受信 (send(), recv()) 接続の終了 (close()) クライアント側 ソケット作成 (socket()) サーバーへ接続 (connect()) データの送受信 (send(), recv()) 接続の終了 (close()) 各メソッドのイメージ(サーバー側) socket ソケットの作成。ソケットは、Linux上の位置(filepathやIPアドレス+ポートのような)は指定しないで作成。 Linux関数の返り値は、file descriptor。 つまり、書き込んだり読み込んだりできるもの。 Linuxの提供するsocket関数のインターフェースは下記。 int socket(int domain, int type, int protocol); 具体的な通信の方式は、domain, type, protocolのタプルに対して定義されるが、protocolはほぼ1固定なので、domainとtypeのタプルで決まる。 ...

March 3, 2025

unameコマンドメモ

はじめに たまに使うので、メモ。 コマンド名はunix nameが由来らしい。 uname コマンド チートシート 概要 uname コマンドは、Linux システムのカーネルやアーキテクチャ情報を取得するためのツール。 使用例 一般的な情報取得 コマンド 説明 uname -sオプションと同じ uname -s カーネルの名前を表示 uname -n ホスト名を表示 uname -r カーネルのリリースバージョンを表示 uname -v カーネルのバージョン情報を表示 uname -m マシンのハードウェアアーキテクチャを表示 uname -p プロセッサの種類を表示 (利用可能な場合) uname -i ハードウェアのプラットフォームを表示 (利用可能な場合) uname -o OS の名前を表示 すべての情報を一括表示 コマンド 説明 uname -a すべての情報を表示 (-s -n -r -v -m -p -i -o を含む) まとめ uname コマンドは、システム情報の確認に便利なツール。特に uname -a を使うことで、すべての関連情報を一度に取得できる。 man unameより引用 UNAME(1) User Commands UNAME(1) NAME uname - print system information SYNOPSIS uname [OPTION]... DESCRIPTION Print certain system information. With no OPTION, same as -s. -a, --all print all information, in the following order, except omit -p and -i if unknown: -s, --kernel-name print the kernel name -n, --nodename print the network node hostname -r, --kernel-release print the kernel release -v, --kernel-version print the kernel version -m, --machine print the machine hardware name -p, --processor print the processor type (non-portable) -i, --hardware-platform print the hardware platform (non-portable) -o, --operating-system print the operating system --help display this help and exit --version output version information and exit AUTHOR Written by David MacKenzie. REPORTING BUGS GNU coreutils online help: <https://www.gnu.org/software/coreutils/> Report any translation bugs to <https://translationproject.org/team/> COPYRIGHT Copyright © 2023 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. SEE ALSO arch(1), uname(2) Full documentation <https://www.gnu.org/software/coreutils/uname> or available locally via: info '(coreutils) uname invocation' GNU coreutils 9.4 April 2024 UNAME(1)

March 2, 2025