From 5aaf1eb2e028da270210574b2b6867ba3f0c0426 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83=E2=84=A2?= <398188662@qq.com> Date: Thu, 3 May 2018 00:21:01 +0800 Subject: [PATCH 0001/1126] Update git.md --- command/git.md | 980 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 979 insertions(+), 1 deletion(-) diff --git a/command/git.md b/command/git.md index 37db9622460..58738ae714a 100644 --- a/command/git.md +++ b/command/git.md @@ -113,5 +113,983 @@ $ git clone ftp[s]://example.com/path/to/repo.git/ $ git clone rsync://example.com/path/to/repo.git/ ``` +## 配置 - \ No newline at end of file +首先是配置帐号信息 `ssh -T git@github.com` 测试。 + +## 修改项目中的个人信息 + +```bash +git help config # 获取帮助信息,查看修改个人信息的参数 +git config --global user.name "小弟调调" # 修改全局名字 +git config --global user.email "wowohoo@qq.com" # 修改全局邮箱 +git config --list # 查看配置的信息 +``` + +### 配置自动换行 + +自动转换坑太大,提交到git是自动将换行符转换为lf + +```bash +git config --global core.autocrlf input +``` + +## 常见使用场景 + +### 创建SSH密钥 + +这个密钥用来跟 github 通信,在本地终端里生成然后上传到 github + +```bash +ssh-keygen -t rsa -C 'wowohoo@qq.com' # 生成密钥 +ssh-keygen -t rsa -C "wowohoo@qq.com" -f ~/.ssh/ww_rsa # 指定生成目录文件名字 +ssh -T git@github.com # 测试是否成功 +``` + +### 多账号ssh配置 + +**1.生成指定名字的密钥** + +`ssh-keygen -t rsa -C "邮箱地址" -f ~/.ssh/jslite_rsa` +会生成 `jslite_rsa` 和 `jslite_rsa.pub` 这两个文件 + +**2.密钥复制到托管平台上** + +`vim ~/.ssh/jslite_rsa.pub` +打开公钥文件 `jslite_rsa.pub` ,并把内容复制至代码托管平台上 + +**3.修改config文件** + +`vim ~/.ssh/config` #修改config文件,如果没有创建 `config` + +```shell +Host jslite.github.com + HostName github.com + User git + IdentityFile ~/.ssh/jslite_rsa + +Host work.github.com + HostName github.com + # Port 服务器open-ssh端口(默认:22,默认时一般不写此行) + # PreferredAuthentications 配置登录时用什么权限认证 + # publickey|password publickey|keyboard-interactive等 + User git + IdentityFile ~/.ssh/work_rsa +``` + +- `Host` 这里是个别名可以随便命名 +- `HostName` 一般是网站如:`git@ss.github.com:username/repo.git` 填写 `github.com` +- `User` 通常填写`git` +- `IdentityFile` 使用的公钥文件地址 + +**4.测试** + +```bash +ssh -T git@jslite.github.com # `@`后面跟上定义的Host +ssh -T work.github.com # 通过别名测试 +ssh -i ~/公钥文件地址 Host别名 # 如 ssh -i ~/.ssh/work_rsa work.github.com +``` + +**5.使用** + +```bash +# 原来的写法 +git clone git@github.com:/learngit.git +# 现在的写法 +git clone git@jslite.github.com:/learngit.git +git clone git@work.github.com:/learngit.git +``` + +**5.注意** + +如果你修改了id_rsa的名字,你需要将ssh key添加到SSH agent中,如: + +```bash +ssh-add ~/.ssh/jslite_rsa +ssh-add -l # 查看所有的key +ssh-add -D # 删除所有的key +ssh-add -d ~/.ssh/jslite_rsa # 删除指定的key +``` + +### 免密码登录远程服务器 + +```bash +$ ssh-keygen -t rsa -P '' -f ~/.ssh/aliyunserver.key +$ ssh-copy-id -i ~/.ssh/aliyunserver.key.pub root@192.168.182.112 # 这里需要输入密码一次 +``` + +编辑 `~/.ssh/config` + +```bash +Host aliyun1 + HostName 192.168.182.112 + User root + PreferredAuthentications publickey + IdentityFile ~/.ssh/aliyunserver.key +``` + +上面配置完了,可以通过命令登录,不需要输入IP地址和密码 `ssh aliyun1` + +### https协议下提交代码免密码 + +```bash +git clone https://github.com/username/rep.git +``` + +通过上面方式克隆可能需要密码,解决办法:进入当前克隆的项目 `vi rep/.git/config` 编辑 `config`, 按照下面方式修改,你就可以提交代码不用输入密码了。 + +```diff +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true + ignorecase = true + precomposeunicode = true +[remote "origin"] +- url = https://github.com/username/rep.git ++ url = https://用户名:密码@github.com/username/rep.git + fetch = +refs/heads/*:refs/remotes/origin/* +[branch "master"] + remote = origin + merge = refs/heads/master +``` + +### 文件推向3个git库 + +**1. 增加3个远程库地址** + +```shell +git remote add origin https://github.com/JSLite/JSLite.git +git remote set-url --add origin https://gitlab.com/wang/JSLite.js.git +git remote set-url --add origin https://oschina.net/wang/JSLite.js.git +``` + +**2. 删除其中一个 set-url 地址** + +```shell +usage: git remote set-url [--push] [] + or: git remote set-url --add + or: git remote set-url --delete +``` + +`git remote set-url --delete origin https://oschina.net/wang/JSLite.js.git` + +**3.推送代码** + +```bash +git push origin master +git push -f origin master # 强制推送 +``` + +**4.拉代码** + +只能拉取 `origin` 里的一个url地址,这个fetch-url +默认为你添加的到 `origin`的第一个地址 + +```shell +git pull origin master +git pull --all # 获取远程所有内容包括tag +git pull origin next:master # 取回origin主机的next分支,与本地的master分支合并 +git pull origin next # 远程分支是与当前分支合并 + +# 上面一条命令等同于下面两条命令 +git fetch origin +git merge origin/next +``` + +如果远程主机删除了某个分支,默认情况下,git pull 不会在拉取远程分支的时候,删除对应的本地分支。这是为了防止,由于其他人操作了远程主机,导致git pull不知不觉删除了本地分支。 +但是,你可以改变这个行为,加上参数 -p 就会在本地删除远程已经删除的分支。 + +```shell +$ git pull -p +# 等同于下面的命令 +$ git fetch --prune origin +$ git fetch -p +``` + +**5.更改pull** + +只需要更改config文件里,那三个url的顺序即可,fetch-url会直接对应排行第一的那个utl连接。 + + +### 修改远程仓库地址 + +```bash +git remote remove origin # 删除该远程路径 +git remote add origin git@jslite.github.com:JSLite/JSLite.git # 添加远程路径 +``` + +### 撤销远程记录 + +```shell +git reset --hard HEAD~1 # 撤销一条记录 +git push -f origin HEAD:master # 同步到远程仓库 +``` + +### 放弃本地的文件修改 + +```shell +git reset --hard FETCH_HEAD # FETCH_HEAD表示上一次成功git pull之后形成的commit点。然后git pull +``` + +`git reset --hard FETCH_HEAD` 出现错误 + +```bash +git pull +You are not currently on a branch, so I cannot use any +'branch..merge' in your configuration file. +Please specify which remote branch you want to use on the command +line and try again (e.g. 'git pull '). +See git-pull(1) FOR details. +``` + +解决方法: + +```bash +git checkout -b temp # 新建+切换到temp分支 +git checkout master +``` + +### 最简单放弃本地修改内容 + +```bash +# 如果有的修改以及加入暂存区的话 +git reset --hard +# 还原所有修改,不会删除新增的文件 +git checkout . +# 下面命令会删除新增的文件 +git clean -xdf +``` + +通过存储暂存区stash,在删除暂存区的方法放弃本地修改。 + +```bash +git stash && git stash drop +``` + +### 回滚到某个commit提交 + +```shell +git revert HEAD~1 # 撤销一条记录 会弹出 commit 编辑 +git push # 提交回滚 +``` + + +### 回退到某一个版本 + +```bash +git reset --hard +# 例如 git reset --hard a3hd73r +# --hard代表丢弃工作区的修改,让工作区与版本代码一模一样,与之对应, +# --soft参数代表保留工作区的修改。 +``` + +### 去掉某个commit + +```bash +# 实质是新建了一个与原来完全相反的commit,抵消了原来commit的效果 +git revert +``` + +### 新建一个空分支 + +```bash +# 这种方式新建的分支(gh-pages)是没有 commit 记录的 +git checkout --orphan gh-pages +# 删除新建的gh-pages分支原本的内容,如果不删除,提交将作为当前分支的第一个commit +git rm -rf . +# 查看一下状态 有可能上面一条命令,没有删除还没有提交的的文件 +git state +``` + +### 合并多个commit + +```bash +# 这个命令,将最近4个commit合并为1个,HEAD代表当前版本。 +# 将进入VIM界面,你可以修改提交信息。 +git rebase -i HEAD~4 +# 可以看到其中分为两个部分,上方未注释的部分是填写要执行的指令, +# 而下方注释的部分则是指令的提示说明。指令部分中由前方的命令名称、commit hash 和 commit message 组成 +# 当前我们只要知道 pick 和 squash 这两个命令即可。 +# --> pick 的意思是要会执行这个 commit +# --> squash 的意思是这个 commit 会被合并到前一个commit + +# 我们将 需要保留的 这个 commit 前方的命令改成 squash 或 s,然后输入:wq以保存并退出 +# 这是我们会看到 commit message 的编辑界面 + +# 其中, 非注释部分就是两次的 commit message, 你要做的就是将这两个修改成新的 commit message。 +# +# 输入wq保存并推出, 再次输入git log查看 commit 历史信息,你会发现这两个 commit 已经合并了。 +# 将修改强制推送到前端 +git push -f origin master +``` + +### 修改远程Commit记录 + +```bash +git commit --amend +# amend只能修改没有提交到线上的,最后一次commit记录 +git rebase -i HEAD~3 +# 表示要修改当前版本的倒数第三次状态 +# 将要更改的记录行首单词 pick 改为 edit +pick 96dc3f9 doc: Update quick-start.md +pick f1cce8a test(Transition):Add transition test (#47) +pick 6293516 feat(Divider): Add Divider component. +# Rebase eeb03a4..6293516 onto eeb03a4 (3 commands) +# +# Commands: +# p, pick = use commit +# r, reword = use commit, but edit the commit message +# e, edit = use commit, but stop for amending +# s, squash = use commit, but meld into previous commit +# f, fixup = like "squash", but discard this commit's log message +# x, exec = run command (the rest of the line) using shell +# d, drop = remove commit +``` + +保存并退出,会弹出下面提示 + +```bash +# You can amend the commit now, with +# +# git commit --amend +# +# Once you are satisfied with your changes, run +# +# git rebase --continue + +# 通过这条命令进入编辑页面更改commit,保存退出 +git commit --amend +# 保存退出确认修改,继续执行 rebase, +git rebase --continue +# 如果修改多条记录反复执行上面两条命令直到完成所有修改 + +# 最后,确保别人没有提交进行push,最好不要加 -f 强制推送 +git push -f origin master +``` + + + +### 添加忽略文件 + +``` +echo node_modules/ >> .gitignore +``` + +### 利用commit关闭一个issue + +这个功能在Github上可以玩儿,Gitlab上特别老的版本不能玩儿哦,那么如何跟随着commit关闭一个issue呢? 在confirm merge的时候可以使用一下命令来关闭相关issue: + +`fixes #xxx`、 `fixed #xxx`、 `fix #xxx`、 `closes #xxx`、 `close #xxx`、 `closed #xxx`、 + +### 同步fork的上游仓库 + +[Github教程同步fork教程](https://help.github.com/articles/syncing-a-fork/),[在Github上同步一个分支(fork)](http://www.miss77.net/549.html) + +**设置添加多个远程仓库地址。** + +在同步之前,需要创建一个远程点指向上游仓库(repo).如果你已经派生了一个原始仓库,可以按照如下方法做。 + +```shell +$ git remote -v +# List the current remotes (列出当前远程仓库) +# origin https://github.com/user/repo.git (fetch) +# origin https://github.com/user/repo.git (push) +$ git remote add upstream https://github.com/otheruser/repo.git +# Set a new remote (设置一个新的远程仓库) +$ git remote -v +# Verify new remote (验证新的原唱仓库) +# origin https://github.com/user/repo.git (fetch) +# origin https://github.com/user/repo.git (push) +# upstream https://github.com/otheruser/repo.git (fetch) +# upstream https://github.com/otheruser/repo.git (push) +``` + +**同步更新仓库内容** + +同步上游仓库到你的仓库需要执行两步:首先你需要从远程拉去,之后你需要合并你希望的分支到你的本地副本分支。从上游的存储库中提取分支以及各自的提交内容。 `master` 将被存储在本地分支机构 `upstream/master` + +```shell +git fetch upstream +# remote: Counting objects: 75, done. +# remote: Compressing objects: 100% (53/53), done. +# remote: Total 62 (delta 27), reused 44 (delta 9) +# Unpacking objects: 100% (62/62), done. +# From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY +# * [new branch] master -> upstream/master +``` + +检查你的 fork's 本地 `master` 分支 + +```shell +git checkout master +# Switched to branch 'master' +``` + +合并来自 `upstream/master` 的更改到本地 master 分支上。 这使你的前 fork's `master` 分支与上游资源库同步,而不会丢失你本地修改。 + +```shell +git merge upstream/master +# Updating a422352..5fdff0f +# Fast-forward +# README | 9 ------- +# README.md | 7 ++++++ +# 2 files changed, 7 insertions(+), 9 deletions(-) +# delete mode 100644 README +# create mode 100644 README.md +``` + + +### 批量修改历史commit中的名字和邮箱 + +**1.克隆仓库** + +注意参数,这个不是普通的clone,clone下来的仓库并不能参与开发 + +```bash +git clone --bare https://github.com/user/repo.git +cd repo.git +``` + +**2.命令行中运行代码** + +OLD_EMAIL原来的邮箱 +CORRECT_NAME更正的名字 +CORRECT_EMAIL更正的邮箱 + +将下面代码复制放到命令行中执行 + +```bash +git filter-branch -f --env-filter ' +OLD_EMAIL="wowohoo@qq.com" +CORRECT_NAME="小弟调调" +CORRECT_EMAIL="更正的邮箱@qq.com" +if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ] +then + export GIT_COMMITTER_NAME="$CORRECT_NAME" + export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL" +fi +if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ] +then + export GIT_AUTHOR_NAME="$CORRECT_NAME" + export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL" +fi +' --tag-name-filter cat -- --branches --tags +``` + +执行过程 + +```bash +Rewrite 160d4df2689ff6df3820563bfd13b5f1fb9ba832 (479/508) (16 seconds passed, remaining 0 predicted) +Ref 'refs/heads/dev' was rewritten +Ref 'refs/heads/master' was rewritten +``` + +**3.同步到远程仓库** + +同步到push远程git仓库 + +```bash +git push --force --tags origin 'refs/heads/*' +``` + +我还遇到了如下面错误,lab默认给master分支加了保护,不允许强制覆盖。`Project(项目)`->`Setting`->`Repository` 菜单下面的`Protected branches`把master的保护去掉就可以了。修改完之后,建议把master的保护再加回来,毕竟强推不是件好事。 + +```bash +remote: GitLab: You are not allowed to force push code to a protected branch on this project. +``` + +当上面的push 不上去的时候,先 `git pull` 确保最新代码 + +```bash +git pull --allow-unrelated-histories +# 或者指定分枝 +git pull origin master --allow-unrelated-histories +``` + + +### 查看某个文件历史 + +```shell +git log --pretty=oneline 文件名 # 列出文件的所有改动历史 +git show c178bf49 # 某次的改动的修改记录 +git log -p c178bf49 # 某次的改动的修改记录 +git blame 文件名 # 显示文件的每一行是在那个版本最后修改。 +git whatchanged 文件名 # 显示某个文件的每个版本提交信息:提交日期,提交人员,版本号,提交备注(没有修改细节) +``` + +### 打造自己的git命令 + +```sh +git config --global alias.st status +git config --global alias.br branch +git config --global alias.co checkout +git config --global alias.ci commit +``` + +配置好后再输入git命令的时候就不用再输入一大段了,例如我们要查看状态,只需: + +```sh +git st +``` + +### 中文乱码的解决方案 + +```bash +git config --global core.quotepath false +``` + +## 新建仓库 + +### init + +`git init` #初始化 + +### status + +`git status` #获取状态 + +### add + +`git add file` # .或*代表全部添加 +`git rm --cached ` # 在commit之前撤销git add操作 +`git reset head` # 好像比上面`git rm --cached`更方便 + +### commit + +`git commit -m "message"` #此处注意乱码 + +### remote + +`git remote add origin git@github.com:JSLite/test.git` #添加源 + +### push + +```bash +git push -u origin master # push同事设置默认跟踪分支 +git push origin master +git push -f origin master # 强制推送文件,缩写 -f(全写--force) +``` + +## clone + +`git clone git://github.com/JSLite/JSLite.js.git ` +`git clone git://github.com/JSLite/JSLite.js.git mypro` #克隆到自定义文件夹 +`git clone [user@]example.com:path/to/repo.git/` #SSH协议还有另一种写法。 + +git clone支持多种协议,除了HTTP(s)以外,还支持SSH、Git、本地文件协议等,下面是一些例子。`git clone <版本库的网址> <本地目录名>` + +```shell +$ git clone http[s]://example.com/path/to/repo.git/ +$ git clone ssh://example.com/path/to/repo.git/ +$ git clone git://example.com/path/to/repo.git/ +$ git clone /opt/git/project.git +$ git clone file:///opt/git/project.git +$ git clone ftp[s]://example.com/path/to/repo.git/ +$ git clone rsync://example.com/path/to/repo.git/ +``` + +## 本地 + +### help + +```bash +git help config # 获取帮助信息 +``` + +### add + +```shell +git add * # 跟踪新文件 +git add -u [path] # 添加[指定路径下]已跟踪文件 +``` + +### rm + +```shell +rm *&git rm * # 移除文件 +git rm -f * # 移除文件 +git rm --cached * # 取消跟踪 +git mv file_from file_to # 重命名跟踪文件 +git log # 查看提交记录 +``` + +### commit + +```shell +git commit #提交更新 +git commit -m 'message' #提交说明 +git commit -a #跳过使用暂存区域,把所有已经跟踪过的文件暂存起来一并提交 +git commit --amend #修改最后一次提交 +git commit log #查看所有提交,包括没有push的commit +git commit -m "#133" #关联issue 任意位置带上# 符号加上issue号码 +git commit -m "fix #133" commit关闭issue +git commit -m '概要描述'$'\n\n''1.详细描述'$'\n''2.详细描述' #提交简要描述和详细描述 +``` + +### reset + +```shell +git reset HEAD * # 取消已经暂存的文件 +git reset --mixed HEAD * # 同上 +git reset --soft HEAD * # 重置到指定状态,不会修改索引区和工作树 +git reset --hard HEAD * # 重置到指定状态,会修改索引区和工作树 +git reset -- files * # 重置index区文件 +``` + +### revert + +```shell +git revert HEAD # 撤销前一次操作 +git revert HEAD~ # 撤销前前一次操作 +git revert commit # 撤销指定操作 +``` + +### checkout + +```shell +git checkout -- file # 取消对文件的修改(从暂存区——覆盖worktree file) +git checkout branch|tag|commit -- file_name # 从仓库取出file覆盖当前分支 +git checkout HEAD~1 [文件] # 将会更新 working directory 去匹配某次 commit +git checkout -- . # 从暂存区取出文件覆盖工作区 +git checkout -b gh-pages 0c304c9 # 这个表示 从当前分支 commit 哈希值为 0c304c9 的节点,分一个新的分支gh-pages出来,并切换到 gh-pages +``` + +### diff + +```shell +git diff file # 查看指定文件的差异 +git diff --stat # 查看简单的diff结果 +git diff # 比较Worktree和Index之间的差异 +git diff --cached # 比较Index和HEAD之间的差异 +git diff HEAD # 比较Worktree和HEAD之间的差异 +git diff branch # 比较Worktree和branch之间的差异 +git diff branch1 branch2 # 比较两次分支之间的差异 +git diff commit commit # 比较两次提交之间的差异 +git diff master..test # 上面这条命令只显示两个分支间的差异 +git diff master...test # 你想找出‘master’,‘test’的共有 父分支和'test'分支之间的差异,你用3个‘.'来取代前面的两个'.' +``` + +### stash + +```shell +git stash # 将工作区现场(已跟踪文件)储藏起来,等以后恢复后继续工作。 +git stash list # 查看保存的工作现场 +git stash apply # 恢复工作现场 +git stash drop # 删除stash内容 +git stash pop # 恢复的同时直接删除stash内容 +git stash apply stash@{0} # 恢复指定的工作现场,当你保存了不只一份工作现场时。 +``` + +### merge + +```bash +git merge --squash test # 合并压缩,将test上的commit压缩为一条 +``` + +### cherry-pick + +```shell +git cherry-pick commit # 拣选合并,将commit合并到当前分支 +git cherry-pick -n commit # 拣选多个提交,合并完后可以继续拣选下一个提交 +``` + +### rebase + +```shell +git rebase master # 将master分之上超前的提交,变基到当前分支 +git rebase --onto master 169a6 # 限制回滚范围,rebase当前分支从169a6以后的提交 +git rebase --interactive # 交互模式,修改commit +git rebase --continue # 处理完冲突继续合并 +git rebase --skip # 跳过 +git rebase --abort # 取消合并 +``` + +## 分支branch + +### 删除 + +```shell +git push origin :branchName # 删除远程分支 +git push origin --delete new # 删除远程分支new +git branch -d branchName # 删除本地分支,强制删除用-D +git branch -d test # 删除本地test分支 +git branch -D test # 强制删除本地test分支 +git remote prune origin # 远程删除了,本地还能看到远程存在,这条命令删除远程不存在的分支 +``` + +### 提交 + +```bash +git push -u origin branchName # 提交分支到远程origin主机中 +``` + +### 拉取 + +`git fetch -p` #拉取远程分支时,自动清理 远程分支已删除,本地还存在的对应同名分支。 + +### 分支合并 + +```shell +git merge branchName # 合并分支 - 将分支branchName和当前所在分支合并 +git merge origin/master # 在本地分支上合并远程分支。 +git rebase origin/master # 在本地分支上合并远程分支。 +git merge test # 将test分支合并到当前分支 +``` + +### 重命名 + +`git branch -m old new` #重命名分支 + +### 查看 + +```shell +git branch # 列出本地分支 +git branch -r # 列出远端分支 +git branch -a # 列出所有分支 +git branch -v # 查看各个分支最后一个提交对象的信息 +git branch --merge # 查看已经合并到当前分支的分支 +git branch --no-merge # 查看为合并到当前分支的分支 +git remote show origin # 可以查看remote地址,远程分支 +``` + +### 新建 + +```shell +git branch test # 新建test分支 +git branch newBrach 3defc69 # 指定哈希3defc69,新建分支名字为newBrach +git checkout -b newBrach origin/master # 取回远程主机的更新以后,在它的基础上创建一个新的分支 +git checkout -b newBrach 3defc69 # 以哈希值3defc69,新建 newBrach 分支,并切换到该分支 +``` + +### 连接 + +```shell +git branch --set-upstream dev origin/dev # 将本地dev分支与远程dev分支之间建立链接 +git branch --set-upstream master origin/next # 手动建立追踪关系 +``` + +### 分支切换 + +```shell +git checkout test # 切换到test分支 +git checkout -b test # 新建+切换到test分支 +git checkout -b test dev # 基于dev新建test分支,并切换 +``` + +## 远端 + +```shell +git fetch <远程主机名> <分支名> # fetch取回所有分支(branch)的更新 +git fetch origin remotebranch[:localbranch] # 从远端拉去分支[到本地指定分支] +git merge origin/branch # 合并远端上指定分支 +git pull origin remotebranch:localbranch # 拉去远端分支到本地分支 +git push origin branch # 将当前分支,推送到远端上指定分支 +git push origin localbranch:remotebranch # 推送本地指定分支,到远端上指定分支 +git push origin :remotebranch # 删除远端指定分支 +git checkout -b [--track] test origin/dev # 基于远端dev分支,新建本地test分支[同时设置跟踪] +``` + +## submodule + +克隆项目同时克隆submodule + +```bash +git clone https://github.com/jaywcjlove/handbook.git --depth=1 --recurse-submodules +``` + +克隆项目,之后再手动克隆 submodule 子项目 + +```bash +git submodule add --force '仓库地址' '路径' +# 其中,仓库地址是指子模块仓库地址,路径指将子模块放置在当前工程下的路径。 +# 注意:路径不能以 / 结尾(会造成修改不生效)、不能是现有工程已有的目录(不能順利 Clone) +git submodule init # 初始化submodule +git submodule update # 更新submodule(必须在根目录执行命令) +git submodule update --init --recursive # 下载的工程带有submodule +``` + +当使用`git clone`下来的工程中带有submodule时,初始的时候,submodule的内容并不会自动下载下来的,此时,只需执行如下命令: + +```bash +git submodule foreach git pull # submodule 里有其他的 submodule 一次更新 +git submodule foreach git pull origin master # submodule更新 + +git submodule foreach --recursive git submodule init +git submodule foreach --recursive git submodule update +``` + +## 删除文件 + +```bash +git rm -rf node_modules/ +``` + +## remote + +git是一个分布式代码管理工具,所以可以支持多个仓库,在git里,服务器上的仓库在本地称之为remote。个人开发时,多源用的可能不多,但多源其实非常有用。 + +```shell +git remote add origin1 git@github.com:yanhaijing/data.js.git +git remote # 显示全部源 +git remote -v # 显示全部源+详细信息 +git remote rename origin1 origin2 # 重命名 +git remote rm origin # 删除 +git remote show origin # 查看指定源的全部信息 +``` + +## 标签tag + +当开发到一定阶段时,给程序打标签是非常棒的功能。 + +```bash +git tag -a v0.1 -m 'my version 1.4' # 新建带注释标签 +git push origin --tags # 一次性推送所有分支 +git push origin v1.5 # 推送单个tag到orgin源上 +git tag -v v1.4.2.1 # 验证标签,验证已经签署的标签 +git show v1.5 # 看到对应的 GPG 签 + +git tag # 列出现有标签 +git tag v0gi.1 # 新建标签 +git checkout tagname # 切换到标签 +git tag -d v0.1 # 删除标签 +git push origin :refs/tags/v0.1 # 删除远程标签 +git pull --all # 获取远程所有内容包括tag +git --git-dir='<绝对地址>/.git' describe --tags HEAD # 查看本地版本信息 +``` + +## 日志log + +```bash +git config format.pretty oneline #显示历史记录时,每个提交的信息只显示一行 +git config color.ui true #彩色的 git 输出 +git log #查看最近的提交日志 +git log --pretty=oneline #单行显示提交日志 +git log --graph --pretty=oneline --abbrev-commit +git log -num #显示第几条log(倒数) +git reflog #查看所有分支的所有操作记录 +git log --since=1.day #一天内的提交;你可以给出各种时间格式,比如说具体的某一天(“2008-01-15”),或者是多久以前(“2 years 1 day 3 minutes ago”)。 +git log --pretty="%h - %s" --author=自己的名字 #查看自己的日志 +git log -p -2 #展开两次更新显示每次提交的内容差异 +git log --stat #要快速浏览其他协作者提交的更新都作了哪些改动 +git log --pretty=format:"%h - %an, %ar : %s"#定制要显示的记录格式 +git log --pretty=format:'%h : %s' --date-order --graph # 拓扑顺序展示 +git log --pretty=format:'%h : %s - %ad' --date=short #日期YYYY-MM-DD显示 +git log HEAD --pretty=format:%s # 只显示commit +git config --global format.pretty '%h : %s - %ad' --date=short #日期YYYY-MM-DD显示 写入全局配置 +``` + +|选项 | 说明|选项 | 说明| +|----|----|----|----| +|%H |提交对象(commit)的完整哈希字串 |%ad |作者修订日期(可以用 -date= 选项定制格式)| +|%h |提交对象的简短哈希字串 |%ar |作者修订日期,按多久以前的方式显示| +|%T |树对象(tree)的完整哈希字串 |%cn |提交者(committer)的名字| +|%t |树对象的简短哈希字串 |%ce |提交者的电子邮件地址| +|%P |父对象(parent)的完整哈希字串 |%cd |提交日期| +|%p |父对象的简短哈希字串 |%cr |提交日期,按多久以前的方式显示| +|%an |作者(author)的名字 |%s |提交说明| +|%ae |作者的电子邮件地址| - | - | + +[Pretty Formats](https://git-scm.com/docs/git-log#_pretty_formats) + +## 重写历史 + +```bash +git commit --amend # 改变最近一次提交 +git rebase -i HEAD~3 # 修改最近三次的提交说明,或者其中任意一次 +git commit --amend # 保存好了,这些指示很明确地告诉了你该干什么 +git rebase --continue # 修改提交说明,退出编辑器。 +``` + +```bash +pick f7f3f6d changed my name a bit +pick 310154e updated README formatting and added blame +pick a5f4a0d added cat-file +``` + +改成 + +``` +pick 310154e updated README formatting and added blame +pick f7f3f6d changed my name a bit +``` + +### 删除仓库 + +``` +cd .. +rm -rf repo.git +``` + +[Github官方教程](https://help.github.com/articles/changing-author-info/) + +## 其它 + +```bash +git help * # 获取命令的帮助信息 +git status # 获取当前的状态,非常有用,因为git会提示接下来的能做的操作 +``` + + +## 报错问题解决 + +**1. `git fatal: protocol error: bad line length character: No s`** + +解决办法:更换remote地址为 `http/https` 的 + +**2. `The requested URL returned error: 403 Forbidden while accessing`** + +解决github push错误的办法: + +```shell +#vim 编辑器打开 当前项目中的config文件 +vim .git/config + +#修改 +[remote "origin"] + url = https://github.com/jaywcjlove/example.git + +#为下面代码 +[remote "origin"] + url = https://jaywcjlove@github.com/jaywcjlove/example.git +``` + +**3. git status 显示中文问题** + +在查看状态的时候 git status 如果是中文就显示下面的情况 + +```bash +\344\272\247\345\223\201\351\234\200\346\261\202 +``` + +解决这个问题方法是: + +```bash +git config --global core.quotepath false +``` + +## 参考资料 + +- [Git官网](http://git-scm.com/) +- [**Github 15分钟学习Git**](https://try.github.io) +- [Git参考手册](http://gitref.org/zh/index.html) +- [Git简明手册](http://www.mceiba.com/tool/git-cheat-sheet.html) +- [Git Magic](http://www-cs-students.stanford.edu/~blynn/gitmagic/intl/zh_cn/) +- [Git Community Book 中文版](http://gitbook.liuhui998.com/index.html) +- [Pro Git](http://git-scm.com/book/en/v2) +- [图解Git](http://marklodato.github.io/visual-git-guide/index-zh-cn.html) +- [git-简明指南](http://rogerdudler.github.io/git-guide/index.zh.html) +- [learnGitBranching 在线学习工具](http://pcottle.github.io/learnGitBranching/) +- [初级教程](http://rogerdudler.github.io/git-guide/index.zh.html) +- [廖雪峰的Git教程](http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000) +- [蒋鑫老师将带你入github的大门](http://www.worldhello.net/gotgithub/) +- [git详解](http://www.open-open.com/lib/view/open1328069609436.html) +- [oschina教程](http://git.oschina.net/progit/) +- [How to undo (almost) anything with Git撤销一切,汇总各种回滚撤销的场景,加强学习。](https://github.com/blog/2019-how-to-undo-almost-anything-with-git) +- [Git 教程 | 菜鸟教程runoob.com](http://www.runoob.com/git/git-tutorial.html) +- [Git 本地仓库和裸仓库](https://gold.xitu.io/post/5842f9b861ff4b005889ade6) +- [沉浸式学 Git](http://www.kancloud.cn/kancloud/igit/46710) +- [Git进阶用法,主要是rebase高级用法](http://way.oschina.io/2016/12/15/notes/GitAdvance/?utm_source=gank.io&utm_medium=email) + + From f71227c949234854114a2a6f3769dd213cfbbdab Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Thu, 3 May 2018 08:53:31 +0800 Subject: [PATCH 0002/1126] Update git.md --- command/git.md | 66 +++++++++++++++++++++++++------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/command/git.md b/command/git.md index 58738ae714a..b4ce3445a9e 100644 --- a/command/git.md +++ b/command/git.md @@ -162,7 +162,7 @@ ssh -T git@github.com # 测试是否成功 `vim ~/.ssh/config` #修改config文件,如果没有创建 `config` -```shell +```bash Host jslite.github.com HostName github.com User git @@ -259,7 +259,7 @@ git clone https://github.com/username/rep.git **1. 增加3个远程库地址** -```shell +```bash git remote add origin https://github.com/JSLite/JSLite.git git remote set-url --add origin https://gitlab.com/wang/JSLite.js.git git remote set-url --add origin https://oschina.net/wang/JSLite.js.git @@ -267,7 +267,7 @@ git remote set-url --add origin https://oschina.net/wang/JSLite.js.git **2. 删除其中一个 set-url 地址** -```shell +```bash usage: git remote set-url [--push] [] or: git remote set-url --add or: git remote set-url --delete @@ -287,7 +287,7 @@ git push -f origin master # 强制推送 只能拉取 `origin` 里的一个url地址,这个fetch-url 默认为你添加的到 `origin`的第一个地址 -```shell +```bash git pull origin master git pull --all # 获取远程所有内容包括tag git pull origin next:master # 取回origin主机的next分支,与本地的master分支合并 @@ -301,7 +301,7 @@ git merge origin/next 如果远程主机删除了某个分支,默认情况下,git pull 不会在拉取远程分支的时候,删除对应的本地分支。这是为了防止,由于其他人操作了远程主机,导致git pull不知不觉删除了本地分支。 但是,你可以改变这个行为,加上参数 -p 就会在本地删除远程已经删除的分支。 -```shell +```bash $ git pull -p # 等同于下面的命令 $ git fetch --prune origin @@ -322,14 +322,14 @@ git remote add origin git@jslite.github.com:JSLite/JSLite.git # 添加远程路 ### 撤销远程记录 -```shell +```bash git reset --hard HEAD~1 # 撤销一条记录 git push -f origin HEAD:master # 同步到远程仓库 ``` ### 放弃本地的文件修改 -```shell +```bash git reset --hard FETCH_HEAD # FETCH_HEAD表示上一次成功git pull之后形成的commit点。然后git pull ``` @@ -370,7 +370,7 @@ git stash && git stash drop ### 回滚到某个commit提交 -```shell +```bash git revert HEAD~1 # 撤销一条记录 会弹出 commit 编辑 git push # 提交回滚 ``` @@ -491,7 +491,7 @@ echo node_modules/ >> .gitignore 在同步之前,需要创建一个远程点指向上游仓库(repo).如果你已经派生了一个原始仓库,可以按照如下方法做。 -```shell +```bash $ git remote -v # List the current remotes (列出当前远程仓库) # origin https://github.com/user/repo.git (fetch) @@ -510,7 +510,7 @@ $ git remote -v 同步上游仓库到你的仓库需要执行两步:首先你需要从远程拉去,之后你需要合并你希望的分支到你的本地副本分支。从上游的存储库中提取分支以及各自的提交内容。 `master` 将被存储在本地分支机构 `upstream/master` -```shell +```bash git fetch upstream # remote: Counting objects: 75, done. # remote: Compressing objects: 100% (53/53), done. @@ -522,14 +522,14 @@ git fetch upstream 检查你的 fork's 本地 `master` 分支 -```shell +```bash git checkout master # Switched to branch 'master' ``` 合并来自 `upstream/master` 的更改到本地 master 分支上。 这使你的前 fork's `master` 分支与上游资源库同步,而不会丢失你本地修改。 -```shell +```bash git merge upstream/master # Updating a422352..5fdff0f # Fast-forward @@ -611,7 +611,7 @@ git pull origin master --allow-unrelated-histories ### 查看某个文件历史 -```shell +```bash git log --pretty=oneline 文件名 # 列出文件的所有改动历史 git show c178bf49 # 某次的改动的修改记录 git log -p c178bf49 # 某次的改动的修改记录 @@ -680,7 +680,7 @@ git push -f origin master # 强制推送文件,缩写 -f(全写--force) git clone支持多种协议,除了HTTP(s)以外,还支持SSH、Git、本地文件协议等,下面是一些例子。`git clone <版本库的网址> <本地目录名>` -```shell +```bash $ git clone http[s]://example.com/path/to/repo.git/ $ git clone ssh://example.com/path/to/repo.git/ $ git clone git://example.com/path/to/repo.git/ @@ -700,14 +700,14 @@ git help config # 获取帮助信息 ### add -```shell +```bash git add * # 跟踪新文件 git add -u [path] # 添加[指定路径下]已跟踪文件 ``` ### rm -```shell +```bash rm *&git rm * # 移除文件 git rm -f * # 移除文件 git rm --cached * # 取消跟踪 @@ -717,7 +717,7 @@ git log # 查看提交记录 ### commit -```shell +```bash git commit #提交更新 git commit -m 'message' #提交说明 git commit -a #跳过使用暂存区域,把所有已经跟踪过的文件暂存起来一并提交 @@ -730,7 +730,7 @@ git commit -m '概要描述'$'\n\n''1.详细描述'$'\n''2.详细描述' #提交 ### reset -```shell +```bash git reset HEAD * # 取消已经暂存的文件 git reset --mixed HEAD * # 同上 git reset --soft HEAD * # 重置到指定状态,不会修改索引区和工作树 @@ -740,7 +740,7 @@ git reset -- files * # 重置index区文件 ### revert -```shell +```bash git revert HEAD # 撤销前一次操作 git revert HEAD~ # 撤销前前一次操作 git revert commit # 撤销指定操作 @@ -748,7 +748,7 @@ git revert commit # 撤销指定操作 ### checkout -```shell +```bash git checkout -- file # 取消对文件的修改(从暂存区——覆盖worktree file) git checkout branch|tag|commit -- file_name # 从仓库取出file覆盖当前分支 git checkout HEAD~1 [文件] # 将会更新 working directory 去匹配某次 commit @@ -758,7 +758,7 @@ git checkout -b gh-pages 0c304c9 # 这个表示 从当前分支 commit 哈希 ### diff -```shell +```bash git diff file # 查看指定文件的差异 git diff --stat # 查看简单的diff结果 git diff # 比较Worktree和Index之间的差异 @@ -773,7 +773,7 @@ git diff master...test # 你想找出‘master’,‘test’的共有 父分 ### stash -```shell +```bash git stash # 将工作区现场(已跟踪文件)储藏起来,等以后恢复后继续工作。 git stash list # 查看保存的工作现场 git stash apply # 恢复工作现场 @@ -790,14 +790,14 @@ git merge --squash test # 合并压缩,将test上的commit压缩为一条 ### cherry-pick -```shell +```bash git cherry-pick commit # 拣选合并,将commit合并到当前分支 git cherry-pick -n commit # 拣选多个提交,合并完后可以继续拣选下一个提交 ``` ### rebase -```shell +```bash git rebase master # 将master分之上超前的提交,变基到当前分支 git rebase --onto master 169a6 # 限制回滚范围,rebase当前分支从169a6以后的提交 git rebase --interactive # 交互模式,修改commit @@ -810,7 +810,7 @@ git rebase --abort # 取消合并 ### 删除 -```shell +```bash git push origin :branchName # 删除远程分支 git push origin --delete new # 删除远程分支new git branch -d branchName # 删除本地分支,强制删除用-D @@ -831,7 +831,7 @@ git push -u origin branchName # 提交分支到远程origin主机中 ### 分支合并 -```shell +```bash git merge branchName # 合并分支 - 将分支branchName和当前所在分支合并 git merge origin/master # 在本地分支上合并远程分支。 git rebase origin/master # 在本地分支上合并远程分支。 @@ -844,7 +844,7 @@ git merge test # 将test分支合并到当前分支 ### 查看 -```shell +```bash git branch # 列出本地分支 git branch -r # 列出远端分支 git branch -a # 列出所有分支 @@ -856,7 +856,7 @@ git remote show origin # 可以查看remote地址,远程分支 ### 新建 -```shell +```bash git branch test # 新建test分支 git branch newBrach 3defc69 # 指定哈希3defc69,新建分支名字为newBrach git checkout -b newBrach origin/master # 取回远程主机的更新以后,在它的基础上创建一个新的分支 @@ -865,14 +865,14 @@ git checkout -b newBrach 3defc69 # 以哈希值3defc69,新建 newBrach 分支 ### 连接 -```shell +```bash git branch --set-upstream dev origin/dev # 将本地dev分支与远程dev分支之间建立链接 git branch --set-upstream master origin/next # 手动建立追踪关系 ``` ### 分支切换 -```shell +```bash git checkout test # 切换到test分支 git checkout -b test # 新建+切换到test分支 git checkout -b test dev # 基于dev新建test分支,并切换 @@ -880,7 +880,7 @@ git checkout -b test dev # 基于dev新建test分支,并切换 ## 远端 -```shell +```bash git fetch <远程主机名> <分支名> # fetch取回所有分支(branch)的更新 git fetch origin remotebranch[:localbranch] # 从远端拉去分支[到本地指定分支] git merge origin/branch # 合并远端上指定分支 @@ -930,7 +930,7 @@ git rm -rf node_modules/ git是一个分布式代码管理工具,所以可以支持多个仓库,在git里,服务器上的仓库在本地称之为remote。个人开发时,多源用的可能不多,但多源其实非常有用。 -```shell +```bash git remote add origin1 git@github.com:yanhaijing/data.js.git git remote # 显示全部源 git remote -v # 显示全部源+详细信息 @@ -1042,7 +1042,7 @@ git status # 获取当前的状态,非常有用,因为git会提示接下来 解决github push错误的办法: -```shell +```bash #vim 编辑器打开 当前项目中的config文件 vim .git/config From 1d577c72f2e19050d50c61d274d0000813772322 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83=E2=84=A2?= <398188662@qq.com> Date: Sun, 6 May 2018 21:52:27 +0800 Subject: [PATCH 0003/1126] Update ld.md --- command/ld.md | 66 +++++++++++++++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 28 deletions(-) diff --git a/command/ld.md b/command/ld.md index 29f080e5ff2..eceefaf7353 100644 --- a/command/ld.md +++ b/command/ld.md @@ -1,28 +1,38 @@ -ld -=== - -将目标文件连接为可执行程序 - -## 补充说明 - -**ld命令** 是GNU的连接器,将目标文件连接为可执行程序。 - -### 语法 - -``` -ld(选项)(参数) -``` - -### 选项 - -``` --o:指定输出文件名; --e:指定程序的入口符号。 -``` - -### 参数 - -目标文件:指定需要连接的目标文件。 - - - \ No newline at end of file +ld +=== + +将目标文件连接为可执行程序 + +## 补充说明 + +**ld命令** 是GNU的连接器,将目标文件连接为可执行程序。 + +### 语法 + +``` +ld(选项)(参数) +ld [options] objfile ... +``` + +### 选项 + +``` +-o:指定输出文件名; +-e:指定程序的入口符号。 +``` + +### 参数 + +目标文件:指定需要连接的目标文件。 + +### 实例 + +这告诉ld通过将文件“/lib/crt0.o”与“hello.o”和库“libc.a”链接起来,生成一个名为output的文件,该文件将来自标准搜索目录。 + +```bash +ld -o /lib/crt0.o hello.o -lc +ld -o output /lib/crt0.o hello.o -lc +``` + + + From 006304eada6ddea87633153de48bac32461bf9a2 Mon Sep 17 00:00:00 2001 From: kass Date: Wed, 9 May 2018 19:10:52 +0800 Subject: [PATCH 0004/1126] fix type --- command/scp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/command/scp.md b/command/scp.md index 78f80b2f04e..fed4f817e58 100644 --- a/command/scp.md +++ b/command/scp.md @@ -60,7 +60,7 @@ scp -r root@10.10.10.10:/opt/soft/mongodb /opt/soft/ ```bash scp /opt/soft/nginx-0.5.38.tar.gz root@10.10.10.10:/opt/soft/scptest -# 添加断开 2222 +# 指定端口 2222 scp -rp -P 2222 /opt/soft/nginx-0.5.38.tar.gz root@10.10.10.10:/opt/soft/scptest ``` From 96a0bcccc1b3e4981b7f0bd5e644c863171eaab3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83=E2=84=A2?= <398188662@qq.com> Date: Thu, 17 May 2018 17:58:04 +0800 Subject: [PATCH 0005/1126] Update cp.md --- command/cp.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/command/cp.md b/command/cp.md index f218bb36e85..5c21fff925f 100644 --- a/command/cp.md +++ b/command/cp.md @@ -81,18 +81,21 @@ cp -i /usr/men m*.c /usr/zh 我们在Linux下使用cp命令复制文件时候,有时候会需要覆盖一些同名文件,覆盖文件的时候都会有提示:需要不停的按Y来确定执行覆盖。文件数量不多还好,但是要是几百个估计按Y都要吐血了,于是折腾来半天总结了一个方法: -``` +```bash cp aaa/* /bbb -复制目录aaa下所有到/bbb目录下,这时如果/bbb目录下有和aaa同名的文件,需要按Y来确认并且会略过aaa目录下的子目录。 +# 复制目录aaa下所有到/bbb目录下,这时如果/bbb目录下有和aaa同名的文件,需要按Y来确认并且会略过aaa目录下的子目录。 cp -r aaa/* /bbb -这次依然需要按Y来确认操作,但是没有忽略子目录。 +# 这次依然需要按Y来确认操作,但是没有忽略子目录。 cp -r -a aaa/* /bbb -依然需要按Y来确认操作,并且把aaa目录以及子目录和文件属性也传递到了/bbb。 +# 依然需要按Y来确认操作,并且把aaa目录以及子目录和文件属性也传递到了/bbb。 \cp -r -a aaa/* /bbb -成功,没有提示按Y、传递了目录属性、没有略过目录。 +# 成功,没有提示按Y、传递了目录属性、没有略过目录。 + +cp -rfb ./* ../backup +# 将当前目录下所有文件,复制到当前目录的兄弟目录 backup 文件夹中 ``` From 1a51c4964c48d3415a98258885bc6d1a1a7678da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83=E2=84=A2?= <398188662@qq.com> Date: Thu, 17 May 2018 18:01:09 +0800 Subject: [PATCH 0006/1126] Update cp.md --- command/cp.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/command/cp.md b/command/cp.md index 5c21fff925f..59f587b360f 100644 --- a/command/cp.md +++ b/command/cp.md @@ -93,7 +93,11 @@ cp -r -a aaa/* /bbb \cp -r -a aaa/* /bbb # 成功,没有提示按Y、传递了目录属性、没有略过目录。 +``` + +递归强制复制目录到指定目录中覆盖已存在文件 +``` cp -rfb ./* ../backup # 将当前目录下所有文件,复制到当前目录的兄弟目录 backup 文件夹中 ``` From 2a891b3894b45d18f6bfb8fe669987f329243aca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83=E2=84=A2?= <398188662@qq.com> Date: Fri, 18 May 2018 10:11:23 +0800 Subject: [PATCH 0007/1126] Update ifconfig.md --- command/ifconfig.md | 248 +++++++++++++++++++++++--------------------- 1 file changed, 128 insertions(+), 120 deletions(-) diff --git a/command/ifconfig.md b/command/ifconfig.md index 4b9bddd72ff..6803089550b 100644 --- a/command/ifconfig.md +++ b/command/ifconfig.md @@ -1,120 +1,128 @@ -ifconfig -=== - -配置和显示Linux系统网卡的网络参数 - -## 补充说明 - -**ifconfig命令** 被用于配置和显示Linux内核中网络接口的网络参数。用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。 - -### 语法 - -``` -ifconfig(参数) -``` - -### 参数 - -``` -add<地址>:设置网络设备IPv6的ip地址; -del<地址>:删除网络设备IPv6的IP地址; -down:关闭指定的网络设备; -<硬件地址>:设置网络设备的类型与硬件地址; -io_addr:设置网络设备的I/O地址; -irq:设置网络设备的IRQ; -media<网络媒介类型>:设置网络设备的媒介类型; -mem_start<内存地址>:设置网络设备在主内存所占用的起始地址; -metric<数目>:指定在计算数据包的转送次数时,所要加上的数目; -mtu<字节>:设置网络设备的MTU; -netmask<子网掩码>:设置网络设备的子网掩码; -tunnel<地址>:建立IPv4与IPv6之间的隧道通信地址; -up:启动指定的网络设备; --broadcast<地址>:将要送往指定地址的数据包当成广播数据包来处理; --pointopoint<地址>:与指定地址的网络设备建立直接连线,此模式具有保密功能; --promisc:关闭或启动指定网络设备的promiscuous模式; -IP地址:指定网络设备的IP地址; -网络设备:指定网络设备的名称。 -``` - -### 实例 - - **显示网络设备信息(激活状态的):** - -``` -[root@localhost ~]# ifconfig -eth0 Link encap:Ethernet HWaddr 00:16:3E:00:1E:51 - inet addr:10.160.7.81 Bcast:10.160.15.255 Mask:255.255.240.0 - UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 - RX packets:61430830 errors:0 dropped:0 overruns:0 frame:0 - TX packets:88534 errors:0 dropped:0 overruns:0 carrier:0 - collisions:0 txqueuelen:1000 - RX bytes:3607197869 (3.3 GiB) TX bytes:6115042 (5.8 MiB) - -lo Link encap:Local Loopback - inet addr:127.0.0.1 Mask:255.0.0.0 - UP LOOPBACK RUNNING MTU:16436 Metric:1 - RX packets:56103 errors:0 dropped:0 overruns:0 frame:0 - TX packets:56103 errors:0 dropped:0 overruns:0 carrier:0 - collisions:0 txqueuelen:0 - RX bytes:5079451 (4.8 MiB) TX bytes:5079451 (4.8 MiB) -``` - -说明: - - **eth0** 表示第一块网卡,其中`HWaddr`表示网卡的物理地址,可以看到目前这个网卡的物理地址(MAC地址)是`00:16:3E:00:1E:51`。 - - **inet addr** 用来表示网卡的IP地址,此网卡的IP地址是`10.160.7.81`,广播地址`Bcast:10.160.15.255`,掩码地址`Mask:255.255.240.0`。 - - **lo** 是表示主机的回坏地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。比如把 httpd服务器的指定到回坏地址,在浏览器输入127.0.0.1就能看到你所架WEB网站了。但只是您能看得到,局域网的其它主机或用户无从知道。 - -* 第一行:连接类型:Ethernet(以太网)HWaddr(硬件mac地址)。 -* 第二行:网卡的IP地址、子网、掩码。 -* 第三行:UP(代表网卡开启状态)RUNNING(代表网卡的网线被接上)MULTICAST(支持组播)MTU:1500(最大传输单元):1500字节。 -* 第四、五行:接收、发送数据包情况统计。 -* 第七行:接收、发送数据字节数统计信息。 - - **启动关闭指定网卡:** - -``` -ifconfig eth0 up -ifconfig eth0 down -``` - -`ifconfig eth0 up`为启动网卡eth0,`ifconfig eth0 down`为关闭网卡eth0。ssh登陆linux服务器操作要小心,关闭了就不能开启了,除非你有多网卡。 - - **为网卡配置和删除IPv6地址:** - -``` -ifconfig eth0 add 33ffe:3240:800:1005::2/64 #为网卡eth0配置IPv6地址 -ifconfig eth0 del 33ffe:3240:800:1005::2/64 #为网卡eth0删除IPv6地址 -``` - - **用ifconfig修改MAC地址:** - -``` -ifconfig eth0 hw ether 00:AA:BB:CC:dd:EE -``` - - **配置IP地址:** - -``` -[root@localhost ~]# ifconfig eth0 192.168.2.10 -[root@localhost ~]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0 -[root@localhost ~]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255 -``` - - **启用和关闭arp协议:** - -``` -ifconfig eth0 arp #开启网卡eth0 的arp协议 -ifconfig eth0 -arp #关闭网卡eth0 的arp协议 -``` - - **设置最大传输单元:** - -``` -ifconfig eth0 mtu 1500 #设置能通过的最大数据包大小为 1500 bytes -``` - - - \ No newline at end of file +ifconfig +=== + +配置和显示Linux系统网卡的网络参数 + +## 补充说明 + +**ifconfig命令** 被用于配置和显示Linux内核中网络接口的网络参数。用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。 + +### 语法 + +``` +ifconfig(参数) +``` + +### 参数 + +``` +add<地址>:设置网络设备IPv6的ip地址; +del<地址>:删除网络设备IPv6的IP地址; +down:关闭指定的网络设备; +<硬件地址>:设置网络设备的类型与硬件地址; +io_addr:设置网络设备的I/O地址; +irq:设置网络设备的IRQ; +media<网络媒介类型>:设置网络设备的媒介类型; +mem_start<内存地址>:设置网络设备在主内存所占用的起始地址; +metric<数目>:指定在计算数据包的转送次数时,所要加上的数目; +mtu<字节>:设置网络设备的MTU; +netmask<子网掩码>:设置网络设备的子网掩码; +tunnel<地址>:建立IPv4与IPv6之间的隧道通信地址; +up:启动指定的网络设备; +-broadcast<地址>:将要送往指定地址的数据包当成广播数据包来处理; +-pointopoint<地址>:与指定地址的网络设备建立直接连线,此模式具有保密功能; +-promisc:关闭或启动指定网络设备的promiscuous模式; +IP地址:指定网络设备的IP地址; +网络设备:指定网络设备的名称。 +``` + +### 实例 + + **显示网络设备信息(激活状态的):** + +``` +[root@localhost ~]# ifconfig +eth0 Link encap:Ethernet HWaddr 00:16:3E:00:1E:51 + inet addr:10.160.7.81 Bcast:10.160.15.255 Mask:255.255.240.0 + UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 + RX packets:61430830 errors:0 dropped:0 overruns:0 frame:0 + TX packets:88534 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:1000 + RX bytes:3607197869 (3.3 GiB) TX bytes:6115042 (5.8 MiB) + +lo Link encap:Local Loopback + inet addr:127.0.0.1 Mask:255.0.0.0 + UP LOOPBACK RUNNING MTU:16436 Metric:1 + RX packets:56103 errors:0 dropped:0 overruns:0 frame:0 + TX packets:56103 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:0 + RX bytes:5079451 (4.8 MiB) TX bytes:5079451 (4.8 MiB) +``` + +说明: + +**eth0** 表示第一块网卡,其中`HWaddr`表示网卡的物理地址,可以看到目前这个网卡的物理地址(MAC地址)是`00:16:3E:00:1E:51`。 + +**inet addr** 用来表示网卡的IP地址,此网卡的IP地址是`10.160.7.81`,广播地址`Bcast:10.160.15.255`,掩码地址`Mask:255.255.240.0`。 + +**lo** 是表示主机的回坏地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。比如把 httpd服务器的指定到回坏地址,在浏览器输入127.0.0.1就能看到你所架WEB网站了。但只是您能看得到,局域网的其它主机或用户无从知道。 + +* 第一行:连接类型:Ethernet(以太网)HWaddr(硬件mac地址)。 +* 第二行:网卡的IP地址、子网、掩码。 +* 第三行:UP(代表网卡开启状态)RUNNING(代表网卡的网线被接上)MULTICAST(支持组播)MTU:1500(最大传输单元):1500字节。 +* 第四、五行:接收、发送数据包情况统计。 +* 第七行:接收、发送数据字节数统计信息。 + +**启动关闭指定网卡:** + +``` +ifconfig eth0 up +ifconfig eth0 down +``` + +`ifconfig eth0 up`为启动网卡eth0,`ifconfig eth0 down`为关闭网卡eth0。ssh登陆linux服务器操作要小心,关闭了就不能开启了,除非你有多网卡。 + +**为网卡配置和删除IPv6地址:** + +``` +ifconfig eth0 add 33ffe:3240:800:1005::2/64 #为网卡eth0配置IPv6地址 +ifconfig eth0 del 33ffe:3240:800:1005::2/64 #为网卡eth0删除IPv6地址 +``` + +**用ifconfig修改MAC地址:** + +``` +ifconfig eth0 hw ether 00:AA:BB:CC:dd:EE +``` + +**配置IP地址:** + +``` +[root@localhost ~]# ifconfig eth0 192.168.2.10 +[root@localhost ~]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0 +[root@localhost ~]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255 +``` + +**启用和关闭arp协议:** + +``` +ifconfig eth0 arp #开启网卡eth0 的arp协议 +ifconfig eth0 -arp #关闭网卡eth0 的arp协议 +``` + +**设置最大传输单元:** + +``` +ifconfig eth0 mtu 1500 #设置能通过的最大数据包大小为 1500 bytes +``` + +**其它实例** + +```bash +ifconfig #处于激活状态的网络接口 +ifconfig -a #所有配置的网络接口,不论其是否激活 +ifconfig eth0 #显示eth0的网卡信息 +``` + + + From 513b0b5dc0468335aef6b790b3f6fccd88d5628f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83=E2=84=A2?= <398188662@qq.com> Date: Sat, 19 May 2018 19:15:07 +0800 Subject: [PATCH 0008/1126] Update find.md --- command/find.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/command/find.md b/command/find.md index d10eb2ffa84..cd3e5e8ddaa 100644 --- a/command/find.md +++ b/command/find.md @@ -337,5 +337,41 @@ find . -path "./sk" -prune -o -name "*.txt" -print find . -empty ``` +#### 其它实例 + +```bash +find ~ -name '*jpg' # 主目录中找到所有的 jpg 文件。 -name 参数允许你将结果限制为与给定模式匹配的文件。 +find ~ -iname '*jpg' # -iname 就像 -name,但是不区分大小写 +find ~ ( -iname 'jpeg' -o -iname 'jpg' ) # 一些图片可能是 .jpeg 扩展名。幸运的是,我们可以将模式用“或”(表示为 -o)来组合。 +find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type f # 如果你有一些以 jpg 结尾的目录呢? (为什么你要命名一个 bucketofjpg 而不是 pictures 的目录就超出了本文的范围。)我们使用 -type 参数修改我们的命令来查找文件。 +find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type d # 也许你想找到那些命名奇怪的目录,以便稍后重命名它们 +``` + +最近拍了很多照片,所以让我们把它缩小到上周更改的文件 + +```bash +find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type f -mtime -7 +``` + +你可以根据文件状态更改时间 (ctime)、修改时间 (mtime) 或访问时间 (atime) 来执行时间过滤。 这些是在几天内,所以如果你想要更细粒度的控制,你可以表示为在几分钟内(分别是 cmin、mmin 和 amin)。 除非你确切地知道你想要的时间,否则你可能会在 + (大于)或 - (小于)的后面加上数字。 + +但也许你不关心你的照片。也许你的磁盘空间不够用,所以你想在 log 目录下找到所有巨大的(让我们定义为“大于 1GB”)文件: + +```bash +find /var/log -size +1G +``` + +或者,也许你想在 /data 中找到 bcotton 拥有的所有文件: + +```bash +find /data -owner bcotton +``` + +你还可以根据权限查找文件。也许你想在你的主目录中找到对所有人可读的文件,以确保你不会过度分享。 + +```bash +find ~ -perm -o=r +``` + From b2719ac09ece1839c399ea09a4855a5bf4cab5ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83=E2=84=A2?= <398188662@qq.com> Date: Tue, 22 May 2018 16:26:54 +0800 Subject: [PATCH 0009/1126] Update cp.md --- command/cp.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/command/cp.md b/command/cp.md index 59f587b360f..190c1571612 100644 --- a/command/cp.md +++ b/command/cp.md @@ -102,5 +102,12 @@ cp -rfb ./* ../backup # 将当前目录下所有文件,复制到当前目录的兄弟目录 backup 文件夹中 ``` +拷贝目录下的隐藏文件如 `.babelrc` + +```bash +cp -r aaa/.* ./bbb +# 将 aaa 目录下的,所有`.`开头的文件,复制到 bbb 目录中。 +``` + From 92b85e23fa0634b345d26c87570d8d8d5c5d5c26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83=E2=84=A2?= <398188662@qq.com> Date: Tue, 22 May 2018 16:27:13 +0800 Subject: [PATCH 0010/1126] Update cp.md --- command/cp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/command/cp.md b/command/cp.md index 190c1571612..031c5b765ca 100644 --- a/command/cp.md +++ b/command/cp.md @@ -97,7 +97,7 @@ cp -r -a aaa/* /bbb 递归强制复制目录到指定目录中覆盖已存在文件 -``` +```bash cp -rfb ./* ../backup # 将当前目录下所有文件,复制到当前目录的兄弟目录 backup 文件夹中 ``` From c51cb3889634693ee16a779b6237687c313d6e14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83=E2=84=A2?= <398188662@qq.com> Date: Tue, 22 May 2018 16:47:26 +0800 Subject: [PATCH 0011/1126] Update cp.md --- command/cp.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/command/cp.md b/command/cp.md index 031c5b765ca..487d03d160d 100644 --- a/command/cp.md +++ b/command/cp.md @@ -107,6 +107,9 @@ cp -rfb ./* ../backup ```bash cp -r aaa/.* ./bbb # 将 aaa 目录下的,所有`.`开头的文件,复制到 bbb 目录中。 + +cp -a aaa ./bbb/ +# 记住后面目录最好的'/' 带上 `-a` 参数 ``` From 77e898477818295bee9a5db9213b35678c460a5f Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Tue, 5 Jun 2018 11:59:03 +0800 Subject: [PATCH 0012/1126] released v1.1.0 --- .npmignore | 1 - package.json | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.npmignore b/.npmignore index a6584424835..5bc2aef9310 100644 --- a/.npmignore +++ b/.npmignore @@ -1,6 +1,5 @@ assets build/ -command node_modules/ template/ .deploy diff --git a/package.json b/package.json index 761d6fb602c..ae6d968d8ee 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "linux-command", - "version": "1.0.6", + "version": "1.1.0", "description": "Linux Command", "main": "dist/data.json", "scripts": { From 5c194b7f749921d91ba0045a1ec6721c6d6ced6a Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Tue, 5 Jun 2018 12:11:44 +0800 Subject: [PATCH 0013/1126] Update README.md --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index 344c8b5e6e6..09019abdfa5 100644 --- a/README.md +++ b/README.md @@ -114,6 +114,8 @@ archive、ctlinnd、elm、getlist、inncheck、mail、mailconf、mailq、message yes +## 使用 + ### Node调用 ``` @@ -125,8 +127,15 @@ npm install linux-command var comm = require("linux-command") console.log("---->",comm.ls) +var alias = require("linux-command/command/alias.md") +console.log("---->",alias) // markdown string ``` +### CDN + +https://unpkg.com/linux-command/dist/data.json 命令总 JSON 数据 +https://unpkg.com/linux-command/command/alias.md 对应命令详情(Markdown)数据 + ## Linux学习资源整理 From 164522b7d062f7d2b21afb72c672133c7ca6ab02 Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Tue, 5 Jun 2018 12:14:35 +0800 Subject: [PATCH 0014/1126] released v1.1.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ae6d968d8ee..8668d6078ab 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "linux-command", - "version": "1.1.0", + "version": "1.1.1", "description": "Linux Command", "main": "dist/data.json", "scripts": { From 4af9bdd32442f761beb42ccf4e244df8e64de499 Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Tue, 5 Jun 2018 12:18:04 +0800 Subject: [PATCH 0015/1126] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 09019abdfa5..0ea1a1523e7 100644 --- a/README.md +++ b/README.md @@ -133,8 +133,8 @@ console.log("---->",alias) // markdown string ### CDN -https://unpkg.com/linux-command/dist/data.json 命令总 JSON 数据 -https://unpkg.com/linux-command/command/alias.md 对应命令详情(Markdown)数据 +https://unpkg.com/linux-command/dist/data.json 命令总 JSON 数据 +https://unpkg.com/linux-command/command/alias.md 对应命令详情(Markdown)数据 ## Linux学习资源整理 From bd1d58c1524ef943d77d5a1ba5622c6b60f6730b Mon Sep 17 00:00:00 2001 From: daydaygo <1252409767@qq.com> Date: Fri, 8 Jun 2018 15:13:21 +0800 Subject: [PATCH 0016/1126] =?UTF-8?q?=E5=AE=8C=E5=96=84=E8=87=AA=E5=B7=B1?= =?UTF-8?q?=E5=B9=B3=E6=97=B6=E7=A7=AF=E7=B4=AF=E7=9A=84=E5=91=BD=E4=BB=A4?= =?UTF-8?q?=E5=92=8C=E4=BD=BF=E7=94=A8=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- command/ack.md | 14 +++ command/apk.md | 100 +++++++++++++++++++ command/cloc.md | 12 +++ command/curl.md | 28 +++--- command/dos2unix.md | 15 ++- command/du.md | 13 ++- command/find.md | 42 +++++--- command/fishshell.md | 42 ++++++++ command/gdb.md | 91 ++++++++++++----- command/gzip.md | 10 +- command/history.md | 19 +++- command/hostname.md | 15 ++- command/iptables.md | 219 ++++++++++++++++++++++++++++++++--------- command/kill.md | 13 +-- command/locate.md | 11 +-- command/lsof.md | 17 ++-- command/mtr.md | 12 +++ command/openssl.md | 26 +++-- command/ps.md | 4 +- command/rm.md | 21 ++-- command/rpm.md | 48 +++++++-- command/rsync.md | 15 ++- command/rz.md | 11 +++ command/ss.md | 96 +++++++++--------- command/ssh.md | 66 +++++++------ command/supervisord.md | 20 ++++ command/sz.md | 12 +++ command/tail.md | 8 +- command/tar.md | 96 +++++++++--------- command/telnet.md | 64 ++++++------ command/tmux.md | 22 +++++ command/tree.md | 8 +- command/ulimit.md | 8 +- command/uname.md | 8 +- command/unzip.md | 10 +- command/usermod.md | 17 +++- command/watch.md | 8 +- command/xz.md | 32 +++--- command/yum.md | 41 ++++++-- command/zip.md | 16 ++- 40 files changed, 933 insertions(+), 397 deletions(-) create mode 100644 command/ack.md create mode 100644 command/apk.md create mode 100644 command/cloc.md create mode 100644 command/fishshell.md create mode 100644 command/mtr.md create mode 100644 command/rz.md create mode 100644 command/supervisord.md create mode 100644 command/sz.md create mode 100644 command/tmux.md diff --git a/command/ack.md b/command/ack.md new file mode 100644 index 00000000000..ee8ad5c38b1 --- /dev/null +++ b/command/ack.md @@ -0,0 +1,14 @@ +ack +=== + +比grep好用的文本搜索工具 + +## 示例 + +``` +# install +apk install ack + +# use +ack +``` \ No newline at end of file diff --git a/command/apk.md b/command/apk.md new file mode 100644 index 00000000000..5abd5fc812e --- /dev/null +++ b/command/apk.md @@ -0,0 +1,100 @@ +apk +=== + +Alpine Linux 下的包管理工具 + +## quick start + +``` +apk install xxx +apk search xxx # 支持正则 +apk info xxx # 查看包的详细信息 +apk show # list local package +``` + +## 笔记 + +还是蛮喜欢 alpine 的,简单纯粹 + +``` +apk add iproute2 # ss vs netstat +ss -ptl +apk add drill # drill vs nslookup&dig + +crond # 开启 cron 服务 +crontab -l -e + +apk add xxx +apk search -v xxx +apk info -a xxx +apk info +echo -e "http://mirrors.aliyun.com/alpine/v3.6/main\nhttp://mirrors.aliyun.com/alpine/v3.6/community" > /etc/apk/repositories +apk update + +# storage +ibu # alpine local backup + +# network +echo "shortname" > /etc/hostname +hostname -F /etc/hostname +/etc/hosts +/etc/resolv.conf # conig DNS +modprobe ipv6 # enable ipv6 +echo "ipv6" >> /etc/modules +iface # config interface +apk add iptables ip6tables iptables-doc +/etc/init.d/networking restart # activate change +apke add iputils # IPv6 traceroute +traceroute6 ipv6.google.com +awall # alpine wall +# setup a openvpn server + +# post-install +/etc/apk/repositories +apk add cherokee --update-cache --repository http://dl-3.alpinelinux.org/alpine/edge/testing/ --allow-untrusted +apk search -v --description 'NTP' # show description and search from description +apk info -a zlib +apk info -vv|sort +apk info -r -R # require / depency +apk version -v -l '<' # show available updates +apk upgrade -U -a +apk add -u xxx # update xxx + +/etc/runlevels # runlevel +apk add openrc # use openrc for init system +rc-update add xxx # set to start on +rc-service xxx start # equal -> /etc/init.d/xxx start +rc-status + +adduser xxx +passwd xxx + +apk add ansible # server +ssh-keygen +/etc/ansible/hosts +apk add python # node +ssh-copy-id + +apk add man man-pages mdocml-apropos less less-doc +export PAGER=less +/etc/rc.conf # /etc/rc.conf -> funny character +apk add bash bash-doc bash-completion # bash +apk add util-linux pciutils usbutils coreutils binutils findutils grep # grep / awk +apk add build-base gcc abuild binutils binutils-doc gcc-doc # compile +apk add cmake cmake-doc extra-cmake-modules extra-cmake-modules-doc +apk add ccache ccache-doc + +apk add docker # docker +rc-update add docker boot +rc-service docker start +apk add py-pip +pip install docker-compose +ln -s /usr/bin/docker-compose /usr/bin/doc + +# application +apk add openssh # ssh +rc-update add sshd +/etc/init.d/sshd start +/etc/sshd_config +apk add dropbear # another openssh implementation +``` \ No newline at end of file diff --git a/command/cloc.md b/command/cloc.md new file mode 100644 index 00000000000..971017d6d21 --- /dev/null +++ b/command/cloc.md @@ -0,0 +1,12 @@ +cloc +=== + +代码行数统计 + +## quick start + +``` +apk add cloc + +cloc dir --exclude-dir # 代码行数统计 +``` \ No newline at end of file diff --git a/command/curl.md b/command/curl.md index 591540ee244..1c0a3712bc3 100644 --- a/command/curl.md +++ b/command/curl.md @@ -7,13 +7,13 @@ curl **curl命令** 是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。做网页处理流程和数据检索自动化,curl可以祝一臂之力。 -### 语法 +### 语法 ``` curl(选项)(参数) ``` -### 选项 +### 选项 @@ -119,9 +119,9 @@ curl(选项)(参数)
-### 实例 +### 实例 -**文件下载** +**文件下载** curl命令可以用来执行下载、发送各种HTTP请求,指定HTTP头部等操作。如果系统没有curl可以使用`yum install curl`安装,也可以下载安装。curl是将下载文件输出到stdout,将进度信息输出到stderr,不显示进度信息使用`--silent`选项。 @@ -144,7 +144,7 @@ curl http://man.linuxde.net/test.iso -o filename.iso --progress ######################################### 100.0% ``` -**断点续传** +**断点续传** curl能够从特定的文件偏移处继续下载,它可以通过指定一个便宜量来下载部分文件: @@ -155,7 +155,7 @@ curl URL/File -C 偏移量 curl -C -URL ``` -**使用curl设置参照页字符串** +**使用curl设置参照页字符串** 参照页是位于HTTP头部中的一个字符串,用来表示用户是从哪个页面到达当前页面的,如果用户点击网页A中的某个连接,那么用户就会跳转到B网页,网页B头部的参照页字符串就包含网页A的URL。 @@ -165,7 +165,7 @@ curl -C -URL curl --referer http://www.google.com http://man.linuxde.net ``` -**用curl设置cookies** +**用curl设置cookies** 使用`--cookie "COKKIES"`选项来指定cookie,多个cookie使用分号分隔: @@ -179,7 +179,7 @@ curl http://man.linuxde.net --cookie "user=root;pass=123456" curl URL --cookie-jar cookie_file ``` -**用curl设置用户代理字符串** +**用curl设置用户代理字符串** 有些网站访问会提示只能使用IE浏览器来访问,这是因为这些网站设置了检查用户代理,可以使用curl把用户代理设置为IE,这样就可以访问了。使用`--user-agent`或者`-A`选项: @@ -194,7 +194,7 @@ curl URL -A "Mozilla/5.0" curl -H "Host:man.linuxde.net" -H "accept-language:zh-cn" URL ``` -**curl的带宽控制和下载配额** +**curl的带宽控制和下载配额** 使用`--limit-rate`限制curl的下载速度: @@ -212,7 +212,7 @@ curl URL --max-filesize bytes 如果文件大小超出限制,命令则返回一个非0退出码,如果命令正常则返回0。 -**用curl进行认证** +**用curl进行认证** 使用curl选项 -u 可以完成HTTP或者FTP的认证,可以指定密码,也可以不指定密码在后续操作中输入密码: @@ -221,7 +221,7 @@ curl -u user:pwd http://man.linuxde.net curl -u user http://man.linuxde.net ``` -**只打印响应头部信息** +**只打印响应头部信息** 通过`-I`或者`-head`可以只打印出HTTP头部信息: @@ -257,4 +257,10 @@ curl -d "param1=value1¶m2=value2" "http://www.wangchujiang.com" curl -l -H "Content-type: application/json" -X POST -d '{"phone":"13521389587","password":"test"}' http://wangchujiang.com/apis/users.json ``` +**获取本机外网ip** + +```bash +curl ipecho.net/plain +``` + diff --git a/command/dos2unix.md b/command/dos2unix.md index 4f4939d0a4a..296a9e408a7 100644 --- a/command/dos2unix.md +++ b/command/dos2unix.md @@ -1,19 +1,19 @@ dos2unix === - + 将DOS格式文本文件转换成Unix格式 ## 补充说明 **dos2unix命令** 用来将DOS格式的文本文件转换成UNIX格式的(DOS/MAC to UNIX text file format converter)。DOS下的文本文件是以`\r\n`作为断行标志的,表示成十六进制就是0D 0A。而Unix下的文本文件是以\n作为断行标志的,表示成十六进制就是0A。DOS格式的文本文件在Linux底下,用较低版本的vi打开时行尾会显示`^M`,而且很多命令都无法很好的处理这种格式的文件,如果是个shell脚本,。而Unix格式的文本文件在Windows下用Notepad打开时会拼在一起显示。因此产生了两种格式文件相互转换的需求,对应的将UNIX格式文本文件转成成DOS格式的是unix2dos命令。 -### 语法 +### 语法 ``` dos2unix [-hkqV] [-c convmode] [-o file ...] [-n infile outfile ...] ``` -### 选项 +### 选项 ``` -k:保持输出文件的日期不变 @@ -24,11 +24,11 @@ dos2unix [-hkqV] [-c convmode] [-o file ...] [-n infile outfile ...] -n:写入到新文件 ``` -### 参数 +### 参数 参数:需要转换到文件。 -### 实例 +### 实例 最简单的用法就是dos2unix直接跟上文件名: @@ -58,5 +58,10 @@ dos2unix -k -o file1 file2 file3 dos2unix -k -n oldfile newfile ``` +转换当前目录下所有文件 + +``` +find -type f | xargs dos2unix +``` \ No newline at end of file diff --git a/command/du.md b/command/du.md index 6981b1494d0..b86d99869b1 100644 --- a/command/du.md +++ b/command/du.md @@ -1,19 +1,19 @@ du === - + 显示每个文件和目录的磁盘使用空间 ## 补充说明 **du命令** 也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的。 -### 语法 +### 语法 ``` du [选项][文件] ``` -### 选项 +### 选项 ``` -a或-all 显示目录中个别文件的大小。 @@ -33,7 +33,7 @@ du [选项][文件] -l或--count-links 重复计算硬件链接的文件。 ``` -### 实例 +### 实例 显示目录或者文件所占空间: @@ -98,5 +98,10 @@ root@localhost [test]# du 1288 test ``` +显示总和的大小且易读: + +``` +du -sh $dir +``` \ No newline at end of file diff --git a/command/find.md b/command/find.md index cd3e5e8ddaa..de3cad7d810 100644 --- a/command/find.md +++ b/command/find.md @@ -7,13 +7,13 @@ find **find命令** 用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。 -### 语法 +### 语法 ``` find(选项)(参数) ``` -### 选项 +### 选项 ``` -amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算; @@ -73,7 +73,7 @@ find(选项)(参数) -xtype<文件类型>:此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查。 ``` -### 参数 +### 参数 起始目录:查找文件的起始目录。 @@ -84,7 +84,7 @@ find(选项)(参数) find . -type f -name "*" | xargs grep "140.206.111.111" ``` -#### 根据文件或者正则表达式进行匹配 +#### 根据文件或者正则表达式进行匹配 列出当前目录及子目录下所有文件和文件夹 @@ -111,7 +111,7 @@ find . \( -name "*.txt" -o -name "*.pdf" \) 或 -find . -name "*.txt" -o -name "*.pdf" +find . -name "*.txt" -o -name "*.pdf" ``` 匹配文件路径或者文件 @@ -132,7 +132,7 @@ find . -regex ".*\(\.txt\|\.pdf\)$" find . -iregex ".*\(\.txt\|\.pdf\)$" ``` -#### 否定参数 +#### 否定参数 找出/home下不是以.txt结尾的文件 @@ -140,7 +140,7 @@ find . -iregex ".*\(\.txt\|\.pdf\)$" find /home ! -name "*.txt" ``` -#### 根据文件类型进行搜索 +#### 根据文件类型进行搜索 ``` find . -type 类型参数 @@ -156,7 +156,7 @@ find . -type 类型参数 * **s** 套接字 * **p** Fifo -#### 基于目录深度搜索 +#### 基于目录深度搜索 向下最大深度限制为3 @@ -170,7 +170,7 @@ find . -maxdepth 3 -type f find . -mindepth 2 -type f ``` -#### 根据文件时间戳进行搜索 +#### 根据文件时间戳进行搜索 ``` find . -type f 时间戳 @@ -212,7 +212,7 @@ find . -type f -amin +10 find . -type f -newer file.log ``` -#### 根据文件大小进行匹配 +#### 根据文件大小进行匹配 ``` find . -type f -size 文件大小单元 @@ -245,7 +245,7 @@ find . -type f -size -10k find . -type f -size 10k ``` -#### 删除匹配文件 +#### 删除匹配文件 删除当前目录下所有.txt文件 @@ -253,7 +253,7 @@ find . -type f -size 10k find . -type f -name "*.txt" -delete ``` -#### 根据文件权限/所有权进行匹配 +#### 根据文件权限/所有权进行匹配 当前目录下搜索出权限为777的文件 @@ -279,7 +279,7 @@ find . -type f -user tom find . -type f -group sunk ``` -#### 借助`-exec`选项与其他命令结合使用 +#### 借助`-exec`选项与其他命令结合使用 找出当前目录下所有root的文件,并把所有权更改为用户tom @@ -321,7 +321,7 @@ find . -type f -name "*.txt" -exec printf "File: %s\n" {} \; -exec ./text.sh {} \; ``` -#### 搜索但跳出指定的目录 +#### 搜索但跳出指定的目录 查找当前目录或者子目录下所有.txt文件,但是跳过子目录sk @@ -329,7 +329,7 @@ find . -type f -name "*.txt" -exec printf "File: %s\n" {} \; find . -path "./sk" -prune -o -name "*.txt" -print ``` -#### find其他技巧收集 +#### find其他技巧收集 要列出所有长度为零的文件 @@ -373,5 +373,17 @@ find /data -owner bcotton find ~ -perm -o=r ``` +删除 mac 下自动生成的文件 + +``` +find ./ -name '__MACOSX' -depth -exec rm -rf {} \; +``` + +统计代码行数 + +``` +find . -name "*.java"|xargs cat|grep -v ^$|wc -l # 代码行数统计, 排除空行 +``` + diff --git a/command/fishshell.md b/command/fishshell.md new file mode 100644 index 00000000000..8d65e727c66 --- /dev/null +++ b/command/fishshell.md @@ -0,0 +1,42 @@ +# fishshell + +比 bash 更好用的 shell + +## quick start + +> [fish-shell](http://fishshell.com):强烈推荐 + +配置文件: `fish_config` +Running Commands: 兼容 bash 等shell的命令执行方式 +Getting Help: `help/man cmd -> browser/terminal` +Syntax Highlighting: 实时检查命令是否正确 +Wildcards: 支持缩写 `*` 递归 匹配 +Pipes and Redirections: 使用 `^` 代表 stderr +Autosuggestions: 自动建议, 可以使用 `Ctrl-f / ->` 来补全 +Tab Completions: 更强大的 tab 补全 +Variables: 使用 set 设置 +Exit Status: 使用 `echo $status` 替代 `$?` +Exports (Shell Variables) +Lists: all variables in fish are really lists +Command Substitutions: 使用 `(cmd)` 来执行命令, 而不是 反引号、`$()` +Combiners (And, Or, Not): 不支持使用符合来表示逻辑运算 +Functions:使用 `$argv` 替代 `$1` +Conditionals (If, Else, Switch) / Functions / Loops: 更人性化的写法(参考 py) +Prompt: `function fish_prompt` 实现 +Startup (Where's .bashrc?): `~/.config/fish/config.fish`,更好的方式是 autoloading-function、universal-variables +Autoloading Functions: ` ~/.config/fish/functions/.` +Universal Variables:a variable whose value is shared across all instances of fish + +``` +set name 'czl' # 设置变量,替代 name=czl +echo $name +echo $status # exit status,替代 $? +env # 环境变量 +set -x MyVariable SomeValue # 替代 export +set -e MyVariable +set PATH $PATH /usr/local/bin # 使用 lists 记录 PATH +set -U fish_user_paths /usr/local/bin $fish_user_paths # 永久生效 +touch "testing_"(date +%s)".txt" # command subtitution,替代 `date +%s` +cp file.txt file.txt.bak; and echo 'back success'; or echo 'back fail' # combiner +functions # 列出 fish 下定义的函数 +``` \ No newline at end of file diff --git a/command/gdb.md b/command/gdb.md index 52a6d0e8591..d02397ba061 100644 --- a/command/gdb.md +++ b/command/gdb.md @@ -1,6 +1,6 @@ gdb === - + 功能强大的程序调试器 ## 补充说明 @@ -25,7 +25,7 @@ gdb file <文件名> -加载被调试的可执行程序文件。 +加载被调试的可执行程序文件。 因为一般都在被调试程序所在目录下执行GDB,因而文本名不需要带路径。 (gdb) file gdb-sample @@ -36,7 +36,7 @@ gdb r -Run的简写,运行被调试的程序。 +Run的简写,运行被调试的程序。 如果此前没有下过断点,则执行完整个程序;如果有断点,则程序暂停在第一个可用断点处。 (gdb) r @@ -55,17 +55,17 @@ gdb -b <行号> -b <函数名称> -b *<函数名称> +b <行号> +b <函数名称> +b *<函数名称> b *<代码地址> d [编号] -b: Breakpoint的简写,设置断点。两可以使用“行号”“函数名称”“执行地址”等方式指定断点位置。 +b: Breakpoint的简写,设置断点。两可以使用“行号”“函数名称”“执行地址”等方式指定断点位置。 其中在函数名称前面加“*”符号表示将断点设置在“由编译器生成的prolog代码处”。如果不了解汇编,可以不予理会此用法。 d: Delete breakpoint的简写,删除指定编号的某个断点,或删除所有断点。断点编号从1开始递增。 -(gdb) b 8 -(gdb) b main -(gdb) b *main +(gdb) b 8 +(gdb) b main +(gdb) b *main (gdb) b *0x804835c (gdb) d @@ -74,11 +74,11 @@ b *<代码地址> d [编号] s, n -s: 执行一行源程序代码,如果此行代码中有函数调用,则进入该函数; -n: 执行一行源程序代码,此行代码中的函数调用也一并执行。 s 相当于其它调试器中的“Step Into (单步跟踪进入)”; +s: 执行一行源程序代码,如果此行代码中有函数调用,则进入该函数; +n: 执行一行源程序代码,此行代码中的函数调用也一并执行。 s 相当于其它调试器中的“Step Into (单步跟踪进入)”; n 相当于其它调试器中的“Step Over (单步跟踪)”。 这两个命令必须在有源代码调试信息的情况下才可以使用(GCC编译时使用“-g”参数)。 -(gdb) s +(gdb) s (gdb) n @@ -89,7 +89,7 @@ n 相当于其它调试器中的“Step Over (单步跟踪)”。 这两个命 si命令类似于s命令,ni命令类似于n命令。所不同的是,这两个命令(si/ni)所针对的是汇编指令,而s/n针对的是源代码。 -(gdb) si +(gdb) si (gdb) ni @@ -100,7 +100,7 @@ n 相当于其它调试器中的“Step Over (单步跟踪)”。 这两个命 Print的简写,显示指定变量(临时变量或全局变量)的值。 -(gdb) p i +(gdb) p i (gdb) p nGlobalVar @@ -109,9 +109,9 @@ n 相当于其它调试器中的“Step Over (单步跟踪)”。 这两个命 display ... undisplay <编号> -display,设置程序中断后欲显示的数据及其格式。 -例如,如果希望每次程序中断后可以看到即将被执行的下一条汇编指令,可以使用命令 -“display /i $pc” +display,设置程序中断后欲显示的数据及其格式。 +例如,如果希望每次程序中断后可以看到即将被执行的下一条汇编指令,可以使用命令 +“display /i $pc” 其中 $pc 代表当前汇编指令,/i 表示以十六进行显示。当需要关心汇编代码时,此命令相当有用。 undispaly,取消先前的display设置,编号从1开始递增。 (gdb) display /i $pc (gdb) undisplay 1 @@ -142,7 +142,7 @@ n 相当于其它调试器中的“Step Over (单步跟踪)”。 这两个命 help [命令名称] -GDB帮助命令,提供对GDB名种命令的解释说明。 +GDB帮助命令,提供对GDB名种命令的解释说明。 如果指定了“命令名称”参数,则显示该命令的详细说明;如果没有指定参数,则分类显示所有GDB命令,供用户进一步浏览和查询。 (gdb) help @@ -153,13 +153,13 @@ n 相当于其它调试器中的“Step Over (单步跟踪)”。 这两个命 -### 语法 +### 语法 ``` gdb(选项)(参数) ``` -### 选项 +### 选项 ``` -cd:设置工作目录; @@ -169,11 +169,11 @@ gdb(选项)(参数) -s:设置读取的符号表文件。 ``` -### 参数 +### 参数 文件:二进制可执行程序。 -### 实例 +### 实例 以下是linux下dgb调试的一个实例,先给出一个示例用的小程序,C语言代码: @@ -457,5 +457,50 @@ eax 0xbffff6a4 -1073744220 The program is running. exit anyway? (y or n) ``` +## 补充内容 + +> gdb 教程:[慕课网-Linux C语言指针与内存-第三章](http://www.imooc.com/learn/394) + +如果删除源代码, 就无法显示行号等辅助信息了 + +``` +gcc -g gdb.c -o gdb.out # -g 支持gdb调试; -o 输出, 默认为 a.out + +gdb gdb.out # 进入 gdb 调试环境 +enter # 继续执行上条命令 +l # 列出源代码, 默认 10 行, 按 l 继续 + +start # 开始单步调试, 默认 main() 第一行 +p a # 查看 a 变量的值 +n # 继续到下一行 +s # 进入子函数 +bt # 查看函数栈 +f 1 # 切换函数栈 + +q 退出调试 +``` + +```c +# 测试用代码 +#include + +void change(int a, int b){ + int tmp=a; + a=b; b=tmp; +} + +void change2(int *a, int *b){ + int tmp=*a; + *a=*b; *b=tmp; +} + +int main(){ + int a=5,b=3; + change(a,b); + printf("change:\na=%d\nb=%d\n", a,b); + change2(&a,&b); + printf("change2:\na=%d\nb=%d\n", a,b); +} +``` \ No newline at end of file diff --git a/command/gzip.md b/command/gzip.md index 7d4c58cbda2..b9b96b0ad89 100644 --- a/command/gzip.md +++ b/command/gzip.md @@ -9,13 +9,13 @@ gzip gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。 -### 语法 +### 语法 ``` gzip(选项)(参数) ``` -### 选项 +### 选项 ``` -a或——ascii:使用ASCII文字模式; @@ -35,14 +35,14 @@ gzip(选项)(参数) -<压缩效率>:压缩效率是一个介于1~9的数值,预设值为“6”,指定愈大的数值,压缩效率就会愈高; --best:此参数的效果和指定“-9”参数相同; --fast:此参数的效果和指定“-1”参数相同。 --num 用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6。 +-num 用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6。 ``` -### 参数 +### 参数 文件列表:指定要压缩的文件列表。 -### 实例 +### 实例 把test6目录下的每个文件压缩成.gz文件 diff --git a/command/history.md b/command/history.md index 5ff357ced40..8b9653779a5 100644 --- a/command/history.md +++ b/command/history.md @@ -11,13 +11,13 @@ history 历史命令是被保存在内存中的,当退出或者登录shell时,会自动保存或读取。在内存中,历史命令仅能够存储1000条历史命令,该数量是由环境变量`HISTSIZE`进行控制。 -### 语法 +### 语法 ``` history(选项)(参数) ``` -### 选项 +### 选项 ``` -c:清空当前历史命令; @@ -26,11 +26,11 @@ history(选项)(参数) -w:将当前历史命令缓冲区命令写入历史命令文件中。 ``` -### 参数 +### 参数 n:打印最近的n条历史命令。 -### 实例 +### 实例 使用history命令显示最近使用的10条历史命令,输入如下命令: @@ -63,4 +63,15 @@ n:打印最近的n条历史命令。 [root@localhost ~]# history -c ``` +更多实例: + +``` +history -cw +`~/.bash_history`: 保存历史命令 +`/etc/profile` -> HISSIZE: 历史命令保存数量 +推荐添加 h -> history, hsi -> history|grep 别名 +`!n`: 执行第 n 条历史命令 +`!xxx`: 执行最后一条 xxx 开头的命令 +``` + diff --git a/command/hostname.md b/command/hostname.md index 2fd65458b4a..92b0b676eb7 100644 --- a/command/hostname.md +++ b/command/hostname.md @@ -1,19 +1,19 @@ hostname === - + 显示和设置系统的主机名 ## 补充说明 **hostname命令** 用于显示和设置系统的主机名称。环境变量HOSTNAME也保存了当前的主机名。在使用hostname命令设置主机名后,系统并不会永久保存新的主机名,重新启动机器之后还是原来的主机名。如果需要永久修改主机名,需要同时修改`/etc/hosts`和`/etc/sysconfig/network`的相关内容。 -### 语法 +### 语法 ``` hostname(选项)(参数) ``` -### 选项 +### 选项 ``` -v:详细信息模式; @@ -25,15 +25,20 @@ hostname(选项)(参数) -y:显示NIS域名。 ``` -### 参数 +### 参数 主机名:指定要设置的主机名。 -### 实例 +### 实例 ``` [root@AY1307311912260196fcZ ~]# hostname AY1307311912260196fcZ + +# change hostname +hostname newname # for now +vi /etc/hosts # forever +reboot ``` diff --git a/command/iptables.md b/command/iptables.md index 89359a28c19..f408cae0a5b 100644 --- a/command/iptables.md +++ b/command/iptables.md @@ -40,13 +40,13 @@ Linux上常用的防火墙软件 -### 语法 +### 语法 ``` iptables(选项)(参数) ``` -### 选项 +### 选项 ```bash -t, --table table 对指定的表 table 进行操作, table 必须是 raw, nat,filter,mangle 中的一个。如果不指定此选项,默认的是 filter 表。 @@ -124,14 +124,14 @@ iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协 3. mangle功能:修改报文原数据,是5个链都可以做:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING 我们修改报文原数据就是来修改TTL的。能够实现将数据包的元数据拆开,在里面做标记/修改内容的。而防火墙标记,其实就是靠mangle来实现的。 - + 小扩展: - 对于filter来讲一般只能做在3个链上:INPUT ,FORWARD ,OUTPUT - 对于nat来讲一般也只能做在3个链上:PREROUTING ,OUTPUT ,POSTROUTING - 而mangle则是5个链都可以做:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING - -iptables/netfilter(这款软件)是工作在用户空间的,它可以让规则进行生效的,本身不是一种服务,而且规则是立即生效的。而我们iptables现在被做成了一个服务,可以进行启动,停止的。启动,则将规则直接生效,停止,则将规则撤销。 + +iptables/netfilter(这款软件)是工作在用户空间的,它可以让规则进行生效的,本身不是一种服务,而且规则是立即生效的。而我们iptables现在被做成了一个服务,可以进行启动,停止的。启动,则将规则直接生效,停止,则将规则撤销。 iptables还支持自己定义链。但是自己定义的链,必须是跟某种特定的链关联起来的。在一个关卡设定,指定当有数据的时候专门去找某个特定的链来处理,当那个链处理完之后,再返回。接着在特定的链中继续检查。 @@ -159,40 +159,40 @@ iptables还支持自己定义链。但是自己定义的链,必须是跟某种 - **LOG** :日志记录。 ```bash - ┏╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┓ - ┌───────────────┐ ┃ Network ┃ - │ table: filter │ ┗━━━━━━━┳━━━━━━━┛ - │ chain: INPUT │◀────┐ │ - └───────┬───────┘ │ ▼ - │ │ ┌───────────────────┐ - ┌ ▼ ┐ │ │ table: nat │ - │local process│ │ │ chain: PREROUTING │ - └ ┘ │ └─────────┬─────────┘ - │ │ │ + ┏╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┓ + ┌───────────────┐ ┃ Network ┃ + │ table: filter │ ┗━━━━━━━┳━━━━━━━┛ + │ chain: INPUT │◀────┐ │ + └───────┬───────┘ │ ▼ + │ │ ┌───────────────────┐ + ┌ ▼ ┐ │ │ table: nat │ + │local process│ │ │ chain: PREROUTING │ + └ ┘ │ └─────────┬─────────┘ + │ │ │ ▼ │ ▼ ┌─────────────────┐ ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ │ ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ │table: nat │ Routing decision └───── outing decision ─────▶│chain: PREROUTING│ ┅┅┅┅┅┅┅┅┅┳┅┅┅┅┅┅┅┅┅ ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ └────────┬────────┘ - │ │ - ▼ │ - ┌───────────────┐ │ - │ table: nat │ ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ │ - │ chain: OUTPUT │ ┌─────▶ outing decision ◀──────────────┘ - └───────┬───────┘ │ ┅┅┅┅┅┅┅┅┳┅┅┅┅┅┅┅┅ - │ │ │ - ▼ │ ▼ - ┌───────────────┐ │ ┌────────────────────┐ - │ table: filter │ │ │ chain: POSTROUTING │ - │ chain: OUTPUT ├────┘ └──────────┬─────────┘ - └───────────────┘ │ - ▼ - ┏╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┓ - ┃ Network ┃ - ┗━━━━━━━━━━━━━━━┛ -``` - - -### 实例 + │ │ + ▼ │ + ┌───────────────┐ │ + │ table: nat │ ┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅ │ + │ chain: OUTPUT │ ┌─────▶ outing decision ◀──────────────┘ + └───────┬───────┘ │ ┅┅┅┅┅┅┅┅┳┅┅┅┅┅┅┅┅ + │ │ │ + ▼ │ ▼ + ┌───────────────┐ │ ┌────────────────────┐ + │ table: filter │ │ │ chain: POSTROUTING │ + │ chain: OUTPUT ├────┘ └──────────┬─────────┘ + └───────────────┘ │ + ▼ + ┏╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┓ + ┃ Network ┃ + ┗━━━━━━━━━━━━━━━┛ +``` + + +### 实例 #### 空当前的所有规则和计数 @@ -205,14 +205,14 @@ iptables -Z # 清空计数 #### 配置允许ssh端口连接 ```bash -iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT +iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT # 22为你的ssh端口, -s 192.168.1.0/24表示允许这个网段的机器来连接,其它网段的ip地址是登陆不了你的机器的。 -j ACCEPT表示接受这样的请求 ``` #### 允许本地回环地址可以正常使用 ```bash -iptables -A INPUT -i lo -j ACCEPT +iptables -A INPUT -i lo -j ACCEPT #本地圆环地址就是那个127.0.0.1,是本机上使用的,它进与出都设置为允许 iptables -A OUTPUT -o lo -j ACCEPT ``` @@ -245,7 +245,7 @@ iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 已经建立 ```bash cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak # 任何改动之前先备份,请保持这一优秀的习惯 -iptables-save > /etc/sysconfig/iptables +iptables-save > /etc/sysconfig/iptables cat /etc/sysconfig/iptables ``` @@ -331,19 +331,19 @@ iptables -A FORWARD -o eth0 ``` iptables -L -n -v Chain INPUT (policy DROP 48106 packets, 2690K bytes) - pkts bytes target prot opt in out source destination - 5075 589K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 + pkts bytes target prot opt in out source destination + 5075 589K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 191K 90M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 1499K 133M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 4364K 6351M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED - 6256 327K ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 + 6256 327K ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) - pkts bytes target prot opt in out source destination + pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 3382K packets, 1819M bytes) - pkts bytes target prot opt in out source destination - 5075 589K ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0 + pkts bytes target prot opt in out source destination + 5075 589K ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0 ``` #### 启动网络转发规则 @@ -371,14 +371,14 @@ iptables -A INPUT -p tcp -m string --algo kmp --string "test" -j REJECT --reject iptables -L # Chain INPUT (policy ACCEPT) -# target prot opt source destination +# target prot opt source destination # REJECT tcp -- anywhere anywhere STRING match "test" ALGO name kmp TO 65535 reject-with tcp-reset -# +# # Chain FORWARD (policy ACCEPT) -# target prot opt source destination -# +# target prot opt source destination +# # Chain OUTPUT (policy ACCEPT) -# target prot opt source destination +# target prot opt source destination ``` #### 阻止Windows蠕虫的攻击 @@ -393,5 +393,126 @@ iptables -I INPUT -j DROP -p tcp -s 0.0.0.0/0 -m string --algo kmp --string "cmd iptables -A INPUT -p tcp --syn -m limit --limit 5/second -j ACCEPT ``` +## 更多实例 +> 用iptables搭建一套强大的安全防护盾 http://www.imooc.com/learn/389 + +iptables: linux 下应用层防火墙工具 + +iptables 5链: 对应 Hook point +netfilter: linux 操作系统核心层内部的一个数据包处理模块 +Hook point: 数据包在 netfilter 中的挂载点; `PRE_ROUTING / INPUT / OUTPUT / FORWARD / POST_ROUTING` + +iptables & netfilter +![](http://7xq89b.com1.z0.glb.clouddn.com/netfilter&iptables.jpg) + +iptables 4表5链 +![](http://7xq89b.com1.z0.glb.clouddn.com/iptables-data-stream.jpg) + +iptables rules +![](http://7xq89b.com1.z0.glb.clouddn.com/iptables-rules.jpg) + +- 4表 + +**filter**: 访问控制 / 规则匹配 +**nat**: 地址转发 + mangle / raw + + - 规则 + +数据访问控制: ACCEPT / DROP / REJECT +数据包改写(nat -> 地址转换): snat / dnat +信息记录: log + +## 使用场景实例 +- 场景一 + +开放 tcp 10-22/80 端口 +开放 icmp +其他未被允许的端口禁止访问 + +存在的问题: 本机无法访问本机; 本机无法访问其他主机 + +- 场景二 + +ftp: 默认被动模式(服务器产生随机端口告诉客户端, 客户端主动连接这个端口拉取数据) +vsftpd: 使 ftp 支持主动模式(客户端产生随机端口通知服务器, 服务器主动连接这个端口发送数据) + +- 场景三 + +允许外网访问: +web +http -> 80/tcp; https -> 443/tcp +mail +smtp -> 25/tcp; smtps -> 465/tcp +pop3 -> 110/tcp; pop3s -> 995/tcp +imap -> 143/tcp + +内部使用: +file +nfs -> 123/udp +samba -> 137/138/139/445/tcp +ftp -> 20/21/tcp +remote +ssh -> 22/tcp +sql +mysql -> 3306/tcp +oracle -> 1521/tcp + +- 场景四 + +nat 转发 + +- 场景五 + +防CC攻击 + +``` +iptables -L -F -A -D # list flush append delete +# 场景一 +iptables -I INPUT -p tcp --dport 80 -j ACCEPT # 允许 tcp 80 端口 +iptables -I INPUT -p tcp --dport 10:22 -j ACCEPT # 允许 tcp 10-22 端口 +iptables -I INPUT -p icmp -j ACCEPT # 允许 icmp +iptables -A INPUT -j REJECT # 添加一条规则, 不允许所有 + +# 优化场景一 +iptables -I INPUT -i lo -j ACCEPT # 允许本机访问 +iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 允许访问外网 +iptables -I INPUT -p tcp --dport 80 -s 10.10.188.233 -j ACCEPT # 只允许固定ip访问80 + +# 场景二 +vi /etc/vsftpd/vsftpd.conf # 使用 vsftpd 开启 ftp 主动模式 +port_enable=yes +connect_from_port_20=YES +iptables -I INPUT -p tcp --dport 21 -j ACCEPT + +vi /etc/vsftpd/vsftpd.conf # 建议使用 ftp 被动模式 +pasv_min_port=50000 +pasv_max_port=60000 +iptables -I INPUT -p tcp --dport 21 -j ACCEPT +iptables -I INPUT -p tcp --dport 50000:60000 -j ACCEPT + +# 还可以使用 iptables 模块追踪来自动开发对应的端口 + +# 场景三 +iptables -I INPUT -i lo -j ACCEPT # 允许本机访问 +iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 允许访问外网 +iptables -I INPUT -s 10.10.155.0/24 -j ACCEPT # 允许内网访问 +iptables -I INPUT -p tcp -m multiport --dports 80,1723 -j ACCEPT # 允许端口, 80 -> http, 1723 -> vpn +iptables -A INPUT -j REJECT # 添加一条规则, 不允许所有 + +iptables-save # 保存设置到配置文件 + +# 场景四 +iptables -t nat -L # 查看 nat 配置 + +iptables -t nat -A POST_ROUTING -s 10.10.177.0/24 -j SNAT --to 10.10.188.232 # SNAT +vi /etc/sysconfig/network # 配置网关 + +iptables -t nat -A POST_ROUTING -d 10.10.188.232 -p tcp --dport 80 -j DNAT --to 10.10.177.232:80 # DNAT + +#场景五 +iptables -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 -j REJECT # 限制并发连接访问数 +iptables -I INPUT -m limit --limit 3/hour --limit-burst 10 -j ACCEPT # limit模块; --limit-burst 默认为5 +``` diff --git a/command/kill.md b/command/kill.md index 3c762b337f2..cf4a80e969a 100644 --- a/command/kill.md +++ b/command/kill.md @@ -1,19 +1,20 @@ kill === - + 删除执行中的程序或工作 ## 补充说明 **kill命令** 用来删除执行中的程序或工作。kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或job指令查看。 -### 语法 +### 语法 ``` kill(选项)(参数) +xkill # 图形化关闭程序 ``` -### 选项 +### 选项 ``` -a:当处理当前进程时,不限制命令名和进程号的对应关系; @@ -23,11 +24,11 @@ kill(选项)(参数) -u:指定用户。 ``` -### 参数 +### 参数 进程或作业识别号:指定要删除的进程或作业。 -### 实例 +### 实例 列出所有信号名称: @@ -51,7 +52,7 @@ kill(选项)(参数) 63) SIGRTMAX-1 64) SIGRTMAX ``` -只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略, **下面是常用的信号:** +只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略, **下面是常用的信号:** ``` HUP 1 终端断线 diff --git a/command/locate.md b/command/locate.md index 39cb7760c3b..60c87d12a2d 100644 --- a/command/locate.md +++ b/command/locate.md @@ -1,7 +1,7 @@ locate === -Apache服务器的性能测试工具 +比 find 好用的文件查找工具 ## 补充说明 @@ -13,14 +13,13 @@ locate指定用在搜寻符合条件的档案,它会去储存档案与目录 locate指令和find找寻档案的功能类似,但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在 执行loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库。 - -### 语法 +### 语法 ``` locate [选择参数] [样式] ``` -### 选项 +### 选项 ``` -e 将排除在寻找的范围之外。 @@ -35,7 +34,7 @@ locate [选择参数] [样式] -V 显示程式的版本讯息 ``` -### 实例 +### 实例 实例1:查找和pwd相关的所有文件 @@ -58,7 +57,7 @@ root ~ # locate pwd /usr/share/help/el/empathy/irc-join-pwd.page ``` -实例2: 搜索etc目录下所有以sh开头的文件 +实例2: 搜索etc目录下所有以sh开头的文件 ``` root ~ # locate /etc/sh diff --git a/command/lsof.md b/command/lsof.md index 7d4a0cf8052..ed80d539364 100644 --- a/command/lsof.md +++ b/command/lsof.md @@ -1,7 +1,7 @@ lsof === - -显示Linux系统当前已打开的所有文件列表 + +显示Linux系统当前已打开的所有文件列表 `lsof -p pid` ## 补充说明 @@ -9,13 +9,13 @@ lsof 在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。 -### 语法 +### 语法 ``` lsof(选项) ``` -### 选项 +### 选项 ``` -a:列出打开文件存在的进程; @@ -32,7 +32,7 @@ lsof(选项) -v:显示版本信息。 ``` -### 实例 +### 实例 ``` lsof @@ -64,7 +64,7 @@ events/0 6 root txt unknown /proc events/1 7 root cwd DIR 8,2 4096 2 / ``` - **lsof输出各列信息的意义如下:** + **lsof输出各列信息的意义如下:** * COMMAND:进程的名称 * PID:进程标识符 @@ -127,5 +127,10 @@ events/1 7 root cwd DIR 8,2 4096 2 / 9. NODE:索引节点(文件在磁盘上的标识) 10. NAME:打开文件的确切名称 +列出指定进程号所打开的文件: + +``` +lsof -p $pid +``` \ No newline at end of file diff --git a/command/mtr.md b/command/mtr.md new file mode 100644 index 00000000000..d73de37717b --- /dev/null +++ b/command/mtr.md @@ -0,0 +1,12 @@ +mtr +=== + +比 traceroute 好用 + +## 实例 + +``` +apk add mtr # 安装 + +mtr -r www.baidu.com # 使用 +``` \ No newline at end of file diff --git a/command/openssl.md b/command/openssl.md index 7f33ade7f4a..e8c8de25000 100644 --- a/command/openssl.md +++ b/command/openssl.md @@ -13,19 +13,19 @@ OpenSSL有两种运行模式:交互模式和批处理模式。 OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库、SSL协议库以及应用程序。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。  - **对称加密算法** + **对称加密算法** OpenSSL一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4。这7种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)四种常用的分组密码加密模式。其中,AES使用的加密反馈模式(CFB)和输出反馈模式(OFB)分组长度是128位,其它算法使用的则是64位。事实上,DES算法里面不仅仅是常用的DES算法,还支持三个密钥和两个密钥3DES算法。  - **非对称加密算法** + **非对称加密算法** OpenSSL一共实现了4种非对称加密算法,包括DH算法、RSA算法、DSA算法和椭圆曲线算法(EC)。DH算法一般用户密钥交换。RSA算法既可以用于密钥交换,也可以用于数字签名,当然,如果你能够忍受其缓慢的速度,那么也可以用于数据加密。DSA算法则一般只用于数字签名。  - **信息摘要算法** + **信息摘要算法** OpenSSL实现了5种信息摘要算法,分别是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。SHA算法事实上包括了SHA和SHA1两种信息摘要算法,此外,OpenSSL还实现了DSS标准中规定的两种信息摘要算法DSS和DSS1。  - **密钥和证书管理** + **密钥和证书管理** 密钥和证书管理是PKI的一个重要组成部分,OpenSSL为之提供了丰富的功能,支持多种标准。  @@ -48,7 +48,7 @@ openssl rand -base64 10 nU9LlHO5nsuUvw== -**2、消息摘要算法应用例子** +**2、消息摘要算法应用例子** 用SHA1算法计算文件file.txt的哈西值,输出到stdout: @@ -86,7 +86,7 @@ nU9LlHO5nsuUvw== # openssl sha1 -verify rsapublic.pem -signature rsasign.bin file.txt ``` - **3、对称加密应用例子** + **3、对称加密应用例子** 对称加密应用例子,用DES3算法的CBC模式加密文件plaintext.doc,加密结果输出到文件ciphertext.bin。 @@ -118,7 +118,7 @@ nU9LlHO5nsuUvw== # openssl rc5 -in plaintext.doc -out ciphertext.bin -S C62CB1D49F158ADC -iv E9EDACA1BD7090C6 -K 89D4B1678D604FAA3DBFFD030A314B29 ``` - **4、Diffie-Hellman应用例子** + **4、Diffie-Hellman应用例子** 使用生成因子2和随机的1024-bit的素数产生D0ffie-Hellman参数,输出保存到文件dhparam.pem @@ -132,7 +132,7 @@ nU9LlHO5nsuUvw== # openssl dhparam -in dhparam.pem -noout -C ``` - **5、DSA应用例子应用例子** + **5、DSA应用例子应用例子** 生成1024位DSA参数集,并输出到文件dsaparam.pem。 @@ -158,7 +158,7 @@ nU9LlHO5nsuUvw== # openssl dsa -in dsaprivatekey.pem -out dsaprivatekey.pem -des3 -passin ``` - **6、RSA应用例子** + **6、RSA应用例子** 产生1024位RSA私匙,用3DES加密它,口令为trousers,输出到文件rsaprivatekey.pem @@ -220,5 +220,13 @@ cert.pem为X.509证书文件,用私匙key,pem为mail.txt签名,证书被包 # openssl smime -verify -in mail.sgn -out mail.txt ``` +更多实例: + +``` +openssl version -a +openssl help +openssl genrsa -aes128 -out fd.key 2048 # pem format +openssl rsa -text -in fd.key +``` diff --git a/command/ps.md b/command/ps.md index 0d9f6126361..e8ab177537e 100644 --- a/command/ps.md +++ b/command/ps.md @@ -7,13 +7,13 @@ ps **ps命令** 用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。 -### 语法 +### 语法 ``` ps(选项) ``` -### 选项 +### 选项 ``` -a:显示所有终端机下执行的程序,除了阶段作业领导者之外。 diff --git a/command/rm.md b/command/rm.md index 7a8612ae022..71c54a87254 100644 --- a/command/rm.md +++ b/command/rm.md @@ -9,13 +9,13 @@ rm 注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。rm命令可以用-i选项,这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项,系统会要求你逐一确定是否要删除。这时,必须输入y并按Enter键,才能删除文件。如果仅按Enter键或其他字符,文件不会被删除。 -### 语法 +### 语法 ``` rm (选项)(参数) ``` -### 选项 +### 选项 ``` -d:直接把欲删除的目录的硬连接数据删除成0,删除该目录; @@ -26,11 +26,11 @@ rm (选项)(参数) -v:显示指令的详细执行过程。 ``` -### 参数 +### 参数 文件:指定被删除的文件列表,如果参数中含有目录,则必须加上`-r`或者`-R`选项。 -### 实例 +### 实例 交互式删除当前目录下的文件test和example @@ -51,14 +51,14 @@ Remove example ?y(删除文件example) **rm 命令删除文件** ```bash -# rm 文件1 文件2 ... +# rm 文件1 文件2 ... rm testfile.txt ``` **rm 命令删除目录** -> rm -r [目录名称] -> -r 表示递归地删除目录下的所有文件和目录。 +> rm -r [目录名称] +> -r 表示递归地删除目录下的所有文件和目录。 > -f 表示强制删除 ``` @@ -68,7 +68,7 @@ rm -r testdir **删除操作前有确认提示** -> rm -i [文件/目录] +> rm -i [文件/目录] ``` rm -r -i testdir @@ -76,7 +76,7 @@ rm -r -i testdir **rm 忽略不存在的文件或目录** -> -f 选项(LCTT 译注:即 “force”)让此次操作强制执行,忽略错误提示 +> -f 选项(LCTT 译注:即 “force”)让此次操作强制执行,忽略错误提示 ``` rm -f [文件...] @@ -93,7 +93,7 @@ rm -I file1 file2 file3 **删除根目录** -> 当然,删除根目录(/)是 Linux 用户最不想要的操作,这也就是为什么默认 rm 命令不支持在根目录上执行递归删除操作。 +> 当然,删除根目录(/)是 Linux 用户最不想要的操作,这也就是为什么默认 rm 命令不支持在根目录上执行递归删除操作。 > 然而,如果你非得完成这个操作,你需要使用 --no-preserve-root 选项。当提供此选项,rm 就不会特殊处理根目录(/)了。 ``` @@ -106,5 +106,4 @@ rm -I file1 file2 file3 rm -v [文件/目录] ``` - diff --git a/command/rpm.md b/command/rpm.md index 312312f7fa0..a7d93b79c5d 100644 --- a/command/rpm.md +++ b/command/rpm.md @@ -1,19 +1,19 @@ rpm === - + RPM软件包的管理工具 ## 补充说明 **rpm命令** 是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度。 -### 语法 +### 语法 ``` rpm(选项)(参数) ``` -### 选项 +### 选项 ``` -a:查询所有套件; @@ -35,13 +35,13 @@ rpm(选项)(参数) -vv:详细显示指令执行过程,便于排错。 ``` -### 参数 +### 参数 软件包:指定要操纵的rpm软件包。 -### 实例 +### 实例 - **如何安装rpm软件包** + **如何安装rpm软件包** rpm软件包的安装可以使用程序rpm来完成。执行下面的命令: @@ -66,7 +66,7 @@ rpm -ivh your-package.rpm 此包需要的一些软件你没有安装可以用`rpm --nodeps -i`来忽略此信息,也就是说`rpm -i --force --nodeps`可以忽略所有依赖关系和文件问题,什么包都能安装上,但这种强制安装的软件包不能保证完全发挥功能。 - **如何安装.src.rpm软件包** + **如何安装.src.rpm软件包** 有些软件包是以.src.rpm结尾的,这类软件包是包含了源代码的rpm包,在安装时需要进行编译。这类软件包有两种安装方法: @@ -99,7 +99,7 @@ rpmbuild -bb your-package.specs #一个和你的软件包同名的specs文 执行`rpm -i new-package.rpm`即可安装完成。 - **如何卸载rpm软件包** + **如何卸载rpm软件包** 使用命令`rpm -e`包名,包名可以包含版本号等信息,但是不可以有后缀.rpm,比如卸载软件包proftpd-1.2.8-1,可以使用下列格式: @@ -127,7 +127,7 @@ rpm -e proftpd-1 这说明这个软件被其他软件需要,不能随便卸载,可以用rpm -e --nodeps强制卸载 - **如何不安装但是获取rpm包中的文件** + **如何不安装但是获取rpm包中的文件** 使用工具rpm2cpio和cpio @@ -139,7 +139,7 @@ rpm2cpio xxx.rpm | cpio --extract --make-directories 参数i和extract相同,表示提取文件。v表示指示执行进程,d和make-directory相同,表示根据包中文件原来的路径建立目录,m表示保持文件的更新时间。 - **如何查看与rpm包相关的文件和其他信息** + **如何查看与rpm包相关的文件和其他信息** 下面所有的例子都假设使用软件包mysql-3.23.54a-11 @@ -210,5 +210,33 @@ rpm -qf /usr/share/doc/proftpd-1.2.8/rfc/rfc0959.txt proftpd-1.2.8-1 ``` +## 更多实例 +> 库依赖: http://rpmfind.net/ + +源码包 -> 编译 -> 二进制包(rpm 包 / 系统默认包) + +rpm 命名规则: 软件(软件名, 软件版本) + 系统(os 版本, os 位数) +rpm 校验: SM5DLUGT -> size modified(类型/权限) md5 device L(文件路径) user group time(modified time) + +yum: 解决 rpm 依赖的问题 + +``` +# rpm +mysql57-community-release-el6-8.noarch.rpm # 一个 rpm 包的例子 +/var/lib/rpm/ # 包全名 -> 包名 的数据库 + +rpm -Uivh --dodeps xxx # upgrade install verbose hash +rpm -qilpfa|grep xxx # query info list(rpm包安装后的文件位置) package(rpm 包) file(文件属于哪个rpm文件) all +rpm -e # erase +rpm -V # verify +rpm2cpio | cpio -idv + +# rpm 默认安装位置 +/etc/ 配置文件 +/usr/bin/ 可执行文件 +/urs/lib/ 程序使用的函数库 +/usr/share/doc/ 使用手册 +/usr/share/man/ manual +``` \ No newline at end of file diff --git a/command/rsync.md b/command/rsync.md index 2a0da87359d..eb46597f9e8 100644 --- a/command/rsync.md +++ b/command/rsync.md @@ -1,13 +1,13 @@ rsync === - + 远程数据同步工具 ## 补充说明 **rsync命令** 是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。 rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明。 -### 语法 +### 语法 ``` rsync [OPTION]... SRC DEST @@ -27,7 +27,7 @@ rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST] 5. 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。如:`rsync -av /databack root@192.168.78.192::www` 6. 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:`rsync -v rsync://192.168.78.192/www` -### 选项 +### 选项 ``` -v, --verbose 详细模式输出。 @@ -93,9 +93,9 @@ rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST] -h, --help 显示帮助信息。 ``` -### 实例 +### 实例 - **SSH方式** + **SSH方式** 首先在服务端启动ssh服务: @@ -104,7 +104,7 @@ service sshd start 启动 sshd: [确定] ``` - **使用rsync进行同步** + **使用rsync进行同步** 接下来就可以在客户端使用rsync命令来备份服务端上的数据了,SSH方式是通过系统用户来进行备份的,如下: @@ -128,7 +128,7 @@ total size is 100663363 speedup is 1024.19 上面的信息描述了整个的备份过程,以及总共备份数据的大小。 - **后台服务方式** + **后台服务方式** 启动rsync服务,编辑`/etc/xinetd.d/rsync`文件,将其中的`disable=yes`改为`disable=no`,并重启xinetd服务,如下: @@ -222,5 +222,4 @@ sent 258 bytes received 76 bytes 95.43 bytes/sec total size is 150995011 speedup is 452080.87 ``` - \ No newline at end of file diff --git a/command/rz.md b/command/rz.md new file mode 100644 index 00000000000..187c547a52d --- /dev/null +++ b/command/rz.md @@ -0,0 +1,11 @@ +# rz + +文件上传 + +## quick start + +``` +apk add lrzsz + +rz +``` \ No newline at end of file diff --git a/command/ss.md b/command/ss.md index c9872c2e3a6..605bb486bec 100644 --- a/command/ss.md +++ b/command/ss.md @@ -1,7 +1,7 @@ ss === -获取socket统计信息,iproute2 包附带的另一个工具,允许你查询 socket 的有关统计信息。 +比 netstat 好用的socket统计信息,iproute2 包附带的另一个工具,允许你查询 socket 的有关统计信息。 ## 补充说明 @@ -11,14 +11,14 @@ ss 天下武功唯快不破。ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。当然,如果你的系统中没有tcp_diag,ss也可以正常运行,只是效率会变得稍慢。 -### 语法 +### 语法 ``` ss [参数] ss [参数] [过滤] ``` -### 选项 +### 选项 ``` -h, --help 帮助信息 @@ -49,7 +49,7 @@ ss [参数] [过滤] FILTER := [ state TCP-STATE ] [ EXPRESSION ] ``` -### 实例 +### 实例 ```bash ss -t -a # 显示TCP连接 @@ -69,8 +69,8 @@ time ss # 匹配远程地址和端口号 # ss dst ADDRESS_PATTERN ss dst 192.168.1.5 -ss dst 192.168.119.113:http -ss dst 192.168.119.113:smtp +ss dst 192.168.119.113:http +ss dst 192.168.119.113:smtp ss dst 192.168.119.113:443 # 匹配本地地址和端口号 @@ -87,22 +87,22 @@ ss src 192.168.119.103:25 ```bash # ss dport OP PORT 远程端口和一个数比较; # ss sport OP PORT 本地端口和一个数比较 -# OP 可以代表以下任意一个: +# OP 可以代表以下任意一个: # <= or le : 小于或等于端口号 # >= or ge : 大于或等于端口号 # == or eq : 等于端口号 # != or ne : 不等于端口号 # < or gt : 小于端口号 # > or lt : 大于端口号 -ss sport = :http -ss dport = :http -ss dport \> :1024 -ss sport \> :1024 -ss sport \< :32000 -ss sport eq :22 -ss dport != :22 -ss state connected sport = :http -ss \( sport = :http or sport = :https \) +ss sport = :http +ss dport = :http +ss dport \> :1024 +ss sport \> :1024 +ss sport \< :32000 +ss sport eq :22 +ss dport != :22 +ss state connected sport = :http +ss \( sport = :http or sport = :https \) ss -o state fin-wait-1 \( sport = :http or sport = :https \) dst 192.168.1/24 ``` @@ -110,8 +110,8 @@ ss -o state fin-wait-1 \( sport = :http or sport = :https \) dst 192.168.1/24 ```bash ss -4 state closing -# ss -4 state FILTER-NAME-HERE -# ss -6 state FILTER-NAME-HERE +# ss -4 state FILTER-NAME-HERE +# ss -6 state FILTER-NAME-HERE # FILTER-NAME-HERE 可以代表以下任何一个: # established、 syn-sent、 syn-recv、 fin-wait-1、 fin-wait-2、 time-wait、 closed、 close-wait、 last-ack、 listen、 closing、 # all : 所有以上状态 @@ -121,20 +121,20 @@ ss -4 state closing # big : 和bucket相反. ``` - **显示ICP连接** + **显示ICP连接** ``` [root@localhost ~]# ss -t -a -State Recv-Q Send-Q Local Address:Port Peer Address:Port -LISTEN 0 0 *:3306 *:* -LISTEN 0 0 *:http *:* -LISTEN 0 0 *:ssh *:* -LISTEN 0 0 127.0.0.1:smtp *:* -ESTAB 0 0 112.124.15.130:42071 42.156.166.25:http -ESTAB 0 0 112.124.15.130:ssh 121.229.196.235:33398 +State Recv-Q Send-Q Local Address:Port Peer Address:Port +LISTEN 0 0 *:3306 *:* +LISTEN 0 0 *:http *:* +LISTEN 0 0 *:ssh *:* +LISTEN 0 0 127.0.0.1:smtp *:* +ESTAB 0 0 112.124.15.130:42071 42.156.166.25:http +ESTAB 0 0 112.124.15.130:ssh 121.229.196.235:33398 ``` - **显示 Sockets 摘要** + **显示 Sockets 摘要** ``` [root@localhost ~]# ss -s @@ -142,54 +142,54 @@ Total: 172 (kernel 189) TCP: 10 (estab 2, closed 4, orphaned 0, synrecv 0, timewait 0/0), ports 5 Transport Total ip IPv6 -* 189 - - -RAW 0 0 0 -UDP 5 5 0 -TCP 6 6 0 -INET 11 11 0 -FRAG 0 0 0 +* 189 - - +RAW 0 0 0 +UDP 5 5 0 +TCP 6 6 0 +INET 11 11 0 +FRAG 0 0 0 ``` 列出当前的established, closed, orphaned and waiting TCP sockets - **列出所有打开的网络连接端口** + **列出所有打开的网络连接端口** ``` [root@localhost ~]# ss -l -Recv-Q Send-Q Local Address:Port Peer Address:Port -0 0 *:3306 *:* -0 0 *:http *:* -0 0 *:ssh *:* -0 0 127.0.0.1:smtp *:* +Recv-Q Send-Q Local Address:Port Peer Address:Port +0 0 *:3306 *:* +0 0 *:http *:* +0 0 *:ssh *:* +0 0 127.0.0.1:smtp *:* ``` - **查看进程使用的socket** + **查看进程使用的socket** ``` [root@localhost ~]# ss -pl -Recv-Q Send-Q Local Address:Port Peer Address:Port +Recv-Q Send-Q Local Address:Port Peer Address:Port 0 0 *:3306 *:* users:(("mysqld",1718,10)) 0 0 *:http *:* users:(("nginx",13312,5),("nginx",13333,5)) 0 0 *:ssh *:* users:(("sshd",1379,3)) 0 0 127.0.0.1:smtp *:* us ``` - **找出打开套接字/端口应用程序** + **找出打开套接字/端口应用程序** ``` [root@localhost ~]# ss -pl | grep 3306 0 0 *:3306 *:* users:(("mysqld",1718,10)) ``` - **显示所有UDP Sockets** + **显示所有UDP Sockets** ``` [root@localhost ~]# ss -u -a -State Recv-Q Send-Q Local Address:Port Peer Address:Port -UNCONN 0 0 *:syslog *:* -UNCONN 0 0 112.124.15.130:ntp *:* -UNCONN 0 0 10.160.7.81:ntp *:* -UNCONN 0 0 127.0.0.1:ntp *:* +State Recv-Q Send-Q Local Address:Port Peer Address:Port +UNCONN 0 0 *:syslog *:* +UNCONN 0 0 112.124.15.130:ntp *:* +UNCONN 0 0 10.160.7.81:ntp *:* +UNCONN 0 0 127.0.0.1:ntp *:* UNCONN 0 0 *:ntp *:* ``` diff --git a/command/ssh.md b/command/ssh.md index 3285fead278..522f1eb1d8a 100644 --- a/command/ssh.md +++ b/command/ssh.md @@ -7,13 +7,13 @@ openssh套件中的客户端连接工具 **ssh命令** 是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器。 -### 语法 +### 语法 ``` ssh(选项)(参数) ``` -### 选项 +### 选项 ``` -1:强制使用ssh协议版本1; @@ -38,7 +38,7 @@ ssh(选项)(参数) -y:开启信任X11转发功能。 ``` -### 参数 +### 参数 * 远程主机:指定要连接的远程ssh服务器; * 指令:要在远程ssh服务器上执行的指令。 @@ -50,12 +50,18 @@ ssh(选项)(参数) ssh user1@172.24.210.101 # 指定端口 ssh -p 2211 root@140.206.185.170 + +# ssh 大家族 +ssh user@ip -p22 # 默认用户名为当前用户名,默认端口为 22 +ssh-keygen # 为当前用户生成 ssh 公钥 + 私钥 +ssh-keygen -f keyfile -i -m key_format -e -m key_format # key_format: RFC4716/SSH2(default) PKCS8 PEM +ssh-copy-id user@ip:port # 将当前用户的公钥复制到需要 ssh 的服务器的 ~/.ssh/authorized_keys,之后可以免密登录 ``` ### 背后故事 > 英文:Tatu Ylonen -> 编译:Linux中国/kenxx +> 编译:Linux中国/kenxx > 来源:https://linux.cn/article-8476-1.html 为什么 SSH(安全终端)的端口号是 22 呢,这不是一个巧合,这其中有个我(Tatu Ylonen,SSH 协议的设计者)未曾诉说的故事。 @@ -73,37 +79,37 @@ ssh -p 2211 root@140.206.185.170 1995 年 7 月,就在我发布 ssh-1.0 前,我发送了一封邮件给 IANA: -> From ylo Mon Jul 10 11:45:48 +0300 1995 -> From: Tatu Ylonen -> To: Internet Assigned Numbers Authority -> Subject: 请求取得一个端口号 -> Organization: 芬兰赫尔辛基理工大学 -> -> 亲爱的机构成员: -> -> 我写了个可以在不安全的网络环境中安全地从一台机器登录到另一台机器的程序。它主要是对现有的 telnet 协议以及 rlogin 协议的功能性提升和安全性改进。说的具体些,就是可以防御 IP、DNS > 或路由等欺骗行为。我打算将我的软件免费地发布在因特网上,以得到广泛地使用。 -> -> 我希望为该软件注册一个特权端口号,要是这个端口号在 1 到 255 > 之间就更好了,这样它就可以用在名字服务器的 WKS 字段中了。 -> -> 我在附件中附上了协议标准的草案。这个软件已经在本地运行了几个月了,我已准备在获得端口号后就发布。如果端口号分配一事安排的及时,我希望这周就将要发布的软件准备好。我目前在 beta 版测试时使用的端口号是 > 22,如果要是能够分配到这个端口,我就不用做什么更改了(目前这个端口在列表中还是空闲的)。 -> -> 软件中服务的名称叫 ssh(系 Secure Shell 的缩写)。 -> -> 您最真诚的, -> Tatu Ylonen +> From ylo Mon Jul 10 11:45:48 +0300 1995 +> From: Tatu Ylonen +> To: Internet Assigned Numbers Authority +> Subject: 请求取得一个端口号 +> Organization: 芬兰赫尔辛基理工大学 +> +> 亲爱的机构成员: +> +> 我写了个可以在不安全的网络环境中安全地从一台机器登录到另一台机器的程序。它主要是对现有的 telnet 协议以及 rlogin 协议的功能性提升和安全性改进。说的具体些,就是可以防御 IP、DNS > 或路由等欺骗行为。我打算将我的软件免费地发布在因特网上,以得到广泛地使用。 +> +> 我希望为该软件注册一个特权端口号,要是这个端口号在 1 到 255 > 之间就更好了,这样它就可以用在名字服务器的 WKS 字段中了。 +> +> 我在附件中附上了协议标准的草案。这个软件已经在本地运行了几个月了,我已准备在获得端口号后就发布。如果端口号分配一事安排的及时,我希望这周就将要发布的软件准备好。我目前在 beta 版测试时使用的端口号是 > 22,如果要是能够分配到这个端口,我就不用做什么更改了(目前这个端口在列表中还是空闲的)。 +> +> 软件中服务的名称叫 ssh(系 Secure Shell 的缩写)。 +> +> 您最真诚的, +> Tatu Ylonen (LCTT 译注:DNS 协议中的 WKS 记录类型意即“众所周知的业务描述”,是类似于 A、MX 这样的 DNS 记录类型,用于描述某个 IP 所提供的服务,目前鲜见使用。参见: https://docs.oracle.com/cd/E19683-01/806-4077/dnsintro-154/index.html 。) 第二天,我就收到了 Joyce 发来的邮件: -> Date: Mon, 10 Jul 1995 15:35:33 -0700 -> From: jkrey@ISI.EDU -> To: ylo@cs.hut.fi -> Subject: 回复:请求取得一个端口号 -> Cc: iana@ISI.EDU -> Tatu, -> 我们将端口号 22 分配给 ssh 服务了,你目前是该服务的主要联系人。 -> Joyce +> Date: Mon, 10 Jul 1995 15:35:33 -0700 +> From: jkrey@ISI.EDU +> To: ylo@cs.hut.fi +> Subject: 回复:请求取得一个端口号 +> Cc: iana@ISI.EDU +> Tatu, +> 我们将端口号 22 分配给 ssh 服务了,你目前是该服务的主要联系人。 +> Joyce 这就搞定了!SSH 的端口正式使用 22!!! diff --git a/command/supervisord.md b/command/supervisord.md new file mode 100644 index 00000000000..6ce8926712c --- /dev/null +++ b/command/supervisord.md @@ -0,0 +1,20 @@ +supervisord +=== + +配置后台服务/常驻进程的工具 + +## 实例 + +``` +# supervisord +apt-get install supervisor +[program:app] +command=/usr/bin/gunicorn -w 1 wsgiapp:application +directory=/srv/www +user=www-data + +supervisord: 启动 supervisor 服务 +supervisorctl start app +supervisorctl stop app +supervisorctl reload # 修改/添加配置文件需要执行这个 +``` \ No newline at end of file diff --git a/command/sz.md b/command/sz.md new file mode 100644 index 00000000000..1597dc46f78 --- /dev/null +++ b/command/sz.md @@ -0,0 +1,12 @@ +sz +=== + +对话框式文件下载工具 + +## 实例 + +``` +apk add lrzsz # 安装 + +sz $file # 下载 +``` \ No newline at end of file diff --git a/command/tail.md b/command/tail.md index 2b0e2018dd0..0f8fadaf792 100644 --- a/command/tail.md +++ b/command/tail.md @@ -9,13 +9,13 @@ tail 注意:如果表示字节或行数的N值之前有一个”+”号,则从文件开头的第N项开始显示,而不是显示文件的最后N项。N值后面可以有后缀:b表示512,k表示1024,m表示1 048576(1M)。 -### 语法 +### 语法 ``` tail(选项)(参数) ``` -### 选项 +### 选项 ``` --retry:即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。使用此选项时需要与选项“——follow=name”连用; @@ -31,11 +31,11 @@ tail(选项)(参数) --version:显示指令的版本信息。 ``` -### 参数 +### 参数 文件列表:指定要显示尾部内容的文件列表。 -### 实例 +### 实例 ``` tail file (显示文件file的最后10行) diff --git a/command/tar.md b/command/tar.md index 8d5696e262a..a10ea3918fc 100644 --- a/command/tar.md +++ b/command/tar.md @@ -11,13 +11,13 @@ Linux下的归档使用工具,用来打包和备份。 为什么要区分这两个概念呢?这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。 -### 语法 +### 语法 ``` tar(选项)(参数) ``` -### 选项 +### 选项 ``` -A或--catenate:新增文件到以存在的备份文件; @@ -45,11 +45,11 @@ tar(选项)(参数) --exclude=<范本样式>:排除符合范本样式的文件。 ``` -### 参数 +### 参数 文件或目录:指定要打包的文件或目录列表。 -### 实例 +### 实例 ```bash - z:有gzip属性的 @@ -85,84 +85,84 @@ tar -xf archive.tar # 从archive.tar提取所有文件。 #### zip格式 -压缩: zip -r [目标文件名].zip [原文件/目录名] -解压: unzip [原文件名].zip -注:-r参数代表递归 +压缩: zip -r [目标文件名].zip [原文件/目录名] +解压: unzip [原文件名].zip +注:-r参数代表递归 #### tar格式(该格式仅仅打包,不压缩) -打包:tar -cvf [目标文件名].tar [原文件名/目录名] -解包:tar -xvf [原文件名].tar -注:c参数代表create(创建),x参数代表extract(解包),v参数代表verbose(详细信息),f参数代表filename(文件名),所以f后必须接文件名。 +打包:tar -cvf [目标文件名].tar [原文件名/目录名] +解包:tar -xvf [原文件名].tar +注:c参数代表create(创建),x参数代表extract(解包),v参数代表verbose(详细信息),f参数代表filename(文件名),所以f后必须接文件名。 #### tar.gz格式 方式一:利用前面已经打包好的tar文件,直接用压缩命令。 -压缩:gzip [原文件名].tar -解压:gunzip [原文件名].tar.gz +压缩:gzip [原文件名].tar +解压:gunzip [原文件名].tar.gz 方式二:一次性打包并压缩、解压并解包 -打包并压缩: tar -zcvf [目标文件名].tar.gz [原文件名/目录名] -解压并解包: tar -zxvf [原文件名].tar.gz -注:z代表用gzip算法来压缩/解压。 +打包并压缩: tar -zcvf [目标文件名].tar.gz [原文件名/目录名] +解压并解包: tar -zxvf [原文件名].tar.gz +注:z代表用gzip算法来压缩/解压。 #### tar.bz2格式 方式一:利用已经打包好的tar文件,直接执行压缩命令: -压缩:bzip2 [原文件名].tar -解压:bunzip2 [原文件名].tar.bz2 -方式二:一次性打包并压缩、解压并解包 +压缩:bzip2 [原文件名].tar +解压:bunzip2 [原文件名].tar.bz2 +方式二:一次性打包并压缩、解压并解包 -打包并压缩: tar -jcvf [目标文件名].tar.bz2 [原文件名/目录名] -解压并解包: tar -jxvf [原文件名].tar.bz2 -注:小写j代表用bzip2算法来压缩/解压。 +打包并压缩: tar -jcvf [目标文件名].tar.bz2 [原文件名/目录名] +解压并解包: tar -jxvf [原文件名].tar.bz2 +注:小写j代表用bzip2算法来压缩/解压。 #### tar.xz格式 方式一:利用已经打包好的tar文件,直接用压缩命令: -压缩:xz [原文件名].tar -解压:unxz [原文件名].tar.xz -方式二:一次性打包并压缩、解压并解包 +压缩:xz [原文件名].tar +解压:unxz [原文件名].tar.xz +方式二:一次性打包并压缩、解压并解包 -打包并压缩: tar -Jcvf [目标文件名].tar.xz [原文件名/目录名] -解压并解包: tar -Jxvf [原文件名].tar.xz -注:大写J代表用xz算法来压缩/解压。 +打包并压缩: tar -Jcvf [目标文件名].tar.xz [原文件名/目录名] +解压并解包: tar -Jxvf [原文件名].tar.xz +注:大写J代表用xz算法来压缩/解压。 #### tar.Z格式(已过时) 方式一:利用已经打包好的tar文件,直接用压缩命令: -压缩:compress [原文件名].tar -解压:uncompress [原文件名].tar.Z -方式二:一次性打包并压缩、解压并解包 +压缩:compress [原文件名].tar +解压:uncompress [原文件名].tar.Z +方式二:一次性打包并压缩、解压并解包 -打包并压缩: tar -Zcvf [目标文件名].tar.Z [原文件名/目录名] -解压并解包: tar -Zxvf [原文件名].tar.Z -注:大写Z代表用ncompress算法来压缩/解压。另,ncompress是早期Unix系统的压缩格式,但由于ncompress的压缩率太低,现已过时。 +打包并压缩: tar -Zcvf [目标文件名].tar.Z [原文件名/目录名] +解压并解包: tar -Zxvf [原文件名].tar.Z +注:大写Z代表用ncompress算法来压缩/解压。另,ncompress是早期Unix系统的压缩格式,但由于ncompress的压缩率太低,现已过时。 #### jar格式 -压缩:jar -cvf [目标文件名].jar [原文件名/目录名] -解压:jar -xvf [原文件名].jar -注:如果是打包的是Java类库,并且该类库中存在主类,那么需要写一个META-INF/MANIFEST.MF配置文件,内容如下: +压缩:jar -cvf [目标文件名].jar [原文件名/目录名] +解压:jar -xvf [原文件名].jar +注:如果是打包的是Java类库,并且该类库中存在主类,那么需要写一个META-INF/MANIFEST.MF配置文件,内容如下: -Manifest-Version: 1.0 -Created-By: 1.6.0_27 (Sun Microsystems Inc.) -Main-class: the_name_of_the_main_class_should_be_put_here -然后用如下命令打包: +Manifest-Version: 1.0 +Created-By: 1.6.0_27 (Sun Microsystems Inc.) +Main-class: the_name_of_the_main_class_should_be_put_here +然后用如下命令打包: jar -cvfm [目标文件名].jar META-INF/MANIFEST.MF [原文件名/目录名] 这样以后就能用“java -jar [文件名].jar”命令直接运行主类中的public static void main方法了。 #### 7z格式 -压缩:7z a [目标文件名].7z [原文件名/目录名] -解压:7z x [原文件名].7z -注:这个7z解压命令支持rar格式,即: +压缩:7z a [目标文件名].7z [原文件名/目录名] +解压:7z x [原文件名].7z +注:这个7z解压命令支持rar格式,即: 7z x [原文件名].rar @@ -171,9 +171,9 @@ jar -cvfm [目标文件名].jar META-INF/MANIFEST.MF [原文件名/目录名] **将文件全部打包成tar包** : ``` -tar -cvf log.tar log2012.log 仅打包,不压缩! -tar -zcvf log.tar.gz log2012.log 打包后,以 gzip 压缩 -tar -jcvf log.tar.bz2 log2012.log 打包后,以 bzip2 压缩 +tar -cvf log.tar log2012.log 仅打包,不压缩! +tar -zcvf log.tar.gz log2012.log 打包后,以 gzip 压缩 +tar -jcvf log.tar.bz2 log2012.log 打包后,以 bzip2 压缩 ``` 在选项`f`之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。 如果加`z`选项,则以.tar.gz或.tgz来代表gzip压缩过的tar包;如果加`j`选项,则以.tar.bz2来作为tar包名。 @@ -216,13 +216,13 @@ tar -zcvpf log31.tar.gz log2014.log log2015.log log2016.log tar -N "2012/11/13" -zcvf log17.tar.gz test ``` - **备份文件夹内容是排除部分文件:** + **备份文件夹内容是排除部分文件:** ``` tar --exclude scf/service -zcvf scf.tar.gz scf/* ``` - **其实最简单的使用 tar 就只要记忆底下的方式即可:** + **其实最简单的使用 tar 就只要记忆底下的方式即可:** ``` 压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称 diff --git a/command/telnet.md b/command/telnet.md index bad1d35ee62..5927a4880b7 100644 --- a/command/telnet.md +++ b/command/telnet.md @@ -1,19 +1,19 @@ telnet === -登录远程主机和管理 +登录远程主机和管理(测试ip端口是否连通) ## 补充说明 **telnet命令** 用于登录远程主机,对远程主机进行管理。telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了。但仍然有很多别的系统可能采用了telnet方式来提供远程登录,因此弄清楚telnet客户端的使用方式仍是很有必要的。 -### 语法 +### 语法 ``` telnet(选项)(参数) ``` -### 选项 +### 选项 ``` -8:允许使用8位字符资料,包括输入与输出; @@ -36,12 +36,12 @@ telnet(选项)(参数) -X<认证形态>:关闭指定的认证形态。 ``` -### 参数 +### 参数 * 远程主机:指定要登录进行管理的远程主机; * 端口:指定TELNET协议使用的端口号。 -### 实例 +### 实例 ``` $ telnet 192.168.2.10 @@ -52,7 +52,7 @@ Escape character is '^]'. localhost (Linux release 2.6.18-274.18.1.el5 #1 SMP Thu Feb 9 12:45:44 EST 2012) (1) login: root -Password: +Password: Login incorrect ``` @@ -79,59 +79,59 @@ telnet: Unable to connect to remote host service xinetd restart ``` -配置参数,通常的配置如下: +配置参数,通常的配置如下: ``` -service telnet -{ - disable = no #启用 - flags = REUSE #socket可重用 - socket_type = stream #连接方式为TCP - wait = no #为每个请求启动一个进程 - user = root #启动服务的用户为root - server = /usr/sbin/in.telnetd #要激活的进程 - log_on_failure += USERID #登录失败时记录登录用户名 -} +service telnet +{ + disable = no #启用 + flags = REUSE #socket可重用 + socket_type = stream #连接方式为TCP + wait = no #为每个请求启动一个进程 + user = root #启动服务的用户为root + server = /usr/sbin/in.telnetd #要激活的进程 + log_on_failure += USERID #登录失败时记录登录用户名 +} ``` -如果要配置允许登录的客户端列表,加入 +如果要配置允许登录的客户端列表,加入 ``` -only_from = 192.168.0.2 #只允许192.168.0.2登录 +only_from = 192.168.0.2 #只允许192.168.0.2登录 ``` -如果要配置禁止登录的客户端列表,加入 +如果要配置禁止登录的客户端列表,加入 ``` -no_access = 192.168.0.{2,3,4} #禁止192.168.0.2、192.168.0.3、192.168.0.4登录 +no_access = 192.168.0.{2,3,4} #禁止192.168.0.2、192.168.0.3、192.168.0.4登录 ``` -如果要设置开放时段,加入 +如果要设置开放时段,加入 ``` -access_times = 9:00-12:00 13:00-17:00 # 每天只有这两个时段开放服务(我们的上班时间:P) +access_times = 9:00-12:00 13:00-17:00 # 每天只有这两个时段开放服务(我们的上班时间:P) ``` -如果你有两个IP地址,一个是私网的IP地址如192.168.0.2,一个是公网的IP地址如218.75.74.83,如果你希望用户只能从私网来登录telnet服务,那么加入 +如果你有两个IP地址,一个是私网的IP地址如192.168.0.2,一个是公网的IP地址如218.75.74.83,如果你希望用户只能从私网来登录telnet服务,那么加入 ``` -bind = 192.168.0.2 +bind = 192.168.0.2 ``` -各配置项具体的含义和语法可参考xined配置文件属性说明(man xinetd.conf) +各配置项具体的含义和语法可参考xined配置文件属性说明(man xinetd.conf) 配置端口,修改services文件: ``` -# vi /etc/services +# vi /etc/services ``` -找到以下两句 +找到以下两句 ``` -telnet 23/tcp -telnet 23/udp +telnet 23/tcp +telnet 23/udp ``` -如果前面有#字符,就去掉它。telnet的默认端口是23,这个端口也是黑客端口扫描的主要对象,因此最好将这个端口修改掉,修改的方法很简单,就是将23这个数字修改掉,改成大一点的数字,比如61123。注意,1024以下的端口号是internet保留的端口号,因此最好不要用,还应该注意不要与其它服务的端口冲突。 +如果前面有#字符,就去掉它。telnet的默认端口是23,这个端口也是黑客端口扫描的主要对象,因此最好将这个端口修改掉,修改的方法很简单,就是将23这个数字修改掉,改成大一点的数字,比如61123。注意,1024以下的端口号是internet保留的端口号,因此最好不要用,还应该注意不要与其它服务的端口冲突。 启动服务: ``` -service xinetd restart +service xinetd restart ``` diff --git a/command/tmux.md b/command/tmux.md new file mode 100644 index 00000000000..e2692efc269 --- /dev/null +++ b/command/tmux.md @@ -0,0 +1,22 @@ +tmux +=== + +比 screen 好用的 ssh 窗口管理工具 + +## 实例 + +``` +apk add tmux # 安装 + +# tmux +tmux # new session +tmux a # attach session +C-b-d # detach session +C-b-c # new window +C-b-num # ch window +exit # exit window +C-b "/% # split window +C-b 方向键 +C-b ? # keymap +no rz/sz +``` \ No newline at end of file diff --git a/command/tree.md b/command/tree.md index 3e5151cf78e..015389b245e 100644 --- a/command/tree.md +++ b/command/tree.md @@ -7,13 +7,13 @@ tree **tree命令** 以树状图列出目录的内容。 -### 语法 +### 语法 ``` tree(选项)(参数) ``` -### 选项 +### 选项 ```bash ------- 列表选项 ------- @@ -73,7 +73,7 @@ tree(选项)(参数) -- # Options processing terminator. ``` -### 参数 +### 参数 目录:执行tree指令,它会列出指定目录下的所有文件,包括子目录里的文件。 @@ -101,7 +101,7 @@ tree -L 2 > /home/www/tree.txt # 当前目录结果存到 tree.txt 文件中 ``` 忽略多个文件夹 - + ```bash tree -I 'node_modules|icon|font' -L 2 ``` diff --git a/command/ulimit.md b/command/ulimit.md index 593db05cb95..b8084f82e7d 100644 --- a/command/ulimit.md +++ b/command/ulimit.md @@ -1,6 +1,6 @@ ulimit === - + 控制shell程序的资源 ## 补充说明 @@ -15,13 +15,13 @@ ulimit 用于限制 shell 启动进程所占用的资源,支持以下各种类 作为临时限制,ulimit 可以作用于通过使用其命令登录的 shell 会话,在会话终止时便结束限制,并不影响于其他 shell 会话。而对于长期的固定限制,ulimit 命令语句又可以被添加到由登录 shell 读取的文件中,作用于特定的 shell 用户。 -### 语法 +### 语法 ``` ulimit(选项) ``` -### 选项 +### 选项 ``` -a:显示目前资源限制的设定; @@ -39,7 +39,7 @@ ulimit(选项) -v <虚拟内存大小>:指定可使用的虚拟内存上限,单位为KB。 ``` -### 实例 +### 实例 ``` [root@localhost ~]# ulimit -a diff --git a/command/uname.md b/command/uname.md index 2134b6f34b3..9033a5e426e 100644 --- a/command/uname.md +++ b/command/uname.md @@ -1,19 +1,19 @@ uname === - + 显示Linux系统信息 ## 补充说明 **uname命令** 用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)。 -### 语法 +### 语法 ``` uname(选项) ``` -### 选项 +### 选项 ``` -a或--all:显示全部的信息; @@ -29,7 +29,7 @@ uname(选项) --version:显示版本信息。 ``` -### 实例 +### 实例 使用uname命令查看全部信息: diff --git a/command/unzip.md b/command/unzip.md index 3ebee0bd394..d4df39b4c99 100644 --- a/command/unzip.md +++ b/command/unzip.md @@ -1,19 +1,19 @@ unzip === - + 用于解压缩由zip命令压缩的压缩包 ## 补充说明 **unzip命令** 用于解压缩由zip命令压缩的“.zip”压缩包。 -### 语法 +### 语法 ``` unzip(选项)(参数) ``` -### 选项 +### 选项 ``` -c:将解压缩的结果显示到屏幕上,并对字符做适当的转换; @@ -42,11 +42,11 @@ unzip(选项)(参数) -Z:unzip-Z等于执行zipinfo指令。 ``` -### 参数 +### 参数 压缩包:指定要解压的“.zip”压缩包。 -### 实例 +### 实例 将压缩文件text.zip在当前目录下解压缩。 diff --git a/command/usermod.md b/command/usermod.md index 66582d92cd8..93876fcd6e8 100644 --- a/command/usermod.md +++ b/command/usermod.md @@ -1,19 +1,19 @@ usermod === - + 用于修改用户的基本信息 ## 补充说明 **usermod命令** 用于修改用户的基本信息。usermod命令不允许你改变正在线上的使用者帐号名称。当usermod命令用来改变user id,必须确认这名user没在电脑上执行任何程序。你需手动更改使用者的crontab档。也需手动更改使用者的at工作档。采用NIS server须在server上更动相关的NIS设定。 -### 语法 +### 语法 ``` usermod(选项)(参数) ``` -### 选项 +### 选项 ``` -c<备注>:修改用户帐号的备注文字; @@ -29,11 +29,11 @@ usermod(选项)(参数) -U:解除密码锁定。 ``` -### 参数 +### 参数 登录名:指定要修改信息的用户登录名。 -### 实例 +### 实例 将newuser2添加到组staff中: @@ -59,5 +59,12 @@ usermod -L newuser1 usermod -U newuser1 ``` +增加用户到用户组中: + +``` +apk add shadow # 安装 shadow 包, usermod 命令包含在 usermod 中 + +usermod -aG group user # 添加用户到用户组中 +``` \ No newline at end of file diff --git a/command/watch.md b/command/watch.md index a195e885065..667be3b9bea 100644 --- a/command/watch.md +++ b/command/watch.md @@ -7,13 +7,13 @@ watch **watch命令** 以周期性的方式执行给定的指令,指令输出以全屏方式显示。watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行。 -### 语法 +### 语法 ``` watch(选项)(参数) ``` -### 选项 +### 选项 ```bash -n # 或--interval watch缺省每2秒运行一下程序,可以用-n或-interval来指定间隔的时间。 @@ -22,11 +22,11 @@ watch(选项)(参数) -h, --help # 查看帮助文档 ``` -### 参数 +### 参数 指令:需要周期性执行的指令。 -### 实例 +### 实例 ```bash watch -n 1 -d netstat -ant       # 命令:每隔一秒高亮显示网络链接数的变化情况 diff --git a/command/xz.md b/command/xz.md index 7ce144664c7..c33587255d8 100644 --- a/command/xz.md +++ b/command/xz.md @@ -7,14 +7,14 @@ POSIX 平台开发具有高压缩率的工具。 **xz命令** XZ Utils 是为 POSIX 平台开发具有高压缩率的工具。它使用 LZMA2 压缩算法,生成的压缩文件比 POSIX 平台传统使用的 gzip、bzip2 生成的压缩文件更小,而且解压缩速度也很快。最初 XZ Utils 的是基于 LZMA-SDK 开发,但是 LZMA-SDK 包含了一些 WINDOWS 平台的特性,所以 XZ Utils 为以适应 POSIX 平台作了大幅的修改。XZ Utils 的出现也是为了取代 POSIX 系统中旧的 LZMA Utils。 -### 语法 +### 语法 ``` xz(选项)(参数) xz [OPTION]... [FILE]... ``` -### 选项 +### 选项 ```bash -z, --compress 强制压缩 @@ -39,55 +39,55 @@ xz [OPTION]... [FILE]... -V, --version 显示版本号并退出 ``` -### 参数 +### 参数 * 源文件:指定连接的源文件。 * 目标文件:指定源文件的目标连接文件。 -### 实例 +### 实例 压缩一个文件 test.txt,压缩成功后生成 test.txt.xz, 原文件会被删除。 ```bash -$ xz test.txt -$ ls test.txt* +$ xz test.txt +$ ls test.txt* -test.txt.xz +test.txt.xz ``` 解压 test.txt.xz 文件,并使用参数 -k 保持原文件不被删除 ```bash -$ xz -d -k test.txt.xz -$ ls test.txt* +$ xz -d -k test.txt.xz +$ ls test.txt* -test.txt.xz test.txt +test.txt.xz test.txt ``` 使用参数 -l 显示 .xz 文件的基本信息。基本信息包括压缩率、数据完整性验证方式等。也可以和参数 -v 或 -vv 配合显示更详尽的信息。 ```bash -xz -l index.txt.xz -# Strms Blocks Compressed Uncompressed Ratio Check Filename +xz -l index.txt.xz +# Strms Blocks Compressed Uncompressed Ratio Check Filename # 1 1 768 B 1,240 B 0.619 CRC64 index.txt. ``` 使用参数 -0, -1, -2, … -6, … -9 或参数 --fast, --best 设定压缩率。xz 命令的默认为 -6 ,对于大多数系统来说,甚至是一些较旧的系统,-4 … -6 压缩率预设值都不错的表现。 ``` -$ xz -k7 xz_pipe_decomp_mini.c -$ xz -k --fast xz_pipe_decomp_mini.c +$ xz -k7 xz_pipe_decomp_mini.c +$ xz -k --fast xz_pipe_decomp_mini.c ``` 使用参数 -H 显示 xz 命令所有 options. 参数 -H 比使用参数 --help 显示的内容更详细。 ``` -$ xz -H | more +$ xz -H | more ``` 借助 xargs 命令并行压缩多文件。下面的命令行可以将 /var/log 目录下所有的扩展名为 .log 的文件压缩。通过 xargs 命令同时运行多个 xz 进行压缩。 ```bash # 运行此命令须有 root 权限。 -find /var/log -type f -iname "*.log" -print0 | xargs -P4 -n16 xz -T1 +find /var/log -type f -iname "*.log" -print0 | xargs -P4 -n16 xz -T1 ``` diff --git a/command/yum.md b/command/yum.md index 77c3c0e3736..0d6fd9977be 100644 --- a/command/yum.md +++ b/command/yum.md @@ -9,13 +9,13 @@ yum yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。 -### 语法 +### 语法 ``` yum(选项)(参数) ``` -### 选项 +### 选项 ``` -h:显示帮助信息; @@ -29,7 +29,7 @@ yum(选项)(参数) -C:完全从缓存中运行,而不去下载或者更新任何头文件。 ``` -### 参数 +### 参数 ``` install:安装rpm软件包; @@ -47,7 +47,7 @@ localupdate:显示本地rpm软件包进行更新; deplist:显示rpm软件包的所有依赖关系。 ``` -### 实例 +### 实例 部分常用的命令包括: @@ -55,7 +55,7 @@ deplist:显示rpm软件包的所有依赖关系。 * 安装yum图形窗口插件:`yum install yumex` * 查看可能批量安装的列表:`yum grouplist` -**安装** +**安装** ```bash yum install #全部安装 @@ -63,7 +63,7 @@ yum install package1 #安装指定的安装包package1 yum groupinsall group1 #安装程序组group1 ``` -**更新和升级** +**更新和升级** ```bash yum update #全部更新 @@ -73,7 +73,7 @@ yum upgrade package1 #升级指定程序包package1 yum groupupdate group1 #升级程序组group1 ``` -**查找和显示** +**查找和显示** ```bash # 检查 MySQL 是否已安装 @@ -86,7 +86,7 @@ yum list package1 #显示指定程序包安装情况package1 yum groupinfo group1 #显示程序组group1信息yum search string 根据关键字string查找安装包 ``` -**删除程序** +**删除程序** ```bash yum remove | erase package1 #删除程序包package1 @@ -94,7 +94,7 @@ yum groupremove group1 #删除程序组group1 yum deplist package1 #查看程序package1依赖情况 ``` -**清除缓存** +**清除缓存** ```bash yum clean packages #清除缓存目录下的软件包 @@ -102,5 +102,28 @@ yum clean headers #清除缓存目录下的 headers yum clean oldheaders #清除缓存目录下旧的 headers ``` +**更多实例** + +``` +# yum +/etc/yum.repos.d/ yum 源配置文件 +vi /etc/yum.repos.d/nginx.repo # 举个栗子: nginx yum源 +[nginx] +name=nginx repo +baseurl=http://nginx.org/packages/centos/6/$basearch/ +gpgcheck=0 +enabled=1 + +# yum mirror +mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak +wget https://mirror.tuna.tsinghua.edu.cn/help/centos/ +yum makecache + +# 添加中文语言支持 +LANG=C # 原始语言 +LANG=zh_CN.utf8 # 切换到中文 +yum groupinstall "Chinese Support" # 添加中文语言支持 +``` + diff --git a/command/zip.md b/command/zip.md index bf7601946d5..34e64430645 100644 --- a/command/zip.md +++ b/command/zip.md @@ -7,13 +7,13 @@ zip **zip命令** 可以用来解压缩文件,或者对文件进行打包操作。zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有“.zip”扩展名的压缩文件。 -### 语法 +### 语法 ``` zip(选项)(参数) ``` -### 选项 +### 选项 ``` -A:调整可执行的自动解压缩文件; @@ -52,12 +52,12 @@ zip(选项)(参数) -<压缩效率>:压缩效率是一个介于1~9的数值。 ``` -### 参数 +### 参数 * zip压缩包:指定要创建的zip压缩包; * 文件列表:指定要压缩的文件列表。 -### 实例 +### 实例 将`/home/Blinux/html/`这个目录下所有文件和文件夹打包为当前目录下的html.zip: @@ -77,6 +77,12 @@ zip -q -r html.zip html zip -q -r html.zip * ``` +压缩效率选择: + +``` +zip -9 # 1-9 faster->better +``` + ### 问题解决 CentOS7中命令找不到 @@ -86,7 +92,7 @@ CentOS7中命令找不到 ``` 解决方法 - + ```bash yum install -y unzip zip ``` From 86b3380ce2a8f3d55601cd0e1fd1dbacaae6130d Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Fri, 8 Jun 2018 15:42:44 +0800 Subject: [PATCH 0017/1126] Update ack.md #42 --- command/ack.md | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/command/ack.md b/command/ack.md index ee8ad5c38b1..822c1ca1a5d 100644 --- a/command/ack.md +++ b/command/ack.md @@ -3,12 +3,30 @@ ack 比grep好用的文本搜索工具 -## 示例 +## 安装 +```bash +# ubuntu下要安装ack-grep +sudo apt-get install ack-grep ``` -# install -apk install ack -# use +## 特点 + +ack官网列出了这工具的5大卖点: + +1. 速度非常快,因为它只搜索有意义的东西。 +2. 更友好的搜索,忽略那些不是你源码的东西。 +3. 为源代码搜索而设计,用更少的击键完成任务。 +4. 非常轻便,移植性好。 +5. 免费且开源 + +## 实例 + +``` ack -``` \ No newline at end of file +``` + + +## 参考资料 + +- [ack官网](https://beyondgrep.com/) From 79e4c8f2f05faed3b33f5923e68812e4190f27bd Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Fri, 8 Jun 2018 15:50:10 +0800 Subject: [PATCH 0018/1126] ack command add usage example. #42 --- command/ack.md | 74 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 72 insertions(+), 2 deletions(-) diff --git a/command/ack.md b/command/ack.md index 822c1ca1a5d..97d88a179c5 100644 --- a/command/ack.md +++ b/command/ack.md @@ -6,10 +6,19 @@ ack ## 安装 ```bash -# ubuntu下要安装ack-grep +# ubuntu下要安装ack-grep,因为在debian系中,ack这个名字被其他的软件占用了。 sudo apt-get install ack-grep ``` +## 参数 + +这些参数在linux上的适用频率是相当高的,尤其是你用vim做为IDE的话 + +``` +-c(统记)/ -i(忽略大小)/ -h(不显示名称)/ +-l(只显文件名)/ -n(加行号)/ -v(显示不匹配) +``` + ## 特点 ack官网列出了这工具的5大卖点: @@ -22,10 +31,71 @@ ack官网列出了这工具的5大卖点: ## 实例 +在记忆的时候大体上可以分为这几个部分: + +> Searching 代码搜索 +> Search output 搜索结果处理 +> File presentation 文件展示 +> File finding 文件查找 +> File inclusion/exclusion 文件过滤 + +grep常用操作 + +```bash +grep -r 'hello_world' # 简单用法 +grep '^hello_world' . # 简单正则 +ls -l | grep .py # 管道用法 ``` -ack + +### Searching + +简单的文本搜索,默认是递归的。 + +``` +ack-grep hello +ack-grep -i hello +ack-grep -v hello +ack-grep -w hello +ack-grep -Q 'hello*' +``` + +### Search File + +对搜索结果进行处理,比如只显示一个文件的一个匹配项,或者xxx + +```bash +ack-grep --line=1 # 输出所有文件第二行 +ack-grep -l 'hello' # 包含的文件名 +ack-grep -L 'print' # 非包含文件名 +``` + +### File presentation + +输出的结果是以什么方式展示呢,这个部分有几个参数可以练习下 + +```bash +ack-grep hello --pager='less -R' # 以less形式展示 +ack-grep hello --noheading # 不在头上显示文件 +ack-grep hello --nocolor # 不对匹配字符着色 ``` +### File finding +没错,它可以查找文件,以省去你要不断的结合find和grep的麻烦,虽然在linux的思想是一个工具做好一件事。 + +```bash +ack-grep -f hello.py # 查找全匹配文件 +ack-grep -g hello.py$ # 查找正则匹配文件 +ack-grep -g hello --sort-files # 查找然后排序 +``` + +### File Inclusion/Exclusion + +文件过滤,个人觉得这是一个很不错的功能。如果你曾经在搜索项目源码是不小心命中日志中的某个关键字的话,你会觉得这个有用。 + +```bash +ack-grep --python hello # 查找所有python文件 +ack-grep -G hello.py$ hello # 查找匹配正则的文件 +``` ## 参考资料 From 757dc65c032a62ce7549950a06357f51ee3df7f0 Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Fri, 8 Jun 2018 15:58:02 +0800 Subject: [PATCH 0019/1126] #42 apk command add example. --- command/apk.md | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/command/apk.md b/command/apk.md index 5abd5fc812e..2067e3977fd 100644 --- a/command/apk.md +++ b/command/apk.md @@ -3,20 +3,51 @@ apk Alpine Linux 下的包管理工具 -## quick start +## 使用实例 -``` +```bash apk install xxx apk search xxx # 支持正则 apk info xxx # 查看包的详细信息 apk show # list local package +# 卸载并删除 包 +apk del openssh openntp vim +``` + +### 升级 + +upgrade命令升级系统已安装的所以软件包(一般包括内核),当然也可指定仅升级部分软件包(通过-u或–upgrade选择指定)。 + +```bash +apk update # 更新最新本地镜像源 +apk upgrade # 升级软件 +apk add --upgrade busybox # 指定升级部分软件包 +``` + +### 搜索 + +```bash +apk search # 查找所以可用软件包 +apk search -v # 查找所以可用软件包及其描述内容 +apk search -v 'acf*' # 通过软件包名称查找软件包 +apk search -v -d 'docker' # 通过描述文件查找特定的软件包 +``` + +### 查看包信息 + +info命令用于显示软件包的信息。 + +```bash +apk info # 列出所有已安装的软件包 +apk info -a zlib # 显示完整的软件包信息 +apk info --who-owns /sbin/lbu # 显示指定文件属于的包 ``` ## 笔记 还是蛮喜欢 alpine 的,简单纯粹 -``` +```bash apk add iproute2 # ss vs netstat ss -ptl apk add drill # drill vs nslookup&dig From 569216ad5c99bfa454b521783af95cd7671d329a Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Fri, 8 Jun 2018 16:17:11 +0800 Subject: [PATCH 0020/1126] Update command/fishshell.md --- command/ack.md | 2 + command/cloc.md | 12 --- command/fishshell.md | 190 +++++++++++++++++++++++++++++++++++++------ 3 files changed, 167 insertions(+), 37 deletions(-) delete mode 100644 command/cloc.md diff --git a/command/ack.md b/command/ack.md index 97d88a179c5..0d86a7f5329 100644 --- a/command/ack.md +++ b/command/ack.md @@ -8,6 +8,8 @@ ack ```bash # ubuntu下要安装ack-grep,因为在debian系中,ack这个名字被其他的软件占用了。 sudo apt-get install ack-grep +# alpine Linux-apk软件包管理器 安装 ack +apk install ack ``` ## 参数 diff --git a/command/cloc.md b/command/cloc.md deleted file mode 100644 index 971017d6d21..00000000000 --- a/command/cloc.md +++ /dev/null @@ -1,12 +0,0 @@ -cloc -=== - -代码行数统计 - -## quick start - -``` -apk add cloc - -cloc dir --exclude-dir # 代码行数统计 -``` \ No newline at end of file diff --git a/command/fishshell.md b/command/fishshell.md index 8d65e727c66..6b99d3cc7cc 100644 --- a/command/fishshell.md +++ b/command/fishshell.md @@ -2,32 +2,168 @@ 比 bash 更好用的 shell -## quick start - -> [fish-shell](http://fishshell.com):强烈推荐 - -配置文件: `fish_config` -Running Commands: 兼容 bash 等shell的命令执行方式 -Getting Help: `help/man cmd -> browser/terminal` -Syntax Highlighting: 实时检查命令是否正确 -Wildcards: 支持缩写 `*` 递归 匹配 -Pipes and Redirections: 使用 `^` 代表 stderr -Autosuggestions: 自动建议, 可以使用 `Ctrl-f / ->` 来补全 -Tab Completions: 更强大的 tab 补全 -Variables: 使用 set 设置 -Exit Status: 使用 `echo $status` 替代 `$?` -Exports (Shell Variables) -Lists: all variables in fish are really lists -Command Substitutions: 使用 `(cmd)` 来执行命令, 而不是 反引号、`$()` -Combiners (And, Or, Not): 不支持使用符合来表示逻辑运算 -Functions:使用 `$argv` 替代 `$1` -Conditionals (If, Else, Switch) / Functions / Loops: 更人性化的写法(参考 py) -Prompt: `function fish_prompt` 实现 -Startup (Where's .bashrc?): `~/.config/fish/config.fish`,更好的方式是 autoloading-function、universal-variables -Autoloading Functions: ` ~/.config/fish/functions/.` -Universal Variables:a variable whose value is shared across all instances of fish +## 安装 +```bash +# Ubuntu 和 Debian 的安装方法。 +sudo apt-get install fish +# Mac 的安装方法。 +brew install fish ``` + +## 启动与帮助 + +由于 `Fish` 的语法与 `Bash` 有很大差异,`Bash` 脚本一般不兼容。因此,建议不要将 `Fish` 设为默认 `Shell`,而是每次手动启动它。 + +```bash +# 安装完成后,就可以启动 Fish。 +$ fish +# 使用过程中,如果需要帮助,可以输入 help 命令 +$ help +``` + +## 彩色显示 + +```bash +# 无效命令为红色 +$ mkd +# 有效命令为蓝色 +$ mkdir +# 有效路径会有下划线。如果没有下划线,你就知道这个路径不存在。 +$ cat ~/somefi +``` + +## 自动建议 + +Fish 会自动在光标后面给出建议,表示可能的选项,颜色为灰色。如果采纳建议,可以按下 `→` 或 `Control + F` 。如果只采纳一部分,可以按下 `Alt + →`。 + +```bash +$ /bin/hostname # 命令建议 +$ grep --ignore-case # 参数建议 +$ ls node_modules # 路径建议 +``` + +## 自动补全 + +输入命令时,`Fish` 会自动显示匹配的上一条历史记录。如果没有匹配的历史记录,`Fish` 会猜测可能的结果,自动补全各种输入。比如,输入 `pyt` 再按下 `Tab` ,就会自动补全为 `python` 命令。 + +`Fish` 还可以自动补全 `Git` 分支。 + +## 脚本语法 + +### if 语句 + +```bash +if grep fish /etc/shells + echo Found fish +else if grep bash /etc/shells + echo Found bash +else + echo Got nothing +end +``` + +### switch 语句 + +```bash +switch (uname) +case Linux + echo Hi Tux! +case Darwin + echo Hi Hexley! +case FreeBSD NetBSD DragonFly + echo Hi Beastie! +case '*' + echo Hi, stranger! +end +``` + +### while 循环 + +```bash +while true + echo "Loop forever" +end +``` + +### for 循环 + +```bash +for file in *.txt + cp $file $file.bak +end +``` + +### 函数 + +`Fish` 的函数用来封装命令,或者为现有的命令起别名。 + +```bash +function ll + ls -lhG $argv +end +``` + +上面代码定义了一个 `ll` 函数。命令行执行这个函数以后,就可以用 `ll` 命令替代 `ls -lhG`。其中,变量 `$argv` 表示函数的参数。 + +```bash +function ls + command ls -hG $argv +end +``` + +上面的代码重新定义 `ls` 命令。注意,函数体内的 `ls` 之前,要加上 `command`,否则会因为无限循环而报错。 + +### 提示符 + +`fish_prompt` 函数用于定义命令行提示符(prompt)。 + +```bash +function fish_prompt + set_color purple + date "+%m/%d/%y" + set_color FF0 + echo (pwd) '>' + set_color normal +end +``` + +执行上面的函数以后,你的命令行提示符就会变成下面这样。 + +``` +02/06/13 +/home/tutorial > +``` + +## 配置 + +Fish 的配置文件是 `~/.config/fish/config.fish`,每次 `Fish` 启动,就会自动加载这个文件。Fish 还提供 Web 界面配置该文件。 + +```bash +$ fish_config # 浏览器打开 Web 界面配置 +``` + +Running Commands: 兼容 bash 等shell的命令执行方式 +Getting Help: `help/man cmd -> browser/terminal` +Syntax Highlighting: 实时检查命令是否正确 +Wildcards: 支持缩写 `*` 递归 匹配 +Pipes and Redirections: 使用 `^` 代表 stderr +Autosuggestions: 自动建议, 可以使用 `Ctrl-f / ->` 来补全 +Tab Completions: 更强大的 tab 补全 +Variables: 使用 set 设置 +Exit Status: 使用 `echo $status` 替代 `$?` +Exports (Shell Variables) +Lists: all variables in fish are really lists +Command Substitutions: 使用 `(cmd)` 来执行命令, 而不是 反引号、`$()` +Combiners (And, Or, Not): 不支持使用符合来表示逻辑运算 +Functions:使用 `$argv` 替代 `$1` +Conditionals (If, Else, Switch) / Functions / Loops: 更人性化的写法(参考 py) +Prompt: `function fish_prompt` 实现 +Startup (Where's .bashrc?): `~/.config/fish/config.fish`,更好的方式是 autoloading-function、universal-variables +Autoloading Functions: ` ~/.config/fish/functions/.` +Universal Variables:a variable whose value is shared across all instances of fish + +```bash set name 'czl' # 设置变量,替代 name=czl echo $name echo $status # exit status,替代 $? @@ -39,4 +175,8 @@ set -U fish_user_paths /usr/local/bin $fish_user_paths # 永久生效 touch "testing_"(date +%s)".txt" # command subtitution,替代 `date +%s` cp file.txt file.txt.bak; and echo 'back success'; or echo 'back fail' # combiner functions # 列出 fish 下定义的函数 -``` \ No newline at end of file +``` + +## 参考资料 + +- [fish-shell官网](http://fishshell.com) \ No newline at end of file From e501565858c4fc02f80ea0dc4d75e373dfba81c5 Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Fri, 8 Jun 2018 16:22:10 +0800 Subject: [PATCH 0021/1126] #42 Fix markdown syntax error. --- command/ssh.md | 36 ++++++++++----------- command/tar.md | 88 ++++++++++++++++++++++++++------------------------ 2 files changed, 64 insertions(+), 60 deletions(-) diff --git a/command/ssh.md b/command/ssh.md index 522f1eb1d8a..317017af78e 100644 --- a/command/ssh.md +++ b/command/ssh.md @@ -60,9 +60,9 @@ ssh-copy-id user@ip:port # 将当前用户的公钥复制到需要 ssh 的服务 ### 背后故事 -> 英文:Tatu Ylonen -> 编译:Linux中国/kenxx -> 来源:https://linux.cn/article-8476-1.html +> 英文:Tatu Ylonen +> 编译:Linux中国/kenxx +> 来源:https://linux.cn/article-8476-1.html 为什么 SSH(安全终端)的端口号是 22 呢,这不是一个巧合,这其中有个我(Tatu Ylonen,SSH 协议的设计者)未曾诉说的故事。 @@ -79,11 +79,11 @@ ssh-copy-id user@ip:port # 将当前用户的公钥复制到需要 ssh 的服务 1995 年 7 月,就在我发布 ssh-1.0 前,我发送了一封邮件给 IANA: -> From ylo Mon Jul 10 11:45:48 +0300 1995 -> From: Tatu Ylonen -> To: Internet Assigned Numbers Authority -> Subject: 请求取得一个端口号 -> Organization: 芬兰赫尔辛基理工大学 +> From ylo Mon Jul 10 11:45:48 +0300 1995 +> From: Tatu Ylonen +> To: Internet Assigned Numbers Authority +> Subject: 请求取得一个端口号 +> Organization: 芬兰赫尔辛基理工大学 > > 亲爱的机构成员: > @@ -95,21 +95,21 @@ ssh-copy-id user@ip:port # 将当前用户的公钥复制到需要 ssh 的服务 > > 软件中服务的名称叫 ssh(系 Secure Shell 的缩写)。 > -> 您最真诚的, -> Tatu Ylonen +> 您最真诚的, +> Tatu Ylonen (LCTT 译注:DNS 协议中的 WKS 记录类型意即“众所周知的业务描述”,是类似于 A、MX 这样的 DNS 记录类型,用于描述某个 IP 所提供的服务,目前鲜见使用。参见: https://docs.oracle.com/cd/E19683-01/806-4077/dnsintro-154/index.html 。) 第二天,我就收到了 Joyce 发来的邮件: -> Date: Mon, 10 Jul 1995 15:35:33 -0700 -> From: jkrey@ISI.EDU -> To: ylo@cs.hut.fi -> Subject: 回复:请求取得一个端口号 -> Cc: iana@ISI.EDU -> Tatu, -> 我们将端口号 22 分配给 ssh 服务了,你目前是该服务的主要联系人。 -> Joyce +> Date: Mon, 10 Jul 1995 15:35:33 -0700 +> From: jkrey@ISI.EDU +> To: ylo@cs.hut.fi +> Subject: 回复:请求取得一个端口号 +> Cc: iana@ISI.EDU +> Tatu, +> 我们将端口号 22 分配给 ssh 服务了,你目前是该服务的主要联系人。 +> Joyce 这就搞定了!SSH 的端口正式使用 22!!! diff --git a/command/tar.md b/command/tar.md index a10ea3918fc..669d04ba734 100644 --- a/command/tar.md +++ b/command/tar.md @@ -85,22 +85,22 @@ tar -xf archive.tar # 从archive.tar提取所有文件。 #### zip格式 -压缩: zip -r [目标文件名].zip [原文件/目录名] -解压: unzip [原文件名].zip -注:-r参数代表递归 +压缩: zip -r [目标文件名].zip [原文件/目录名] +解压: unzip [原文件名].zip +注:-r参数代表递归 #### tar格式(该格式仅仅打包,不压缩) -打包:tar -cvf [目标文件名].tar [原文件名/目录名] -解包:tar -xvf [原文件名].tar -注:c参数代表create(创建),x参数代表extract(解包),v参数代表verbose(详细信息),f参数代表filename(文件名),所以f后必须接文件名。 +打包:tar -cvf [目标文件名].tar [原文件名/目录名] +解包:tar -xvf [原文件名].tar +注:c参数代表create(创建),x参数代表extract(解包),v参数代表verbose(详细信息),f参数代表filename(文件名),所以f后必须接文件名。 #### tar.gz格式 方式一:利用前面已经打包好的tar文件,直接用压缩命令。 -压缩:gzip [原文件名].tar -解压:gunzip [原文件名].tar.gz +压缩:gzip [原文件名].tar +解压:gunzip [原文件名].tar.gz 方式二:一次性打包并压缩、解压并解包 @@ -112,63 +112,67 @@ tar -xf archive.tar # 从archive.tar提取所有文件。 方式一:利用已经打包好的tar文件,直接执行压缩命令: -压缩:bzip2 [原文件名].tar -解压:bunzip2 [原文件名].tar.bz2 -方式二:一次性打包并压缩、解压并解包 +压缩:bzip2 [原文件名].tar +解压:bunzip2 [原文件名].tar.bz2 +方式二:一次性打包并压缩、解压并解包 -打包并压缩: tar -jcvf [目标文件名].tar.bz2 [原文件名/目录名] -解压并解包: tar -jxvf [原文件名].tar.bz2 -注:小写j代表用bzip2算法来压缩/解压。 +打包并压缩: tar -jcvf [目标文件名].tar.bz2 [原文件名/目录名] +解压并解包: tar -jxvf [原文件名].tar.bz2 +注:小写j代表用bzip2算法来压缩/解压。 #### tar.xz格式 方式一:利用已经打包好的tar文件,直接用压缩命令: -压缩:xz [原文件名].tar -解压:unxz [原文件名].tar.xz -方式二:一次性打包并压缩、解压并解包 +压缩:xz [原文件名].tar +解压:unxz [原文件名].tar.xz +方式二:一次性打包并压缩、解压并解包 -打包并压缩: tar -Jcvf [目标文件名].tar.xz [原文件名/目录名] -解压并解包: tar -Jxvf [原文件名].tar.xz -注:大写J代表用xz算法来压缩/解压。 +打包并压缩: tar -Jcvf [目标文件名].tar.xz [原文件名/目录名] +解压并解包: tar -Jxvf [原文件名].tar.xz +注:大写J代表用xz算法来压缩/解压。 #### tar.Z格式(已过时) 方式一:利用已经打包好的tar文件,直接用压缩命令: -压缩:compress [原文件名].tar -解压:uncompress [原文件名].tar.Z -方式二:一次性打包并压缩、解压并解包 +压缩:compress [原文件名].tar +解压:uncompress [原文件名].tar.Z +方式二:一次性打包并压缩、解压并解包 -打包并压缩: tar -Zcvf [目标文件名].tar.Z [原文件名/目录名] -解压并解包: tar -Zxvf [原文件名].tar.Z -注:大写Z代表用ncompress算法来压缩/解压。另,ncompress是早期Unix系统的压缩格式,但由于ncompress的压缩率太低,现已过时。 +打包并压缩: tar -Zcvf [目标文件名].tar.Z [原文件名/目录名] +解压并解包: tar -Zxvf [原文件名].tar.Z +注:大写Z代表用ncompress算法来压缩/解压。另,ncompress是早期Unix系统的压缩格式,但由于ncompress的压缩率太低,现已过时。 #### jar格式 -压缩:jar -cvf [目标文件名].jar [原文件名/目录名] -解压:jar -xvf [原文件名].jar -注:如果是打包的是Java类库,并且该类库中存在主类,那么需要写一个META-INF/MANIFEST.MF配置文件,内容如下: +压缩:jar -cvf [目标文件名].jar [原文件名/目录名] +解压:jar -xvf [原文件名].jar + +注:如果是打包的是Java类库,并且该类库中存在主类,那么需要写一个META-INF/MANIFEST.MF配置文件,内容如下: +``` Manifest-Version: 1.0 Created-By: 1.6.0_27 (Sun Microsystems Inc.) Main-class: the_name_of_the_main_class_should_be_put_here +``` + 然后用如下命令打包: -jar -cvfm [目标文件名].jar META-INF/MANIFEST.MF [原文件名/目录名] -这样以后就能用“java -jar [文件名].jar”命令直接运行主类中的public static void main方法了。 +jar -cvfm [目标文件名].jar META-INF/MANIFEST.MF [原文件名/目录名] +这样以后就能用“java -jar [文件名].jar”命令直接运行主类中的public static void main方法了。 #### 7z格式 -压缩:7z a [目标文件名].7z [原文件名/目录名] -解压:7z x [原文件名].7z -注:这个7z解压命令支持rar格式,即: +压缩:7z a [目标文件名].7z [原文件名/目录名] +解压:7z x [原文件名].7z +注:这个7z解压命令支持rar格式,即: 7z x [原文件名].rar #### 其它例子 - **将文件全部打包成tar包** : +**将文件全部打包成tar包** : ``` tar -cvf log.tar log2012.log 仅打包,不压缩! @@ -178,7 +182,7 @@ tar -jcvf log.tar.bz2 log2012.log 打包后,以 bzip2 压缩 在选项`f`之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。 如果加`z`选项,则以.tar.gz或.tgz来代表gzip压缩过的tar包;如果加`j`选项,则以.tar.bz2来作为tar包名。 - **查阅上述tar包内有哪些文件** : +**查阅上述tar包内有哪些文件** : ``` tar -ztvf log.tar.gz @@ -186,7 +190,7 @@ tar -ztvf log.tar.gz 由于我们使用 gzip 压缩的log.tar.gz,所以要查阅log.tar.gz包内的文件时,就得要加上`z`这个选项了。 - **将tar包解压缩** : +**将tar包解压缩** : ``` tar -zxvf /opt/soft/test/log.tar.gz @@ -194,7 +198,7 @@ tar -zxvf /opt/soft/test/log.tar.gz 在预设的情况下,我们可以将压缩档在任何地方解开的 - **只将tar内的部分文件解压出来** : +**只将tar内的部分文件解压出来** : ``` tar -zxvf /opt/soft/test/log30.tar.gz log2013.log @@ -202,7 +206,7 @@ tar -zxvf /opt/soft/test/log30.tar.gz log2013.log 我可以透过`tar -ztvf`来查阅 tar 包内的文件名称,如果单只要一个文件,就可以透过这个方式来解压部分文件! - **文件备份下来,并且保存其权限** : +**文件备份下来,并且保存其权限** : ``` tar -zcvpf log31.tar.gz log2014.log log2015.log log2016.log @@ -210,19 +214,19 @@ tar -zcvpf log31.tar.gz log2014.log log2015.log log2016.log 这个`-p`的属性是很重要的,尤其是当您要保留原本文件的属性时。 - **在文件夹当中,比某个日期新的文件才备份** : +**在文件夹当中,比某个日期新的文件才备份** : ``` tar -N "2012/11/13" -zcvf log17.tar.gz test ``` - **备份文件夹内容是排除部分文件:** +**备份文件夹内容是排除部分文件:** ``` tar --exclude scf/service -zcvf scf.tar.gz scf/* ``` - **其实最简单的使用 tar 就只要记忆底下的方式即可:** +**其实最简单的使用 tar 就只要记忆底下的方式即可:** ``` 压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称 From 5f6be49a4f944ca6b2094cd3a83e0912ac97a6a0 Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Fri, 8 Jun 2018 16:28:32 +0800 Subject: [PATCH 0022/1126] Update supervisord.md --- command/supervisord.md | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/command/supervisord.md b/command/supervisord.md index 6ce8926712c..069918b4bbc 100644 --- a/command/supervisord.md +++ b/command/supervisord.md @@ -1,20 +1,35 @@ supervisord === -配置后台服务/常驻进程的工具 +配置后台服务/常驻进程的进程管家工具 -## 实例 +## 安装 -``` -# supervisord +```bash +# 安装 supervisord apt-get install supervisor +``` + +## 实例 + +生成配置文件 `/etc/supervisord.conf` + +```bash [program:app] command=/usr/bin/gunicorn -w 1 wsgiapp:application directory=/srv/www user=www-data +``` supervisord: 启动 supervisor 服务 + +```bash supervisorctl start app supervisorctl stop app supervisorctl reload # 修改/添加配置文件需要执行这个 -``` \ No newline at end of file +``` + +## 下载地址 + +https://pypi.python.org/pypi/meld3 +https://pypi.python.org/pypi/supervisor \ No newline at end of file From 114fd381670a7c59b30ed35708fbd12b9c347a5d Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Fri, 8 Jun 2018 16:29:43 +0800 Subject: [PATCH 0023/1126] remove rz.md --- command/rz.md | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 command/rz.md diff --git a/command/rz.md b/command/rz.md deleted file mode 100644 index 187c547a52d..00000000000 --- a/command/rz.md +++ /dev/null @@ -1,11 +0,0 @@ -# rz - -文件上传 - -## quick start - -``` -apk add lrzsz - -rz -``` \ No newline at end of file From 56cd454ce75c54b499f70dd80fb93ff4d969df45 Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Fri, 8 Jun 2018 16:39:08 +0800 Subject: [PATCH 0024/1126] Update tmux.md #42 --- command/tmux.md | 364 +++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 348 insertions(+), 16 deletions(-) diff --git a/command/tmux.md b/command/tmux.md index e2692efc269..f32a0c03ed9 100644 --- a/command/tmux.md +++ b/command/tmux.md @@ -1,22 +1,354 @@ tmux === -比 screen 好用的 ssh 窗口管理工具 +Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权。 -## 实例 +## 补充说明 +使用它最直观的好处就是,通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台而无需再“浪费”多余的终端来连接这台远程主机; + +## 功能 + +- 提供了强劲的、易于使用的命令行界面。 +- 可横向和纵向分割窗口。 +- 窗格可以自由移动和调整大小,或直接利用四个预设布局之一。 +- 支持 UTF-8 编码及 256 色终端。 +- 可在多个缓冲区进行复制和粘贴。 +- 可通过交互式菜单来选择窗口、会话及客户端。 +- 支持跨窗口搜索。 +- 支持自动及手动锁定窗口。 + +## 安装 + +```bash +# 在 Mac OS 中,通过 brew 安装 +brew install tmux +# ubuntu版本下直接apt-get安装 +sudo apt-get install tmux +# centos7版本下直接yum安装 +yum install -y tmux + +# centos6版本需要编译安装 +yum install libevent libevent-devel ncurses-devel +tar -zvxf tmux-2.3.tar.gz # (提前下载:wget https://github.com/tmux/tmux/releases/download/2.3/tmux-2.3.tar.gz) +cd tmux-2.3 +./configure +make && make install ``` -apk add tmux # 安装 - -# tmux -tmux # new session -tmux a # attach session -C-b-d # detach session -C-b-c # new window -C-b-num # ch window -exit # exit window -C-b "/% # split window -C-b 方向键 -C-b ? # keymap -no rz/sz -``` \ No newline at end of file + +## 快捷键使用说明 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
Ctrl+b
+
+
激活控制台;此时以下按键生效
+
+
系统操作
+
+
?
+
+
列出所有快捷键;按q返回
+
+
d
+
+
脱离当前会话;这样可以暂时返回Shell界面,输入tmux attach能够重新进入之前的会话
+
+
D
+
+
选择要脱离的会话;在同时开启了多个会话时使用
+
+
Ctrl+z
+
+
挂起当前会话
+
+
r
+
+
强制重绘未脱离的会话
+
+
s
+
+
选择并切换会话;在同时开启了多个会话时使用
+
+
:
+
+
进入命令行模式;此时可以输入支持的命令,例如kill-server可以关闭服务器
+
+
[
+
+
进入复制模式;此时的操作与vi/emacs相同,按q/Esc退出
+
+
~
+
+
列出提示信息缓存;其中包含了之前tmux返回的各种提示信息
+
+
窗口操作
+
+
c
+
+
创建新窗口
+
+
&
+
+
关闭当前窗口
+
+
数字键
+
+
切换至指定窗口
+
+
p
+
+
切换至上一窗口
+
+
n
+
+
切换至下一窗口
+
+
l
+
+
在前后两个窗口间互相切换
+
+
w
+
+
通过窗口列表切换窗口
+
+
,
+
+
重命名当前窗口;这样便于识别
+
+
.
+
+
修改当前窗口编号;相当于窗口重新排序
+
+
f
+
+
在所有窗口中查找指定文本
+
+
面板操作
+
+
+
+
将当前面板平分为上下两块
+
+
%
+
+
将当前面板平分为左右两块
+
+
x
+
+
关闭当前面板
+
+
!
+
+
将当前面板置于新窗口;即新建一个窗口,其中仅包含当前面板
+
+
Ctrl+方向键
+
+
以1个单元格为单位移动边缘以调整当前面板大小
+
+
Alt+方向键
+
+
以5个单元格为单位移动边缘以调整当前面板大小
+
+
Space
+
+
在预置的面板布局中循环切换;依次包括even-horizontal、even-vertical、main-horizontal、main-vertical、tiled
+
+
q
+
+
显示面板编号
+
+
o
+
+
在当前窗口中选择下一面板
+
+
方向键
+
+
移动光标以选择面板
+
+
{
+
+
向前置换当前面板
+
+
}
+
+
向后置换当前面板
+
+
Alt+o
+
+
逆时针旋转当前窗口的面板
+
+
Ctrl+o
+
+
顺时针旋转当前窗口的面板
+
+ +1)进入tmux面板后,一定要先按ctrl+b,然后松开,再按其他的组合键才生效。 +2)常用到的几个组合键: + +``` +ctrl+b ? 显示快捷键帮助 +ctrl+b 空格键 采用下一个内置布局,这个很有意思,在多屏时,用这个就会将多有屏幕竖着展示 +ctrl+b ! 把当前窗口变为新窗口 +ctrl+b " 模向分隔窗口 +ctrl+b % 纵向分隔窗口 +ctrl+b q 显示分隔窗口的编号 +ctrl+b o 跳到下一个分隔窗口。多屏之间的切换 +ctrl+b 上下键 上一个及下一个分隔窗口 +ctrl+b C-方向键 调整分隔窗口大小 +ctrl+b & 确认后退出当前tmux +ctrl+b [ 复制模式,即将当前屏幕移到上一个的位置上,其他所有窗口都向前移动一个。 +ctrl+b c 创建新窗口 +ctrl+b n 选择下一个窗口 +ctrl+b l 最后使用的窗口 +ctrl+b p 选择前一个窗口 +ctrl+b w 以菜单方式显示及选择窗口 +ctrl+b s 以菜单方式显示和选择会话。这个常用到,可以选择进入哪个tmux +ctrl+b t 显示时钟。然后按enter键后就会恢复到shell终端状态 +ctrl+b d 脱离当前会话;这样可以暂时返回Shell界面,输入tmux attach能够重新进入之前的会话 +``` + +## 参考资料 + +- tmux 官网下载地址:http://tmux.github.io/ \ No newline at end of file From f873307e6e4789fd15f181f298d54d176ab26d83 Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Fri, 8 Jun 2018 16:43:00 +0800 Subject: [PATCH 0025/1126] remove mtr.md & sz.md --- command/mtr.md | 12 ------------ command/sz.md | 12 ------------ 2 files changed, 24 deletions(-) delete mode 100644 command/mtr.md delete mode 100644 command/sz.md diff --git a/command/mtr.md b/command/mtr.md deleted file mode 100644 index d73de37717b..00000000000 --- a/command/mtr.md +++ /dev/null @@ -1,12 +0,0 @@ -mtr -=== - -比 traceroute 好用 - -## 实例 - -``` -apk add mtr # 安装 - -mtr -r www.baidu.com # 使用 -``` \ No newline at end of file diff --git a/command/sz.md b/command/sz.md deleted file mode 100644 index 1597dc46f78..00000000000 --- a/command/sz.md +++ /dev/null @@ -1,12 +0,0 @@ -sz -=== - -对话框式文件下载工具 - -## 实例 - -``` -apk add lrzsz # 安装 - -sz $file # 下载 -``` \ No newline at end of file From 5e0151634f15fe75357ca927f92d0a43df184653 Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Fri, 8 Jun 2018 16:51:13 +0800 Subject: [PATCH 0026/1126] Update command. --- build/compile.js | 6 +++--- build/deploy.js | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/build/compile.js b/build/compile.js index dc5a6eae03a..594a6866c94 100644 --- a/build/compile.js +++ b/build/compile.js @@ -276,6 +276,9 @@ function CreateDatajs(dt_path,callback){ json["p"] = md_path.replace(/\.md$/,'').replace(path_md,''); // 命令描述 var des = str.match(/\n==={1,}([\s\S]*?)##/i); + if (!des) { + console.log('格式错误:', error(md_path)); + } des = des[1]?des[1].replace(/\n/g,''):des[1]; des = des.replace(/\r/g,'') json["d"] = des; @@ -289,10 +292,7 @@ function CreateDatajs(dt_path,callback){ //生成数据文件 fs.writeFile(dt_path, 'var linux_commands='+JSON.stringify(indexes) , 'utf8',function(err){ console.log(success("\n → ")+"生成数据成功!"+dt_path+" \n "); - - path_dist = path.join(path_dist,'data.json') - fs.writeFile(path_dist, JSON.stringify(command_data) , 'utf8',function(err){ console.log(success("\n → ")+"生成数据成功!"+path_dist+" \n "); callback&&callback(dt_path,indexes); diff --git a/build/deploy.js b/build/deploy.js index 8b82cf307be..7d00995123d 100644 --- a/build/deploy.js +++ b/build/deploy.js @@ -15,7 +15,7 @@ if(fs.existsSync(deploy_path)){ var load = loading(' Pushing code!!') load.start(); ghpages.publish(deploy_path,{ - repo: 'https://github.com/jaywcjlove/linux-command.git', + repo: 'git@github.com:jaywcjlove/linux-command.git', branch: 'gh-pages', message: 'Linux command index, Compiler generation page ' + new Date() }, function(err) { From eff0386bd8cbffeaafc115aa3c8c2bc4cd53425a Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Fri, 8 Jun 2018 16:51:26 +0800 Subject: [PATCH 0027/1126] Update fishshell.md --- command/fishshell.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/command/fishshell.md b/command/fishshell.md index 6b99d3cc7cc..2457cf63244 100644 --- a/command/fishshell.md +++ b/command/fishshell.md @@ -1,4 +1,5 @@ -# fishshell +fishshell +=== 比 bash 更好用的 shell From 034ffe927028a30bddefc9d4e271e379649b34d7 Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Fri, 8 Jun 2018 16:52:26 +0800 Subject: [PATCH 0028/1126] released v1.2.0 --- dist/data.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/data.json b/dist/data.json index 49ee7c0ac38..b171a5c8363 100644 --- a/dist/data.json +++ b/dist/data.json @@ -1 +1 @@ -{"w":{"n":"w","p":"/w","d":"显示目前登入系统的用户信息"},"ab":{"n":"ab","p":"/ab","d":"Apache服务器的性能测试工具"},"ip":{"n":"ip","p":"/ip","d":"网络配置工具"},"ld":{"n":"ld","p":"/ld","d":"将目标文件连接为可执行程序"},"xz":{"n":"xz","p":"/xz","d":"POSIX 平台开发具有高压缩率的工具。"},"ln":{"n":"ln","p":"/ln","d":"用来为文件创件连接"},"ar":{"n":"ar","p":"/ar","d":"建立或修改备存文件,或是从备存文件中抽取文件"},"lp":{"n":"lp","p":"/lp","d":"打印文件或修改排队的打印任务"},"fg":{"n":"fg","p":"/fg","d":"将后台作业放到前台终端运行"},"wc":{"n":"wc","p":"/wc","d":"统计文件的字节数、字数、行数"},"as":{"n":"as","p":"/as","d":"汇编语言编译器"},"at":{"n":"at","p":"/at","d":"在指定时间执行一个任务"},"fc":{"n":"fc","p":"/fc","d":"修改历史命令并执行"},"ls":{"n":"ls","p":"/ls","d":"显示目录内容列表"},"id":{"n":"id","p":"/id","d":"显示用户的ID以及所属群组的ID"},"vi":{"n":"vi","p":"/vi","d":"功能强大的纯文本编辑器"},"bc":{"n":"bc","p":"/bc","d":"算术操作精密运算工具"},"bg":{"n":"bg","p":"/bg","d":"用于将作业放到后台运行"},"ex":{"n":"ex","p":"/ex","d":"启动vim编辑器的ex编辑模式"},"ed":{"n":"ed","p":"/ed","d":"单行纯文本编辑器"},"tr":{"n":"tr","p":"/tr","d":"将字符进行替换压缩和删除"},"mv":{"n":"mv","p":"/mv","d":"用来对文件或目录重新命名"},"du":{"n":"du","p":"/du","d":"显示每个文件和目录的磁盘使用空间"},"nc":{"n":"nc","p":"/nc","d":"命令用于设置路由器。"},"nl":{"n":"nl","p":"/nl","d":"在Linux系统中计算文件内容行号"},"nm":{"n":"nm","p":"/nm","d":"显示二进制目标文件的符号表"},"cd":{"n":"cd","p":"/cd","d":"切换用户当前工作目录"},"od":{"n":"od","p":"/od","d":"输出文件的八进制、十六进制等格式编码的字节"},"pr":{"n":"pr","p":"/pr","d":"将文本文件转换成适合打印的格式"},"su":{"n":"su","p":"/su","d":"用于切换当前用户身份到其他用户身份"},"ps":{"n":"ps","p":"/ps","d":"报告当前系统的进程状态"},"ss":{"n":"ss","p":"/ss","d":"获取socket统计信息,iproute2 包附带的另一个工具,允许你查询 socket 的有关统计信息。"},"sh":{"n":"sh","p":"/sh","d":"shell命令解释器"},"pv":{"n":"pv","p":"/pv","d":"显示当前在命令行执行的命令的进度信息,管道查看器。"},"df":{"n":"df","p":"/df","d":"显示磁盘的相关信息"},"dd":{"n":"dd","p":"/dd","d":"复制文件并对原文件的内容进行转换和格式化处理"},"rm":{"n":"rm","p":"/rm","d":"用于删除给定的文件和目录"},"cu":{"n":"cu","p":"/cu","d":"用于连接另一个系统主机。"},"cp":{"n":"cp","p":"/cp","d":"将源文件或目录复制到目标文件或目录中"},"man":{"n":"man","p":"/man","d":"查看Linux中的指令帮助"},"sar":{"n":"sar","p":"/sar","d":"系统运行状态统计工具"},"rsh":{"n":"rsh","p":"/rsh","d":"连接远程主机并执行命令"},"rpm":{"n":"rpm","p":"/rpm","d":"RPM软件包的管理工具"},"sed":{"n":"sed","p":"/sed","d":"功能强大的流式文本编辑器"},"seq":{"n":"seq","p":"/seq","d":"以指定增量从首数开始打印数字到尾数"},"zip":{"n":"zip","p":"/zip","d":"可以用来解压缩文件"},"cut":{"n":"cut","p":"/cut","d":"连接文件并打印到标准输出设备上"},"set":{"n":"set","p":"/set","d":"显示或设置shell特性及shell变量"},"rcp":{"n":"rcp","p":"/rcp","d":"使在两台Linux主机之间的文件复制操作更简单"},"col":{"n":"col","p":"/col","d":"过滤控制字符"},"pwd":{"n":"pwd","p":"/pwd","d":"绝对路径方式显示用户当前工作目录"},"pvs":{"n":"pvs","p":"/pvs","d":"输出物理卷信息报表"},"cmp":{"n":"cmp","p":"/cmp","d":"比较两个文件是否有差异"},"dig":{"n":"dig","p":"/dig","d":"域名查询工具"},"ssh":{"n":"ssh","p":"/ssh","d":"openssh套件中的客户端连接工具"},"sum":{"n":"sum","p":"/sum","d":"计算文件的校验码和显示块数"},"dnf":{"n":"dnf","p":"/dnf","d":"新一代的RPM软件包管理器"},"php":{"n":"php","p":"/php","d":"PHP语言的命令行接口"},"tac":{"n":"tac","p":"/tac","d":"将文件已行为单位的反序输出"},"cat":{"n":"cat","p":"/cat","d":"连接文件并打印到标准输出设备上"},"cal":{"n":"cal","p":"/cal","d":"显示当前日历或指定日期的日历"},"tar":{"n":"tar","p":"/tar","d":"Linux下的归档使用工具,用来打包和备份。"},"tee":{"n":"tee","p":"/tee","d":"把数据重定向到给定文件和屏幕上"},"top":{"n":"top","p":"/top","d":"显示或管理执行中的程序"},"bye":{"n":"bye","p":"/bye","d":"命令用于中断FTP连线并结束程序。。"},"scp":{"n":"scp","p":"/scp","d":"加密的方式在本地主机和远程主机之间复制文件"},"elm":{"n":"elm","p":"/elm","d":"纯文本邮件客户端程序"},"env":{"n":"env","p":"/env","d":"显示系统中已存在的环境变量"},"tty":{"n":"tty","p":"/tty","d":"显示连接到当前标准输入的终端设备文件名。"},"awk":{"n":"awk","p":"/awk","d":"文本和数据进行处理的编程语言"},"lpr":{"n":"lpr","p":"/lpr","d":"将文件发送给指定打印机进行打印"},"atq":{"n":"atq","p":"/atq","d":"列出当前用户的at任务列表"},"lpq":{"n":"lpq","p":"/lpq","d":"显示打印队列中的打印任务的状态信息"},"arp":{"n":"arp","p":"/arp","d":"显示和修改IP到MAC转换表"},"lpc":{"n":"lpc","p":"/lpc","d":"命令行方式打印机控制程序"},"arj":{"n":"arj","p":"/arj","d":"用于创建和管理.arj压缩包"},"who":{"n":"who","p":"/who","d":"显示目前登录系统的用户信息"},"fmt":{"n":"fmt","p":"/fmt","d":"读取文件后优化处理并输出"},"ftp":{"n":"ftp","p":"/ftp","d":"用来设置文件系统相关功能"},"lha":{"n":"lha","p":"/lha","d":"压缩或解压缩lzh格式文件"},"let":{"n":"let","p":"/let","d":"简单的计算器"},"gcc":{"n":"gcc","p":"/gcc","d":"基于C/C++的编译器"},"gdb":{"n":"gdb","p":"/gdb","d":"功能强大的程序调试器"},"ldd":{"n":"ldd","p":"/ldd","d":"打印程序或者库文件所依赖的共享库列表"},"yes":{"n":"yes","p":"/yes","d":"重复打印指定字符串"},"git":{"n":"git","p":"/git","d":"是目前世界上最先进的分布式版本控制系统"},"gpm":{"n":"gpm","p":"/gpm","d":"提供文字模式下的滑鼠事件处理"},"joe":{"n":"joe","p":"/joe","d":"强大的纯文本编辑器"},"jed":{"n":"jed","p":"/jed","d":"主要用于编辑代码的编辑器"},"yum":{"n":"yum","p":"/yum","d":"基于RPM的软件包管理器"},"rev":{"n":"rev","p":"/rev","d":"将文件内容以字符为单位反序输出"},"chfn":{"n":"chfn","p":"/chfn","d":"用来改变finger命令显示的信息"},"sudo":{"n":"sudo","p":"/sudo","d":"以其他身份来执行命令"},"pssh":{"n":"pssh","p":"/pssh","d":"批量管理执行"},"bind":{"n":"bind","p":"/bind","d":"显示或设置键盘按键与其相关的功能"},"dirs":{"n":"dirs","p":"/dirs","d":"显示目录记录"},"stty":{"n":"stty","p":"/stty","d":"修改终端命令行的相关设置"},"popd":{"n":"popd","p":"/popd","d":"用于删除目录栈中的记录"},"stat":{"n":"stat","p":"/stat","d":"用于显示文件的状态信息"},"pmap":{"n":"pmap","p":"/pmap","d":"报告进程的内存映射关系"},"ping":{"n":"ping","p":"/ping","d":"测试主机之间网络的连通性"},"pico":{"n":"pico","p":"/pico","d":"功能强大全屏幕的文本编辑器"},"sshd":{"n":"sshd","p":"/sshd","d":"openssh软件套件中的服务器守护进程"},"perl":{"n":"perl","p":"/perl","d":"perl语言解释器"},"uniq":{"n":"uniq","p":"/uniq","d":"报告或忽略文件中的重复行"},"nmap":{"n":"nmap","p":"/nmap","d":"网络探测和安全审核"},"chsh":{"n":"chsh","p":"/chsh","d":"用来更换登录系统时使用的shell"},"type":{"n":"type","p":"/type","d":"显示指定命令的类型"},"nice":{"n":"nice","p":"/nice","d":"改变程序执行的优先权等级"},"sort":{"n":"sort","p":"/sort","d":"将文件进行排序并输出"},"dpkg":{"n":"dpkg","p":"/dpkg","d":"Debian Linux系统上安装、创建和管理软件包"},"dris":{"n":"dris","p":"/dris","d":"显示和清空目录堆栈中的内容"},"nano":{"n":"nano","p":"/nano","d":"字符终端文本编辑器"},"xset":{"n":"xset","p":"/xset","d":"设置X-Window系统中的用户爱好的实用工具"},"dump":{"n":"dump","p":"/dump","d":"用于备份ext2或者ext3文件系统"},"sftp":{"n":"sftp","p":"/sftp","d":"交互式的文件传输程序"},"more":{"n":"more","p":"/more","d":"显示文件内容,每次显示一屏"},"echo":{"n":"echo","p":"/echo","d":"输出指定的字符串或者变量"},"tree":{"n":"tree","p":"/tree","d":"树状图列出目录的内容"},"mkfs":{"n":"mkfs","p":"/mkfs","d":"用于在设备上创建Linux文件系统"},"mesg":{"n":"mesg","p":"/mesg","d":"设置当前终端的写权限"},"trap":{"n":"trap","p":"/trap","d":"指定在接收到信号后将要采取的动作"},"make":{"n":"make","p":"/make","d":"GNU的工程化编译工具"},"atop":{"n":"atop","p":"/atop","d":"监控Linux系统资源与进程的工具"},"mail":{"n":"mail","p":"/mail","d":"命令行下发送和接收电子邮件"},"lynx":{"n":"lynx","p":"/lynx","d":"纯文本模式的网页浏览器"},"comm":{"n":"comm","p":"/comm","d":"两个文件之间的比较"},"lsof":{"n":"lsof","p":"/lsof","d":"显示Linux系统当前已打开的所有文件列表"},"zcat":{"n":"zcat","p":"/zcat","d":"显示压缩包中文件的内容"},"exec":{"n":"exec","p":"/exec","d":"调用并执行指定的命令"},"exit":{"n":"exit","p":"/exit","d":"退出当前的shell"},"tput":{"n":"tput","p":"/tput","d":"通过terminfo数据库对终端会话进行初始化和操作"},"lprm":{"n":"lprm","p":"/lprm","d":"删除打印队列中的打印任务"},"atrm":{"n":"atrm","p":"/atrm","d":"删除待执行任务队列中的指定任务"},"expr":{"n":"expr","p":"/expr","d":"一款表达式计算工具"},"time":{"n":"time","p":"/time","d":"统计给定命令所花费的总时间"},"tftp":{"n":"tftp","p":"/tftp","d":"在本机和tftp服务器之间使用TFTP协议传输文件"},"cpio":{"n":"cpio","p":"/cpio","d":"用来建立、还原备份档的工具程序"},"test":{"n":"test","p":"/test","d":"shell环境中测试条件表达式工具"},"file":{"n":"file","p":"/file","d":"用来探测给定文件的类型。"},"find":{"n":"find","p":"/find","d":"在指定目录下查找文件"},"arpd":{"n":"arpd","p":"/arpd","d":"收集免费ARP信息"},"look":{"n":"look","p":"/look","d":"显示文件中以指定字符串开头的任意行"},"axel":{"n":"axel","p":"/axel","d":"多线程下载工具"},"wait":{"n":"wait","p":"/wait","d":"等待进程执行完后返回"},"fold":{"n":"fold","p":"/fold","d":"控制文件内容输出时所占用的屏幕宽度"},"free":{"n":"free","p":"/free","d":"显示内存的使用情况"},"fsck":{"n":"fsck","p":"/fsck","d":"检查并且试图修复文件系统中的错误"},"talk":{"n":"talk","p":"/talk","d":"让用户和其他用户聊天"},"lilo":{"n":"lilo","p":"/lilo","d":"安装核心载入开机管理程序"},"curl":{"n":"curl","p":"/curl","d":"利用URL规则在命令行下工作的文件传输工具"},"lftp":{"n":"lftp","p":"/lftp","d":"优秀的文件客户端程序"},"wget":{"n":"wget","p":"/wget","d":"Linux系统下载文件工具"},"less":{"n":"less","p":"/less","d":"分屏上下翻页浏览文件内容"},"date":{"n":"date","p":"/date","d":"显示或设置系统时间与日期"},"gcov":{"n":"gcov","p":"/gcov","d":"测试程序的代码覆盖率的工具"},"znew":{"n":"znew","p":"/znew","d":"将.Z压缩包重新转化为gzip命令压缩的.gz压缩包"},"read":{"n":"read","p":"/read","d":"从键盘读取变量值"},"tail":{"n":"tail","p":"/tail","d":"在屏幕上显示指定文件的末尾若干行"},"last":{"n":"last","p":"/last","d":"列出目前与过去登入系统的用户相关信息"},"wall":{"n":"wall","p":"/wall","d":"向系统当前所有打开的终端上输出信息"},"kill":{"n":"kill","p":"/kill","d":"删除执行中的程序或工作"},"sync":{"n":"sync","p":"/sync","d":"用于强制被改变的内容立刻写入磁盘"},"grep":{"n":"grep","p":"/grep","d":"强大的文本搜索工具"},"join":{"n":"join","p":"/join","d":"两个文件中指定栏位内容相同的行连接起来"},"pwck":{"n":"pwck","p":"/pwck","d":"用来验证系统认证文件内容和格式的完整性"},"jobs":{"n":"jobs","p":"/jobs","d":"显示Linux中的任务列表及任务状态"},"arch":{"n":"arch","p":"/arch","d":"显示当前主机的硬件架构类型"},"ipcs":{"n":"ipcs","p":"/ipcs","d":"分析消息队列共享内存和信号量 "},"diff":{"n":"diff","p":"/diff","d":"比较给定的两个文件的不同"},"init":{"n":"init","p":"/init","d":"init进程是所有Linux进程的父进程"},"grub":{"n":"grub","p":"/grub","d":"多重引导程序grub的命令行shell工具"},"info":{"n":"info","p":"/info","d":"Linux下info格式的帮助指令"},"ifup":{"n":"ifup","p":"/ifup","d":"激活指定的网络接口"},"gzip":{"n":"gzip","p":"/gzip","d":"用来压缩文件"},"halt":{"n":"halt","p":"/halt","d":"关闭正在运行的Linux操作系统"},"pvck":{"n":"pvck","p":"/pvck","d":"检测物理卷的LVM元数据的一致性"},"head":{"n":"head","p":"/head","d":"在屏幕上显示指定文件的开头若干行"},"help":{"n":"help","p":"/help","d":"显示帮助信息"},"htop":{"n":"htop","p":"/htop","d":"[非内部命令]一个互动的进程查看器,可以动态观察系统进程状况。"},"host":{"n":"host","p":"/host","d":"常用的分析域名查询工具"},"mysql":{"n":"mysql","p":"/mysql","d":"MySQL服务器客户端工具"},"bzcat":{"n":"bzcat","p":"/bzcat","d":"解压缩指定的.bz2文件"},"touch":{"n":"touch","p":"/touch","d":"创建新的空文件"},"iconv":{"n":"iconv","p":"/iconv","d":"转换文件的编码方式"},"ifcfg":{"n":"ifcfg","p":"/ifcfg","d":"置Linux中的网络接口参数"},"iftop":{"n":"iftop","p":"/iftop","d":"一款实时流量监控工具"},"gzexe":{"n":"gzexe","p":"/gzexe","d":"用来压缩可执行文件"},"tload":{"n":"tload","p":"/tload","d":"显示系统负载状况"},"iotop":{"n":"iotop","p":"/iotop","d":"用来监视磁盘I/O使用状况的工具"},"alias":{"n":"alias","p":"/alias","d":"用来设置指令的别名"},"zfore":{"n":"zfore","p":"/zfore","d":"强制为gzip格式的压缩文件添加.gz后缀"},"bzip2":{"n":"bzip2","p":"/bzip2","d":"将文件压缩成bz2格式"},"ipcrm":{"n":"ipcrm","p":"/ipcrm","d":"删除消息队列、信号集、或者共享内存标识"},"grpck":{"n":"grpck","p":"/grpck","d":"用于验证组文件的完整性"},"iperf":{"n":"iperf","p":"/iperf","d":"网络性能测试工具"},"kexec":{"n":"kexec","p":"/kexec","d":"从当前正在运行的内核引导到一个新内核"},"lastb":{"n":"lastb","p":"/lastb","d":"列出登入系统失败的用户相关信息"},"xinit":{"n":"xinit","p":"/xinit","d":"是Linux下X-Window系统的初始化程序"},"xhost":{"n":"xhost","p":"/xhost","d":"制哪些X客户端能够在X服务器上显示"},"fuser":{"n":"fuser","p":"/fuser","d":"使用文件或文件结构识别进程"},"tailf":{"n":"tailf","p":"/tailf","d":"在屏幕上显示指定文件的末尾若干行内容,通常用于日志文件的跟踪输出。"},"chage":{"n":"chage","p":"/chage","d":"修改帐号和密码的有效期限"},"xclip":{"n":"xclip","p":"/xclip","d":"管理 X 粘贴板"},"login":{"n":"login","p":"/login","d":"登录系统或切换用户身份"},"xauth":{"n":"xauth","p":"/xauth","d":"显示和编辑被用于连接X服务器的认证信息"},"fgrep":{"n":"fgrep","p":"/fgrep","d":"为文件搜索文字字符串"},"fdisk":{"n":"fdisk","p":"/fdisk","d":"查看磁盘使用情况和磁盘分区"},"xargs":{"n":"xargs","p":"/xargs","d":"给其他命令传递参数的一个过滤器"},"lsblk":{"n":"lsblk","p":"/lsblk","d":"列出块设备信息"},"lscpu":{"n":"lscpu","p":"/lscpu","d":"显示有关CPU架构的信息"},"lsmod":{"n":"lsmod","p":"/lsmod","d":"显示已载入系统的模块"},"chcon":{"n":"chcon","p":"/chcon","d":"修改对象(文件)的安全上下文"},"lspci":{"n":"lspci","p":"/lspci","d":"显示当前主机的所有PCI总线信息"},"lsusb":{"n":"lsusb","p":"/lsusb","d":"显示本机的USB设备列表信息"},"write":{"n":"write","p":"/write","d":"向指定登录用户终端上发送信息"},"emacs":{"n":"emacs","p":"/emacs","d":"功能强大的全屏文本编辑器"},"mailq":{"n":"mailq","p":"/mailq","d":"显示待发送的邮件队列"},"eject":{"n":"eject","p":"/eject","d":"用来退出抽取式设备"},"egrep":{"n":"egrep","p":"/egrep","d":"在文件内查找指定的字符串"},"mkdir":{"n":"mkdir","p":"/mkdir","d":"用来创建目录"},"chgrp":{"n":"chgrp","p":"/chgrp","d":"用来变更文件或目录的所属群组"},"chmod":{"n":"chmod","p":"/chmod","d":"用来变更文件或目录的权限"},"mknod":{"n":"mknod","p":"/mknod","d":"创建字符设备文件和块设备文件"},"mount":{"n":"mount","p":"/mount","d":"用于挂载Linux系统外的文件。"},"bzcmp":{"n":"bzcmp","p":"/bzcmp","d":"比较两个压缩包中的文件"},"which":{"n":"which","p":"/which","d":"查找并显示给定命令的绝对路径"},"chown":{"n":"chown","p":"/chown","d":"用来变更文件或目录的拥有者或所属群组"},"dstat":{"n":"dstat","p":"/dstat","d":"通用的系统资源统计工具"},"watch":{"n":"watch","p":"/watch","d":"可以将命令的输出结果输出到标准输出设备,多用于周期性执行命令/定时执行命令"},"ncftp":{"n":"ncftp","p":"/ncftp","d":"是增强的的FTP工具"},"ngrep":{"n":"ngrep","p":"/ngrep","d":"方便的数据包匹配和显示工具"},"umask":{"n":"umask","p":"/umask","d":"用来设置限制新建文件权限的掩码"},"batch":{"n":"batch","p":"/batch","d":"在系统不繁忙的时候执行定时任务"},"nmcli":{"n":"nmcli","p":"/nmcli","d":"地址配置工具"},"nohup":{"n":"nohup","p":"/nohup","d":"将程序以忽略挂起信号的方式运行起来"},"cksum":{"n":"cksum","p":"/cksum","d":"检查文件的CRC是否正确"},"uname":{"n":"uname","p":"/uname","d":"显示Linux系统信息"},"squid":{"n":"squid","p":"/squid","d":"squid服务器守护进程"},"paste":{"n":"paste","p":"/paste","d":"将多个文件按列队列合并"},"patch":{"n":"patch","p":"/patch","d":"为开放源代码软件安装补丁程序"},"split":{"n":"split","p":"/split","d":"分割任意大小的文件"},"pfctl":{"n":"pfctl","p":"/pfctl","d":"PF防火墙的配置命令"},"pgrep":{"n":"pgrep","p":"/pgrep","d":"设置用户的认证信息,包括用户密码、密码过期时间等"},"pidof":{"n":"pidof","p":"/pidof","d":"查找指定名称的进程的进程号ID号"},"pkill":{"n":"pkill","p":"/pkill","d":"可以按照进程名杀死进程"},"spell":{"n":"spell","p":"/spell","d":"对文件进行拼写检查"},"dmesg":{"n":"dmesg","p":"/dmesg","d":"显示Linux系统启动信息"},"unarj":{"n":"unarj","p":"/unarj","d":"解压缩由arj命令创建的压缩包"},"pushd":{"n":"pushd","p":"/pushd","d":"将目录加入命令堆叠中"},"diff3":{"n":"diff3","p":"/diff3","d":"比较3个文件不同的地方"},"dhcpd":{"n":"dhcpd","p":"/dhcpd","d":"运行DHCP服务器。"},"quota":{"n":"quota","p":"/quota","d":"显示磁盘已使用的空间与限制"},"clear":{"n":"clear","p":"/clear","d":"清除当前屏幕终端上的任何信息"},"blkid":{"n":"blkid","p":"/blkid","d":"查看块设备的文件系统类型、LABEL、UUID等信息"},"sleep":{"n":"sleep","p":"/sleep","d":"将目前动作延迟一段时间"},"users":{"n":"users","p":"/users","d":"显示当前登录系统的所有用户"},"rexec":{"n":"rexec","p":"/rexec","d":"运程执行Linux系统下命令 "},"skill":{"n":"skill","p":"/skill","d":"向选定的进程发送信号冻结进程"},"rmdir":{"n":"rmdir","p":"/rmdir","d":"用来删除空目录"},"rmmod":{"n":"rmmod","p":"/rmmod","d":"从运行的内核中移除指定的内核模块"},"route":{"n":"route","p":"/route","d":"显示并设置Linux中静态路由表"},"rpmdb":{"n":"rpmdb","p":"/rpmdb","d":"初始化和重建RPM数据库"},"shopt":{"n":"shopt","p":"/shopt","d":"显示和设置shell操作选项"},"clock":{"n":"clock","p":"/clock","d":"用于调整 RTC 时间。"},"rsync":{"n":"rsync","p":"/rsync","d":"远程数据同步工具"},"unset":{"n":"unset","p":"/unset","d":"删除指定的shell变量或函数"},"unzip":{"n":"unzip","p":"/unzip","d":"用于解压缩由zip命令压缩的压缩包"},"colrm":{"n":"colrm","p":"/colrm","d":"删除文件中的指定列"},"mktemp":{"n":"mktemp","p":"/mktemp","d":"创建临时文件供shell脚本使用"},"strace":{"n":"strace","p":"/strace","d":"跟踪系统调用和信号"},"indent":{"n":"indent","p":"/indent","d":"格式化C语言的源文件"},"mpstat":{"n":"mpstat","p":"/mpstat","d":"显示各个可用CPU的状态"},"mtools":{"n":"mtools","p":"/mtools","d":"显示mtools支持的指令"},"e2fsck":{"n":"e2fsck","p":"/e2fsck","d":"用于检查第二扩展文件系统的完整性"},"ipcalc":{"n":"ipcalc","p":"/ipcalc","d":"简单的IP地址计算器"},"lnstat":{"n":"lnstat","p":"/lnstat","d":"显示Linux系统的网路状态"},"locate":{"n":"locate","p":"/locate","d":"Apache服务器的性能测试工具"},"whatis":{"n":"whatis","p":"/whatis","d":"查询一个命令执行什么功能"},"arping":{"n":"arping","p":"/arping","d":"通过发送ARP协议报文测试网络"},"logger":{"n":"logger","p":"/logger","d":"在系统日志中记录相应条目"},"gunzip":{"n":"gunzip","p":"/gunzip","d":"用来解压缩文件"},"syslog":{"n":"syslog","p":"/syslog","d":"系统默认的日志守护进程"},"startx":{"n":"startx","p":"/startx","d":"用来启动X Window"},"chroot":{"n":"chroot","p":"/chroot","d":"把根目录换成指定的目的目录"},"ulimit":{"n":"ulimit","p":"/ulimit","d":"控制shell程序的资源"},"logout":{"n":"logout","p":"/logout","d":"退出当前登录的Shell"},"bzdiff":{"n":"bzdiff","p":"/bzdiff","d":"直接比较两个.bz2压缩包中文件的不同"},"vmstat":{"n":"vmstat","p":"/vmstat","d":"显示虚拟内存状态"},"sysctl":{"n":"sysctl","p":"/sysctl","d":"时动态地修改内核的运行参数"},"finger":{"n":"finger","p":"/finger","d":"用于查找并显示用户信息"},"chattr":{"n":"chattr","p":"/chattr","d":"用来改变文件属性"},"umount":{"n":"umount","p":"/umount","d":"用于卸载已经加载的文件系统"},"findfs":{"n":"findfs","p":"/findfs","d":"标签或UUID查找文件系统"},"ntsysv":{"n":"ntsysv","p":"/ntsysv","d":"集中管理系统的各种服务"},"swapon":{"n":"swapon","p":"/swapon","d":"激活Linux系统中交换空间"},"hping3":{"n":"hping3","p":"/hping3","d":"测试网络及主机的安全"},"insmod":{"n":"insmod","p":"/insmod","d":"将给定的模块加载到内核中"},"parted":{"n":"parted","p":"/parted","d":"磁盘分区和分区大小调整工具"},"passwd":{"n":"passwd","p":"/passwd","d":"用于让用户可以更改自己的密码"},"telnet":{"n":"telnet","p":"/telnet","d":"登录远程主机和管理"},"export":{"n":"export","p":"/export","d":"设置或显示系统环境变量"},"lpstat":{"n":"lpstat","p":"/lpstat","d":"显示CUPS中打印机的状态信息"},"expand":{"n":"expand","p":"/expand","d":"将文件的制表符转换为空白字符"},"lsattr":{"n":"lsattr","p":"/lsattr","d":"查看文件的第二扩展文件系统属性"},"telint":{"n":"telint","p":"/telint","d":"切换当前正在运行系统的运行等级"},"iptraf":{"n":"iptraf","p":"/iptraf","d":"实时地监视网卡流量"},"ispell":{"n":"ispell","p":"/ispell","d":"检查文件中出现的拼写错误"},"groups":{"n":"groups","p":"/groups","d":"用来打印指定用户所属的工作组"},"printf":{"n":"printf","p":"/printf","d":"格式化并输出结果"},"jwhois":{"n":"jwhois","p":"/jwhois","d":"whois 客户端服务"},"pstack":{"n":"pstack","p":"/pstack","d":"显示每个进程的栈跟踪"},"pstree":{"n":"pstree","p":"/pstree","d":"以树状图的方式展现进程之间的派生关系"},"ifdown":{"n":"ifdown","p":"/ifdown","d":"禁用指定的网络接口"},"bzless":{"n":"bzless","p":"/bzless","d":"增强.bz2压缩包查看器"},"vdfuse":{"n":"vdfuse","p":"/vdfuse","d":"VirtualBox软件挂载VDI分区文件工具"},"pvscan":{"n":"pvscan","p":"/pvscan","d":"扫描系统中所有硬盘的物理卷列表"},"ltrace":{"n":"ltrace","p":"/ltrace","d":"用来跟踪进程调用库函数的情况"},"pwconv":{"n":"pwconv","p":"/pwconv","d":"用来开启用户的投影密码"},"hostid":{"n":"hostid","p":"/hostid","d":"用来打印当前主机的数字化标识"},"bzmore":{"n":"bzmore","p":"/bzmore","d":"查看bzip2压缩过的文本文件的内容"},"uupick":{"n":"uupick","p":"/uupick","d":"命令处理传送进来的文件。"},"source":{"n":"source","p":"/source","d":"在当前Shell环境中从指定文件读取和执行命令,命令返回退出状态。"},"rcconf":{"n":"rcconf","p":"/rcconf","d":"Debian Linux下的运行等级服务配置工具"},"depmod":{"n":"depmod","p":"/depmod","d":"分析可载入模块的相依性"},"accept":{"n":"accept","p":"/accept","d":"指示打印系统接受发往指定目标打印机的打印任务"},"lvscan":{"n":"lvscan","p":"/lvscan","d":"扫描逻辑卷"},"reboot":{"n":"reboot","p":"/reboot","d":"重新启动正在运行的Linux操作系统"},"reject":{"n":"reject","p":"/reject","d":"指示打印系统拒绝发往指定目标打印机的打印任务"},"rename":{"n":"rename","p":"/rename","d":"用字符串替换的方式批量改变文件名"},"renice":{"n":"renice","p":"/renice","d":"修改正在运行的进程的调度优先级"},"resize":{"n":"resize","p":"/resize","d":"命令设置终端机视窗的大小。"},"enable":{"n":"enable","p":"/enable","d":"启动或关闭shell内建命令"},"uucico":{"n":"uucico","p":"/uucico","d":"UUCP文件传输服务程序。"},"iostat":{"n":"iostat","p":"/iostat","d":"监视系统输入输出设备和CPU的使用情况"},"cancel":{"n":"cancel","p":"/cancel","d":"取消已存在的打印任务"},"rlogin":{"n":"rlogin","p":"/rlogin","d":"从当前终端登录到远程Linux主机"},"elinks":{"n":"elinks","p":"/elinks","d":"纯文本界面的WWW浏览器"},"ifstat":{"n":"ifstat","p":"/ifstat","d":"统计网络接口流量状态"},"md5sum":{"n":"md5sum","p":"/md5sum","d":"计算和校验文件报文摘要的工具程序"},"bzgrep":{"n":"bzgrep","p":"/bzgrep","d":"使用正则表达式搜索.bz2压缩包中文件"},"csplit":{"n":"csplit","p":"/csplit","d":"将一个大文件分割成小的碎片文件"},"whoami":{"n":"whoami","p":"/whoami","d":"打印当前有效的用户名称"},"unlink":{"n":"unlink","p":"/unlink","d":"系统调用函数unlink去删除指定的文件"},"hdparm":{"n":"hdparm","p":"/hdparm","d":"显示与设定硬盘的参数"},"mke2fs":{"n":"mke2fs","p":"/mke2fs","d":"创建磁盘分区上的“etc2/etc3”文件系统"},"ftpwho":{"n":"ftpwho","p":"/ftpwho","d":"显示当前每个ftp会话信息"},"ftptop":{"n":"ftptop","p":"/ftptop","d":"proftpd服务器的连接状态"},"uptime":{"n":"uptime","p":"/uptime","d":"查看Linux系统负载信息"},"screen":{"n":"screen","p":"/screen","d":"用于命令行终端切换"},"seinfo":{"n":"seinfo","p":"/seinfo","d":"查询SELinux的策略提供多少相关规则"},"vgscan":{"n":"vgscan","p":"/vgscan","d":"扫描并显示系统中的卷组"},"setsid":{"n":"setsid","p":"/setsid","d":"在新的会话中运行程序。"},"mkswap":{"n":"mkswap","p":"/mkswap","d":"建立和设置SWAP交换分区"},"setpci":{"n":"setpci","p":"/setpci","d":"查询和配置PCI设备的使用工具"},"e2label":{"n":"e2label","p":"/e2label","d":"设置第二扩展文件系统的卷标"},"setfacl":{"n":"setfacl","p":"/setfacl","d":"设置文件访问控制列表"},"command":{"n":"command","p":"/command","d":"调用并执行指定的命令"},"useradd":{"n":"useradd","p":"/useradd","d":"创建的新的系统用户"},"crontab":{"n":"crontab","p":"/crontab","d":"提交和管理用户的需要周期性执行的任务"},"userdel":{"n":"userdel","p":"/userdel","d":"用于删除给定的用户以及与用户相关的文件"},"rpmsign":{"n":"rpmsign","p":"/rpmsign","d":"使用RPM软件包的签名管理工具"},"usermod":{"n":"usermod","p":"/usermod","d":"用于修改用户的基本信息"},"slabtop":{"n":"slabtop","p":"/slabtop","d":"实时显示内核slab内存缓存信息"},"restore":{"n":"restore","p":"/restore","d":"所进行的操作和dump指令相反"},"slocate":{"n":"slocate","p":"/slocate","d":"命令查找文件或目录"},"readelf":{"n":"readelf","p":"/readelf","d":"用于显示elf格式文件的信息"},"declare":{"n":"declare","p":"/declare","d":"声明或显示shell变量"},"quotaon":{"n":"quotaon","p":"/quotaon","d":"激活Linux内核中指定文件系统的磁盘配额功能"},"dirname":{"n":"dirname","p":"/dirname","d":"去除文件名中的非目录部分"},"ppp-off":{"n":"ppp-off","p":"/ppp-off","d":"关闭ppp连线"},"pathchk":{"n":"pathchk","p":"/pathchk","d":"检查文件中不可移植的部分"},"openssl":{"n":"openssl","p":"/openssl","d":"强大的安全套接字层密码库"},"objdump":{"n":"objdump","p":"/objdump","d":"显示二进制文件信息"},"ntpdate":{"n":"ntpdate","p":"/ntpdate","d":"使用网络计时协议(NTP)设置日期和时间"},"ssh-add":{"n":"ssh-add","p":"/ssh-add","d":"把专用密钥添加到ssh-agent的高速缓存中"},"unalias":{"n":"unalias","p":"/unalias","d":"删除由alias设置的别名"},"nologin":{"n":"nologin","p":"/nologin","d":"拒绝用户登录系统"},"volname":{"n":"volname","p":"/volname","d":"显示指定的ISO-9660格式的设备的卷名称"},"nfsstat":{"n":"nfsstat","p":"/nfsstat","d":"列出NFS客户端和服务器的工作状态"},"netstat":{"n":"netstat","p":"/netstat","d":"查看Linux中网络系统状态信息"},"nethogs":{"n":"nethogs","p":"/nethogs","d":"终端下的网络流量监控工具"},"whereis":{"n":"whereis","p":"/whereis","d":"查找二进制程序、代码等相关文件路径"},"service":{"n":"service","p":"/service","d":"控制系统服务的实用工具"},"strings":{"n":"strings","p":"/strings","d":"在对象文件或二进制文件中查找可打印的字符串"},"mkisofs":{"n":"mkisofs","p":"/mkisofs","d":"建立ISO 9660映像文件"},"edquota":{"n":"edquota","p":"/edquota","d":"用于编辑指定用户或工作组磁盘配额"},"ethtool":{"n":"ethtool","p":"/ethtool","d":"显示或修改以太网卡的配置信息"},"swapoff":{"n":"swapoff","p":"/swapoff","d":"关闭指定的交换空间"},"lpadmin":{"n":"lpadmin","p":"/lpadmin","d":"配置CUPS套件中的打印机和类"},"losetup":{"n":"losetup","p":"/losetup","d":"设定与控制循环(loop)设备"},"logsave":{"n":"logsave","p":"/logsave","d":"将命令的输出信息保存到指定的日志文件"},"logname":{"n":"logname","p":"/logname","d":"用来显示用户名称"},"systool":{"n":"systool","p":"/systool","d":"显示基于总线、类和拓扑显示系统中设备的信息"},"ftpshut":{"n":"ftpshut","p":"/ftpshut","d":"在指定的时间关闭FTP服务器"},"lftpget":{"n":"lftpget","p":"/lftpget","d":"调用lftp指令下载指定的文件"},"lastlog":{"n":"lastlog","p":"/lastlog","d":"显示系统中所有用户最近一次登录信息"},"killall":{"n":"killall","p":"/killall","d":"使用进程的名称来杀死一组进程"},"tcpdump":{"n":"tcpdump","p":"/tcpdump","d":"一款sniffer工具,是Linux上的抓包工具,嗅探器。"},"builtin":{"n":"builtin","p":"/builtin","d":"执行shell内部命令"},"gpasswd":{"n":"gpasswd","p":"/gpasswd","d":"Linux下工作组文件的管理工具"},"apt-key":{"n":"apt-key","p":"/apt-key","d":"管理Debian Linux系统中的软件包密钥"},"apt-get":{"n":"apt-get","p":"/apt-get","d":"Debian Linux发行版中的APT软件包管理工具"},"bunzip2":{"n":"bunzip2","p":"/bunzip2","d":"创一个bz2文件压缩包"},"apropos":{"n":"apropos","p":"/apropos","d":"在 whatis 数据库中查找字符串"},"grpconv":{"n":"grpconv","p":"/grpconv","d":"用来开启群组的投影密码"},"install":{"n":"install","p":"/install","d":"安装或升级软件或备份数据"},"zipinfo":{"n":"zipinfo","p":"/zipinfo","d":"用来列出压缩文件信息"},"hwclock":{"n":"hwclock","p":"/hwclock","d":"显示与设定硬件时钟"},"hexdump":{"n":"hexdump","p":"/hexdump","d":"显示文件十六进制格式"},"history":{"n":"history","p":"/history","d":"用于显示历史命令"},"diffstat":{"n":"diffstat","p":"/diffstat","d":"显示diff命令输出信息的柱状图"},"pvchange":{"n":"pvchange","p":"/pvchange","d":"修改物理卷属性"},"updatedb":{"n":"updatedb","p":"/updatedb","d":"创建或更新slocate命令所必需的数据库文件"},"arpwatch":{"n":"arpwatch","p":"/arpwatch","d":"监听网络上ARP的记录"},"pvcreate":{"n":"pvcreate","p":"/pvcreate","d":"将物理硬盘分区初始化为物理卷"},"basename":{"n":"basename","p":"/basename","d":"打印目录或者文件的基本名称"},"pvremove":{"n":"pvremove","p":"/pvremove","d":"删除一个存在的物理卷"},"dhcrelay":{"n":"dhcrelay","p":"/dhcrelay","d":"使用dhcrelay命令可以提供中继DHCP和BOOTP请求"},"ldconfig":{"n":"ldconfig","p":"/ldconfig","d":"动态链接库管理命令"},"shutdown":{"n":"shutdown","p":"/shutdown","d":"用来执行系统关机的命令"},"zipsplit":{"n":"zipsplit","p":"/zipsplit","d":"将较大的zip压缩包分割成各个较小的压缩包"},"mkinitrd":{"n":"mkinitrd","p":"/mkinitrd","d":"建立要载入ramdisk的映像文件"},"logwatch":{"n":"logwatch","p":"/logwatch","d":"可定制和可插入式的日志监视系统"},"pwunconv":{"n":"pwunconv","p":"/pwunconv","d":"用来关闭用户的投影密码"},"groupmod":{"n":"groupmod","p":"/groupmod","d":"更改群组识别码或名称"},"unexpand":{"n":"unexpand","p":"/unexpand","d":"将文件的空白字符转换为制表符"},"groupdel":{"n":"groupdel","p":"/groupdel","d":"用于删除指定的工作组"},"quotaoff":{"n":"quotaoff","p":"/quotaoff","d":"关闭Linux内核中指定文件系统的磁盘配额功能"},"nslookup":{"n":"nslookup","p":"/nslookup","d":"查询域名DNS信息的工具"},"lvcreate":{"n":"lvcreate","p":"/lvcreate","d":"用于创建LVM的逻辑卷"},"modprobe":{"n":"modprobe","p":"/modprobe","d":"自动处理可载入模块"},"groupadd":{"n":"groupadd","p":"/groupadd","d":"用于创建一个新的工作组"},"lvextend":{"n":"lvextend","p":"/lvextend","d":"扩展逻辑卷空间"},"readonly":{"n":"readonly","p":"/readonly","d":"定义只读shell变量或函数"},"lvreduce":{"n":"lvreduce","p":"/lvreduce","d":"收缩逻辑卷空间"},"lvremove":{"n":"lvremove","p":"/lvremove","d":"删除指定LVM逻辑卷"},"vgrename":{"n":"vgrename","p":"/vgrename","d":"使用vgrename命令可以重命名卷组的名称。"},"htdigest":{"n":"htdigest","p":"/htdigest","d":"Apache服务器内置工具"},"repquota":{"n":"repquota","p":"/repquota","d":"报表的格式输出磁盘空间限制的状态"},"xlsfonts":{"n":"xlsfonts","p":"/xlsfonts","d":"列出X Server使用的字体"},"chpasswd":{"n":"chpasswd","p":"/chpasswd","d":"批量更新用户口令的工具"},"aptitude":{"n":"aptitude","p":"/aptitude","d":"Debian Linux系统中软件包管理工具"},"ftpcount":{"n":"ftpcount","p":"/ftpcount","d":"显示目前已FTP登入的用户人数"},"vgremove":{"n":"vgremove","p":"/vgremove","d":"用于用户删除LVM卷组"},"exportfs":{"n":"exportfs","p":"/exportfs","d":"管理NFS共享文件系统列表"},"hostname":{"n":"hostname","p":"/hostname","d":"显示和设置系统的主机名"},"blockdev":{"n":"blockdev","p":"/blockdev","d":"从命令行调用区块设备控制程序"},"dpkg-deb":{"n":"dpkg-deb","p":"/dpkg-deb","d":"Debian Linux下的软件包管理工具"},"dos2unix":{"n":"dos2unix","p":"/dos2unix","d":"将DOS格式文本文件转换成Unix格式"},"mailstat":{"n":"mailstat","p":"/mailstat","d":"显示到达的邮件状态"},"vgreduce":{"n":"vgreduce","p":"/vgreduce","d":"从卷组中删除物理卷"},"htpasswd":{"n":"htpasswd","p":"/htpasswd","d":"apache服务器创建密码认证文件"},"rpm2cpio":{"n":"rpm2cpio","p":"/rpm2cpio","d":"将RPM软件包转换为cpio格式的文件"},"rpmbuild":{"n":"rpmbuild","p":"/rpmbuild","d":"创建RPM的二进制软件包和源码软件包"},"bmodinfo":{"n":"bmodinfo","p":"/bmodinfo","d":"显示给定模块的详细信息"},"vgextend":{"n":"vgextend","p":"/vgextend","d":"向卷组中添加物理卷"},"rpmquery":{"n":"rpmquery","p":"/rpmquery","d":"从RPM数据库中查询软件包信息"},"cdrecord":{"n":"cdrecord","p":"/cdrecord","d":"Linux系统下光盘刻录功能命令"},"vgcreate":{"n":"vgcreate","p":"/vgcreate","d":"用于创建LVM卷组"},"poweroff":{"n":"poweroff","p":"/poweroff","d":"关闭Linux系统,关闭记录会被写入到/var/log/wtmp日志文件中。"},"iptables":{"n":"iptables","p":"/iptables","d":"Linux上常用的防火墙软件"},"xlsatoms":{"n":"xlsatoms","p":"/xlsatoms","d":"列出X服务器内部所有定义的原子成分"},"runlevel":{"n":"runlevel","p":"/runlevel","d":"打印当前Linux系统的运行等级"},"ifconfig":{"n":"ifconfig","p":"/ifconfig","d":"配置和显示Linux系统网卡的网络参数"},"protoize":{"n":"protoize","p":"/protoize","d":"GNU-C代码转换为ANSI-C代码"},"mii-tool":{"n":"mii-tool","p":"/mii-tool","d":"配置网络设备协商方式的工具"},"tempfile":{"n":"tempfile","p":"/tempfile","d":"shell中给临时文件命名"},"compress":{"n":"compress","p":"/compress","d":"使用Lempress-Ziv编码压缩数据文件"},"vgchange":{"n":"vgchange","p":"/vgchange","d":"修改卷组属性"},"semanage":{"n":"semanage","p":"/semanage","d":"默认目录的安全上下文查询与修改"},"sendmail":{"n":"sendmail","p":"/sendmail","d":"著名电子邮件服务器"},"newusers":{"n":"newusers","p":"/newusers","d":"用于批处理的方式一次创建多个命令"},"iptstate":{"n":"iptstate","p":"/iptstate","d":"显示iptables的工作状态"},"sesearch":{"n":"sesearch","p":"/sesearch","d":"查询SELinux策略的规则详情"},"lvresize":{"n":"lvresize","p":"/lvresize","d":"调整逻辑卷空间大小"},"dhclient":{"n":"dhclient","p":"/dhclient","d":"动态获取或释放IP地址"},"tracepath":{"n":"tracepath","p":"/tracepath","d":"追踪目的主机经过的路由信息"},"grpunconv":{"n":"grpunconv","p":"/grpunconv","d":"用来关闭群组的投影密码"},"tcpreplay":{"n":"tcpreplay","p":"/tcpreplay","d":"将PCAP包重新发送,用于性能或者功能测试"},"systemctl":{"n":"systemctl","p":"/systemctl","d":"系统服务管理器指令"},"chkconfig":{"n":"chkconfig","p":"/chkconfig","d":"检查或设置系统的各种服务"},"apachectl":{"n":"apachectl","p":"/apachectl","d":"Apache服务器前端控制工具"},"ip6tables":{"n":"ip6tables","p":"/ip6tables","d":"linux中防火墙软件"},"getsebool":{"n":"getsebool","p":"/getsebool","d":"查询SElinux策略内各项规则的布尔值"},"ssh-agent":{"n":"ssh-agent","p":"/ssh-agent","d":"ssh密钥管理器"},"logrotate":{"n":"logrotate","p":"/logrotate","d":"统日志进行轮转、压缩和删除"},"lvdisplay":{"n":"lvdisplay","p":"/lvdisplay","d":"显示逻辑卷属性"},"mysqldump":{"n":"mysqldump","p":"/mysqldump","d":"MySQL数据库中备份工具"},"smbpasswd":{"n":"smbpasswd","p":"/smbpasswd","d":"samba用户和密码管理工具"},"smbclient":{"n":"smbclient","p":"/smbclient","d":"交互方式访问samba服务器"},"showmount":{"n":"showmount","p":"/showmount","d":"显示NFS服务器加载的信息"},"mysqlshow":{"n":"mysqlshow","p":"/mysqlshow","d":"显示MySQL中数据库相关信息"},"clockdiff":{"n":"clockdiff","p":"/clockdiff","d":"检测两台linux主机的时间差"},"arptables":{"n":"arptables","p":"/arptables","d":"管理ARP包过滤规则表"},"setsebool":{"n":"setsebool","p":"/setsebool","d":"修改SElinux策略内各项规则的布尔值"},"badblocks":{"n":"badblocks","p":"/badblocks","d":"查找磁盘中损坏的区块"},"vgdisplay":{"n":"vgdisplay","p":"/vgdisplay","d":"显示LVM卷组的信息"},"rpmverify":{"n":"rpmverify","p":"/rpmverify","d":"验证已安装的RPM软件包的正确性"},"dmidecode":{"n":"dmidecode","p":"/dmidecode","d":"在Linux系统下获取有关硬件方面的信息"},"vgconvert":{"n":"vgconvert","p":"/vgconvert","d":"转换卷组元数据格式"},"dircolors":{"n":"dircolors","p":"/dircolors","d":"置ls命令在显示目录或文件时所用的色彩"},"pvdisplay":{"n":"pvdisplay","p":"/pvdisplay","d":"显示物理卷的属性"},"partprobe":{"n":"partprobe","p":"/partprobe","d":"不重启的情况下重读分区"},"quotacheck":{"n":"quotacheck","p":"/quotacheck","d":"检查磁盘的使用空间与限制"},"cupsenable":{"n":"cupsenable","p":"/cupsenable","d":"启动指定的打印机"},"usernetctl":{"n":"usernetctl","p":"/usernetctl","d":"被允许时操作指定的网络接口"},"ssh-keygen":{"n":"ssh-keygen","p":"/ssh-keygen","d":"为ssh生成、管理和转换认证密钥"},"xlsclients":{"n":"xlsclients","p":"/xlsclients","d":"列出显示器中的客户端应用程序"},"getenforce":{"n":"getenforce","p":"/getenforce","d":"显示当前SELinux的应用模式,是强制、执行还是停用。"},"domainname":{"n":"domainname","p":"/domainname","d":"显示和设置系统的NIS域名"},"get_module":{"n":"get_module","p":"/get_module","d":"获取Linux内核模块的详细信息"},"traceroute":{"n":"traceroute","p":"/traceroute","d":"显示数据包到主机间的路径"},"mkbootdisk":{"n":"mkbootdisk","p":"/mkbootdisk","d":"可建立目前系统的启动盘"},"dpkg-query":{"n":"dpkg-query","p":"/dpkg-query","d":"Debian Linux中软件包的查询工具"},"mysqladmin":{"n":"mysqladmin","p":"/mysqladmin","d":"MySQL服务器管理客户端"},"dpkg-split":{"n":"dpkg-split","p":"/dpkg-split","d":"Debian Linux中将大软件包分割成小包"},"restorecon":{"n":"restorecon","p":"/restorecon","d":"恢复文件的安全上下文"},"unprotoize":{"n":"unprotoize","p":"/unprotoize","d":"删除C语言源代码文件中的函数原型"},"uncompress":{"n":"uncompress","p":"/uncompress","d":"用来解压.Z文件"},"squidclient":{"n":"squidclient","p":"/squidclient","d":"squid服务器的客户端管理工具"},"cupsdisable":{"n":"cupsdisable","p":"/cupsdisable","d":"停止指定的打印机"},"consoletype":{"n":"consoletype","p":"/consoletype","d":"输出已连接的终端类型"},"mysqlimport":{"n":"mysqlimport","p":"/mysqlimport","d":"为MySQL服务器用命令行方式导入数据"},"inotifywait":{"n":"inotifywait","p":"/inotifywait","d":"异步文件系统监控机制"},"ssh-keyscan":{"n":"ssh-keyscan","p":"/ssh-keyscan","d":"收集主机公钥的使用工具"},"lsb_release":{"n":"lsb_release","p":"/lsb_release","d":"显示发行版本信息"},"sftp-server":{"n":"sftp-server","p":"/sftp-server","d":"sftp协议的服务器端程序"},"ssh-copy-id":{"n":"ssh-copy-id","p":"/ssh-copy-id","d":"把本地的ssh公钥文件安装到远程主机对应的账户下"},"dpkg-divert":{"n":"dpkg-divert","p":"/dpkg-divert","d":"Debian Linux中创建并管理一个转向列表"},"dpkg-trigger":{"n":"dpkg-trigger","p":"/dpkg-trigger","d":"Debian Linux下的软件包触发器"},"firewall-cmd":{"n":"firewall-cmd","p":"/firewall-cmd","d":"Linux上新用的防火墙软件,跟iptables差不多的工具。"},"convertquota":{"n":"convertquota","p":"/convertquota","d":"把老的配额文件转换为新的格式"},"apt-sortpkgs":{"n":"apt-sortpkgs","p":"/apt-sortpkgs","d":"Debian Linux下对软件包索引文件进行排序的工具"},"bzip2recover":{"n":"bzip2recover","p":"/bzip2recover","d":"恢复被破坏的.bz2压缩包中的文件"},"ypdomainname":{"n":"ypdomainname","p":"/ypdomainname","d":"显示主机的NIS的域名"},"kernelversion":{"n":"kernelversion","p":"/kernelversion","d":"打印当前内核的主版本号"},"nisdomainname":{"n":"nisdomainname","p":"/nisdomainname","d":"显示主机NIS的域名"},"iptables-save":{"n":"iptables-save","p":"/iptables-save","d":"备份iptables的表配置"},"speedtest-cli":{"n":"speedtest-cli","p":"/speedtest-cli","d":"命令行下测试服务器外网速度"},"dnsdomainname":{"n":"dnsdomainname","p":"/dnsdomainname","d":"定义DNS系统中FQDN名称的域名"},"ip6tables-save":{"n":"ip6tables-save","p":"/ip6tables-save","d":"保存ip6tables表配置"},"named-checkzone":{"n":"named-checkzone","p":"/named-checkzone","d":"使用named-checkzone命令可以进行区域文件有效性检查和转换,必须指定区域名称和区域文件名称。"},"iptables-restore":{"n":"iptables-restore","p":"/iptables-restore","d":"还原iptables表的配置"},"dpkg-reconfigure":{"n":"dpkg-reconfigure","p":"/dpkg-reconfigure","d":"Debian Linux中重新配制一个已经安装的软件包"},"dpkg-preconfigure":{"n":"dpkg-preconfigure","p":"/dpkg-preconfigure","d":"Debian Linux中软件包安装之前询问问题"},"ip6tables-restore":{"n":"ip6tables-restore","p":"/ip6tables-restore","d":"还原ip6tables表"},"dpkg-statoverride":{"n":"dpkg-statoverride","p":"/dpkg-statoverride","d":"Debian Linux中覆盖文件的所有权和模式"}} \ No newline at end of file +{"w":{"n":"w","p":"/w","d":"显示目前登入系统的用户信息"},"rm":{"n":"rm","p":"/rm","d":"用于删除给定的文件和目录"},"ip":{"n":"ip","p":"/ip","d":"网络配置工具"},"ld":{"n":"ld","p":"/ld","d":"将目标文件连接为可执行程序"},"ln":{"n":"ln","p":"/ln","d":"用来为文件创件连接"},"lp":{"n":"lp","p":"/lp","d":"打印文件或修改排队的打印任务"},"xz":{"n":"xz","p":"/xz","d":"POSIX 平台开发具有高压缩率的工具。"},"fg":{"n":"fg","p":"/fg","d":"将后台作业放到前台终端运行"},"ar":{"n":"ar","p":"/ar","d":"建立或修改备存文件,或是从备存文件中抽取文件"},"fc":{"n":"fc","p":"/fc","d":"修改历史命令并执行"},"ls":{"n":"ls","p":"/ls","d":"显示目录内容列表"},"wc":{"n":"wc","p":"/wc","d":"统计文件的字节数、字数、行数"},"as":{"n":"as","p":"/as","d":"汇编语言编译器"},"at":{"n":"at","p":"/at","d":"在指定时间执行一个任务"},"ex":{"n":"ex","p":"/ex","d":"启动vim编辑器的ex编辑模式"},"ed":{"n":"ed","p":"/ed","d":"单行纯文本编辑器"},"ab":{"n":"ab","p":"/ab","d":"Apache服务器的性能测试工具"},"vi":{"n":"vi","p":"/vi","d":"功能强大的纯文本编辑器"},"bc":{"n":"bc","p":"/bc","d":"算术操作精密运算工具"},"bg":{"n":"bg","p":"/bg","d":"用于将作业放到后台运行"},"mv":{"n":"mv","p":"/mv","d":"用来对文件或目录重新命名"},"du":{"n":"du","p":"/du","d":"显示每个文件和目录的磁盘使用空间"},"tr":{"n":"tr","p":"/tr","d":"将字符进行替换压缩和删除"},"nc":{"n":"nc","p":"/nc","d":"命令用于设置路由器。"},"nl":{"n":"nl","p":"/nl","d":"在Linux系统中计算文件内容行号"},"nm":{"n":"nm","p":"/nm","d":"显示二进制目标文件的符号表"},"od":{"n":"od","p":"/od","d":"输出文件的八进制、十六进制等格式编码的字节"},"pr":{"n":"pr","p":"/pr","d":"将文本文件转换成适合打印的格式"},"cd":{"n":"cd","p":"/cd","d":"切换用户当前工作目录"},"ps":{"n":"ps","p":"/ps","d":"报告当前系统的进程状态"},"pv":{"n":"pv","p":"/pv","d":"显示当前在命令行执行的命令的进度信息,管道查看器。"},"su":{"n":"su","p":"/su","d":"用于切换当前用户身份到其他用户身份"},"df":{"n":"df","p":"/df","d":"显示磁盘的相关信息"},"ss":{"n":"ss","p":"/ss","d":"比 netstat 好用的socket统计信息,iproute2 包附带的另一个工具,允许你查询 socket 的有关统计信息。"},"sh":{"n":"sh","p":"/sh","d":"shell命令解释器"},"dd":{"n":"dd","p":"/dd","d":"复制文件并对原文件的内容进行转换和格式化处理"},"cu":{"n":"cu","p":"/cu","d":"用于连接另一个系统主机。"},"cp":{"n":"cp","p":"/cp","d":"将源文件或目录复制到目标文件或目录中"},"id":{"n":"id","p":"/id","d":"显示用户的ID以及所属群组的ID"},"seq":{"n":"seq","p":"/seq","d":"以指定增量从首数开始打印数字到尾数"},"scp":{"n":"scp","p":"/scp","d":"加密的方式在本地主机和远程主机之间复制文件"},"set":{"n":"set","p":"/set","d":"显示或设置shell特性及shell变量"},"sar":{"n":"sar","p":"/sar","d":"系统运行状态统计工具"},"rsh":{"n":"rsh","p":"/rsh","d":"连接远程主机并执行命令"},"col":{"n":"col","p":"/col","d":"过滤控制字符"},"rpm":{"n":"rpm","p":"/rpm","d":"RPM软件包的管理工具"},"ack":{"n":"ack","p":"/ack","d":"比grep好用的文本搜索工具"},"cut":{"n":"cut","p":"/cut","d":"连接文件并打印到标准输出设备上"},"cmp":{"n":"cmp","p":"/cmp","d":"比较两个文件是否有差异"},"rev":{"n":"rev","p":"/rev","d":"将文件内容以字符为单位反序输出"},"ssh":{"n":"ssh","p":"/ssh","d":"openssh套件中的客户端连接工具"},"rcp":{"n":"rcp","p":"/rcp","d":"使在两台Linux主机之间的文件复制操作更简单"},"pwd":{"n":"pwd","p":"/pwd","d":"绝对路径方式显示用户当前工作目录"},"pvs":{"n":"pvs","p":"/pvs","d":"输出物理卷信息报表"},"dig":{"n":"dig","p":"/dig","d":"域名查询工具"},"sum":{"n":"sum","p":"/sum","d":"计算文件的校验码和显示块数"},"tac":{"n":"tac","p":"/tac","d":"将文件已行为单位的反序输出"},"cat":{"n":"cat","p":"/cat","d":"连接文件并打印到标准输出设备上"},"dnf":{"n":"dnf","p":"/dnf","d":"新一代的RPM软件包管理器"},"php":{"n":"php","p":"/php","d":"PHP语言的命令行接口"},"tar":{"n":"tar","p":"/tar","d":"Linux下的归档使用工具,用来打包和备份。"},"cal":{"n":"cal","p":"/cal","d":"显示当前日历或指定日期的日历"},"tee":{"n":"tee","p":"/tee","d":"把数据重定向到给定文件和屏幕上"},"top":{"n":"top","p":"/top","d":"显示或管理执行中的程序"},"bye":{"n":"bye","p":"/bye","d":"命令用于中断FTP连线并结束程序。。"},"sed":{"n":"sed","p":"/sed","d":"功能强大的流式文本编辑器"},"awk":{"n":"awk","p":"/awk","d":"文本和数据进行处理的编程语言"},"man":{"n":"man","p":"/man","d":"查看Linux中的指令帮助"},"elm":{"n":"elm","p":"/elm","d":"纯文本邮件客户端程序"},"env":{"n":"env","p":"/env","d":"显示系统中已存在的环境变量"},"atq":{"n":"atq","p":"/atq","d":"列出当前用户的at任务列表"},"arp":{"n":"arp","p":"/arp","d":"显示和修改IP到MAC转换表"},"arj":{"n":"arj","p":"/arj","d":"用于创建和管理.arj压缩包"},"lpr":{"n":"lpr","p":"/lpr","d":"将文件发送给指定打印机进行打印"},"who":{"n":"who","p":"/who","d":"显示目前登录系统的用户信息"},"lpq":{"n":"lpq","p":"/lpq","d":"显示打印队列中的打印任务的状态信息"},"lpc":{"n":"lpc","p":"/lpc","d":"命令行方式打印机控制程序"},"yes":{"n":"yes","p":"/yes","d":"重复打印指定字符串"},"yum":{"n":"yum","p":"/yum","d":"基于RPM的软件包管理器"},"fmt":{"n":"fmt","p":"/fmt","d":"读取文件后优化处理并输出"},"ftp":{"n":"ftp","p":"/ftp","d":"用来设置文件系统相关功能"},"lha":{"n":"lha","p":"/lha","d":"压缩或解压缩lzh格式文件"},"let":{"n":"let","p":"/let","d":"简单的计算器"},"gcc":{"n":"gcc","p":"/gcc","d":"基于C/C++的编译器"},"gdb":{"n":"gdb","p":"/gdb","d":"功能强大的程序调试器"},"ldd":{"n":"ldd","p":"/ldd","d":"打印程序或者库文件所依赖的共享库列表"},"apk":{"n":"apk","p":"/apk","d":"Alpine Linux 下的包管理工具"},"git":{"n":"git","p":"/git","d":"是目前世界上最先进的分布式版本控制系统"},"gpm":{"n":"gpm","p":"/gpm","d":"提供文字模式下的滑鼠事件处理"},"joe":{"n":"joe","p":"/joe","d":"强大的纯文本编辑器"},"jed":{"n":"jed","p":"/jed","d":"主要用于编辑代码的编辑器"},"zip":{"n":"zip","p":"/zip","d":"可以用来解压缩文件"},"tty":{"n":"tty","p":"/tty","d":"显示连接到当前标准输入的终端设备文件名。"},"pvck":{"n":"pvck","p":"/pvck","d":"检测物理卷的LVM元数据的一致性"},"chfn":{"n":"chfn","p":"/chfn","d":"用来改变finger命令显示的信息"},"arch":{"n":"arch","p":"/arch","d":"显示当前主机的硬件架构类型"},"pssh":{"n":"pssh","p":"/pssh","d":"批量管理执行"},"dirs":{"n":"dirs","p":"/dirs","d":"显示目录记录"},"sudo":{"n":"sudo","p":"/sudo","d":"以其他身份来执行命令"},"bind":{"n":"bind","p":"/bind","d":"显示或设置键盘按键与其相关的功能"},"stty":{"n":"stty","p":"/stty","d":"修改终端命令行的相关设置"},"popd":{"n":"popd","p":"/popd","d":"用于删除目录栈中的记录"},"pmap":{"n":"pmap","p":"/pmap","d":"报告进程的内存映射关系"},"ping":{"n":"ping","p":"/ping","d":"测试主机之间网络的连通性"},"pico":{"n":"pico","p":"/pico","d":"功能强大全屏幕的文本编辑器"},"stat":{"n":"stat","p":"/stat","d":"用于显示文件的状态信息"},"perl":{"n":"perl","p":"/perl","d":"perl语言解释器"},"sshd":{"n":"sshd","p":"/sshd","d":"openssh软件套件中的服务器守护进程"},"nmap":{"n":"nmap","p":"/nmap","d":"网络探测和安全审核"},"chsh":{"n":"chsh","p":"/chsh","d":"用来更换登录系统时使用的shell"},"uniq":{"n":"uniq","p":"/uniq","d":"报告或忽略文件中的重复行"},"nice":{"n":"nice","p":"/nice","d":"改变程序执行的优先权等级"},"dpkg":{"n":"dpkg","p":"/dpkg","d":"Debian Linux系统上安装、创建和管理软件包"},"dris":{"n":"dris","p":"/dris","d":"显示和清空目录堆栈中的内容"},"type":{"n":"type","p":"/type","d":"显示指定命令的类型"},"sort":{"n":"sort","p":"/sort","d":"将文件进行排序并输出"},"dump":{"n":"dump","p":"/dump","d":"用于备份ext2或者ext3文件系统"},"nano":{"n":"nano","p":"/nano","d":"字符终端文本编辑器"},"xset":{"n":"xset","p":"/xset","d":"设置X-Window系统中的用户爱好的实用工具"},"echo":{"n":"echo","p":"/echo","d":"输出指定的字符串或者变量"},"tree":{"n":"tree","p":"/tree","d":"树状图列出目录的内容"},"more":{"n":"more","p":"/more","d":"显示文件内容,每次显示一屏"},"mkfs":{"n":"mkfs","p":"/mkfs","d":"用于在设备上创建Linux文件系统"},"mesg":{"n":"mesg","p":"/mesg","d":"设置当前终端的写权限"},"trap":{"n":"trap","p":"/trap","d":"指定在接收到信号后将要采取的动作"},"sftp":{"n":"sftp","p":"/sftp","d":"交互式的文件传输程序"},"make":{"n":"make","p":"/make","d":"GNU的工程化编译工具"},"mail":{"n":"mail","p":"/mail","d":"命令行下发送和接收电子邮件"},"comm":{"n":"comm","p":"/comm","d":"两个文件之间的比较"},"lynx":{"n":"lynx","p":"/lynx","d":"纯文本模式的网页浏览器"},"atop":{"n":"atop","p":"/atop","d":"监控Linux系统资源与进程的工具"},"exec":{"n":"exec","p":"/exec","d":"调用并执行指定的命令"},"exit":{"n":"exit","p":"/exit","d":"退出当前的shell"},"lsof":{"n":"lsof","p":"/lsof","d":"显示Linux系统当前已打开的所有文件列表 `lsof -p pid`"},"znew":{"n":"znew","p":"/znew","d":"将.Z压缩包重新转化为gzip命令压缩的.gz压缩包"},"lprm":{"n":"lprm","p":"/lprm","d":"删除打印队列中的打印任务"},"expr":{"n":"expr","p":"/expr","d":"一款表达式计算工具"},"tput":{"n":"tput","p":"/tput","d":"通过terminfo数据库对终端会话进行初始化和操作"},"atrm":{"n":"atrm","p":"/atrm","d":"删除待执行任务队列中的指定任务"},"tmux":{"n":"tmux","p":"/tmux","d":"Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权。"},"cpio":{"n":"cpio","p":"/cpio","d":"用来建立、还原备份档的工具程序"},"file":{"n":"file","p":"/file","d":"用来探测给定文件的类型。"},"find":{"n":"find","p":"/find","d":"在指定目录下查找文件"},"time":{"n":"time","p":"/time","d":"统计给定命令所花费的总时间"},"tftp":{"n":"tftp","p":"/tftp","d":"在本机和tftp服务器之间使用TFTP协议传输文件"},"look":{"n":"look","p":"/look","d":"显示文件中以指定字符串开头的任意行"},"test":{"n":"test","p":"/test","d":"shell环境中测试条件表达式工具"},"arpd":{"n":"arpd","p":"/arpd","d":"收集免费ARP信息"},"fold":{"n":"fold","p":"/fold","d":"控制文件内容输出时所占用的屏幕宽度"},"free":{"n":"free","p":"/free","d":"显示内存的使用情况"},"fsck":{"n":"fsck","p":"/fsck","d":"检查并且试图修复文件系统中的错误"},"axel":{"n":"axel","p":"/axel","d":"多线程下载工具"},"lilo":{"n":"lilo","p":"/lilo","d":"安装核心载入开机管理程序"},"curl":{"n":"curl","p":"/curl","d":"利用URL规则在命令行下工作的文件传输工具"},"lftp":{"n":"lftp","p":"/lftp","d":"优秀的文件客户端程序"},"wait":{"n":"wait","p":"/wait","d":"等待进程执行完后返回"},"less":{"n":"less","p":"/less","d":"分屏上下翻页浏览文件内容"},"date":{"n":"date","p":"/date","d":"显示或设置系统时间与日期"},"gcov":{"n":"gcov","p":"/gcov","d":"测试程序的代码覆盖率的工具"},"wget":{"n":"wget","p":"/wget","d":"Linux系统下载文件工具"},"zcat":{"n":"zcat","p":"/zcat","d":"显示压缩包中文件的内容"},"read":{"n":"read","p":"/read","d":"从键盘读取变量值"},"last":{"n":"last","p":"/last","d":"列出目前与过去登入系统的用户相关信息"},"talk":{"n":"talk","p":"/talk","d":"让用户和其他用户聊天"},"kill":{"n":"kill","p":"/kill","d":"删除执行中的程序或工作"},"tail":{"n":"tail","p":"/tail","d":"在屏幕上显示指定文件的末尾若干行"},"grep":{"n":"grep","p":"/grep","d":"强大的文本搜索工具"},"join":{"n":"join","p":"/join","d":"两个文件中指定栏位内容相同的行连接起来"},"wall":{"n":"wall","p":"/wall","d":"向系统当前所有打开的终端上输出信息"},"jobs":{"n":"jobs","p":"/jobs","d":"显示Linux中的任务列表及任务状态"},"pwck":{"n":"pwck","p":"/pwck","d":"用来验证系统认证文件内容和格式的完整性"},"ipcs":{"n":"ipcs","p":"/ipcs","d":"分析消息队列共享内存和信号量 "},"diff":{"n":"diff","p":"/diff","d":"比较给定的两个文件的不同"},"init":{"n":"init","p":"/init","d":"init进程是所有Linux进程的父进程"},"grub":{"n":"grub","p":"/grub","d":"多重引导程序grub的命令行shell工具"},"info":{"n":"info","p":"/info","d":"Linux下info格式的帮助指令"},"ifup":{"n":"ifup","p":"/ifup","d":"激活指定的网络接口"},"gzip":{"n":"gzip","p":"/gzip","d":"用来压缩文件"},"halt":{"n":"halt","p":"/halt","d":"关闭正在运行的Linux操作系统"},"sync":{"n":"sync","p":"/sync","d":"用于强制被改变的内容立刻写入磁盘"},"head":{"n":"head","p":"/head","d":"在屏幕上显示指定文件的开头若干行"},"help":{"n":"help","p":"/help","d":"显示帮助信息"},"htop":{"n":"htop","p":"/htop","d":"[非内部命令]一个互动的进程查看器,可以动态观察系统进程状况。"},"host":{"n":"host","p":"/host","d":"常用的分析域名查询工具"},"chown":{"n":"chown","p":"/chown","d":"用来变更文件或目录的拥有者或所属群组"},"touch":{"n":"touch","p":"/touch","d":"创建新的空文件"},"ifcfg":{"n":"ifcfg","p":"/ifcfg","d":"置Linux中的网络接口参数"},"iftop":{"n":"iftop","p":"/iftop","d":"一款实时流量监控工具"},"gzexe":{"n":"gzexe","p":"/gzexe","d":"用来压缩可执行文件"},"tload":{"n":"tload","p":"/tload","d":"显示系统负载状况"},"bzip2":{"n":"bzip2","p":"/bzip2","d":"将文件压缩成bz2格式"},"iotop":{"n":"iotop","p":"/iotop","d":"用来监视磁盘I/O使用状况的工具"},"bzcmp":{"n":"bzcmp","p":"/bzcmp","d":"比较两个压缩包中的文件"},"alias":{"n":"alias","p":"/alias","d":"用来设置指令的别名"},"zfore":{"n":"zfore","p":"/zfore","d":"强制为gzip格式的压缩文件添加.gz后缀"},"ipcrm":{"n":"ipcrm","p":"/ipcrm","d":"删除消息队列、信号集、或者共享内存标识"},"grpck":{"n":"grpck","p":"/grpck","d":"用于验证组文件的完整性"},"iperf":{"n":"iperf","p":"/iperf","d":"网络性能测试工具"},"kexec":{"n":"kexec","p":"/kexec","d":"从当前正在运行的内核引导到一个新内核"},"bzcat":{"n":"bzcat","p":"/bzcat","d":"解压缩指定的.bz2文件"},"lastb":{"n":"lastb","p":"/lastb","d":"列出登入系统失败的用户相关信息"},"xinit":{"n":"xinit","p":"/xinit","d":"是Linux下X-Window系统的初始化程序"},"xhost":{"n":"xhost","p":"/xhost","d":"制哪些X客户端能够在X服务器上显示"},"fuser":{"n":"fuser","p":"/fuser","d":"使用文件或文件结构识别进程"},"tailf":{"n":"tailf","p":"/tailf","d":"在屏幕上显示指定文件的末尾若干行内容,通常用于日志文件的跟踪输出。"},"chage":{"n":"chage","p":"/chage","d":"修改帐号和密码的有效期限"},"xclip":{"n":"xclip","p":"/xclip","d":"管理 X 粘贴板"},"login":{"n":"login","p":"/login","d":"登录系统或切换用户身份"},"xauth":{"n":"xauth","p":"/xauth","d":"显示和编辑被用于连接X服务器的认证信息"},"xargs":{"n":"xargs","p":"/xargs","d":"给其他命令传递参数的一个过滤器"},"chcon":{"n":"chcon","p":"/chcon","d":"修改对象(文件)的安全上下文"},"fgrep":{"n":"fgrep","p":"/fgrep","d":"为文件搜索文字字符串"},"fdisk":{"n":"fdisk","p":"/fdisk","d":"查看磁盘使用情况和磁盘分区"},"write":{"n":"write","p":"/write","d":"向指定登录用户终端上发送信息"},"lsblk":{"n":"lsblk","p":"/lsblk","d":"列出块设备信息"},"lscpu":{"n":"lscpu","p":"/lscpu","d":"显示有关CPU架构的信息"},"lsmod":{"n":"lsmod","p":"/lsmod","d":"显示已载入系统的模块"},"lspci":{"n":"lspci","p":"/lspci","d":"显示当前主机的所有PCI总线信息"},"lsusb":{"n":"lsusb","p":"/lsusb","d":"显示本机的USB设备列表信息"},"mailq":{"n":"mailq","p":"/mailq","d":"显示待发送的邮件队列"},"emacs":{"n":"emacs","p":"/emacs","d":"功能强大的全屏文本编辑器"},"eject":{"n":"eject","p":"/eject","d":"用来退出抽取式设备"},"mkdir":{"n":"mkdir","p":"/mkdir","d":"用来创建目录"},"egrep":{"n":"egrep","p":"/egrep","d":"在文件内查找指定的字符串"},"chgrp":{"n":"chgrp","p":"/chgrp","d":"用来变更文件或目录的所属群组"},"mknod":{"n":"mknod","p":"/mknod","d":"创建字符设备文件和块设备文件"},"chmod":{"n":"chmod","p":"/chmod","d":"用来变更文件或目录的权限"},"mount":{"n":"mount","p":"/mount","d":"用于挂载Linux系统外的文件。"},"iconv":{"n":"iconv","p":"/iconv","d":"转换文件的编码方式"},"mysql":{"n":"mysql","p":"/mysql","d":"MySQL服务器客户端工具"},"which":{"n":"which","p":"/which","d":"查找并显示给定命令的绝对路径"},"watch":{"n":"watch","p":"/watch","d":"可以将命令的输出结果输出到标准输出设备,多用于周期性执行命令/定时执行命令"},"dstat":{"n":"dstat","p":"/dstat","d":"通用的系统资源统计工具"},"ncftp":{"n":"ncftp","p":"/ncftp","d":"是增强的的FTP工具"},"cksum":{"n":"cksum","p":"/cksum","d":"检查文件的CRC是否正确"},"ngrep":{"n":"ngrep","p":"/ngrep","d":"方便的数据包匹配和显示工具"},"batch":{"n":"batch","p":"/batch","d":"在系统不繁忙的时候执行定时任务"},"nmcli":{"n":"nmcli","p":"/nmcli","d":"地址配置工具"},"nohup":{"n":"nohup","p":"/nohup","d":"将程序以忽略挂起信号的方式运行起来"},"umask":{"n":"umask","p":"/umask","d":"用来设置限制新建文件权限的掩码"},"clear":{"n":"clear","p":"/clear","d":"清除当前屏幕终端上的任何信息"},"squid":{"n":"squid","p":"/squid","d":"squid服务器守护进程"},"paste":{"n":"paste","p":"/paste","d":"将多个文件按列队列合并"},"patch":{"n":"patch","p":"/patch","d":"为开放源代码软件安装补丁程序"},"split":{"n":"split","p":"/split","d":"分割任意大小的文件"},"pfctl":{"n":"pfctl","p":"/pfctl","d":"PF防火墙的配置命令"},"pgrep":{"n":"pgrep","p":"/pgrep","d":"设置用户的认证信息,包括用户密码、密码过期时间等"},"pidof":{"n":"pidof","p":"/pidof","d":"查找指定名称的进程的进程号ID号"},"pkill":{"n":"pkill","p":"/pkill","d":"可以按照进程名杀死进程"},"spell":{"n":"spell","p":"/spell","d":"对文件进行拼写检查"},"dmesg":{"n":"dmesg","p":"/dmesg","d":"显示Linux系统启动信息"},"uname":{"n":"uname","p":"/uname","d":"显示Linux系统信息"},"pushd":{"n":"pushd","p":"/pushd","d":"将目录加入命令堆叠中"},"diff3":{"n":"diff3","p":"/diff3","d":"比较3个文件不同的地方"},"dhcpd":{"n":"dhcpd","p":"/dhcpd","d":"运行DHCP服务器。"},"quota":{"n":"quota","p":"/quota","d":"显示磁盘已使用的空间与限制"},"clock":{"n":"clock","p":"/clock","d":"用于调整 RTC 时间。"},"unarj":{"n":"unarj","p":"/unarj","d":"解压缩由arj命令创建的压缩包"},"users":{"n":"users","p":"/users","d":"显示当前登录系统的所有用户"},"sleep":{"n":"sleep","p":"/sleep","d":"将目前动作延迟一段时间"},"rexec":{"n":"rexec","p":"/rexec","d":"运程执行Linux系统下命令 "},"skill":{"n":"skill","p":"/skill","d":"向选定的进程发送信号冻结进程"},"rmdir":{"n":"rmdir","p":"/rmdir","d":"用来删除空目录"},"rmmod":{"n":"rmmod","p":"/rmmod","d":"从运行的内核中移除指定的内核模块"},"route":{"n":"route","p":"/route","d":"显示并设置Linux中静态路由表"},"blkid":{"n":"blkid","p":"/blkid","d":"查看块设备的文件系统类型、LABEL、UUID等信息"},"rpmdb":{"n":"rpmdb","p":"/rpmdb","d":"初始化和重建RPM数据库"},"shopt":{"n":"shopt","p":"/shopt","d":"显示和设置shell操作选项"},"rsync":{"n":"rsync","p":"/rsync","d":"远程数据同步工具"},"colrm":{"n":"colrm","p":"/colrm","d":"删除文件中的指定列"},"unset":{"n":"unset","p":"/unset","d":"删除指定的shell变量或函数"},"unzip":{"n":"unzip","p":"/unzip","d":"用于解压缩由zip命令压缩的压缩包"},"vgscan":{"n":"vgscan","p":"/vgscan","d":"扫描并显示系统中的卷组"},"bzless":{"n":"bzless","p":"/bzless","d":"增强.bz2压缩包查看器"},"mpstat":{"n":"mpstat","p":"/mpstat","d":"显示各个可用CPU的状态"},"mtools":{"n":"mtools","p":"/mtools","d":"显示mtools支持的指令"},"ipcalc":{"n":"ipcalc","p":"/ipcalc","d":"简单的IP地址计算器"},"lnstat":{"n":"lnstat","p":"/lnstat","d":"显示Linux系统的网路状态"},"locate":{"n":"locate","p":"/locate","d":"比 find 好用的文件查找工具"},"strace":{"n":"strace","p":"/strace","d":"跟踪系统调用和信号"},"whatis":{"n":"whatis","p":"/whatis","d":"查询一个命令执行什么功能"},"arping":{"n":"arping","p":"/arping","d":"通过发送ARP协议报文测试网络"},"logger":{"n":"logger","p":"/logger","d":"在系统日志中记录相应条目"},"e2fsck":{"n":"e2fsck","p":"/e2fsck","d":"用于检查第二扩展文件系统的完整性"},"indent":{"n":"indent","p":"/indent","d":"格式化C语言的源文件"},"chattr":{"n":"chattr","p":"/chattr","d":"用来改变文件属性"},"startx":{"n":"startx","p":"/startx","d":"用来启动X Window"},"chroot":{"n":"chroot","p":"/chroot","d":"把根目录换成指定的目的目录"},"logout":{"n":"logout","p":"/logout","d":"退出当前登录的Shell"},"gunzip":{"n":"gunzip","p":"/gunzip","d":"用来解压缩文件"},"ulimit":{"n":"ulimit","p":"/ulimit","d":"控制shell程序的资源"},"vmstat":{"n":"vmstat","p":"/vmstat","d":"显示虚拟内存状态"},"syslog":{"n":"syslog","p":"/syslog","d":"系统默认的日志守护进程"},"hdparm":{"n":"hdparm","p":"/hdparm","d":"显示与设定硬盘的参数"},"sysctl":{"n":"sysctl","p":"/sysctl","d":"时动态地修改内核的运行参数"},"finger":{"n":"finger","p":"/finger","d":"用于查找并显示用户信息"},"umount":{"n":"umount","p":"/umount","d":"用于卸载已经加载的文件系统"},"ntsysv":{"n":"ntsysv","p":"/ntsysv","d":"集中管理系统的各种服务"},"telnet":{"n":"telnet","p":"/telnet","d":"登录远程主机和管理(测试ip端口是否连通)"},"hping3":{"n":"hping3","p":"/hping3","d":"测试网络及主机的安全"},"findfs":{"n":"findfs","p":"/findfs","d":"标签或UUID查找文件系统"},"parted":{"n":"parted","p":"/parted","d":"磁盘分区和分区大小调整工具"},"passwd":{"n":"passwd","p":"/passwd","d":"用于让用户可以更改自己的密码"},"telint":{"n":"telint","p":"/telint","d":"切换当前正在运行系统的运行等级"},"iptraf":{"n":"iptraf","p":"/iptraf","d":"实时地监视网卡流量"},"lpstat":{"n":"lpstat","p":"/lpstat","d":"显示CUPS中打印机的状态信息"},"export":{"n":"export","p":"/export","d":"设置或显示系统环境变量"},"lsattr":{"n":"lsattr","p":"/lsattr","d":"查看文件的第二扩展文件系统属性"},"ispell":{"n":"ispell","p":"/ispell","d":"检查文件中出现的拼写错误"},"groups":{"n":"groups","p":"/groups","d":"用来打印指定用户所属的工作组"},"jwhois":{"n":"jwhois","p":"/jwhois","d":"whois 客户端服务"},"printf":{"n":"printf","p":"/printf","d":"格式化并输出结果"},"insmod":{"n":"insmod","p":"/insmod","d":"将给定的模块加载到内核中"},"expand":{"n":"expand","p":"/expand","d":"将文件的制表符转换为空白字符"},"pstack":{"n":"pstack","p":"/pstack","d":"显示每个进程的栈跟踪"},"pstree":{"n":"pstree","p":"/pstree","d":"以树状图的方式展现进程之间的派生关系"},"bzmore":{"n":"bzmore","p":"/bzmore","d":"查看bzip2压缩过的文本文件的内容"},"vdfuse":{"n":"vdfuse","p":"/vdfuse","d":"VirtualBox软件挂载VDI分区文件工具"},"uupick":{"n":"uupick","p":"/uupick","d":"命令处理传送进来的文件。"},"bzdiff":{"n":"bzdiff","p":"/bzdiff","d":"直接比较两个.bz2压缩包中文件的不同"},"pvscan":{"n":"pvscan","p":"/pvscan","d":"扫描系统中所有硬盘的物理卷列表"},"pwconv":{"n":"pwconv","p":"/pwconv","d":"用来开启用户的投影密码"},"ltrace":{"n":"ltrace","p":"/ltrace","d":"用来跟踪进程调用库函数的情况"},"hostid":{"n":"hostid","p":"/hostid","d":"用来打印当前主机的数字化标识"},"whoami":{"n":"whoami","p":"/whoami","d":"打印当前有效的用户名称"},"uucico":{"n":"uucico","p":"/uucico","d":"UUCP文件传输服务程序。"},"source":{"n":"source","p":"/source","d":"在当前Shell环境中从指定文件读取和执行命令,命令返回退出状态。"},"rcconf":{"n":"rcconf","p":"/rcconf","d":"Debian Linux下的运行等级服务配置工具"},"depmod":{"n":"depmod","p":"/depmod","d":"分析可载入模块的相依性"},"accept":{"n":"accept","p":"/accept","d":"指示打印系统接受发往指定目标打印机的打印任务"},"reboot":{"n":"reboot","p":"/reboot","d":"重新启动正在运行的Linux操作系统"},"reject":{"n":"reject","p":"/reject","d":"指示打印系统拒绝发往指定目标打印机的打印任务"},"rename":{"n":"rename","p":"/rename","d":"用字符串替换的方式批量改变文件名"},"renice":{"n":"renice","p":"/renice","d":"修改正在运行的进程的调度优先级"},"resize":{"n":"resize","p":"/resize","d":"命令设置终端机视窗的大小。"},"lvscan":{"n":"lvscan","p":"/lvscan","d":"扫描逻辑卷"},"swapon":{"n":"swapon","p":"/swapon","d":"激活Linux系统中交换空间"},"enable":{"n":"enable","p":"/enable","d":"启动或关闭shell内建命令"},"iostat":{"n":"iostat","p":"/iostat","d":"监视系统输入输出设备和CPU的使用情况"},"rlogin":{"n":"rlogin","p":"/rlogin","d":"从当前终端登录到远程Linux主机"},"cancel":{"n":"cancel","p":"/cancel","d":"取消已存在的打印任务"},"elinks":{"n":"elinks","p":"/elinks","d":"纯文本界面的WWW浏览器"},"md5sum":{"n":"md5sum","p":"/md5sum","d":"计算和校验文件报文摘要的工具程序"},"ifdown":{"n":"ifdown","p":"/ifdown","d":"禁用指定的网络接口"},"ifstat":{"n":"ifstat","p":"/ifstat","d":"统计网络接口流量状态"},"mke2fs":{"n":"mke2fs","p":"/mke2fs","d":"创建磁盘分区上的“etc2/etc3”文件系统"},"bzgrep":{"n":"bzgrep","p":"/bzgrep","d":"使用正则表达式搜索.bz2压缩包中文件"},"unlink":{"n":"unlink","p":"/unlink","d":"系统调用函数unlink去删除指定的文件"},"csplit":{"n":"csplit","p":"/csplit","d":"将一个大文件分割成小的碎片文件"},"ftpwho":{"n":"ftpwho","p":"/ftpwho","d":"显示当前每个ftp会话信息"},"ftptop":{"n":"ftptop","p":"/ftptop","d":"proftpd服务器的连接状态"},"uptime":{"n":"uptime","p":"/uptime","d":"查看Linux系统负载信息"},"screen":{"n":"screen","p":"/screen","d":"用于命令行终端切换"},"seinfo":{"n":"seinfo","p":"/seinfo","d":"查询SELinux的策略提供多少相关规则"},"mkswap":{"n":"mkswap","p":"/mkswap","d":"建立和设置SWAP交换分区"},"setsid":{"n":"setsid","p":"/setsid","d":"在新的会话中运行程序。"},"mktemp":{"n":"mktemp","p":"/mktemp","d":"创建临时文件供shell脚本使用"},"setpci":{"n":"setpci","p":"/setpci","d":"查询和配置PCI设备的使用工具"},"strings":{"n":"strings","p":"/strings","d":"在对象文件或二进制文件中查找可打印的字符串"},"setfacl":{"n":"setfacl","p":"/setfacl","d":"设置文件访问控制列表"},"service":{"n":"service","p":"/service","d":"控制系统服务的实用工具"},"crontab":{"n":"crontab","p":"/crontab","d":"提交和管理用户的需要周期性执行的任务"},"useradd":{"n":"useradd","p":"/useradd","d":"创建的新的系统用户"},"rpmsign":{"n":"rpmsign","p":"/rpmsign","d":"使用RPM软件包的签名管理工具"},"userdel":{"n":"userdel","p":"/userdel","d":"用于删除给定的用户以及与用户相关的文件"},"usermod":{"n":"usermod","p":"/usermod","d":"用于修改用户的基本信息"},"slabtop":{"n":"slabtop","p":"/slabtop","d":"实时显示内核slab内存缓存信息"},"declare":{"n":"declare","p":"/declare","d":"声明或显示shell变量"},"slocate":{"n":"slocate","p":"/slocate","d":"命令查找文件或目录"},"restore":{"n":"restore","p":"/restore","d":"所进行的操作和dump指令相反"},"readelf":{"n":"readelf","p":"/readelf","d":"用于显示elf格式文件的信息"},"quotaon":{"n":"quotaon","p":"/quotaon","d":"激活Linux内核中指定文件系统的磁盘配额功能"},"dirname":{"n":"dirname","p":"/dirname","d":"去除文件名中的非目录部分"},"ppp-off":{"n":"ppp-off","p":"/ppp-off","d":"关闭ppp连线"},"pathchk":{"n":"pathchk","p":"/pathchk","d":"检查文件中不可移植的部分"},"openssl":{"n":"openssl","p":"/openssl","d":"强大的安全套接字层密码库"},"unalias":{"n":"unalias","p":"/unalias","d":"删除由alias设置的别名"},"objdump":{"n":"objdump","p":"/objdump","d":"显示二进制文件信息"},"ssh-add":{"n":"ssh-add","p":"/ssh-add","d":"把专用密钥添加到ssh-agent的高速缓存中"},"ntpdate":{"n":"ntpdate","p":"/ntpdate","d":"使用网络计时协议(NTP)设置日期和时间"},"nologin":{"n":"nologin","p":"/nologin","d":"拒绝用户登录系统"},"volname":{"n":"volname","p":"/volname","d":"显示指定的ISO-9660格式的设备的卷名称"},"nfsstat":{"n":"nfsstat","p":"/nfsstat","d":"列出NFS客户端和服务器的工作状态"},"netstat":{"n":"netstat","p":"/netstat","d":"查看Linux中网络系统状态信息"},"nethogs":{"n":"nethogs","p":"/nethogs","d":"终端下的网络流量监控工具"},"whereis":{"n":"whereis","p":"/whereis","d":"查找二进制程序、代码等相关文件路径"},"command":{"n":"command","p":"/command","d":"调用并执行指定的命令"},"e2label":{"n":"e2label","p":"/e2label","d":"设置第二扩展文件系统的卷标"},"edquota":{"n":"edquota","p":"/edquota","d":"用于编辑指定用户或工作组磁盘配额"},"mkisofs":{"n":"mkisofs","p":"/mkisofs","d":"建立ISO 9660映像文件"},"builtin":{"n":"builtin","p":"/builtin","d":"执行shell内部命令"},"swapoff":{"n":"swapoff","p":"/swapoff","d":"关闭指定的交换空间"},"ethtool":{"n":"ethtool","p":"/ethtool","d":"显示或修改以太网卡的配置信息"},"lpadmin":{"n":"lpadmin","p":"/lpadmin","d":"配置CUPS套件中的打印机和类"},"losetup":{"n":"losetup","p":"/losetup","d":"设定与控制循环(loop)设备"},"logsave":{"n":"logsave","p":"/logsave","d":"将命令的输出信息保存到指定的日志文件"},"bunzip2":{"n":"bunzip2","p":"/bunzip2","d":"创一个bz2文件压缩包"},"systool":{"n":"systool","p":"/systool","d":"显示基于总线、类和拓扑显示系统中设备的信息"},"logname":{"n":"logname","p":"/logname","d":"用来显示用户名称"},"ftpshut":{"n":"ftpshut","p":"/ftpshut","d":"在指定的时间关闭FTP服务器"},"lftpget":{"n":"lftpget","p":"/lftpget","d":"调用lftp指令下载指定的文件"},"lastlog":{"n":"lastlog","p":"/lastlog","d":"显示系统中所有用户最近一次登录信息"},"tcpdump":{"n":"tcpdump","p":"/tcpdump","d":"一款sniffer工具,是Linux上的抓包工具,嗅探器。"},"killall":{"n":"killall","p":"/killall","d":"使用进程的名称来杀死一组进程"},"gpasswd":{"n":"gpasswd","p":"/gpasswd","d":"Linux下工作组文件的管理工具"},"apt-key":{"n":"apt-key","p":"/apt-key","d":"管理Debian Linux系统中的软件包密钥"},"apt-get":{"n":"apt-get","p":"/apt-get","d":"Debian Linux发行版中的APT软件包管理工具"},"apropos":{"n":"apropos","p":"/apropos","d":"在 whatis 数据库中查找字符串"},"grpconv":{"n":"grpconv","p":"/grpconv","d":"用来开启群组的投影密码"},"install":{"n":"install","p":"/install","d":"安装或升级软件或备份数据"},"zipinfo":{"n":"zipinfo","p":"/zipinfo","d":"用来列出压缩文件信息"},"hwclock":{"n":"hwclock","p":"/hwclock","d":"显示与设定硬件时钟"},"hexdump":{"n":"hexdump","p":"/hexdump","d":"显示文件十六进制格式"},"history":{"n":"history","p":"/history","d":"用于显示历史命令"},"iptstate":{"n":"iptstate","p":"/iptstate","d":"显示iptables的工作状态"},"arpwatch":{"n":"arpwatch","p":"/arpwatch","d":"监听网络上ARP的记录"},"pvchange":{"n":"pvchange","p":"/pvchange","d":"修改物理卷属性"},"diffstat":{"n":"diffstat","p":"/diffstat","d":"显示diff命令输出信息的柱状图"},"pvcreate":{"n":"pvcreate","p":"/pvcreate","d":"将物理硬盘分区初始化为物理卷"},"basename":{"n":"basename","p":"/basename","d":"打印目录或者文件的基本名称"},"pvremove":{"n":"pvremove","p":"/pvremove","d":"删除一个存在的物理卷"},"lvremove":{"n":"lvremove","p":"/lvremove","d":"删除指定LVM逻辑卷"},"ldconfig":{"n":"ldconfig","p":"/ldconfig","d":"动态链接库管理命令"},"shutdown":{"n":"shutdown","p":"/shutdown","d":"用来执行系统关机的命令"},"dhcrelay":{"n":"dhcrelay","p":"/dhcrelay","d":"使用dhcrelay命令可以提供中继DHCP和BOOTP请求"},"mkinitrd":{"n":"mkinitrd","p":"/mkinitrd","d":"建立要载入ramdisk的映像文件"},"zipsplit":{"n":"zipsplit","p":"/zipsplit","d":"将较大的zip压缩包分割成各个较小的压缩包"},"logwatch":{"n":"logwatch","p":"/logwatch","d":"可定制和可插入式的日志监视系统"},"unexpand":{"n":"unexpand","p":"/unexpand","d":"将文件的空白字符转换为制表符"},"groupmod":{"n":"groupmod","p":"/groupmod","d":"更改群组识别码或名称"},"nslookup":{"n":"nslookup","p":"/nslookup","d":"查询域名DNS信息的工具"},"quotaoff":{"n":"quotaoff","p":"/quotaoff","d":"关闭Linux内核中指定文件系统的磁盘配额功能"},"groupdel":{"n":"groupdel","p":"/groupdel","d":"用于删除指定的工作组"},"modprobe":{"n":"modprobe","p":"/modprobe","d":"自动处理可载入模块"},"dhclient":{"n":"dhclient","p":"/dhclient","d":"动态获取或释放IP地址"},"lvcreate":{"n":"lvcreate","p":"/lvcreate","d":"用于创建LVM的逻辑卷"},"groupadd":{"n":"groupadd","p":"/groupadd","d":"用于创建一个新的工作组"},"readonly":{"n":"readonly","p":"/readonly","d":"定义只读shell变量或函数"},"lvextend":{"n":"lvextend","p":"/lvextend","d":"扩展逻辑卷空间"},"lvreduce":{"n":"lvreduce","p":"/lvreduce","d":"收缩逻辑卷空间"},"vgrename":{"n":"vgrename","p":"/vgrename","d":"使用vgrename命令可以重命名卷组的名称。"},"htdigest":{"n":"htdigest","p":"/htdigest","d":"Apache服务器内置工具"},"blockdev":{"n":"blockdev","p":"/blockdev","d":"从命令行调用区块设备控制程序"},"repquota":{"n":"repquota","p":"/repquota","d":"报表的格式输出磁盘空间限制的状态"},"lvresize":{"n":"lvresize","p":"/lvresize","d":"调整逻辑卷空间大小"},"xlsfonts":{"n":"xlsfonts","p":"/xlsfonts","d":"列出X Server使用的字体"},"chpasswd":{"n":"chpasswd","p":"/chpasswd","d":"批量更新用户口令的工具"},"ftpcount":{"n":"ftpcount","p":"/ftpcount","d":"显示目前已FTP登入的用户人数"},"vgremove":{"n":"vgremove","p":"/vgremove","d":"用于用户删除LVM卷组"},"hostname":{"n":"hostname","p":"/hostname","d":"显示和设置系统的主机名"},"exportfs":{"n":"exportfs","p":"/exportfs","d":"管理NFS共享文件系统列表"},"bmodinfo":{"n":"bmodinfo","p":"/bmodinfo","d":"显示给定模块的详细信息"},"vgreduce":{"n":"vgreduce","p":"/vgreduce","d":"从卷组中删除物理卷"},"dpkg-deb":{"n":"dpkg-deb","p":"/dpkg-deb","d":"Debian Linux下的软件包管理工具"},"mailstat":{"n":"mailstat","p":"/mailstat","d":"显示到达的邮件状态"},"dos2unix":{"n":"dos2unix","p":"/dos2unix","d":"将DOS格式文本文件转换成Unix格式"},"htpasswd":{"n":"htpasswd","p":"/htpasswd","d":"apache服务器创建密码认证文件"},"rpm2cpio":{"n":"rpm2cpio","p":"/rpm2cpio","d":"将RPM软件包转换为cpio格式的文件"},"rpmbuild":{"n":"rpmbuild","p":"/rpmbuild","d":"创建RPM的二进制软件包和源码软件包"},"vgextend":{"n":"vgextend","p":"/vgextend","d":"向卷组中添加物理卷"},"rpmquery":{"n":"rpmquery","p":"/rpmquery","d":"从RPM数据库中查询软件包信息"},"vgcreate":{"n":"vgcreate","p":"/vgcreate","d":"用于创建LVM卷组"},"poweroff":{"n":"poweroff","p":"/poweroff","d":"关闭Linux系统,关闭记录会被写入到/var/log/wtmp日志文件中。"},"iptables":{"n":"iptables","p":"/iptables","d":"Linux上常用的防火墙软件"},"cdrecord":{"n":"cdrecord","p":"/cdrecord","d":"Linux系统下光盘刻录功能命令"},"vgchange":{"n":"vgchange","p":"/vgchange","d":"修改卷组属性"},"runlevel":{"n":"runlevel","p":"/runlevel","d":"打印当前Linux系统的运行等级"},"xlsatoms":{"n":"xlsatoms","p":"/xlsatoms","d":"列出X服务器内部所有定义的原子成分"},"protoize":{"n":"protoize","p":"/protoize","d":"GNU-C代码转换为ANSI-C代码"},"ifconfig":{"n":"ifconfig","p":"/ifconfig","d":"配置和显示Linux系统网卡的网络参数"},"updatedb":{"n":"updatedb","p":"/updatedb","d":"创建或更新slocate命令所必需的数据库文件"},"tempfile":{"n":"tempfile","p":"/tempfile","d":"shell中给临时文件命名"},"mii-tool":{"n":"mii-tool","p":"/mii-tool","d":"配置网络设备协商方式的工具"},"semanage":{"n":"semanage","p":"/semanage","d":"默认目录的安全上下文查询与修改"},"sendmail":{"n":"sendmail","p":"/sendmail","d":"著名电子邮件服务器"},"compress":{"n":"compress","p":"/compress","d":"使用Lempress-Ziv编码压缩数据文件"},"newusers":{"n":"newusers","p":"/newusers","d":"用于批处理的方式一次创建多个命令"},"sesearch":{"n":"sesearch","p":"/sesearch","d":"查询SELinux策略的规则详情"},"aptitude":{"n":"aptitude","p":"/aptitude","d":"Debian Linux系统中软件包管理工具"},"pwunconv":{"n":"pwunconv","p":"/pwunconv","d":"用来关闭用户的投影密码"},"dircolors":{"n":"dircolors","p":"/dircolors","d":"置ls命令在显示目录或文件时所用的色彩"},"getsebool":{"n":"getsebool","p":"/getsebool","d":"查询SElinux策略内各项规则的布尔值"},"systemctl":{"n":"systemctl","p":"/systemctl","d":"系统服务管理器指令"},"fishshell":{"n":"fishshell","p":"/fishshell","d":"比 bash 更好用的 shell"},"chkconfig":{"n":"chkconfig","p":"/chkconfig","d":"检查或设置系统的各种服务"},"logrotate":{"n":"logrotate","p":"/logrotate","d":"统日志进行轮转、压缩和删除"},"lvdisplay":{"n":"lvdisplay","p":"/lvdisplay","d":"显示逻辑卷属性"},"mysqldump":{"n":"mysqldump","p":"/mysqldump","d":"MySQL数据库中备份工具"},"ssh-agent":{"n":"ssh-agent","p":"/ssh-agent","d":"ssh密钥管理器"},"mysqlshow":{"n":"mysqlshow","p":"/mysqlshow","d":"显示MySQL中数据库相关信息"},"grpunconv":{"n":"grpunconv","p":"/grpunconv","d":"用来关闭群组的投影密码"},"smbpasswd":{"n":"smbpasswd","p":"/smbpasswd","d":"samba用户和密码管理工具"},"arptables":{"n":"arptables","p":"/arptables","d":"管理ARP包过滤规则表"},"smbclient":{"n":"smbclient","p":"/smbclient","d":"交互方式访问samba服务器"},"showmount":{"n":"showmount","p":"/showmount","d":"显示NFS服务器加载的信息"},"clockdiff":{"n":"clockdiff","p":"/clockdiff","d":"检测两台linux主机的时间差"},"badblocks":{"n":"badblocks","p":"/badblocks","d":"查找磁盘中损坏的区块"},"ip6tables":{"n":"ip6tables","p":"/ip6tables","d":"linux中防火墙软件"},"setsebool":{"n":"setsebool","p":"/setsebool","d":"修改SElinux策略内各项规则的布尔值"},"apachectl":{"n":"apachectl","p":"/apachectl","d":"Apache服务器前端控制工具"},"rpmverify":{"n":"rpmverify","p":"/rpmverify","d":"验证已安装的RPM软件包的正确性"},"partprobe":{"n":"partprobe","p":"/partprobe","d":"不重启的情况下重读分区"},"tcpreplay":{"n":"tcpreplay","p":"/tcpreplay","d":"将PCAP包重新发送,用于性能或者功能测试"},"vgdisplay":{"n":"vgdisplay","p":"/vgdisplay","d":"显示LVM卷组的信息"},"vgconvert":{"n":"vgconvert","p":"/vgconvert","d":"转换卷组元数据格式"},"dmidecode":{"n":"dmidecode","p":"/dmidecode","d":"在Linux系统下获取有关硬件方面的信息"},"pvdisplay":{"n":"pvdisplay","p":"/pvdisplay","d":"显示物理卷的属性"},"tracepath":{"n":"tracepath","p":"/tracepath","d":"追踪目的主机经过的路由信息"},"uncompress":{"n":"uncompress","p":"/uncompress","d":"用来解压.Z文件"},"quotacheck":{"n":"quotacheck","p":"/quotacheck","d":"检查磁盘的使用空间与限制"},"traceroute":{"n":"traceroute","p":"/traceroute","d":"显示数据包到主机间的路径"},"usernetctl":{"n":"usernetctl","p":"/usernetctl","d":"被允许时操作指定的网络接口"},"domainname":{"n":"domainname","p":"/domainname","d":"显示和设置系统的NIS域名"},"getenforce":{"n":"getenforce","p":"/getenforce","d":"显示当前SELinux的应用模式,是强制、执行还是停用。"},"cupsenable":{"n":"cupsenable","p":"/cupsenable","d":"启动指定的打印机"},"get_module":{"n":"get_module","p":"/get_module","d":"获取Linux内核模块的详细信息"},"dpkg-query":{"n":"dpkg-query","p":"/dpkg-query","d":"Debian Linux中软件包的查询工具"},"ssh-keygen":{"n":"ssh-keygen","p":"/ssh-keygen","d":"为ssh生成、管理和转换认证密钥"},"dpkg-split":{"n":"dpkg-split","p":"/dpkg-split","d":"Debian Linux中将大软件包分割成小包"},"mkbootdisk":{"n":"mkbootdisk","p":"/mkbootdisk","d":"可建立目前系统的启动盘"},"unprotoize":{"n":"unprotoize","p":"/unprotoize","d":"删除C语言源代码文件中的函数原型"},"restorecon":{"n":"restorecon","p":"/restorecon","d":"恢复文件的安全上下文"},"mysqladmin":{"n":"mysqladmin","p":"/mysqladmin","d":"MySQL服务器管理客户端"},"xlsclients":{"n":"xlsclients","p":"/xlsclients","d":"列出显示器中的客户端应用程序"},"mysqlimport":{"n":"mysqlimport","p":"/mysqlimport","d":"为MySQL服务器用命令行方式导入数据"},"squidclient":{"n":"squidclient","p":"/squidclient","d":"squid服务器的客户端管理工具"},"sftp-server":{"n":"sftp-server","p":"/sftp-server","d":"sftp协议的服务器端程序"},"consoletype":{"n":"consoletype","p":"/consoletype","d":"输出已连接的终端类型"},"lsb_release":{"n":"lsb_release","p":"/lsb_release","d":"显示发行版本信息"},"ssh-copy-id":{"n":"ssh-copy-id","p":"/ssh-copy-id","d":"把本地的ssh公钥文件安装到远程主机对应的账户下"},"supervisord":{"n":"supervisord","p":"/supervisord","d":"配置后台服务/常驻进程的进程管家工具"},"cupsdisable":{"n":"cupsdisable","p":"/cupsdisable","d":"停止指定的打印机"},"dpkg-divert":{"n":"dpkg-divert","p":"/dpkg-divert","d":"Debian Linux中创建并管理一个转向列表"},"inotifywait":{"n":"inotifywait","p":"/inotifywait","d":"异步文件系统监控机制"},"ssh-keyscan":{"n":"ssh-keyscan","p":"/ssh-keyscan","d":"收集主机公钥的使用工具"},"dpkg-trigger":{"n":"dpkg-trigger","p":"/dpkg-trigger","d":"Debian Linux下的软件包触发器"},"apt-sortpkgs":{"n":"apt-sortpkgs","p":"/apt-sortpkgs","d":"Debian Linux下对软件包索引文件进行排序的工具"},"convertquota":{"n":"convertquota","p":"/convertquota","d":"把老的配额文件转换为新的格式"},"ypdomainname":{"n":"ypdomainname","p":"/ypdomainname","d":"显示主机的NIS的域名"},"bzip2recover":{"n":"bzip2recover","p":"/bzip2recover","d":"恢复被破坏的.bz2压缩包中的文件"},"firewall-cmd":{"n":"firewall-cmd","p":"/firewall-cmd","d":"Linux上新用的防火墙软件,跟iptables差不多的工具。"},"kernelversion":{"n":"kernelversion","p":"/kernelversion","d":"打印当前内核的主版本号"},"iptables-save":{"n":"iptables-save","p":"/iptables-save","d":"备份iptables的表配置"},"nisdomainname":{"n":"nisdomainname","p":"/nisdomainname","d":"显示主机NIS的域名"},"speedtest-cli":{"n":"speedtest-cli","p":"/speedtest-cli","d":"命令行下测试服务器外网速度"},"dnsdomainname":{"n":"dnsdomainname","p":"/dnsdomainname","d":"定义DNS系统中FQDN名称的域名"},"ip6tables-save":{"n":"ip6tables-save","p":"/ip6tables-save","d":"保存ip6tables表配置"},"named-checkzone":{"n":"named-checkzone","p":"/named-checkzone","d":"使用named-checkzone命令可以进行区域文件有效性检查和转换,必须指定区域名称和区域文件名称。"},"iptables-restore":{"n":"iptables-restore","p":"/iptables-restore","d":"还原iptables表的配置"},"dpkg-reconfigure":{"n":"dpkg-reconfigure","p":"/dpkg-reconfigure","d":"Debian Linux中重新配制一个已经安装的软件包"},"ip6tables-restore":{"n":"ip6tables-restore","p":"/ip6tables-restore","d":"还原ip6tables表"},"dpkg-statoverride":{"n":"dpkg-statoverride","p":"/dpkg-statoverride","d":"Debian Linux中覆盖文件的所有权和模式"},"dpkg-preconfigure":{"n":"dpkg-preconfigure","p":"/dpkg-preconfigure","d":"Debian Linux中软件包安装之前询问问题"}} \ No newline at end of file diff --git a/package.json b/package.json index 8668d6078ab..1c6c125266a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "linux-command", - "version": "1.1.1", + "version": "1.2.0", "description": "Linux Command", "main": "dist/data.json", "scripts": { From f8a9e474698b88a9c4e93bf329472f43f32d2a81 Mon Sep 17 00:00:00 2001 From: Huntout Zhang Date: Wed, 13 Jun 2018 08:33:53 +0800 Subject: [PATCH 0029/1126] Update firewall-cmd.md fix typo of `--add-forward-port` example --- command/firewall-cmd.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/command/firewall-cmd.md b/command/firewall-cmd.md index 0b46e696fab..56da3687a89 100644 --- a/command/firewall-cmd.md +++ b/command/firewall-cmd.md @@ -191,8 +191,8 @@ firewall-cmd --remove-masquerade# 禁止防火墙伪装IP ```bash firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 # 将80端口的流量转发至8080 -firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.0.1 # 将80端口的流量转发至192.168.0.1 -firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080 # 将80端口的流量转发至192.168.0.1的8080端口 +firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.0.1 # 将80端口的流量转发至192.168.0.1 +firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.0.1:toport=8080 # 将80端口的流量转发至192.168.0.1的8080端口 ``` 1. 当我们想把某个端口隐藏起来的时候,就可以在防火墙上阻止那个端口访问,然后再开一个不规则的端口,之后配置防火墙的端口转发,将流量转发过去。 From 2a7ff41f7bcb2b485ef32071884a6465075360f0 Mon Sep 17 00:00:00 2001 From: rgshare Date: Thu, 14 Jun 2018 15:23:09 +0800 Subject: [PATCH 0030/1126] Update umask.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `umask -s`其中的s应该是大写的:`umask -S` --- command/umask.md | 106 +++++++++++++++++++++++------------------------ 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/command/umask.md b/command/umask.md index 97b5d9f6993..3b7c2d337c7 100644 --- a/command/umask.md +++ b/command/umask.md @@ -1,53 +1,53 @@ -umask -=== - -用来设置限制新建文件权限的掩码 - -## 补充说明 - -**umask命令** 用来设置限制新建文件权限的掩码。当新文件被创建时,其最初的权限由文件创建掩码决定。用户每次注册进入系统时,umask命令都被执行, 并自动设置掩码mode来限制新文件的权限。用户可以通过再次执行umask命令来改变默认值,新的权限将会把旧的覆盖掉。 - -### 语法 - -``` -umask(选项)(参数) -``` - -### 选项 - -``` --p:输出的权限掩码可直接作为指令来执行; --S:以符号方式输出权限掩码。 -``` - -### 参数 - -权限掩码:指定权限掩码。 - -### 实例 - -利用umask命令可以指定哪些权限将在新文件的默认权限中被删除。例如,可以使用下面的命令创建掩码,使得组用户的写权限,其他用户的读、写和执行权限都被取消: - -``` -umask u=, g=w, o=rwx - -``` - -执行该命令以后,对于下面创建的新文件,其文件主的权限未做任何改变,而组用户没有写权限,其他用户的所有权限都被取消。 - -应注意:操作符“=”在umask命令和chmod命令中的作用恰恰相反。在chmod命令中,利用它来设置指定的权限,而其余权限则被删除;但是在umask命令中,它将在原有权限的基础上删除指定的权限。 - -不能直接利用umask命令创建一个可执行的文件,用户只能在其后利用chmod命令使它具有执行权限。假设执行了命令`umask u=, g=w, o=rwx`,虽然在命令行中,没有删去文件主和组用户的执行权限,但默认的文件权限还是640(即 rw-r-----),而不是750(rwxr-x---)。但是,如果创建的是目录或者通过编译程序创建的一个可执行文件,将不受此限制。在这种情况 下,会设置文件的执行权限。 - -也可以使用八进制数值来设置mode。由于在umask中所指定的权限是要从文件中删除的,所以,如果该文件原来的初始化权限是777,那么执行命令umask 022以后,该文件的权限将变为755:如果该文件原来的初始化权限是666,那么该文件的权限将变为644。 - -可以使用下面的命令检查新创建文件的默认权限: - -``` -umask -s -``` - -选项-s表示以字符形式显示当前的掩码。如果直接输入umask命令,不带任何参数,那么将以八进制形式显示当前的掩码。系统默认的掩码是0022。 - - - \ No newline at end of file +umask +=== + +用来设置限制新建文件权限的掩码 + +## 补充说明 + +**umask命令** 用来设置限制新建文件权限的掩码。当新文件被创建时,其最初的权限由文件创建掩码决定。用户每次注册进入系统时,umask命令都被执行, 并自动设置掩码mode来限制新文件的权限。用户可以通过再次执行umask命令来改变默认值,新的权限将会把旧的覆盖掉。 + +### 语法 + +``` +umask(选项)(参数) +``` + +### 选项 + +``` +-p:输出的权限掩码可直接作为指令来执行; +-S:以符号方式输出权限掩码。 +``` + +### 参数 + +权限掩码:指定权限掩码。 + +### 实例 + +利用umask命令可以指定哪些权限将在新文件的默认权限中被删除。例如,可以使用下面的命令创建掩码,使得组用户的写权限,其他用户的读、写和执行权限都被取消: + +``` +umask u=, g=w, o=rwx + +``` + +执行该命令以后,对于下面创建的新文件,其文件主的权限未做任何改变,而组用户没有写权限,其他用户的所有权限都被取消。 + +应注意:操作符“=”在umask命令和chmod命令中的作用恰恰相反。在chmod命令中,利用它来设置指定的权限,而其余权限则被删除;但是在umask命令中,它将在原有权限的基础上删除指定的权限。 + +不能直接利用umask命令创建一个可执行的文件,用户只能在其后利用chmod命令使它具有执行权限。假设执行了命令`umask u=, g=w, o=rwx`,虽然在命令行中,没有删去文件主和组用户的执行权限,但默认的文件权限还是640(即 rw-r-----),而不是750(rwxr-x---)。但是,如果创建的是目录或者通过编译程序创建的一个可执行文件,将不受此限制。在这种情况 下,会设置文件的执行权限。 + +也可以使用八进制数值来设置mode。由于在umask中所指定的权限是要从文件中删除的,所以,如果该文件原来的初始化权限是777,那么执行命令umask 022以后,该文件的权限将变为755:如果该文件原来的初始化权限是666,那么该文件的权限将变为644。 + +可以使用下面的命令检查新创建文件的默认权限: + +``` +umask -S +``` + +选项-S表示以字符形式显示当前的掩码。如果直接输入umask命令,不带任何参数,那么将以八进制形式显示当前的掩码。系统默认的掩码是0022。 + + + From 661705d7b2e0d4789815ecb8ecede5b6f8679e4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83=E2=84=A2?= <398188662@qq.com> Date: Mon, 18 Jun 2018 01:03:14 +0800 Subject: [PATCH 0031/1126] Update cu.md --- command/cu.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/command/cu.md b/command/cu.md index a3c8147f46f..dc2b551b589 100644 --- a/command/cu.md +++ b/command/cu.md @@ -43,7 +43,9 @@ cu [dehnotv][-a<通信端口>][-c<电话号码>][-E<脱离字符>][-I<设置文 ``` cu -c 0102377765 +cu -s 38400 9=12015551234 ``` + From 81bac2e86f1a44731039c5dbdb014bd06a1c6244 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83=E2=84=A2?= <398188662@qq.com> Date: Mon, 18 Jun 2018 01:08:05 +0800 Subject: [PATCH 0032/1126] Update df.md --- command/df.md | 176 +++++++++++++++++++++++++++----------------------- 1 file changed, 95 insertions(+), 81 deletions(-) diff --git a/command/df.md b/command/df.md index 735644117a9..82c54a70b5d 100644 --- a/command/df.md +++ b/command/df.md @@ -1,81 +1,95 @@ -df -=== - -显示磁盘的相关信息 - -## 补充说明 - -**df命令** 用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。 - -### 语法 - -``` -df(选项)(参数) -``` - -### 选项 - -``` --a或--all:包含全部的文件系统; ---block-size=<区块大小>:以指定的区块大小来显示区块数目; --h或--human-readable:以可读性较高的方式来显示信息; --H或--si:与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes; --i或--inodes:显示inode的信息; --k或--kilobytes:指定区块大小为1024字节; --l或--local:仅显示本地端的文件系统; --m或--megabytes:指定区块大小为1048576字节; ---no-sync:在取得磁盘使用信息前,不要执行sync指令,此为预设值; --P或--portability:使用POSIX的输出格式; ---sync:在取得磁盘使用信息前,先执行sync指令; --t<文件系统类型>或--type=<文件系统类型>:仅显示指定文件系统类型的磁盘信息; --T或--print-type:显示文件系统的类型; --x<文件系统类型>或--exclude-type=<文件系统类型>:不要显示指定文件系统类型的磁盘信息; ---help:显示帮助; ---version:显示版本信息。 -``` - -### 参数 - -文件:指定文件系统上的文件。 - -### 实例 - -查看系统磁盘设备,默认是KB为单位: - -``` -[root@LinServ-1 ~]# df -文件系统 1K-块 已用 可用 已用% 挂载点 -/dev/sda2 146294492 28244432 110498708 21% / -/dev/sda1 1019208 62360 904240 7% /boot -tmpfs 1032204 0 1032204 0% /dev/shm -/dev/sdb1 2884284108 218826068 2518944764 8% /data1 -``` - -使用`-h`选项以KB以上的单位来显示,可读性高: - -``` -[root@LinServ-1 ~]# df -h -文件系统 容量 已用 可用 已用% 挂载点 -/dev/sda2 140G 27G 106G 21% / -/dev/sda1 996M 61M 884M 7% /boot -tmpfs 1009M 0 1009M 0% /dev/shm -/dev/sdb1 2.7T 209G 2.4T 8% /data1 -``` - -查看全部文件系统: - -``` -[root@LinServ-1 ~]# df -a -文件系统 1K-块 已用 可用 已用% 挂载点 -/dev/sda2 146294492 28244432 110498708 21% / -proc 0 0 0 - /proc -sysfs 0 0 0 - /sys -devpts 0 0 0 - /dev/pts -/dev/sda1 1019208 62360 904240 7% /boot -tmpfs 1032204 0 1032204 0% /dev/shm -/dev/sdb1 2884284108 218826068 2518944764 8% /data1 -none 0 0 0 - /proc/sys/fs/binfmt_misc -``` - - - \ No newline at end of file +df +=== + +显示磁盘的相关信息 + +## 补充说明 + +**df命令** 用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。 + +### 语法 + +``` +df(选项)(参数) +``` + +### 选项 + +``` +-a或--all:包含全部的文件系统; +--block-size=<区块大小>:以指定的区块大小来显示区块数目; +-h或--human-readable:以可读性较高的方式来显示信息; +-H或--si:与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes; +-i或--inodes:显示inode的信息; +-k或--kilobytes:指定区块大小为1024字节; +-l或--local:仅显示本地端的文件系统; +-m或--megabytes:指定区块大小为1048576字节; +--no-sync:在取得磁盘使用信息前,不要执行sync指令,此为预设值; +-P或--portability:使用POSIX的输出格式; +--sync:在取得磁盘使用信息前,先执行sync指令; +-t<文件系统类型>或--type=<文件系统类型>:仅显示指定文件系统类型的磁盘信息; +-T或--print-type:显示文件系统的类型; +-x<文件系统类型>或--exclude-type=<文件系统类型>:不要显示指定文件系统类型的磁盘信息; +--help:显示帮助; +--version:显示版本信息。 +``` + +### 参数 + +文件:指定文件系统上的文件。 + +### 大小格式 + +显示值以 `--block-size` 和 `DF_BLOCK_SIZE`,`BLOCK_SIZE` 和 `BLOCKSIZE` 环境变量中的第一个可用 `SIZE` 为单位。 否则,单位默认为 `1024` 个字节(如果设置 `POSIXLY_CORRECT`,则为`512`)。 + +SIZE是一个整数和可选单位(例如:10M是10 * 1024 * 1024)。 单位是K,M,G,T,P,E,Z,Y(1024的幂)或KB,MB,...(1000的幂)。 + +### 实例 + +查看系统磁盘设备,默认是KB为单位: + +``` +[root@LinServ-1 ~]# df +文件系统 1K-块 已用 可用 已用% 挂载点 +/dev/sda2 146294492 28244432 110498708 21% / +/dev/sda1 1019208 62360 904240 7% /boot +tmpfs 1032204 0 1032204 0% /dev/shm +/dev/sdb1 2884284108 218826068 2518944764 8% /data1 +``` + +使用`-h`选项以KB以上的单位来显示,可读性高: + +``` +[root@LinServ-1 ~]# df -h +文件系统 容量 已用 可用 已用% 挂载点 +/dev/sda2 140G 27G 106G 21% / +/dev/sda1 996M 61M 884M 7% /boot +tmpfs 1009M 0 1009M 0% /dev/shm +/dev/sdb1 2.7T 209G 2.4T 8% /data1 +``` + +查看全部文件系统: + +``` +[root@LinServ-1 ~]# df -a +文件系统 1K-块 已用 可用 已用% 挂载点 +/dev/sda2 146294492 28244432 110498708 21% / +proc 0 0 0 - /proc +sysfs 0 0 0 - /sys +devpts 0 0 0 - /dev/pts +/dev/sda1 1019208 62360 904240 7% /boot +tmpfs 1032204 0 1032204 0% /dev/shm +/dev/sdb1 2884284108 218826068 2518944764 8% /data1 +none 0 0 0 - /proc/sys/fs/binfmt_misc +``` + +显示 `public` 目录中的可用空间量,如以下输出中所示: + +```bash +df public +# Filesystem 1K-blocks Used Available Use% Mounted on +# /dev/loop0 18761008 15246924 2554392 86% /d Avail +``` + + + From 8c2dd3cd63800b7b0eed1cfe689aec375db9129a Mon Sep 17 00:00:00 2001 From: Rocher Date: Thu, 21 Jun 2018 13:58:47 +0800 Subject: [PATCH 0033/1126] Update systemctl.md make systemctl list-units --type=service correct --- command/systemctl.md | 314 +++++++++++++++++++++---------------------- 1 file changed, 157 insertions(+), 157 deletions(-) diff --git a/command/systemctl.md b/command/systemctl.md index 4ce1dc26840..dd302ebba1f 100644 --- a/command/systemctl.md +++ b/command/systemctl.md @@ -1,157 +1,157 @@ -systemctl -=== - -系统服务管理器指令 - -## 补充说明 - -**systemctl命令** 是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
任务旧指令新指令
使某服务自动启动chkconfig --level 3 httpd onsystemctl enable httpd.service
使某服务不自动启动chkconfig --level 3 httpd offsystemctl disable httpd.service
检查服务状态service httpd statussystemctl status httpd.service (服务详细信息) systemctl is-active httpd.service (仅显示是否 Active)
显示所有已启动的服务chkconfig --listsystemctl list-units --type=service
启动某服务service httpd startsystemctl start httpd.service
停止某服务service httpd stopsystemctl stop httpd.service
重启某服务service httpd restartsystemctl restart httpd.service
- -### 实例 - -1.启动nfs服务 - -``` -systemctl start nfs-server.service -``` - -2.设置开机自启动 - -``` -systemctl enable nfs-server.service -``` - -3.停止开机自启动 - -``` -systemctl disable nfs-server.service -``` - -4.查看服务当前状态 - -``` -systemctl status nfs-server.service -``` - -5.重新启动某服务 - -``` -systemctl restart nfs-server.service -``` - -6.查看所有已启动的服务 - -``` -systemctl list -units --type=service -``` - -开启防火墙22端口 - -``` -iptables -I INPUT -p tcp --dport 22 -j accept -``` - -如果仍然有问题,就可能是SELinux导致的 - -关闭SElinux: - -修改`/etc/selinux/config`文件中的`SELINUX=””`为disabled,然后重启。 - -彻底关闭防火墙: - -``` -sudo systemctl status firewalld.service -sudo systemctl stop firewalld.service           -sudo systemctl disable firewalld.service -``` - - - \ No newline at end of file +systemctl +=== + +系统服务管理器指令 + +## 补充说明 + +**systemctl命令** 是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
任务旧指令新指令
使某服务自动启动chkconfig --level 3 httpd onsystemctl enable httpd.service
使某服务不自动启动chkconfig --level 3 httpd offsystemctl disable httpd.service
检查服务状态service httpd statussystemctl status httpd.service (服务详细信息) systemctl is-active httpd.service (仅显示是否 Active)
显示所有已启动的服务chkconfig --listsystemctl list-units --type=service
启动某服务service httpd startsystemctl start httpd.service
停止某服务service httpd stopsystemctl stop httpd.service
重启某服务service httpd restartsystemctl restart httpd.service
+ +### 实例 + +1.启动nfs服务 + +``` +systemctl start nfs-server.service +``` + +2.设置开机自启动 + +``` +systemctl enable nfs-server.service +``` + +3.停止开机自启动 + +``` +systemctl disable nfs-server.service +``` + +4.查看服务当前状态 + +``` +systemctl status nfs-server.service +``` + +5.重新启动某服务 + +``` +systemctl restart nfs-server.service +``` + +6.查看所有已启动的服务 + +``` +systemctl list-units --type=service +``` + +开启防火墙22端口 + +``` +iptables -I INPUT -p tcp --dport 22 -j accept +``` + +如果仍然有问题,就可能是SELinux导致的 + +关闭SElinux: + +修改`/etc/selinux/config`文件中的`SELINUX=””`为disabled,然后重启。 + +彻底关闭防火墙: + +``` +sudo systemctl status firewalld.service +sudo systemctl stop firewalld.service           +sudo systemctl disable firewalld.service +``` + + + From 0f34e0996b9c1ee70d70e181a65dab9a31170b43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83=E2=84=A2?= <398188662@qq.com> Date: Thu, 21 Jun 2018 21:25:51 +0800 Subject: [PATCH 0034/1126] Update ps.md --- command/ps.md | 111 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 109 insertions(+), 2 deletions(-) diff --git a/command/ps.md b/command/ps.md index e8ab177537e..c1c3f22d488 100644 --- a/command/ps.md +++ b/command/ps.md @@ -86,14 +86,121 @@ X:采用旧式的Linux i386登陆格式显示程序状况。 按内存资源的使用量对进程进行排序 -``` +```bash ps aux | sort -rnk 4 ``` 按 CPU 资源的使用量对进程进行排序 -``` +```bash ps aux | sort -nk 3 ``` +显示所有进程信息 + +```bash +ps -A +``` + +显示指定用户信息 + +```bash +ps -u root +``` + +显示所有进程信息,连同命令行 + +```bash +ps -ef +``` + +ps 与grep 常用组合用法,查找特定进程 + +```bash +ps -ef|grep ssh +``` + +将目前属于您自己这次登入的 PID 与相关信息列示出来 + +```bash +ps -l +# UID PID PPID F CPU PRI NI SZ RSS WCHAN S ADDR TTY TIME CMD +# 501 566 559 4006 0 31 0 4317620 228 - Ss 0 ttys001 0:00.05 /App...cOS/iTerm2 --server /usr/bin/login -fpl kenny /Ap...s/MacOS/iTerm2 --launch_shel +# 501 592 577 4006 0 31 0 4297048 52 - S 0 ttys001 0:00.63 -zsh +``` + +- F 代表这个程序的旗标 (flag), 4 代表使用者为 super user +- S 代表这个程序的状态 (STAT),关于各 STAT 的意义将在内文介绍 +- UID 程序被该 UID 所拥有 +- PID 就是这个程序的 ID ! +- PPID 则是其上级父程序的ID +- C CPU 使用的资源百分比 +- PRI 这个是 Priority (优先执行序) 的缩写,详细后面介绍 +- NI 这个是 Nice 值,在下一小节我们会持续介绍 +- ADDR 这个是 kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 "-" +- SZ 使用掉的内存大小 +- WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作 +- TTY 登入者的终端机位置 +- TIME 使用掉的 CPU 时间。 +- CMD 所下达的指令为何 + +> 在预设的情况下, `ps` 仅会列出与目前所在的 `bash shell` 有关的 `PID` 而已,所以, 当我使用 `ps -l` 的时候,只有三个 PID。 + +列出目前所有的正在内存当中的程序 + +```bash +ps aux + +# USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND +# kenny 6155 21.3 1.7 7969944 284912 ?? S 二03下午 199:14.14 /Appl...OS/WeChat +# kenny 559 20.4 0.8 4963740 138176 ?? S 二03下午 33:28.27 /Appl...S/iTerm2 +# _windowserver 187 18.0 0.6 7005748 95884 ?? Ss 二03下午 288:44.97 /Syst...Light.WindowServer -daemon +# kenny 1408 10.7 2.1 5838592 347348 ?? S 二03下午 138:51.63 /Appl...nts/MacOS/Google Chrome +# kenny 327 5.8 0.5 5771984 79452 ?? S 二03下午 2:51.58 /Syst...pp/Contents/MacOS/Finder +``` + +- USER:该 process 属于那个使用者账号的 +- PID :该 process 的号码 +- %CPU:该 process 使用掉的 CPU 资源百分比 +- %MEM:该 process 所占用的物理内存百分比 +- VSZ :该 process 使用掉的虚拟内存量 (Kbytes) +- RSS :该 process 占用的固定的内存量 (Kbytes) +- TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。 +- STAT:该程序目前的状态,主要的状态有 +- R :该程序目前正在运作,或者是可被运作 +- S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。 +- T :该程序目前正在侦测或者是停止了 +- Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态 +- START:该 process 被触发启动的时间 +- TIME :该 process 实际使用 CPU 运作的时间 +- COMMAND:该程序的实际指令 + +列出类似程序树的程序显示 + +``` +ps -axjf + +# USER PID PPID PGID SESS JOBC STAT TT TIME COMMAND UID C STIME TTY +# root 1 0 1 0 0 Ss ?? 10:51.90 /sbin/launchd 0 0 二03下午 ?? +# root 50 1 50 0 0 Ss ?? 0:10.07 /usr/sbin/syslog 0 0 二03下午 ?? +# root 51 1 51 0 0 Ss ?? 0:29.90 /usr/libexec/Use 0 0 二03下午 ?? +``` + +找出与 cron 与 syslog 这两个服务有关的 PID 号码 + +``` +ps aux | egrep '(cron|syslog)' + +# root 50 0.0 0.0 4305532 1284 ?? Ss 二03下午 0:10.08 /usr/sbin/syslogd +# kenny 90167 0.0 0.0 4258468 184 s007 R+ 9:23下午 0:00.00 egrep (cron|syslog) +``` + +把所有进程显示出来,并输出到ps001.txt文件 + +``` +ps -aux > ps001.txt +``` + +输出指定的字段 + From d0114e4280b21dcb3a2510e67d7bf05e5cbb0282 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83=E2=84=A2?= <398188662@qq.com> Date: Thu, 21 Jun 2018 21:39:09 +0800 Subject: [PATCH 0035/1126] Update ps.md --- command/ps.md | 49 ++++++++++++++++--------------------------------- 1 file changed, 16 insertions(+), 33 deletions(-) diff --git a/command/ps.md b/command/ps.md index c1c3f22d488..73a348e56f5 100644 --- a/command/ps.md +++ b/command/ps.md @@ -84,40 +84,23 @@ X:采用旧式的Linux i386登陆格式显示程序状况。 ### 实例 -按内存资源的使用量对进程进行排序 - -```bash -ps aux | sort -rnk 4 -``` - -按 CPU 资源的使用量对进程进行排序 - -```bash -ps aux | sort -nk 3 -``` - -显示所有进程信息 - -```bash -ps -A -``` - -显示指定用户信息 - -```bash -ps -u root -``` - -显示所有进程信息,连同命令行 - -```bash -ps -ef -``` - -ps 与grep 常用组合用法,查找特定进程 - ```bash -ps -ef|grep ssh +ps axo pid,comm,pcpu # 查看进程的PID、名称以及CPU 占用率 +ps aux | sort -rnk 4 # 按内存资源的使用量对进程进行排序 +ps aux | sort -nk 3 # 按 CPU 资源的使用量对进程进行排序 +ps -A # 显示所有进程信息 +ps -u root # 显示指定用户信息 +ps -efL # 查看线程数 +ps -e -o "%C : %p :%z : %a"|sort -k5 -nr # 查看进程并按内存使用大小排列 +ps -ef # 显示所有进程信息,连同命令行 +ps -ef | grep ssh # ps 与grep 常用组合用法,查找特定进程 +ps -C nginx # 通过名字或命令搜索进程 +ps aux --sort=-pcpu,+pmem # CPU或者内存进行排序,-降序,+升序 +ps -f --forest -C nginx # 用树的风格显示进程的层次关系 +ps -o pid,uname,comm -C nginx # 显示一个父进程的子进程 +ps -e -o pid,uname=USERNAME,pcpu=CPU_USAGE,pmem,comm # 重定义标签 +ps -e -o pid,comm,etime # 显示进程运行的时间 +ps -aux | grep named # 查看named进程详细信息 ``` 将目前属于您自己这次登入的 PID 与相关信息列示出来 From 7afb5c638b847ce45c02b192c4c2bd1a9a2006b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83=E2=84=A2?= <398188662@qq.com> Date: Thu, 21 Jun 2018 21:52:09 +0800 Subject: [PATCH 0036/1126] Update lsof.md --- command/lsof.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/command/lsof.md b/command/lsof.md index ed80d539364..5ff61083133 100644 --- a/command/lsof.md +++ b/command/lsof.md @@ -133,4 +133,10 @@ events/1 7 root cwd DIR 8,2 4096 2 / lsof -p $pid ``` - \ No newline at end of file +获取端口对应的进程ID=>pid + +``` +lsof -i:9981 -P -t -sTCP:LISTEN +``` + + From b324523149a0d9c010c40b854823ba9abc8cd0b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83=E2=84=A2?= <398188662@qq.com> Date: Thu, 21 Jun 2018 21:54:37 +0800 Subject: [PATCH 0037/1126] Update ps.md --- command/ps.md | 1 + 1 file changed, 1 insertion(+) diff --git a/command/ps.md b/command/ps.md index 73a348e56f5..e7b5d6306d5 100644 --- a/command/ps.md +++ b/command/ps.md @@ -101,6 +101,7 @@ ps -o pid,uname,comm -C nginx # 显示一个父进程的子进程 ps -e -o pid,uname=USERNAME,pcpu=CPU_USAGE,pmem,comm # 重定义标签 ps -e -o pid,comm,etime # 显示进程运行的时间 ps -aux | grep named # 查看named进程详细信息 +ps -o command -p 91730 | sed -n 2p # 通过进程id获取服务名称 ``` 将目前属于您自己这次登入的 PID 与相关信息列示出来 From 61e427acf832afd16da6846019cb85d4ace9b210 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83=E2=84=A2?= <398188662@qq.com> Date: Sat, 30 Jun 2018 15:04:29 +0800 Subject: [PATCH 0038/1126] Update tail.md --- command/tail.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/command/tail.md b/command/tail.md index 0f8fadaf792..5120f36a54e 100644 --- a/command/tail.md +++ b/command/tail.md @@ -37,11 +37,16 @@ tail(选项)(参数) ### 实例 +```bash +tail file #(显示文件file的最后10行) +tail -n +20 file #(显示文件file的内容,从第20行至文件末尾) +tail -c 10 file #(显示文件file的最后10个字符) + +tail -25 mail.log # 显示 mail.log 最后的 25 行 +tail -f mail.log # 等同于--follow=descriptor,根据文件描述符进行追踪,当文件改名或被删除,追踪停止 +tail -F mail.log # 等同于--follow=name --retry,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪 ``` -tail file (显示文件file的最后10行) -tail -n +20 file (显示文件file的内容,从第20行至文件末尾) -tail -c 10 file (显示文件file的最后10个字符) -``` + From 60dcd45afa478db039dbe9bb6302e6c74dc05e24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83=E2=84=A2?= <398188662@qq.com> Date: Sat, 30 Jun 2018 15:07:07 +0800 Subject: [PATCH 0039/1126] Update ntsysv.md --- command/ntsysv.md | 66 ++++++++++++++++++++++++----------------------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/command/ntsysv.md b/command/ntsysv.md index 33039de7d61..aef457e025d 100644 --- a/command/ntsysv.md +++ b/command/ntsysv.md @@ -1,32 +1,34 @@ -ntsysv -=== - -集中管理系统的各种服务 - -## 补充说明 - -**ntsysv命令** 提供了一个基于文本界面的菜单操作方式,集中管理系统不同的运行等级下的系统服务启动状态。在RedHat各个发行版,CentOS各个版本,都自带这个工具。它具有互动式操作界面,您可以轻易地利用方向键和空格键等,开启,关闭操作系统在每个执行等级中,所要执行的系统服务。 - -### 语法 - -``` -ntsysv(选项) -``` - -### 选项 - -``` ---leve:指定运行等级; ---back:在互动式界面里,显示Back钮,而非cancel钮。 -``` - -### 实例 - -输入ntsysv命令后,出现一个交互式的管理菜单,如下: - -!ntsysv - -使用空格键选择或者取消选项! - - - \ No newline at end of file +ntsysv +=== + +集中管理系统的各种服务 + +## 补充说明 + +**ntsysv命令** 提供了一个基于文本界面的菜单操作方式,集中管理系统不同的运行等级下的系统服务启动状态。在RedHat各个发行版,CentOS各个版本,都自带这个工具。它具有互动式操作界面,您可以轻易地利用方向键和空格键等,开启,关闭操作系统在每个执行等级中,所要执行的系统服务。 + +### 语法 + +``` +ntsysv(选项) +``` + +### 选项 + +``` +--leve:指定运行等级; +--back:在互动式界面里,显示Back钮,而非cancel钮。 +``` + +### 实例 + +输入ntsysv命令后,出现一个交互式的管理菜单,如下: + +``` +!ntsysv +``` + +使用空格键选择或者取消选项! + + + From e7d75fc72611141f1c37c5c83da81fb2f34873cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83=E2=84=A2?= <398188662@qq.com> Date: Sun, 1 Jul 2018 13:34:59 +0800 Subject: [PATCH 0040/1126] Update systemctl.md --- command/systemctl.md | 147 +++++++------------------------------------ 1 file changed, 21 insertions(+), 126 deletions(-) diff --git a/command/systemctl.md b/command/systemctl.md index dd302ebba1f..66c316c5431 100644 --- a/command/systemctl.md +++ b/command/systemctl.md @@ -7,130 +7,25 @@ systemctl **systemctl命令** 是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
任务旧指令新指令
使某服务自动启动chkconfig --level 3 httpd onsystemctl enable httpd.service
使某服务不自动启动chkconfig --level 3 httpd offsystemctl disable httpd.service
检查服务状态service httpd statussystemctl status httpd.service (服务详细信息) systemctl is-active httpd.service (仅显示是否 Active)
显示所有已启动的服务chkconfig --listsystemctl list-units --type=service
启动某服务service httpd startsystemctl start httpd.service
停止某服务service httpd stopsystemctl stop httpd.service
重启某服务service httpd restartsystemctl restart httpd.service
- -### 实例 - -1.启动nfs服务 - -``` -systemctl start nfs-server.service -``` - -2.设置开机自启动 - -``` -systemctl enable nfs-server.service -``` - -3.停止开机自启动 - -``` -systemctl disable nfs-server.service -``` - -4.查看服务当前状态 - -``` -systemctl status nfs-server.service -``` - -5.重新启动某服务 - -``` -systemctl restart nfs-server.service -``` - -6.查看所有已启动的服务 - -``` -systemctl list-units --type=service +| 任务 | 旧指令 | 新指令 | +| ---- | ---- | ---- | +| 使某服务自动启动 | chkconfig --level 3 httpd on | systemctl enable httpd.service | +| 使某服务不自动启动 | chkconfig --level 3 httpd off | systemctl disable httpd.service | +| 检查服务状态 | service httpd status | systemctl status httpd.service (服务详细信息) systemctl is-active httpd.service (仅显示是否 Active) | +| 显示所有已启动的服务 | chkconfig --list | systemctl list-units --type=service | +| 启动某服务 | service httpd start | systemctl start httpd.service | +| 停止某服务 | service httpd stop | systemctl stop httpd.service | +| 重启某服务 | service httpd restart | systemctl restart httpd.service | + +### 实例 + +```bash +systemctl start nfs-server.service . # 启动nfs服务 +systemctl enable nfs-server.service # 设置开机自启动 +systemctl disable nfs-server.service # 停止开机自启动 +systemctl status nfs-server.service # 查看服务当前状态 +systemctl restart nfs-server.service # 重新启动某服务 +systemctl list-units --type=service # 查看所有已启动的服务 ``` 开启防火墙22端口 @@ -143,11 +38,11 @@ iptables -I INPUT -p tcp --dport 22 -j accept 关闭SElinux: -修改`/etc/selinux/config`文件中的`SELINUX=””`为disabled,然后重启。 +修改`/etc/selinux/config`文件中的`SELINUX=""`为disabled,然后重启。 彻底关闭防火墙: -``` +```bash sudo systemctl status firewalld.service sudo systemctl stop firewalld.service           sudo systemctl disable firewalld.service From d61b2bc27b1307ec2b533266aaa17356d7c68e99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83=E2=84=A2?= <398188662@qq.com> Date: Wed, 4 Jul 2018 19:44:06 +0800 Subject: [PATCH 0041/1126] Update netstat.md --- command/netstat.md | 344 +++++++++++++++++++++++---------------------- 1 file changed, 175 insertions(+), 169 deletions(-) diff --git a/command/netstat.md b/command/netstat.md index 6fe590c6f55..408c636a9e7 100644 --- a/command/netstat.md +++ b/command/netstat.md @@ -1,169 +1,175 @@ -netstat -=== - -查看Linux中网络系统状态信息 - -## 补充说明 - -**netstat命令** 用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。 - -### 语法 - -``` -netstat(选项) -``` - -### 选项 - -``` --a或--all:显示所有连线中的Socket; --A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址; --c或--continuous:持续列出网络状态; --C或--cache:显示路由器配置的快取信息; --e或--extend:显示网络其他相关信息; --F或--fib:显示FIB; --g或--groups:显示多重广播功能群组组员名单; --h或--help:在线帮助; --i或--interfaces:显示网络界面信息表单; --l或--listening:显示监控中的服务器的Socket; --M或--masquerade:显示伪装的网络连线; --n或--numeric:直接使用ip地址,而不通过域名服务器; --N或--netlink或--symbolic:显示网络硬件外围设备的符号连接名称; --o或--timers:显示计时器; --p或--programs:显示正在使用Socket的程序识别码和程序名称; --r或--route:显示Routing Table; --s或--statistice:显示网络工作信息统计表; --t或--tcp:显示TCP传输协议的连线状况; --u或--udp:显示UDP传输协议的连线状况; --v或--verbose:显示指令执行过程; --V或--version:显示版本信息; --w或--raw:显示RAW传输协议的连线状况; --x或--unix:此参数的效果和指定"-A unix"参数相同; ---ip或--inet:此参数的效果和指定"-A inet"参数相同。 -``` - -### 实例 - - **列出所有端口 (包括监听和未监听的)** - -``` -netstat -a #列出所有端口 -netstat -at #列出所有tcp端口 -netstat -au #列出所有udp端口 -``` - - **列出所有处于监听状态的 Sockets** - -``` -netstat -l #只显示监听端口 -netstat -lt #只列出所有监听 tcp 端口 -netstat -lu #只列出所有监听 udp 端口 -netstat -lx #只列出所有监听 UNIX 端口 -``` - - **显示每个协议的统计信息** - -``` -netstat -s 显示所有端口的统计信息 -netstat -st 显示TCP端口的统计信息 -netstat -su 显示UDP端口的统计信息 - -``` - - **在netstat输出中显示 PID 和进程名称** - -``` -netstat -pt -``` - -`netstat -p`可以与其它开关一起使用,就可以添加“PID/进程名称”到netstat输出中,这样debugging的时候可以很方便的发现特定端口运行的程序。 - - **在netstat输出中不显示主机,端口和用户名(host, port or user)** - -当你不想让主机,端口和用户名显示,使用`netstat -n`。将会使用数字代替那些名称。同样可以加速输出,因为不用进行比对查询。 - -``` -netstat -an -``` - -如果只是不想让这三个名称中的一个被显示,使用以下命令: - -``` -netsat -a --numeric-ports -netsat -a --numeric-hosts -netsat -a --numeric-users -``` - - **持续输出netstat信息** - -``` -netstat -c #每隔一秒输出网络信息 -``` - - **显示系统不支持的地址族(Address Families)** - -``` -netstat --verbose -``` - -在输出的末尾,会有如下的信息: - -``` -netstat: no support for `AF IPX' on this system. -netstat: no support for `AF AX25' on this system. -netstat: no support for `AF X25' on this system. -netstat: no support for `AF NETROM' on this system. -``` - - **显示核心路由信息** - -``` -netstat -r -``` - -使用`netstat -rn`显示数字格式,不查询主机名称。 - - **找出程序运行的端口** - -并不是所有的进程都能找到,没有权限的会不显示,使用 root 权限查看所有的信息。 - -``` -netstat -ap | grep ssh -``` - -找出运行在指定端口的进程: - -``` -netstat -an | grep ':80' -``` - - **显示网络接口列表** - -``` -netstat -i -``` - -显示详细信息,像是ifconfig使用`netstat -ie`。 - - **IP和TCP分析** - -查看连接某服务端口最多的的IP地址: - -``` -netstat -ntu | grep :80 | awk '{print $5}' | cut -d: -f1 | awk '{++ip[$1]} END {for(i in ip) print ip[i],"\t",i}' | sort -nr -``` - -TCP各种状态列表: - -``` -netstat -nt | grep -e 127.0.0.1 -e 0.0.0.0 -e ::: -v | awk '/^tcp/ {++state[$NF]} END {for(i in state) print i,"\t",state[i]}' -``` - -查看phpcgi进程数,如果接近预设值,说明不够用,需要增加: - -``` -netstat -anpo | grep "php-cgi" | wc -l -``` - - - \ No newline at end of file +netstat +=== + +查看Linux中网络系统状态信息 + +## 补充说明 + +**netstat命令** 用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。 + +### 语法 + +``` +netstat(选项) +``` + +### 选项 + +``` +-a或--all:显示所有连线中的Socket; +-A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址; +-c或--continuous:持续列出网络状态; +-C或--cache:显示路由器配置的快取信息; +-e或--extend:显示网络其他相关信息; +-F或--fib:显示FIB; +-g或--groups:显示多重广播功能群组组员名单; +-h或--help:在线帮助; +-i或--interfaces:显示网络界面信息表单; +-l或--listening:显示监控中的服务器的Socket; +-M或--masquerade:显示伪装的网络连线; +-n或--numeric:直接使用ip地址,而不通过域名服务器; +-N或--netlink或--symbolic:显示网络硬件外围设备的符号连接名称; +-o或--timers:显示计时器; +-p或--programs:显示正在使用Socket的程序识别码和程序名称; +-r或--route:显示Routing Table; +-s或--statistice:显示网络工作信息统计表; +-t或--tcp:显示TCP传输协议的连线状况; +-u或--udp:显示UDP传输协议的连线状况; +-v或--verbose:显示指令执行过程; +-V或--version:显示版本信息; +-w或--raw:显示RAW传输协议的连线状况; +-x或--unix:此参数的效果和指定"-A unix"参数相同; +--ip或--inet:此参数的效果和指定"-A inet"参数相同。 +``` + +### 实例 + + **列出所有端口 (包括监听和未监听的)** + +``` +netstat -a #列出所有端口 +netstat -at #列出所有tcp端口 +netstat -au #列出所有udp端口 +``` + + **列出所有处于监听状态的 Sockets** + +``` +netstat -l #只显示监听端口 +netstat -lt #只列出所有监听 tcp 端口 +netstat -lu #只列出所有监听 udp 端口 +netstat -lx #只列出所有监听 UNIX 端口 +``` + + **显示每个协议的统计信息** + +``` +netstat -s 显示所有端口的统计信息 +netstat -st 显示TCP端口的统计信息 +netstat -su 显示UDP端口的统计信息 + +``` + + **在netstat输出中显示 PID 和进程名称** + +``` +netstat -pt +``` + +`netstat -p`可以与其它开关一起使用,就可以添加“PID/进程名称”到netstat输出中,这样debugging的时候可以很方便的发现特定端口运行的程序。 + + **在netstat输出中不显示主机,端口和用户名(host, port or user)** + +当你不想让主机,端口和用户名显示,使用`netstat -n`。将会使用数字代替那些名称。同样可以加速输出,因为不用进行比对查询。 + +``` +netstat -an +``` + +如果只是不想让这三个名称中的一个被显示,使用以下命令: + +``` +netsat -a --numeric-ports +netsat -a --numeric-hosts +netsat -a --numeric-users +``` + + **持续输出netstat信息** + +``` +netstat -c #每隔一秒输出网络信息 +``` + + **显示系统不支持的地址族(Address Families)** + +``` +netstat --verbose +``` + +在输出的末尾,会有如下的信息: + +``` +netstat: no support for `AF IPX' on this system. +netstat: no support for `AF AX25' on this system. +netstat: no support for `AF X25' on this system. +netstat: no support for `AF NETROM' on this system. +``` + + **显示核心路由信息** + +``` +netstat -r +``` + +使用`netstat -rn`显示数字格式,不查询主机名称。 + + **找出程序运行的端口** + +并不是所有的进程都能找到,没有权限的会不显示,使用 root 权限查看所有的信息。 + +``` +netstat -ap | grep ssh +``` + +找出运行在指定端口的进程: + +``` +netstat -an | grep ':80' +``` + + **通过端口找进程ID** + +```bash +netstat -anp|grep 8081 | grep LISTEN|awk '{printf $7}'|cut -d/ -f1 +``` + + **显示网络接口列表** + +``` +netstat -i +``` + +显示详细信息,像是ifconfig使用`netstat -ie`。 + + **IP和TCP分析** + +查看连接某服务端口最多的的IP地址: + +``` +netstat -ntu | grep :80 | awk '{print $5}' | cut -d: -f1 | awk '{++ip[$1]} END {for(i in ip) print ip[i],"\t",i}' | sort -nr +``` + +TCP各种状态列表: + +``` +netstat -nt | grep -e 127.0.0.1 -e 0.0.0.0 -e ::: -v | awk '/^tcp/ {++state[$NF]} END {for(i in state) print i,"\t",state[i]}' +``` + +查看phpcgi进程数,如果接近预设值,说明不够用,需要增加: + +``` +netstat -anpo | grep "php-cgi" | wc -l +``` + + + From f0e2eca5d1180ad971b52f05d938fdfdfc25e560 Mon Sep 17 00:00:00 2001 From: rgshare Date: Tue, 10 Jul 2018 13:48:22 +0800 Subject: [PATCH 0042/1126] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=94=99=E5=88=AB?= =?UTF-8?q?=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- command/cat.md | 88 +++++++++++++++++++++++++------------------------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/command/cat.md b/command/cat.md index e14a1137c9b..a7ff893b9d1 100644 --- a/command/cat.md +++ b/command/cat.md @@ -1,44 +1,44 @@ -cat -=== - -连接文件并打印到标准输出设备上 - -## 补充说明 - -**cat命令** 连接文件并打印到标准输出设备上,cat经常用来显示文件的内容,类似于下的type命令。 - -注意:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分屏显示。为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏。按Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态。 - -### 语法 - -``` -cat(选项)(参数) -``` - -### 选项 - -``` --n或-number:有1开始对所有输出的行数编号; --b或--number-nonblank:和-n相似,只不过对于空白行不编号; --s或--squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行; --A:显示不可打印字符,行尾显示“$”; --e:等价于"-vE"选项; --t:等价于"-vT"选项; -``` - -### 参数 - -文件列表:指定要连接的文件列表。 - -### 实例 - -设ml和m2是当前目录下的两个文件 - -``` -cat m1 (在屏幕上显示文件ml的内容) -cat m1 m2 (同时显示文件ml和m2的内容) -cat m1 m2 > file (将文件ml和m2合并后放入文件file中) -``` - - - \ No newline at end of file +cat +=== + +连接文件并打印到标准输出设备上 + +## 补充说明 + +**cat命令** 连接文件并打印到标准输出设备上,cat经常用来显示文件的内容,类似于下的type命令。 + +注意:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分屏显示。为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏。按Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态。 + +### 语法 + +``` +cat(选项)(参数) +``` + +### 选项 + +``` +-n或-number:从1开始对所有输出的行数编号; +-b或--number-nonblank:和-n相似,只不过对于空白行不编号; +-s或--squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行; +-A:显示不可打印字符,行尾显示“$”; +-e:等价于"-vE"选项; +-t:等价于"-vT"选项; +``` + +### 参数 + +文件列表:指定要连接的文件列表。 + +### 实例 + +设m1和m2是当前目录下的两个文件 + +``` +cat m1 (在屏幕上显示文件m1的内容) +cat m1 m2 (同时显示文件m1和m2的内容) +cat m1 m2 > file (将文件m1和m2合并后放入文件file中) +``` + + + From 69b356469b5e883a85a84017507aaa3242475175 Mon Sep 17 00:00:00 2001 From: rgshare Date: Tue, 10 Jul 2018 13:53:30 +0800 Subject: [PATCH 0043/1126] Update cat.md --- command/cat.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/command/cat.md b/command/cat.md index a7ff893b9d1..99b18d12cd7 100644 --- a/command/cat.md +++ b/command/cat.md @@ -18,7 +18,7 @@ cat(选项)(参数) ### 选项 ``` --n或-number:从1开始对所有输出的行数编号; +-n或--number:从1开始对所有输出的行数编号; -b或--number-nonblank:和-n相似,只不过对于空白行不编号; -s或--squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行; -A:显示不可打印字符,行尾显示“$”; From 37846faeb1fe19f8577e874cad3893c390d8544d Mon Sep 17 00:00:00 2001 From: Shane King Date: Sun, 15 Jul 2018 20:43:31 +0800 Subject: [PATCH 0044/1126] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E9=A1=BA=E5=BA=8F?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E6=96=B0=E5=A2=9E-i=E5=8F=82=E6=95=B0?= =?UTF-8?q?=EF=BC=8C=E5=B9=B6=E5=88=97=E4=B8=BE=E4=BA=9A=E9=A9=AC=E9=80=8A?= =?UTF-8?q?=E4=BA=91=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 比较喜欢该项目,希望越做越好! --- command/scp.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/command/scp.md b/command/scp.md index fed4f817e58..0b142882d2d 100644 --- a/command/scp.md +++ b/command/scp.md @@ -23,6 +23,7 @@ scp(选项)(参数) -B:以批处理模式运行; -C:使用压缩; -F:指定ssh配置文件; +-i:identity_file 从指定文件中读取传输时使用的密钥文件(例如亚马逊云pem),此参数直接传递给ssh; -l:指定宽带限制; -o:指定使用的ssh选项; -P:指定远程主机的端口号; @@ -48,6 +49,13 @@ scp root@10.10.10.10:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/ 从10.10.10.10机器上的`/opt/soft/`的目录中下载nginx-0.5.38.tar.gz 文件到本地`/opt/soft/`目录中。 +**从亚马逊云复制OpenVPN到本地目录** + +``` +scp -i amazon.pem ubuntu@10.10.10.10:/usr/local/openvpn_as/etc/exe/openvpn-connect-2.1.3.110.dmg openvpn-connect-2.1.3.110.dmg +``` +从10.10.10.10机器上下载openvpn安装文件到本地当前目录来。 + **从远处复制到本地** ``` From 4a2e116354873fc8f952ddc18e0cac94f8406679 Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Sat, 28 Jul 2018 15:52:48 +0800 Subject: [PATCH 0045/1126] Update comm.md #30 --- command/comm.md | 40 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/command/comm.md b/command/comm.md index 1e9c062075e..05771410efd 100644 --- a/command/comm.md +++ b/command/comm.md @@ -66,7 +66,14 @@ ttt jjj ``` -两个文件之间的比较,如果没有排序需要带上`--nocheck-order`参数 +两个文件之间的比较,如果没有排序需要带上`--nocheck-order`参数, 没有带上参数将会收到提示,此命令重要之功能在于比较。 + +```bash +comm: 文件2 没有被正确排序 +comm: 文件1 没有被正确排序 +``` + +比较结果 ``` [root@localhost text]# comm --nocheck-order aaa.txt bbb.txt @@ -86,7 +93,32 @@ eee 输出的第一列只包含在aaa.txt中出现的行,第二列包含在bbb.txt中出现的行,第三列包含在aaa.txt和bbb.txt中相同的行。各列是以制表符(\t)作为定界符。 - **交集** +### 有序比较 + +有序比较,先通过 sort 将文件内容排序 + +``` +[root@localhost ~]# sort aaa.txt > aaa1.txt +[root@localhost ~]# sort bbb.txt > bbb1.txt +``` + +有序比较结果: + +``` +[root@localhost ~]# comm aaa1.txt bbb1.txt +111 +222 + aaa + bbb + ccc +ddd +eee + hhh + jjj + ttt +``` + +### 交集 打印两个文件的交集,需要删除第一列和第二列: @@ -96,7 +128,7 @@ bbb ccc ``` - **求差** +**求差** 打印出两个文件中不相同的行,需要删除第三列: @@ -115,7 +147,7 @@ jjj `sed 's/^\t//'` 是将制表符`\t`删除,以便把两列合并成一列。 - **差集** +### 差集 通过删除不需要的列,可以得到aaa.txt和bbb.txt的差集: From 5b1641c996892f53ff283caa25621cf20e0bac10 Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Fri, 14 Sep 2018 22:17:51 +0800 Subject: [PATCH 0046/1126] Support windows system compilation. #51 --- build/compile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/compile.js b/build/compile.js index 594a6866c94..82b88692f4c 100644 --- a/build/compile.js +++ b/build/compile.js @@ -273,7 +273,7 @@ function CreateDatajs(dt_path,callback){ // 命令名称 json["n"] = title; // 命令路径 - json["p"] = md_path.replace(/\.md$/,'').replace(path_md,''); + json["p"] = md_path.replace(/\.md$/, '').replace(path_md, '').replace(/\\/g, '/'); // 命令描述 var des = str.match(/\n==={1,}([\s\S]*?)##/i); if (!des) { From 683713f4b71c06206ce639926e9faae5122666ed Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Fri, 14 Sep 2018 23:33:13 +0800 Subject: [PATCH 0047/1126] Fix #51 search path issue. --- template/js/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template/js/index.js b/template/js/index.js index b10bce75226..b4f2484b3a2 100644 --- a/template/js/index.js +++ b/template/js/index.js @@ -11,7 +11,7 @@ this.root_path = (function(){ var elm_path = $$('current_path'); var url = window.location.origin+window.location.pathname; - return elm_path?url.replace(elm_path.value,'').replace(/\/$/,''):''; + return elm_path ? url.replace(/\/c\/\w+\.html/, '').replace(/\/$/,''):''; })(); this.query = ''; // From 17c1c49ab66163ef55ebb08ca79e6acb3ab532b3 Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Sat, 15 Sep 2018 15:20:09 +0800 Subject: [PATCH 0048/1126] Fix #51 search root path issue. --- template/js/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template/js/index.js b/template/js/index.js index b4f2484b3a2..25282bac719 100644 --- a/template/js/index.js +++ b/template/js/index.js @@ -11,7 +11,7 @@ this.root_path = (function(){ var elm_path = $$('current_path'); var url = window.location.origin+window.location.pathname; - return elm_path ? url.replace(/\/c\/\w+\.html/, '').replace(/\/$/,''):''; + return elm_path ? url.replace(/\/(c\/)?\w+\.html/, '').replace(/\/$/, '') : ''; })(); this.query = ''; // From 8ba8a48989a2be0a1e47322880d8df78c088930b Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Thu, 27 Sep 2018 01:49:11 +0800 Subject: [PATCH 0049/1126] Modify website styles. --- template/footer.ejs | 2 +- template/styl/index.styl | 521 ++++++++++++++-------------- template/styl/mixins/css.styl | 19 + template/styl/mixins/highlight.styl | 53 --- template/styl/mixins/markdown.styl | 372 +++++++++++--------- template/styl/mixins/reset.styl | 20 +- 6 files changed, 499 insertions(+), 488 deletions(-) create mode 100644 template/styl/mixins/css.styl delete mode 100644 template/styl/mixins/highlight.styl diff --git a/template/footer.ejs b/template/footer.ejs index 35c68d9e9a5..130a354720f 100644 --- a/template/footer.ejs +++ b/template/footer.ejs @@ -2,7 +2,7 @@ 收藏本站请使用Ctrl+D或者Command+d
添加命令 | - 命令列表 | + 命令列表 | Chrome 插件
共搜集到 diff --git a/template/styl/index.styl b/template/styl/index.styl index f4a0d2212f7..fdcb2bcdb53 100644 --- a/template/styl/index.styl +++ b/template/styl/index.styl @@ -1,314 +1,311 @@ @import('mixins/reset.styl') -@import('mixins/highlight.styl') +@import('mixins/css.styl') @import('mixins/markdown.styl') mq-mobile = "screen and (max-width: 479px)" a.github-corner { - position fixed - z-index 9999 + position: fixed + z-index: 9999 + top: 0 + right: 0 + &:hover { + .octo-arm{ + animation: octocat-wave 560ms ease-in-out + } + } + svg { + fill #f1f1f1 + color #000 + position absolute top 0 + border 0 right 0 - &:hover{ - .octo-arm{ - animation:octocat-wave 560ms ease-in-out - } - } - svg{ - fill #f1f1f1 - color #000 - position absolute - top 0 - border 0 - right 0 - z-index 99 - width 70px - height 70px - } + z-index 99 + width 70px + height 70px + } } -a{ - transition: all .2s ease-in +a { + transition: all .2s ease-in } @keyframes octocat-wave{ - 0%,100%{-webkit-transform:rotate(0);transform:rotate(0)} - 20%,60%{-webkit-transform:rotate(-25deg);transform:rotate(-25deg)} - 40%,80%{-webkit-transform:rotate(10deg);transform:rotate(10deg)} + 0%,100%{-webkit-transform:rotate(0);transform:rotate(0)} + 20%,60%{-webkit-transform:rotate(-25deg);transform:rotate(-25deg)} + 40%,80%{-webkit-transform:rotate(10deg);transform:rotate(10deg)} } -.header{ - width 517px - margin 0 auto 0 - padding 0 10px - .logo{ - text-align center - padding-top 50px - padding-bottom 50px +.header { + width 517px + margin 0 auto 0 + padding 0 10px + .logo { + text-align center + padding-top 50px + padding-bottom 50px + } + .box{ + position relative + } + .search { + min-height 20px + position relative + display table + border-collapse separate + li,ul { + list-style none } - .box{ - position relative + #result { + .ok { + background:#f4f4f4; + } } - .search{ - min-height 20px - position relative - display table - border-collapse separate - li,ul{ - list-style none + .search-list { + position absolute + display none + z-index 999 + box-shadow 1px 1px 3px #ededed + border 1px solid #d5d5d5 + background #fff + min-width 100px + top 39px + width 100% + padding 5px + border-radius 5px 5px 5px 5px + li{ + line-height 23px + span{ + padding 0 8px + color #b9b9b9 } - #result{ - .ok{ - background:#f4f4f4; - } + } + a { + display block + padding 2px 6px 2px 6px + color #555555 + &:hover { + background-color #f2f2f2 } - .search-list{ - position absolute - display none - z-index 999 - box-shadow 1px 1px 3px #ededed - border 1px solid #d5d5d5 - background #fff - min-width 100px - top 39px - width 100% - padding 5px - border-radius 5px 5px 5px 5px - li{ - line-height 23px - span{ - padding 0 8px - color #b9b9b9 - } - } - a{ - display block - padding 2px 6px 2px 6px - color #555555 - &:hover{ - background-color #f2f2f2 - } - .kw{ - color #f00 - font-style inherit - font-weight bold - } - } + .kw { + color #f00 + font-style inherit + font-weight bold } - .query,.enter-input{ - display table-cell - transition border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s + } + } + .query, .enter-input { + display table-cell + transition border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s + } + .query { + resize: none; + position relative + z-index 2 + width 100% + height 40px + padding 6px 12px + font-size 14px + font-weight bold + line-height 1.42857143 + color #555 + background-color #fff + background-image none + border 1px solid $border-color + border-radius 5px 0 0 5px + -webkit-appearance: none; + &:focus { + z-index 99 + border-color #66afe9 + outline 0 + box-shadow inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6) + } + } + .enter-input { + width 1% + white-space nowrap + vertical-align middle + button { + margin 0 + left -1px + position relative + z-index 5 + display inline-block + padding 9px 23px + font-size 14px + font-weight bold + line-height 1.42857143 + text-align center + text-rendering auto + white-space nowrap + vertical-align middle + touch-action manipulation + cursor pointer + user-select none + background-image none + background-color #fff + border 1px solid transparent + border-collapse separate + border-radius 0 5px 5px 0 + border-color $border-color + color #333 + &:focus,&:active:focus{ + outline thin dotted + outline 5px auto -webkit-focus-ring-color + outline-offset -2px } - .query{ - resize: none; - position relative - z-index 2 - width 100% - height 40px - padding 6px 12px - font-size 14px - font-weight bold - line-height 1.42857143 - color #555 - background-color #fff - background-image none - border 1px solid $border-color - border-radius 5px 0 0 5px - -webkit-appearance: none; - &:focus{ - z-index 99 - border-color #66afe9 - outline 0 - box-shadow inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6) - } + &:active{ + color #333 + background-color #e6e6e6 + border-color #b4b4b4 + background-image none + box-shadow inset 0 8px 32px -8px rgba(0,0,0,0.3) } - .enter-input{ - width 1% - white-space nowrap - vertical-align middle - button{ - margin 0 - left -1px - position relative - z-index 5 - display inline-block - padding 9px 23px - font-size 14px - font-weight bold - line-height 1.42857143 - text-align center - text-rendering auto - white-space nowrap - vertical-align middle - touch-action manipulation - cursor pointer - user-select none - background-image none - background-color #fff - border 1px solid transparent - border-collapse separate - border-radius 0 5px 5px 0 - border-color $border-color - color #333 - &:focus,&:active:focus{ - outline thin dotted - outline 5px auto -webkit-focus-ring-color - outline-offset -2px - } - &:active{ - color #333 - background-color #e6e6e6 - border-color #b4b4b4 - background-image none - box-shadow inset 0 8px 32px -8px rgba(0,0,0,0.3) - } - &:focus{ - color #333 - background-color #e6e6e6 - border-color #999 - text-decoration none - } - &:hover{ - color #333 - background-color #e6e6e6 - border-color #b4b4b4 - } - } + &:focus{ + color #333 + background-color #e6e6e6 + border-color #999 + text-decoration none } + &:hover{ + color #333 + background-color #e6e6e6 + border-color #b4b4b4 + } + } } + } } .footer{ - text-align center - padding-top 31px - color #616161 - font-size 14px - font-weight 300 - border-top: 1px solid #efefef; - padding-bottom: 50px; - &.footer_index { - border-top: 0 - } + text-align center + padding-top 31px + color #616161 + font-size 14px + font-weight 300 + border-top: 1px solid #efefef; + padding-bottom: 50px; + &.footer_index { + border-top: 0 + } } -.header.header_list{ - width auto - position fixed - width 100% - background #fff - z-index 99 +.header.header_list { + width auto + position fixed + width 100% + background #fff + z-index 99 } .header_list{ - padding 10px 10px 10px 13px - border-bottom 1px solid #EEEEEE - .logo{ - float left - padding-top 3px - padding-bottom 0 - padding-right 24px - text-align left - svg{ - height 37px - width 136px - } - } - .search{ - max-width 517px - } - .footer{ - display none + padding 10px 10px 10px 13px + border-bottom 1px solid #EEEEEE + .logo{ + float left + padding-top 3px + padding-bottom 0 + padding-right 24px + text-align left + svg{ + height 37px + width 136px } + } + .search{ + max-width 517px + } + .footer{ + display none + } } .search_list{ - padding 79px 27px - a{ - font-size 16px - strong{ - font-weight bold - } - .kw{ - color #f00 - font-style inherit - font-weight bold - } - &:hover{ - .kw{ - color #333 - } - } + padding 79px 27px + a{ + font-size 16px + strong{ + font-weight bold } - li{ - padding 10px 0 10px 0 - list-style-type none - p{ - padding-top 5px - color #4F4F4F - } + .kw{ + color #f00 + font-style inherit + font-weight bold } - + &:hover{ + .kw{ + color #333 + } + } + } + li{ + padding 10px 0 10px 0 + list-style-type none + p { + padding-top 5px + color #4F4F4F + } + } } .hotlist{ - padding 79px 27px - a{ - font-size 16px - strong{ - font-weight bold - } - &:hover{ - } + padding 79px 27px + a{ + font-size 16px + strong{ + font-weight bold } - li{ - padding 5px 0 5px 0 - list-style-type none - p{ - padding-top 5px - color #4F4F4F - } + &:hover{ } + } + li{ + padding 5px 0 5px 0 + list-style-type none + p{ + padding-top 5px + color #4F4F4F } - + } } @media mq-mobile{ - .header{ - width inherit - .search .enter-input { - button{ - padding: 9px 14px; - } - } + .header{ + width inherit + .search .enter-input { + button{ + padding: 9px 14px; + } } - .header_list{ - .logo svg{ - width 96px - } - .search { - .query{ - line-height 31px - } - } + } + .header_list{ + .logo svg{ + width 96px } - .header_list .logo{ - float inherit - padding-right 10px - padding-top 8px - padding-bottom 14px - text-align center - } - div.markdown-body{ - padding: 10px 10px 10px 13px; - } - div.markdown-body .edit_btn + *{ - margin-top: 0 !important; + .search { + .query{ + line-height 31px + } } - div.markdown-body .edit_btn{ - top: 9px; - a{ - background #f1f1f1 - color #a3a3a3 - } + } + .header_list .logo{ + float inherit + padding-right 10px + padding-top 8px + padding-bottom 14px + text-align center + } + div.markdown-body{ + padding: 10px 10px 10px 13px; + } + div.markdown-body .edit_btn + *{ + margin-top: 0 !important; + } + div.markdown-body .edit_btn{ + top: 9px; + a{ + background #f1f1f1 + color #a3a3a3 } + } } \ No newline at end of file diff --git a/template/styl/mixins/css.styl b/template/styl/mixins/css.styl new file mode 100644 index 00000000000..c7802b23d1f --- /dev/null +++ b/template/styl/mixins/css.styl @@ -0,0 +1,19 @@ +.language-css, +.language-styl, +.language-less, +.language-scss, +.language-sass { + color: #005cc5; + .punctuation { + color: #24292e; + } + .selector { + color: #6749BA; + } + .property { + color: #005cc5; + } + .atrule { + color: #d73a49; + } +} \ No newline at end of file diff --git a/template/styl/mixins/highlight.styl b/template/styl/mixins/highlight.styl deleted file mode 100644 index d3a46694977..00000000000 --- a/template/styl/mixins/highlight.styl +++ /dev/null @@ -1,53 +0,0 @@ -.hljs{ - display:block;overflow-x:auto;padding:0.5em;color:#333;background:#f8f8f8 -} -.hljs-quote{ - font-style:italic; -} -.hljs-comment,.hljs-quote{ - color:#998; -} -.hljs-keyword,.hljs-selector-tag,.hljs-subst{ - color:#333;font-weight:bold -} -.hljs-number,.hljs-literal,.hljs-variable,.hljs-template-variable,.hljs-tag .hljs-attr{ - color:#008080 -} -.hljs-string,.hljs-doctag{ - color:#d14 -} -.hljs-title,.hljs-section,.hljs-selector-id{ - color:#900;font-weight:bold -} -.hljs-subst{ - font-weight:normal -} -.hljs-type,.hljs-class .hljs-title{ - color:#458;font-weight:bold -} -.hljs-tag,.hljs-name,.hljs-attribute{ - color:#000080;font-weight:normal -} -.hljs-regexp,.hljs-link{ - color:#009926 -} -.hljs-symbol,.hljs-bullet{ - color:#990073 -} -.hljs-built_in,.hljs-builtin-name{ - color:#0086b3 -} -.hljs-meta{ - color:#999;font-weight:bold -} -.hljs-deletion{ - background:#fdd -} -.hljs-addition{ - background:#dfd -} -.hljs-emphasis{ - font-style:italic -} -.hljs-strong{ - font-weight:bold} \ No newline at end of file diff --git a/template/styl/mixins/markdown.styl b/template/styl/mixins/markdown.styl index 925bcd9dcf0..ca78d37b459 100644 --- a/template/styl/mixins/markdown.styl +++ b/template/styl/mixins/markdown.styl @@ -1,164 +1,212 @@ -div.markdown-body - .edit_btn{ - position relative - right 0 - float right - top 48px - z-index 2 - .split{ - display inline-block - height 13px - vertical-align middle - width 1px - border-left 1px solid #dfdfdf - margin -1px 0 0 0 - } - a{ - text-decoration none - background #2196F3 - color #fff - border-radius 3px - padding 2px 5px - &:hover{ - color #333 - background #e6e6e6 - } - } +.markdown-body { + padding 70px 35px 30px 35px + word-wrap break-word + font-family "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif + font-size 14px + line-height 1.6 + color #333 + @media mq-mobile { + padding-right 0 + } + .edit_btn { + position relative + right 0 + float right + top 48px + z-index 2 + .split { + display inline-block + height 13px + vertical-align middle + width 1px + border-left 1px solid #dfdfdf + margin -1px 0 0 0 } - padding 70px 35px 30px 35px - word-wrap break-word - font-family "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif - font-size 14px - line-height 1.6 - color #333 - @media mq-mobile - padding-right 0 - &>*:first-child - margin-top 0 !important - strong - font-weight bold - hr - border-top 1px solid #CACACA - border-width 1px 0 0 0 - em - font-style italic - img - max-width 100% - h1,h2,h3,h4,h5,h6 - position relative - margin-top 1em - margin-bottom 16px - font-weight bold - line-height 1.4 - a - display none - &:hover a - display inline - color #000 - font-size 85% - h1,h2 - border-bottom 1px solid #eee - h1 - font-size 2.25em - line-height 1.2 - padding-bottom 0.3em - h2 - padding-bottom 0.3em - font-size 1.50em - line-height 1.225 - // border-bottom:1px solid #DEDEDE - blockquote - padding 0 15px - color #777 - border-left 4px solid #ddd - margin 0; - &>:last-child - margin-bottom 0 - &>:first-child - margin-top 0 - p,blockquote,ul,ol,dl,table,pre - margin-top 0; - margin-bottom 16px - ul,ol - padding-left 1.4em - list-style:initial - ol - list-style-type decimal - ol ol, ul ol - list-style-type lower-roman - ul ul ol, ul ol ol, ol ul ol, ol ol ol - list-style-type lower-alpha - pre - margin-top: 1.5em - margin-bottom: 1.5em - line-height: 1.3 - word-break: break-all - word-wrap: break-word - color: rgb(51, 51, 51) - border: none - position: relative - background-color #f7f7f9 - border-radius 3px - font "Source Code Pro", Consolas, Menlo, Monaco, "Courier New", monospace - font-size 0.93em - -webkit-overflow-scrolling touch - code - padding: 0.7em - overflow: auto - max-height: 35em - background-color transparent - color inherit - line-height 1.4 - display block - font-size 0.93em - box-sizing: border-box - border-radius: 0px - white-space: inherit - overflow-wrap: normal - word-wrap:normal!important - font: 12px "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace; - // code:before,code:after,tt:before,tt:after - // letter-spacing 0 - // content "" - code,tt - padding 0 - padding-bottom 2px - margin 0 3px - vertical-align top - background-color #EDEDF7 - border-radius 4px - padding-left 3px - padding-right 3px - font-size 14px - color #6F5990 - padding-top 2px - // code:before,code:after,tt:before,tt:after - // content "\00a0" - // vertical-align text-top - // display inline-block - // width 0px - table - width 100% - border-collapse collapse - border-spacing 0 - max-width 100% - display block - background-color transparent - th,td - border 1px solid #ddd - padding 4px 10px - th - font-weight bold - background #F3F3F3 - tr:nth-child(2n) - background-color #f8f8f8 - tbody - background #fff - -// markdown 增强样式 -.markdown-body - .task-list-item - padding 0 - li - list-style-type none \ No newline at end of file + a { + text-decoration none + background #2196F3 + color #fff + border-radius 3px + padding 2px 5px + &:hover{ + color #333 + background #e6e6e6 + } + } + } + + pre { + margin-top: 1.5em + margin-bottom: 1.5em + line-height: 1.3 + word-break: break-all + word-wrap: break-word + color: rgb(51, 51, 51) + border: none + position: relative + background-color: #f7f7f9 + border-radius: 3px + font: "Source Code Pro", Consolas, Menlo, Monaco, "Courier New", monospace + font-size: 0.93em + -webkit-overflow-scrolling: touch + code { + padding: 0.7em + overflow: auto + max-height: 35em + background-color transparent + color inherit + line-height 1.4 + display block + font-size 0.93em + box-sizing: border-box + border-radius: 0px + white-space: inherit + overflow-wrap: normal + word-wrap: normal!important + } + } + .class-name { + color: #000896; + } + .comment, + .quote { + color: #998; + } + + .keyword, + .selector-tag, + .subst { + color: #d73a49; + } + + .key, + .number, + .literal, + .variable, + .template-variable, + .tag .attr { + color: #008080; + } + + .string, .doctag { + color: #0065da; + } + + .title, + .section, + .selector-id { + color: #900; + font-weight: bold; + } + + .subst { + font-weight: normal; + } + + .type, + .class .title { + color: #458; + font-weight: bold; + } + + .function, .operator { + color: #000bc5; + } + .tag, + .name, + .attribute { + color: #002ade; + font-weight: normal; + } + + .url { + color: #3c04ff; + } + + .boolean { + color: #005cc5; + } + + .property { + color: #032f62; + } + + .null, .selector { + color: #005cc5; + } + + .constant { + color: #d73a49; + } + + .punctuation { + color: #A595A5; + } + .attr-name { + color: #8F4919; + } + .attr-value { + color: #13239F; + } + .tag { + .punctuation { + color: #A595A5; + } + .attr-name { + color: #8F4919; + } + .attr-value { + color: #13239F; + } + .attr-value .punctuation, + .script-punctuation { + color: #A595A5; + } + .script .keyword { + color: #090080; + } + .language-javascript { + color: #6f42c1; + } + } + + .regexp, .regex, + .link { + color: #009926; + } + + .symbol, + .bullet { + color: #990073; + } + + .built_in, + .builtin-name { + color: #0086b3; + } + + .meta { + color: #999; + font-weight: bold; + } + + .deletion { + background: #fdd; + } + + .addition { + background: #dfd; + } + + .emphasis { + font-style: italic; + } + + .strong { + font-weight: bold; + } + .shebang, .important { + color: #FF1717; + } +} \ No newline at end of file diff --git a/template/styl/mixins/reset.styl b/template/styl/mixins/reset.styl index 56f43e43945..8c5aca08bb7 100644 --- a/template/styl/mixins/reset.styl +++ b/template/styl/mixins/reset.styl @@ -1,22 +1,22 @@ body,html,ul,li,p{ - margin 0 - padding 0 + margin 0 + padding 0 } body,html{ - font-size 12px - font-family 'HanHei SC','PingFang SC','Helvetica Neue','Helvetica','STHeitiSC-Light','Arial',sans-serif + font-size 12px + font-family 'HanHei SC','PingFang SC','Helvetica Neue','Helvetica','STHeitiSC-Light','Arial',sans-serif } html{ - -webkit-tap-highlight-color rgba(0,0,0,0) + -webkit-tap-highlight-color rgba(0,0,0,0) } a { - text-decoration none - &:hover{ - color #333 - } + text-decoration none + &:hover{ + color #333 + } } * { - box-sizing border-box + box-sizing border-box } $border-color = #D5D5D5 \ No newline at end of file From 8df9b8908f4b2721492a9da7a264acd57da600d7 Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Thu, 27 Sep 2018 01:50:30 +0800 Subject: [PATCH 0050/1126] Refactor the build script. --- build/build.js | 306 +++++++ build/compile.js | 396 ---------- build/crawler.js | 160 ---- build/deploy.js | 43 +- dist/data.json | 2 +- package-lock.json | 1926 +++++++++------------------------------------ package.json | 31 +- 7 files changed, 698 insertions(+), 2166 deletions(-) create mode 100644 build/build.js delete mode 100644 build/compile.js delete mode 100644 build/crawler.js diff --git a/build/build.js b/build/build.js new file mode 100644 index 00000000000..360e0b4c8cf --- /dev/null +++ b/build/build.js @@ -0,0 +1,306 @@ +const path = require('path'); +const ejs = require('ejs'); +const FS = require('fs-extra'); +const marked = require('marked'); +const stylus = require('stylus'); +const Prism = require('prismjs'); +const loadLanguages = require('prismjs/components/'); +const UglifyJS = require("uglify-js"); +const colors = require('colors-cli/toxic'); + +const renderer = new marked.Renderer(); +renderer.heading = (text, level) => { + if (/[\u4E00-\u9FA5]/i.test(text)) { + return '' + text + ''; + } else { + var escapedText = text.toLowerCase().replace(/[^\w]+/g, '-'); + return '' + text + ''; + } +} + +marked.setOptions({ + renderer: renderer, + gfm: true, + tables: true, + breaks: false, + pedantic: false, + sanitize: false, + smartLists: true, + smartypants: false, + highlight: (code, lang, callback) => { + if (/(tex)$/.test(lang)) lang = 'latex'; + if (/(h)$/.test(lang)) lang = 'c'; + if (/(js)$/.test(lang)) lang = 'javascript'; + if (/(tsx)$/.test(lang)) lang = 'jsx'; + if (/(bat)$/.test(lang)) lang = 'batch'; + if (/(py)$/.test(lang)) lang = 'python'; + if (/(rb)$/.test(lang)) lang = 'ruby'; + if (/(gitconfig|editorconfig|gitmodules)$/.test(lang)) lang = 'ini'; + if (/(yml)$/.test(lang)) lang = 'yaml'; + if (/(styl)$/.test(lang)) lang = 'stylus'; + if (/(stylelintrc|postcssrc)$/.test(lang)) lang = 'json'; + if (/(sh|shell|bash|bats|cgi|command|fcgi|ksh|sh.in|tmux|tool|zsh|bash_history|bash_logout|bash_profile|bashrc|cshrc|login|profile|zlogin|zlogout|zprofile|zshenv|zshrc)$/.test(lang)) lang = 'bash'; + if (/(ps1|psm1)$/.test(lang)) lang = 'powershell'; + if (/^(html|htm|xml|ejs)/.test(lang)) lang = 'html'; + lang = lang ? lang : 'bash'; + loadLanguages([lang]); + let html = code; + if (Prism.languages[lang]) { + html = Prism.highlight(code, Prism.languages[lang], lang); + } + return callback('', html); + } +}); + +const deployDir = path.resolve(process.cwd(), '.deploy'); +const faviconPath = path.resolve(process.cwd(), 'template', 'img', 'favicon.ico'); +const rootIndexJSPath = path.resolve(process.cwd(), 'template', 'js', 'index.js'); +const dataJsonPath = path.resolve(process.cwd(), 'dist', 'data.json'); +const cssPath = path.resolve(deployDir, 'css', 'index.css'); + +let markdownIndexData = []; + +mkdirs(deployDir) + .then(dir => emptyDir(dir)) + .then(dir => { + ensureDir(path.resolve(dir, 'img')); + ensureDir(path.resolve(dir, 'js')); + ensureDir(path.resolve(dir, 'css')); + ensureDir(path.resolve(dir, 'c')); + }) + .then(() => FS.copySync(faviconPath, path.resolve(deployDir, 'img', 'favicon.ico'))) + .then(() => FS.readFileSync(rootIndexJSPath)) + .then((data) => { + FS.outputFileSync(path.resolve(deployDir, 'js', 'index.js'), UglifyJS.minify(data.toString()).code) + }) + .then(dir => readMarkdownPaths(path.resolve(process.cwd(), 'command'))) + .then(dirs => createDataJSON(dirs)) + .then(data => { + FS.outputFileSync(dataJsonPath, JSON.stringify(data.json)); + FS.outputFileSync(path.resolve(deployDir, 'js', 'dt.js'), `var linux_commands=${JSON.stringify(data.data)}`); + markdownIndexData = data.data; + }) + .then(() => createTmpToHTML( + path.resolve(process.cwd(), 'template', 'index.ejs'), + path.resolve(deployDir, 'index.html'), + { + p: '/index.html', + n: 'Linux命令搜索引擎', + d: '最专业的Linux命令大全,内容包含Linux命令手册、详解、学习,值得收藏的Linux命令速查手册。', + command_length: markdownIndexData.length + } + )) + .then(() => createTmpToHTML( + path.resolve(process.cwd(), 'template', 'list.ejs'), + path.resolve(deployDir, 'list.html'), + { + p: '/list.html', + n: '搜索', + d: '最专业的Linux命令大全,命令搜索引擎,内容包含Linux命令手册、详解、学习,值得收藏的Linux命令速查手册。', + command_length: markdownIndexData.length + } + )) + .then(() => createTmpToHTML( + path.resolve(process.cwd(), 'template', 'hot.ejs'), + path.resolve(deployDir, 'hot.html'), + { + p: '/hot.html', + n: '搜索', + d: '最专业的Linux命令大全,命令搜索引擎,内容包含Linux命令手册、详解、学习,值得收藏的Linux命令速查手册。', + arr: markdownIndexData, + command_length: markdownIndexData.length + } + )) + .then(() => { + markdownIndexData.forEach(async (item, idx) => { + item.command_length = markdownIndexData.length; + await createTmpToHTML( + path.resolve(process.cwd(), 'template', 'details.ejs'), + path.resolve(deployDir, 'c', `${item.n}.html`), + item, + path.resolve(process.cwd(), 'command'), + ); + }) + }) + .then(() => { + return createStylToCss( + path.resolve(process.cwd(), 'template', 'styl', 'index.styl'), + path.resolve(deployDir, 'css', 'index.css'), + ); + }) + .then((css) => FS.outputFileSync(cssPath, css)) + .then(() => console.log(` ${'→'.green} ${markdownIndexData.length}`)) + .catch((err) => { + if (err && err.message) { + console.log(`\n ERROR :> ${err.message.red_bt}\n`) + } + }); + +/** + * Create a directory + * @param {String} dir + */ +function mkdirs(dir) { + return new Promise((resolve, reject) => { + FS.ensureDir(dir, err => { + err ? reject(err) : resolve(dir); + }) + }); +} + +/** + * Empty a directory + * @param {String} dir + */ +function emptyDir(dir) { + return new Promise((resolve, reject) => { + FS.emptyDir(dir, err => { + err ? reject(err) : resolve(dir); + }) + }); +} + +/** + * Ensures that the directory exists. + * @param {String} dir + */ +function ensureDir(dir) { + return new Promise((resolve, reject) => { + try { + FS.ensureDirSync(dir); + resolve(dir); + } catch (err) { + reject(err); + } + }); +} + +/** + * [createStylToCss 生成CSS] + * @param {[type]} stylPath stylus path + * @param {[type]} cssPath css path + */ +function createStylToCss(stylPath) { + return new Promise((resolve, reject) => { + try { + const stylStr = FS.readFileSync(stylPath, 'utf8'); + stylus(stylStr.toString()) + .set('filename', stylPath) + .set('compress', true) + .render((err, css) => { + if (err) throw err; + resolve(css); + }); + } catch (err) { + reject(err); + } + }); +} + +/** + * + * @param {String} fromPath ejs path + * @param {String} toPath html path + */ +function createTmpToHTML(fromPath, toPath, desJson, mdPath) { + return new Promise((resolve, reject) => { + try { + let relative_path = ''; + const current_path = toPath.replace(new RegExp(`${deployDir}`), ''); + const tmpStr = FS.readFileSync(fromPath); + let mdPathName = ''; + if (mdPath) { + // CSS/JS 引用相对地址 + relative_path = '../'; + mdPathName = `/command/${desJson.n}.md`; + } + // 生成 HTML + let html = ejs.render(tmpStr.toString(), { + filename: fromPath, + relative_path, // 当前文件相对于根目录的相对路径 + md_path: mdPathName || '', // markdown 路径 + current_path, // 当前 html 路径 + describe: desJson ? desJson : {}, // 当前 md 的描述 + }, { filename: fromPath }); + + if (mdPath) { + const READMESTR = FS.readFileSync(path.resolve(mdPath, `${desJson.n}.md`)); + marked(READMESTR.toString(), (err, mdhtml) => { + if (err) return reject(err); + html = html.replace(/{{content}}/, mdhtml); + FS.outputFileSync(toPath, html); + console.log(` ${'→'.green} ${toPath.replace(process.cwd(), '')}`); + resolve(html); + }); + } else { + FS.outputFileSync(toPath, html); + console.log(` ${'→'.green} ${toPath.replace(process.cwd(), '')}`); + resolve(html); + } + } catch (err) { + reject(err); + } + }); +} + +/** + * Ensures that the directory exists. + * @param {String} pathArr + */ +function createDataJSON(pathArr) { + return new Promise((resolve, reject) => { + try { + const commandData = {}; + const indexes = []; + pathArr.forEach((mdPath, i) => { + const json = {} + const con = FS.readFileSync(mdPath); + const str = con.toString(); + let title = str.match(/[^===]+(?=[===])/g); + title = title[0] ? title[0].replace(/\n/g, '') : title[0]; + title = title.replace(/\r/, '') + // 命令名称 + json["n"] = title; + // 命令路径 + json["p"] = `/${path.basename(mdPath, '.md').replace(/\\/g, '/')}`; + // 命令描述 + let des = str.match(/\n==={1,}([\s\S]*?)##/i); + if (!des) { + throw `格式错误: ${mdPath}`; + } + des = des[1] ? des[1].replace(/\n/g, '') : des[1]; + des = des.replace(/\r/g, '') + json["d"] = des; + indexes.push(json); + commandData[title] = json; + }) + resolve({ + json: commandData, + data: indexes + }); + } catch (err) { + reject(err); + } + }); +} + +/** + * 返回 MD 所有路径的 Array + * @param {String} filepath + */ +function readMarkdownPaths(filepath) { + return new Promise((resolve, reject) => { + try { + let pathAll = []; + const files = FS.readdirSync(filepath); + for (let i = 0; i < files.length; i++) { + if (/\.md$/.test(files[i])) { + pathAll.push(path.join(filepath, files[i])); + } + } + resolve(pathAll); + } catch (err) { + reject(err); + } + }); +} diff --git a/build/compile.js b/build/compile.js deleted file mode 100644 index 82b88692f4c..00000000000 --- a/build/compile.js +++ /dev/null @@ -1,396 +0,0 @@ -var exec = require('child_process').exec; -var fs = require('fs'); -var ejs = require('ejs'); -var path = require('path'); -var marked = require('marked'); -var watch = require('watch'); -var stylus = require('stylus') -var highlight = require('highlight.js') -var UglifyJS = require("uglify-js"); -var renderer = new marked.Renderer(); -var color = require('colors-cli/safe'); -var error = color.red.bold; -var warn = color.yellow; -var notice = color.blue; -var success = color.green; - -// console.log("该行代码所在的目录::",__dirname); -// console.log("当前运行的的根目录::",path.dirname(__dirname)); -// console.log("当前目录名字::",path.basename(process.cwd())); -// console.log("当前目录::",process.cwd()); - -renderer.heading = function (text, level) { - if(/[\u4E00-\u9FA5]/i.test(text)){ - return ''+text+''; - }else{ - var escapedText = text.toLowerCase().replace(/[^\w]+/g, '-'); - return ''+text+''; - } -} - -marked.setOptions({ - renderer: renderer, - gfm: true, - tables: true, - breaks: false, - pedantic: false, - sanitize: false, - smartLists: true, - smartypants: false, - highlight: function (code, lang, callback) { - lang = lang?lang:"bash"; - return callback('',highlight.highlight(lang,code).value); - } - // highlight: function (code, lang, callback) { - // if(lang){ - // return highlight.highlight(lang,code).value; - // // return callback('',highlight.highlight(lang,code).value); - // }else{ - // return highlight.highlightAuto(code).value; - // // return callback('',highlight.highlightAuto(code).value); - // } - // } -}); - -// 根目录 -// var path_root = path.dirname(__dirname); -var path_root = process.cwd(); - - -// 删除文件夹 -exec('rm -rf .deploy'); - -// .deploy -// 当前项目根目录 -// 生成 项目所需的文件 -CreateDatajs('./.deploy/js/dt.js',function(dt_path,arr){ - - - // 拷贝 favicon.ico 文件 start - var filetopath = path.join(process.cwd(),'/template/img/favicon.ico'); - var topath = '.deploy/img/favicon.ico' - - mkdirsSync(path.join(process.cwd(),'.deploy/img/')); - // 创建读取流 - readable = fs.createReadStream( filetopath ); - // 创建写入流 - writable = fs.createWriteStream(topath); - // 通过管道来传输流 - readable.pipe( writable); - console.log(success(" → ")+topath + ''); - // 拷贝 favicon.ico 文件 end - - - CreateJS('/template/js/index.js','/.deploy/js/index.js') - - CreateStyl('/template/styl/index.styl','/.deploy/css/index.css') - - // 首页生成 - ReadTmpToHTML('/template/index.ejs','/.deploy/index.html',null,{ - 'p':'/index.html', - 'n':'Linux命令搜索引擎', - 'd':'最专业的Linux命令大全,内容包含Linux命令手册、详解、学习,值得收藏的Linux命令速查手册。', - 'command_length':arr.length - }); - ReadTmpToHTML('/template/list.ejs','/.deploy/list.html',null,{ - p:'/list.html', - n:'搜索', - d: '最专业的Linux命令大全,命令搜索引擎,内容包含Linux命令手册、详解、学习,值得收藏的Linux命令速查手册。', - command_length: arr.length - }); - - ReadTmpToHTML('/template/hot.ejs','/.deploy/hot.html',null,{ - p:'/hot.html', - n:'搜索', - d:'最专业的Linux命令大全,命令搜索引擎,内容包含Linux命令手册、详解、学习,值得收藏的Linux命令速查手册。', - arr: arr, - command_length: arr.length - }); - // 文章批量生成 - arr.forEach(function(itm,idx){ - var ejstpm = path.join('/template/',itm.p); - var md_path = path.join('/command',itm.p); - var dep = path.join('/.deploy/c',itm.p); - itm.command_length = arr.length; - ReadTmpToHTML('/template/details.ejs', dep+'.html' ,md_path+'.md', itm ,arr) - }); - - console.log(success(" → "),arr.length) - -}) - -function copy(src, dst) { - fs.createReadStream(src).pipe(fs.createWriteStream(dst)); -} - - -// // 监听实时编译 -// watch.watchTree(path.join(path.dirname(__dirname),'/'), function (f, curr, prev) { -// if (typeof f == "object" && prev === null && curr === null) { -// console.log(success(" → :watching ") + '/template/'); -// // Finished walking the tree -// } else if (prev === null) { - -// // f is a new file -// } else if (curr.nlink === 0) { -// // f was removed -// } else { - -// if(/\.styl$/.test(f)){ -// CreateStyl('/template/styl/index.styl','/.deploy/css/index.css') -// }else if(/\.js$/.test(f)){ - -// CreateJS('/template/js/index.js','/.deploy/js/index.js') - -// }else if(/\.ejs$/.test(f)){ -// // 首页生成 -// ReadTmpToHTML('/template/index.ejs','/.deploy/index.html'); -// ReadTmpToHTML('/template/list.ejs','/.deploy/list.html'); - -// }else if(/\.md$/.test(f)){ -// var mdp = f.replace(path_root,''); -// var dep = path.join('/.deploy/',mdp); -// ReadTmpToHTML('/template/details.ejs',dep.replace('.md','.html'),mdp); -// } -// } -// }) - - -function CreateJS(from_path,to_path){ - - // 生成到指定目录 - var new_to_path = path.join(path.dirname(__dirname),to_path); - // 循环创建目录 - mkdirsSync(path.dirname(new_to_path)); - var js_code = UglifyJS.minify(path.join(path_root,from_path), { mangle: { toplevel: true } }); - fs.writeFileSync(new_to_path, js_code.code); - console.log(success(" → ")+to_path + ''); - -} - -/** - * [ReadTmpToHTML ejs 模板转换成HTML] - * @param {[type]} from_path [模版来源地址] - * @param {[type]} to_path [生成到指定的位置] - * @param {[type]} md_path [Markdown的路径] // 给md地址就生产详情页面 - * @param {[type]} des_json [页面信息 json 格式] - * @param {[type]} arr [] - */ -function ReadTmpToHTML(from_path,to_path,md_path,des_json, total_pages){ - var tmp_path = path.join(path.dirname(__dirname),from_path); - if(!exists(tmp_path)) return console.log("\n → error: 模板文件 "+tmp_path+" 不存在") - var tmp_str = fs.readFileSync(tmp_path); - tmp_str = tmp_str.toString(); - - var relative_path = ''; - var current_path = to_path.replace(/^\/\.deploy/,''); - if(md_path){ - //CSS/JS 引用相对地址 - relative_path = path.relative(md_path.toString(),'/'); - relative_path = relative_path.replace(/\.\.$/,''); - } - // 生成 HTML - var html = ejs.render(tmp_str,{ - filename: tmp_path, - relative_path:relative_path, // 当前文件相对于根目录的相对路径 - md_path:md_path?md_path:'', // markdown 路径 - current_path:current_path, // 当前 html 路径 - describe:des_json?des_json:{}, // 当前 md 的描述 - }); - // 生成到指定目录 - var new_to_path = path.join(path.dirname(__dirname),to_path); - // 循环创建目录 - !exists(path.dirname(new_to_path)) && mkdirsSync(path.dirname(new_to_path)); - - if(md_path){ - var new_md_path = path.join(path.dirname(__dirname),md_path); - var README_str = fs.readFileSync(new_md_path); - marked(README_str.toString(),function(err,md_html){ - if (err) return console.log(error(' → '+md_path+" 转换成HTML失败!")); - - html = html.split('{{content}}') - html.splice(1, 0, md_html); - html = html.join('') - // html = html.replace('{{content}}',md_html); - fs.writeFileSync(new_to_path,html); - console.log(success(" → ")+to_path + ''); - }) - }else{ - html = html.toString(); - fs.writeFileSync(new_to_path, html.replace(/\n/g,'')); - console.log(success(" → ")+to_path + ''); - } -} - - - - -/** - * [CreateStyl 生成CSS] - * @param {[type]} styl_path [description] - * @param {[type]} css_path [description] - */ -function CreateStyl(styl_path,css_path){ - var new_css_path = path.join(path.dirname(__dirname),css_path); - styl_path = path.dirname(__dirname) + styl_path; - // var paths = [ - // path.dirname(__dirname) , path.dirname(__dirname) + '/' - // ]; - var styl_str = fs.readFileSync(styl_path, 'utf8'); - stylus(styl_str.toString()) - .set('filename', styl_path ) - .set('compress', true) - .render(function(err, css){ - if (err) throw err; - // 循环创建目录 - mkdirsSync(path.dirname(new_css_path)); - fs.writeFileSync(new_css_path, css); - // console.log(err,css); - console.log(success(" → ")+styl_path + ''); - }); -} - -// 生成数据索引JS -function CreateDatajs(dt_path,callback){ - // 获取 markdown文件所在的目录 - var path_md = path.join(path.dirname(__dirname),'command'); - var path_dist = path.join(path.dirname(__dirname),'dist'); - if(!exists(path_md)) return console.log("\n → error: 文件夹 "+path_md+" 不存在 \n ") - // 获取 markdown 目录的集合 - var path_arr = readMDSync(path_md); - path_arr = sortLength(path_arr); - var indexes = []; - - var command_data={} - path_arr.forEach(function(md_path,i){ - var json = {} - var con = fs.readFileSync(md_path); - var str = con.toString(); - var title = str.match(/[^===]+(?=[===])/g); - - title = title[0]?title[0].replace(/\n/g,''):title[0]; - title = title.replace(/\r/,'') - // 命令名称 - json["n"] = title; - // 命令路径 - json["p"] = md_path.replace(/\.md$/, '').replace(path_md, '').replace(/\\/g, '/'); - // 命令描述 - var des = str.match(/\n==={1,}([\s\S]*?)##/i); - if (!des) { - console.log('格式错误:', error(md_path)); - } - des = des[1]?des[1].replace(/\n/g,''):des[1]; - des = des.replace(/\r/g,'') - json["d"] = des; - indexes.push(json) - - command_data[title] = json; - }) - mkdirsSync(path.dirname(dt_path)); - - console.log("path.dirname(__dirname)",path.dirname(__dirname)) - //生成数据文件 - fs.writeFile(dt_path, 'var linux_commands='+JSON.stringify(indexes) , 'utf8',function(err){ - console.log(success("\n → ")+"生成数据成功!"+dt_path+" \n "); - path_dist = path.join(path_dist,'data.json') - fs.writeFile(path_dist, JSON.stringify(command_data) , 'utf8',function(err){ - console.log(success("\n → ")+"生成数据成功!"+path_dist+" \n "); - callback&&callback(dt_path,indexes); - }); - - }); -} - -// 按长度排序 -function sortLength(arr){ - var compare = function (x, y) {//比较函数 - x = path.basename(x,'.md'); - y = path.basename(y,'.md'); - if (x.length < y.length) { - return -1; - } else if (x.length > y.length) { - return 1; - } else { - return 0; - } - } - return arr.sort(compare) -} - -// 同步循环创建所有目录 resolvePath -function mkdirsSync(dirpath, mode, callback) { - if(fs.existsSync(dirpath)){ - callback&&callback(dirpath); - return true; - }else{ - if(mkdirsSync(path.dirname(dirpath), mode)){ - fs.mkdirSync(dirpath, mode, callback); - callback&&callback(dirpath); - return true; - }else{ - callback&&callback(dirpath); - } - } -}; - -var fixture = path.join.bind(path, __dirname, 'template'); - -function cp(src, dest, cb) { - // yield support - if ('function' != typeof cb) return thunk; - - var complete = false; - var read = fs.createReadStream(src); - var write = fs.createWriteStream(dest); - - write.on('error', done); - write.on('close', done); - read.on('error', done); - read.pipe(write); - - // done callback - function done(err) { - if (!complete) { - complete = true; - read.destroy(); - write.destroy(); - cb(err); - } - } - - // thunk-ified - function thunk(done) { - cp(src, dest, done); - } -} - -//返回 MD 所有路径的 Array -function readMDSync(filepath){ - if(!exists(filepath)) return []; - var str = '',files = fs.readdirSync(filepath); - for (var i = 0; i < files.length; i++) { - var path_c = path.join(filepath,files[i]); - if( isDir(path_c) ) { - str += readMDSync(path_c) + ','; - } - else if(/\.(md)$/.test(files[i])) str += path_c + ','; - }; - str = str.replace(/^\*|\,*$/g,''); - return str.split(','); -} -//写文件 -function writeSync(filepath, content, callback) { - mkdirsSync(path.dirname(filepath)); - return fs.writeFileSync(filepath, content, callback); -}; - -//写文件 -function write(filepath, content) { - return fs.writeFile(filepath, content); -}; - -//判断是不是目录 -function isDir(_path){return exists(_path) && fs.statSync(_path).isDirectory();} - -//检查指定路径的文件或者目录,是否存在 -function exists(_path){return fs.existsSync(_path);} \ No newline at end of file diff --git a/build/crawler.js b/build/crawler.js deleted file mode 100644 index 5d0622a3e33..00000000000 --- a/build/crawler.js +++ /dev/null @@ -1,160 +0,0 @@ -var request = require('superagent'); -var cheerio = require('cheerio'); -var toMarkdown = require('to-markdown'); -var path = require('path'); -var process = require('process'); -var fs = require('fs'); -var color = require('colors-cli/safe'); -var error = color.red.bold; -var warn = color.yellow; -var notice = color.blue; -var success = color.green; - -var param = process.argv.slice(2); - - -// 需要爬的命令 -// var arr = ["find"]; -// var arr = []; -var arr = []; -// var arr = ["arch","axel","chsh","comm","compress","csplit","cut","dd","dig","dmesg","domainname","du","enable","fdisk","file","ftp","htpasswd","id","insmod","losetup","ls","lynx","mail","mkinitrd","netstat","nslookup","od","passwd","pgrep","ping","quota","restorecon","rmmod","screen","sed","semanage","smbclient","split","startx","sudo","tee","tftp","wall","wget","which","accept","apt-get","apt-key","apt-sortpkgs","aptitude","awk","clockdiff","cupsenable","dnf","dpkg-reconfigure","dpkg","expr","gcc","gdb","ldconfig","ldd","lpadmin","make","ngrep","nm","ntpdate","objdump","perl","php","protoize","pssh","pstack","readelf","reject","rsync","speedtest-cli","tempfile","test","vdfuse","xargs"]; - -// 还没有爬到的命令:--> ["bye","uucico","uucp","uupick","uuto","git","gitview","mattrib","mc","mcopy","mdel","mdir","mmove","mread","mren","mshowfat","mtoolstest","rhmask","tmpwatch","lndir","mcd","mdeltree","mdu","mlabel","mmd","mmount","mrd","mzip","rmt","cfdisk","ext2ed","fsck.ext2","fsck.minix","fsconf","mbadblocks","mformat","mkdosfs","mkfs.ext2","mkfs.minix","mkfs.msdos","mpartition","sfdisk","symlinks","apmd","aumix","eval","fbset","kbdconfig","liloconfig","minfo","mkkickstart","modinfo","mouseconfig","rdate","setconsole","setenv","setup","sndconfig","SVGAText Mode","timeconfig","adduser","fwhois","gitps","newgrp","procinfo","rwho","sliplogin","suspend","swatch","userconf","vlock","whois","mtype","rgrep","dip","getty","mingetty","ppp-off","smbd(samba daemon)","uulog","uustat","uux","dnsconf","efax","httpd","minicom","netconf","netconfig","pppstats","samba","setserial","shapecfg(shaper configuration)","smbd(samba daemon)","statserial(status ofserial port)","testparm(test parameter)","tty(teletypewriter)","uuname","wall(write all)","ytalk","smbclient(samba client)","pppsetup","dumpkeys","loadkeys","MAKEDEV","rdev","setleds","archive","ctlinnd","getlist","inncheck","mailconf","messages","metamail","mutt","nntpget","pine","slrn","X WINDOWS SYSTEM","reconfig","startx(start X Window)","Xconfigurator","XF86Setup" ,"nc/netcat","locate/slocate","get_module"] -// 已经存在的命令:----> [] -// 名字不对的命令:----> ["ar","locate","slocate","clock","resize","cu","nc"] -// 网站中没有的命令 -var empty_command = []; -// 已经爬过/存在的命令 -var exists_command = []; -// 名字不对的命令 -var name_command = []; -var arr_len = 0; - -arr[arr_len]&&CreatMarkdownQuery(arr[arr_len]); - - -function CreatMarkdownQuery(query){ - var url = 'http://man.linuxde.net/'+query; - var new_to_path = path.join(path.dirname(__dirname),'command/'+query+'.md') - - - if(!arr[arr_len]){ - console.log('还没有爬到的命令:-->', JSON.stringify(empty_command) ) - console.log('已经存在的命令:---->', JSON.stringify(exists_command) ) - console.log('名字不对的命令:---->', JSON.stringify(name_command) ) - return; - }; - - ++arr_len; - - // 文件已经存在 - if(exists( new_to_path )) { - exists_command.push(query) - CreatMarkdownQuery(arr[arr_len]); - return console.log(" → error:文件存在 ",new_to_path) - } - - request.get(url).end(function(err, res){ - - if(arr[arr_len]){ - CreatMarkdownQuery(arr[arr_len]); - } - // console.log("res.text:::--->",res.text) - - if(/命令还没有被录入!/.test(res.text)){ - empty_command.push(query) - return console.log(" → error: 没有爬到数据,命令" + query +'不存在!') - } - var $ = cheerio.load(res.text); - var description = $('title').text(); - description = description.replace(/(.*)命令用法详解:/,'') - - var title = $('.main h1.l'); - title = title.text(); - title = title.replace(/命令$/,''); - - - if(query!==title){ - name_command.push(query) - return console.log(" → error: 名字不对的命令 ",query) - } - - if(!title){ - empty_command.push(query); - return console.log(error(" → error: 命令" + query +'不存在!标题为空')) - } - var content = $('#content-index').remove() - content = $('.main .post_bd').html(); - var md_str = toMarkdown(content); - - md_str = md_str.replace(/linuxde.net/g,'jsdig.com'); - md_str = md_str.replace(/linuxde/g,'jsdigname'); - md_str = md_str.replace(/\*\*(.*?)\*\*/g,' **$1** '); - md_str = md_str.replace(/^\s\*\*(.*?)\*\*/g,'**$1**'); - md_str = title + '\n===\n'+description+'\n\n## 补充说明\n\n' + md_str; - md_str = md_str.replace(/
/gi,'```\n')
-        md_str = md_str.replace(/<\/pre>/gi,'\n```')
-        md_str = md_str.replace(//gi,'')
-        md_str = md_str.replace(/<\/span>/gi,'')
-        md_str = md_str.replace(/\[[^\]]*\]\(.*?\)/g,function(str){
-            str.replace(/\[(.*?)\]/,'');
-            return RegExp.$1;
-        })
-        // console.log("md_str--->",md_str)
-        md_str += '\n\n\n'
-
-        fs.writeFileSync(new_to_path, md_str ,'utf-8');
-        console.log(success(" → OK!"),new_to_path)
-    });
-}
-
-
-
-/**
- * 指定URL爬
- */
-
-
-// var from_path = param[0];
-// var to_path = param[1];
-// if(!from_path) return console.error("请输入请求参数!");
-// if(!to_path) return console.error("请输入写入目标目录!");
-// CreatMarkdown(from_path,to_path)
-
-function CreatMarkdown(from_path,to_path){
-
-    var new_to_path = path.join(path.dirname(__dirname),to_path)
-    if(exists(new_to_path)) return console.log(" → error: 目录存在 ",to_path,'\n')
-
-    new_to_path = path.dirname(new_to_path)
-    mkdirsSync(new_to_path,0777,function(){
-
-        request.get(from_path).end(function(err, res){
-            // console.log("to_path::",to_path)
-            fs.writeFileSync(to_path, toMarkdown(res.text).toString() ,'utf-8');
-            console.log(" → ",to_path)
-        });
-
-    });
-}
-
-
-// 同步循环创建所有目录 resolvePath
-function mkdirsSync(dirpath, mode, callback) {
-    if(fs.existsSync(dirpath)){
-        callback&&callback(dirpath);
-        return true;
-    }else{
-        if(mkdirsSync(path.dirname(dirpath), mode)){
-            fs.mkdirSync(dirpath, mode, callback);
-            callback&&callback(dirpath);
-            return true;
-        }else{
-            callback&&callback(dirpath);
-        }
-    }
-};
-
-
-//检查指定路径的文件或者目录,是否存在
-function exists(_path){return fs.existsSync(_path);}
\ No newline at end of file
diff --git a/build/deploy.js b/build/deploy.js
index 7d00995123d..10c094ffe27 100644
--- a/build/deploy.js
+++ b/build/deploy.js
@@ -1,28 +1,21 @@
-var exec = require('child_process').exec;
-var ghpages = require('gh-pages');
-var loading =  require('loading-cli');
-var path = require('path');
-var fs = require('fs');
-var color = require('colors-cli/safe');
-var error = color.red.bold;
-var warn = color.yellow;
-var notice = color.blue;
-var success = color.green;
+const ghpages = require('gh-pages');
+const loading = require('loading-cli');
+const path = require('path');
+const fs = require('fs');
+const color = require('colors-cli/safe');
 
-var deploy_path = path.join(process.cwd(), '.deploy');
+const deploy_path = path.join(process.cwd(), '.deploy');
 
-if(fs.existsSync(deploy_path)){
-    var load = loading('  Pushing code!!')
-    load.start();
-    ghpages.publish(deploy_path,{ 
-        repo: 'git@github.com:jaywcjlove/linux-command.git',
-        branch: 'gh-pages',
-        message: 'Linux command index, Compiler generation page ' + new Date()
-    }, function(err) { 
-        if(err) return console.log(error('  → '+"ok!"+err));
-        load.stop()
-        console.log(success('\n\n   '+"Push success!!"));
-        // 删除文件夹
-        exec('rm -rf .deploy');
-    });   
+if (fs.existsSync(deploy_path)) {
+  const load = loading('  Pushing code!!')
+  load.start();
+  ghpages.publish(deploy_path, {
+    repo: 'git@github.com:jaywcjlove/linux-command.git',
+    branch: 'gh-pages',
+    message: 'Linux command index, Compiler generation page ' + new Date()
+  }, (err) => {
+    if (err) return console.log(`  → Err: ${err.message}`);
+    load.stop()
+    console.log(`\n\n   Push success!!`.green);
+  });
 }
diff --git a/dist/data.json b/dist/data.json
index b171a5c8363..4c40b0e8a0a 100644
--- a/dist/data.json
+++ b/dist/data.json
@@ -1 +1 @@
-{"w":{"n":"w","p":"/w","d":"显示目前登入系统的用户信息"},"rm":{"n":"rm","p":"/rm","d":"用于删除给定的文件和目录"},"ip":{"n":"ip","p":"/ip","d":"网络配置工具"},"ld":{"n":"ld","p":"/ld","d":"将目标文件连接为可执行程序"},"ln":{"n":"ln","p":"/ln","d":"用来为文件创件连接"},"lp":{"n":"lp","p":"/lp","d":"打印文件或修改排队的打印任务"},"xz":{"n":"xz","p":"/xz","d":"POSIX 平台开发具有高压缩率的工具。"},"fg":{"n":"fg","p":"/fg","d":"将后台作业放到前台终端运行"},"ar":{"n":"ar","p":"/ar","d":"建立或修改备存文件,或是从备存文件中抽取文件"},"fc":{"n":"fc","p":"/fc","d":"修改历史命令并执行"},"ls":{"n":"ls","p":"/ls","d":"显示目录内容列表"},"wc":{"n":"wc","p":"/wc","d":"统计文件的字节数、字数、行数"},"as":{"n":"as","p":"/as","d":"汇编语言编译器"},"at":{"n":"at","p":"/at","d":"在指定时间执行一个任务"},"ex":{"n":"ex","p":"/ex","d":"启动vim编辑器的ex编辑模式"},"ed":{"n":"ed","p":"/ed","d":"单行纯文本编辑器"},"ab":{"n":"ab","p":"/ab","d":"Apache服务器的性能测试工具"},"vi":{"n":"vi","p":"/vi","d":"功能强大的纯文本编辑器"},"bc":{"n":"bc","p":"/bc","d":"算术操作精密运算工具"},"bg":{"n":"bg","p":"/bg","d":"用于将作业放到后台运行"},"mv":{"n":"mv","p":"/mv","d":"用来对文件或目录重新命名"},"du":{"n":"du","p":"/du","d":"显示每个文件和目录的磁盘使用空间"},"tr":{"n":"tr","p":"/tr","d":"将字符进行替换压缩和删除"},"nc":{"n":"nc","p":"/nc","d":"命令用于设置路由器。"},"nl":{"n":"nl","p":"/nl","d":"在Linux系统中计算文件内容行号"},"nm":{"n":"nm","p":"/nm","d":"显示二进制目标文件的符号表"},"od":{"n":"od","p":"/od","d":"输出文件的八进制、十六进制等格式编码的字节"},"pr":{"n":"pr","p":"/pr","d":"将文本文件转换成适合打印的格式"},"cd":{"n":"cd","p":"/cd","d":"切换用户当前工作目录"},"ps":{"n":"ps","p":"/ps","d":"报告当前系统的进程状态"},"pv":{"n":"pv","p":"/pv","d":"显示当前在命令行执行的命令的进度信息,管道查看器。"},"su":{"n":"su","p":"/su","d":"用于切换当前用户身份到其他用户身份"},"df":{"n":"df","p":"/df","d":"显示磁盘的相关信息"},"ss":{"n":"ss","p":"/ss","d":"比 netstat 好用的socket统计信息,iproute2 包附带的另一个工具,允许你查询 socket 的有关统计信息。"},"sh":{"n":"sh","p":"/sh","d":"shell命令解释器"},"dd":{"n":"dd","p":"/dd","d":"复制文件并对原文件的内容进行转换和格式化处理"},"cu":{"n":"cu","p":"/cu","d":"用于连接另一个系统主机。"},"cp":{"n":"cp","p":"/cp","d":"将源文件或目录复制到目标文件或目录中"},"id":{"n":"id","p":"/id","d":"显示用户的ID以及所属群组的ID"},"seq":{"n":"seq","p":"/seq","d":"以指定增量从首数开始打印数字到尾数"},"scp":{"n":"scp","p":"/scp","d":"加密的方式在本地主机和远程主机之间复制文件"},"set":{"n":"set","p":"/set","d":"显示或设置shell特性及shell变量"},"sar":{"n":"sar","p":"/sar","d":"系统运行状态统计工具"},"rsh":{"n":"rsh","p":"/rsh","d":"连接远程主机并执行命令"},"col":{"n":"col","p":"/col","d":"过滤控制字符"},"rpm":{"n":"rpm","p":"/rpm","d":"RPM软件包的管理工具"},"ack":{"n":"ack","p":"/ack","d":"比grep好用的文本搜索工具"},"cut":{"n":"cut","p":"/cut","d":"连接文件并打印到标准输出设备上"},"cmp":{"n":"cmp","p":"/cmp","d":"比较两个文件是否有差异"},"rev":{"n":"rev","p":"/rev","d":"将文件内容以字符为单位反序输出"},"ssh":{"n":"ssh","p":"/ssh","d":"openssh套件中的客户端连接工具"},"rcp":{"n":"rcp","p":"/rcp","d":"使在两台Linux主机之间的文件复制操作更简单"},"pwd":{"n":"pwd","p":"/pwd","d":"绝对路径方式显示用户当前工作目录"},"pvs":{"n":"pvs","p":"/pvs","d":"输出物理卷信息报表"},"dig":{"n":"dig","p":"/dig","d":"域名查询工具"},"sum":{"n":"sum","p":"/sum","d":"计算文件的校验码和显示块数"},"tac":{"n":"tac","p":"/tac","d":"将文件已行为单位的反序输出"},"cat":{"n":"cat","p":"/cat","d":"连接文件并打印到标准输出设备上"},"dnf":{"n":"dnf","p":"/dnf","d":"新一代的RPM软件包管理器"},"php":{"n":"php","p":"/php","d":"PHP语言的命令行接口"},"tar":{"n":"tar","p":"/tar","d":"Linux下的归档使用工具,用来打包和备份。"},"cal":{"n":"cal","p":"/cal","d":"显示当前日历或指定日期的日历"},"tee":{"n":"tee","p":"/tee","d":"把数据重定向到给定文件和屏幕上"},"top":{"n":"top","p":"/top","d":"显示或管理执行中的程序"},"bye":{"n":"bye","p":"/bye","d":"命令用于中断FTP连线并结束程序。。"},"sed":{"n":"sed","p":"/sed","d":"功能强大的流式文本编辑器"},"awk":{"n":"awk","p":"/awk","d":"文本和数据进行处理的编程语言"},"man":{"n":"man","p":"/man","d":"查看Linux中的指令帮助"},"elm":{"n":"elm","p":"/elm","d":"纯文本邮件客户端程序"},"env":{"n":"env","p":"/env","d":"显示系统中已存在的环境变量"},"atq":{"n":"atq","p":"/atq","d":"列出当前用户的at任务列表"},"arp":{"n":"arp","p":"/arp","d":"显示和修改IP到MAC转换表"},"arj":{"n":"arj","p":"/arj","d":"用于创建和管理.arj压缩包"},"lpr":{"n":"lpr","p":"/lpr","d":"将文件发送给指定打印机进行打印"},"who":{"n":"who","p":"/who","d":"显示目前登录系统的用户信息"},"lpq":{"n":"lpq","p":"/lpq","d":"显示打印队列中的打印任务的状态信息"},"lpc":{"n":"lpc","p":"/lpc","d":"命令行方式打印机控制程序"},"yes":{"n":"yes","p":"/yes","d":"重复打印指定字符串"},"yum":{"n":"yum","p":"/yum","d":"基于RPM的软件包管理器"},"fmt":{"n":"fmt","p":"/fmt","d":"读取文件后优化处理并输出"},"ftp":{"n":"ftp","p":"/ftp","d":"用来设置文件系统相关功能"},"lha":{"n":"lha","p":"/lha","d":"压缩或解压缩lzh格式文件"},"let":{"n":"let","p":"/let","d":"简单的计算器"},"gcc":{"n":"gcc","p":"/gcc","d":"基于C/C++的编译器"},"gdb":{"n":"gdb","p":"/gdb","d":"功能强大的程序调试器"},"ldd":{"n":"ldd","p":"/ldd","d":"打印程序或者库文件所依赖的共享库列表"},"apk":{"n":"apk","p":"/apk","d":"Alpine Linux 下的包管理工具"},"git":{"n":"git","p":"/git","d":"是目前世界上最先进的分布式版本控制系统"},"gpm":{"n":"gpm","p":"/gpm","d":"提供文字模式下的滑鼠事件处理"},"joe":{"n":"joe","p":"/joe","d":"强大的纯文本编辑器"},"jed":{"n":"jed","p":"/jed","d":"主要用于编辑代码的编辑器"},"zip":{"n":"zip","p":"/zip","d":"可以用来解压缩文件"},"tty":{"n":"tty","p":"/tty","d":"显示连接到当前标准输入的终端设备文件名。"},"pvck":{"n":"pvck","p":"/pvck","d":"检测物理卷的LVM元数据的一致性"},"chfn":{"n":"chfn","p":"/chfn","d":"用来改变finger命令显示的信息"},"arch":{"n":"arch","p":"/arch","d":"显示当前主机的硬件架构类型"},"pssh":{"n":"pssh","p":"/pssh","d":"批量管理执行"},"dirs":{"n":"dirs","p":"/dirs","d":"显示目录记录"},"sudo":{"n":"sudo","p":"/sudo","d":"以其他身份来执行命令"},"bind":{"n":"bind","p":"/bind","d":"显示或设置键盘按键与其相关的功能"},"stty":{"n":"stty","p":"/stty","d":"修改终端命令行的相关设置"},"popd":{"n":"popd","p":"/popd","d":"用于删除目录栈中的记录"},"pmap":{"n":"pmap","p":"/pmap","d":"报告进程的内存映射关系"},"ping":{"n":"ping","p":"/ping","d":"测试主机之间网络的连通性"},"pico":{"n":"pico","p":"/pico","d":"功能强大全屏幕的文本编辑器"},"stat":{"n":"stat","p":"/stat","d":"用于显示文件的状态信息"},"perl":{"n":"perl","p":"/perl","d":"perl语言解释器"},"sshd":{"n":"sshd","p":"/sshd","d":"openssh软件套件中的服务器守护进程"},"nmap":{"n":"nmap","p":"/nmap","d":"网络探测和安全审核"},"chsh":{"n":"chsh","p":"/chsh","d":"用来更换登录系统时使用的shell"},"uniq":{"n":"uniq","p":"/uniq","d":"报告或忽略文件中的重复行"},"nice":{"n":"nice","p":"/nice","d":"改变程序执行的优先权等级"},"dpkg":{"n":"dpkg","p":"/dpkg","d":"Debian Linux系统上安装、创建和管理软件包"},"dris":{"n":"dris","p":"/dris","d":"显示和清空目录堆栈中的内容"},"type":{"n":"type","p":"/type","d":"显示指定命令的类型"},"sort":{"n":"sort","p":"/sort","d":"将文件进行排序并输出"},"dump":{"n":"dump","p":"/dump","d":"用于备份ext2或者ext3文件系统"},"nano":{"n":"nano","p":"/nano","d":"字符终端文本编辑器"},"xset":{"n":"xset","p":"/xset","d":"设置X-Window系统中的用户爱好的实用工具"},"echo":{"n":"echo","p":"/echo","d":"输出指定的字符串或者变量"},"tree":{"n":"tree","p":"/tree","d":"树状图列出目录的内容"},"more":{"n":"more","p":"/more","d":"显示文件内容,每次显示一屏"},"mkfs":{"n":"mkfs","p":"/mkfs","d":"用于在设备上创建Linux文件系统"},"mesg":{"n":"mesg","p":"/mesg","d":"设置当前终端的写权限"},"trap":{"n":"trap","p":"/trap","d":"指定在接收到信号后将要采取的动作"},"sftp":{"n":"sftp","p":"/sftp","d":"交互式的文件传输程序"},"make":{"n":"make","p":"/make","d":"GNU的工程化编译工具"},"mail":{"n":"mail","p":"/mail","d":"命令行下发送和接收电子邮件"},"comm":{"n":"comm","p":"/comm","d":"两个文件之间的比较"},"lynx":{"n":"lynx","p":"/lynx","d":"纯文本模式的网页浏览器"},"atop":{"n":"atop","p":"/atop","d":"监控Linux系统资源与进程的工具"},"exec":{"n":"exec","p":"/exec","d":"调用并执行指定的命令"},"exit":{"n":"exit","p":"/exit","d":"退出当前的shell"},"lsof":{"n":"lsof","p":"/lsof","d":"显示Linux系统当前已打开的所有文件列表 `lsof -p pid`"},"znew":{"n":"znew","p":"/znew","d":"将.Z压缩包重新转化为gzip命令压缩的.gz压缩包"},"lprm":{"n":"lprm","p":"/lprm","d":"删除打印队列中的打印任务"},"expr":{"n":"expr","p":"/expr","d":"一款表达式计算工具"},"tput":{"n":"tput","p":"/tput","d":"通过terminfo数据库对终端会话进行初始化和操作"},"atrm":{"n":"atrm","p":"/atrm","d":"删除待执行任务队列中的指定任务"},"tmux":{"n":"tmux","p":"/tmux","d":"Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权。"},"cpio":{"n":"cpio","p":"/cpio","d":"用来建立、还原备份档的工具程序"},"file":{"n":"file","p":"/file","d":"用来探测给定文件的类型。"},"find":{"n":"find","p":"/find","d":"在指定目录下查找文件"},"time":{"n":"time","p":"/time","d":"统计给定命令所花费的总时间"},"tftp":{"n":"tftp","p":"/tftp","d":"在本机和tftp服务器之间使用TFTP协议传输文件"},"look":{"n":"look","p":"/look","d":"显示文件中以指定字符串开头的任意行"},"test":{"n":"test","p":"/test","d":"shell环境中测试条件表达式工具"},"arpd":{"n":"arpd","p":"/arpd","d":"收集免费ARP信息"},"fold":{"n":"fold","p":"/fold","d":"控制文件内容输出时所占用的屏幕宽度"},"free":{"n":"free","p":"/free","d":"显示内存的使用情况"},"fsck":{"n":"fsck","p":"/fsck","d":"检查并且试图修复文件系统中的错误"},"axel":{"n":"axel","p":"/axel","d":"多线程下载工具"},"lilo":{"n":"lilo","p":"/lilo","d":"安装核心载入开机管理程序"},"curl":{"n":"curl","p":"/curl","d":"利用URL规则在命令行下工作的文件传输工具"},"lftp":{"n":"lftp","p":"/lftp","d":"优秀的文件客户端程序"},"wait":{"n":"wait","p":"/wait","d":"等待进程执行完后返回"},"less":{"n":"less","p":"/less","d":"分屏上下翻页浏览文件内容"},"date":{"n":"date","p":"/date","d":"显示或设置系统时间与日期"},"gcov":{"n":"gcov","p":"/gcov","d":"测试程序的代码覆盖率的工具"},"wget":{"n":"wget","p":"/wget","d":"Linux系统下载文件工具"},"zcat":{"n":"zcat","p":"/zcat","d":"显示压缩包中文件的内容"},"read":{"n":"read","p":"/read","d":"从键盘读取变量值"},"last":{"n":"last","p":"/last","d":"列出目前与过去登入系统的用户相关信息"},"talk":{"n":"talk","p":"/talk","d":"让用户和其他用户聊天"},"kill":{"n":"kill","p":"/kill","d":"删除执行中的程序或工作"},"tail":{"n":"tail","p":"/tail","d":"在屏幕上显示指定文件的末尾若干行"},"grep":{"n":"grep","p":"/grep","d":"强大的文本搜索工具"},"join":{"n":"join","p":"/join","d":"两个文件中指定栏位内容相同的行连接起来"},"wall":{"n":"wall","p":"/wall","d":"向系统当前所有打开的终端上输出信息"},"jobs":{"n":"jobs","p":"/jobs","d":"显示Linux中的任务列表及任务状态"},"pwck":{"n":"pwck","p":"/pwck","d":"用来验证系统认证文件内容和格式的完整性"},"ipcs":{"n":"ipcs","p":"/ipcs","d":"分析消息队列共享内存和信号量 "},"diff":{"n":"diff","p":"/diff","d":"比较给定的两个文件的不同"},"init":{"n":"init","p":"/init","d":"init进程是所有Linux进程的父进程"},"grub":{"n":"grub","p":"/grub","d":"多重引导程序grub的命令行shell工具"},"info":{"n":"info","p":"/info","d":"Linux下info格式的帮助指令"},"ifup":{"n":"ifup","p":"/ifup","d":"激活指定的网络接口"},"gzip":{"n":"gzip","p":"/gzip","d":"用来压缩文件"},"halt":{"n":"halt","p":"/halt","d":"关闭正在运行的Linux操作系统"},"sync":{"n":"sync","p":"/sync","d":"用于强制被改变的内容立刻写入磁盘"},"head":{"n":"head","p":"/head","d":"在屏幕上显示指定文件的开头若干行"},"help":{"n":"help","p":"/help","d":"显示帮助信息"},"htop":{"n":"htop","p":"/htop","d":"[非内部命令]一个互动的进程查看器,可以动态观察系统进程状况。"},"host":{"n":"host","p":"/host","d":"常用的分析域名查询工具"},"chown":{"n":"chown","p":"/chown","d":"用来变更文件或目录的拥有者或所属群组"},"touch":{"n":"touch","p":"/touch","d":"创建新的空文件"},"ifcfg":{"n":"ifcfg","p":"/ifcfg","d":"置Linux中的网络接口参数"},"iftop":{"n":"iftop","p":"/iftop","d":"一款实时流量监控工具"},"gzexe":{"n":"gzexe","p":"/gzexe","d":"用来压缩可执行文件"},"tload":{"n":"tload","p":"/tload","d":"显示系统负载状况"},"bzip2":{"n":"bzip2","p":"/bzip2","d":"将文件压缩成bz2格式"},"iotop":{"n":"iotop","p":"/iotop","d":"用来监视磁盘I/O使用状况的工具"},"bzcmp":{"n":"bzcmp","p":"/bzcmp","d":"比较两个压缩包中的文件"},"alias":{"n":"alias","p":"/alias","d":"用来设置指令的别名"},"zfore":{"n":"zfore","p":"/zfore","d":"强制为gzip格式的压缩文件添加.gz后缀"},"ipcrm":{"n":"ipcrm","p":"/ipcrm","d":"删除消息队列、信号集、或者共享内存标识"},"grpck":{"n":"grpck","p":"/grpck","d":"用于验证组文件的完整性"},"iperf":{"n":"iperf","p":"/iperf","d":"网络性能测试工具"},"kexec":{"n":"kexec","p":"/kexec","d":"从当前正在运行的内核引导到一个新内核"},"bzcat":{"n":"bzcat","p":"/bzcat","d":"解压缩指定的.bz2文件"},"lastb":{"n":"lastb","p":"/lastb","d":"列出登入系统失败的用户相关信息"},"xinit":{"n":"xinit","p":"/xinit","d":"是Linux下X-Window系统的初始化程序"},"xhost":{"n":"xhost","p":"/xhost","d":"制哪些X客户端能够在X服务器上显示"},"fuser":{"n":"fuser","p":"/fuser","d":"使用文件或文件结构识别进程"},"tailf":{"n":"tailf","p":"/tailf","d":"在屏幕上显示指定文件的末尾若干行内容,通常用于日志文件的跟踪输出。"},"chage":{"n":"chage","p":"/chage","d":"修改帐号和密码的有效期限"},"xclip":{"n":"xclip","p":"/xclip","d":"管理 X 粘贴板"},"login":{"n":"login","p":"/login","d":"登录系统或切换用户身份"},"xauth":{"n":"xauth","p":"/xauth","d":"显示和编辑被用于连接X服务器的认证信息"},"xargs":{"n":"xargs","p":"/xargs","d":"给其他命令传递参数的一个过滤器"},"chcon":{"n":"chcon","p":"/chcon","d":"修改对象(文件)的安全上下文"},"fgrep":{"n":"fgrep","p":"/fgrep","d":"为文件搜索文字字符串"},"fdisk":{"n":"fdisk","p":"/fdisk","d":"查看磁盘使用情况和磁盘分区"},"write":{"n":"write","p":"/write","d":"向指定登录用户终端上发送信息"},"lsblk":{"n":"lsblk","p":"/lsblk","d":"列出块设备信息"},"lscpu":{"n":"lscpu","p":"/lscpu","d":"显示有关CPU架构的信息"},"lsmod":{"n":"lsmod","p":"/lsmod","d":"显示已载入系统的模块"},"lspci":{"n":"lspci","p":"/lspci","d":"显示当前主机的所有PCI总线信息"},"lsusb":{"n":"lsusb","p":"/lsusb","d":"显示本机的USB设备列表信息"},"mailq":{"n":"mailq","p":"/mailq","d":"显示待发送的邮件队列"},"emacs":{"n":"emacs","p":"/emacs","d":"功能强大的全屏文本编辑器"},"eject":{"n":"eject","p":"/eject","d":"用来退出抽取式设备"},"mkdir":{"n":"mkdir","p":"/mkdir","d":"用来创建目录"},"egrep":{"n":"egrep","p":"/egrep","d":"在文件内查找指定的字符串"},"chgrp":{"n":"chgrp","p":"/chgrp","d":"用来变更文件或目录的所属群组"},"mknod":{"n":"mknod","p":"/mknod","d":"创建字符设备文件和块设备文件"},"chmod":{"n":"chmod","p":"/chmod","d":"用来变更文件或目录的权限"},"mount":{"n":"mount","p":"/mount","d":"用于挂载Linux系统外的文件。"},"iconv":{"n":"iconv","p":"/iconv","d":"转换文件的编码方式"},"mysql":{"n":"mysql","p":"/mysql","d":"MySQL服务器客户端工具"},"which":{"n":"which","p":"/which","d":"查找并显示给定命令的绝对路径"},"watch":{"n":"watch","p":"/watch","d":"可以将命令的输出结果输出到标准输出设备,多用于周期性执行命令/定时执行命令"},"dstat":{"n":"dstat","p":"/dstat","d":"通用的系统资源统计工具"},"ncftp":{"n":"ncftp","p":"/ncftp","d":"是增强的的FTP工具"},"cksum":{"n":"cksum","p":"/cksum","d":"检查文件的CRC是否正确"},"ngrep":{"n":"ngrep","p":"/ngrep","d":"方便的数据包匹配和显示工具"},"batch":{"n":"batch","p":"/batch","d":"在系统不繁忙的时候执行定时任务"},"nmcli":{"n":"nmcli","p":"/nmcli","d":"地址配置工具"},"nohup":{"n":"nohup","p":"/nohup","d":"将程序以忽略挂起信号的方式运行起来"},"umask":{"n":"umask","p":"/umask","d":"用来设置限制新建文件权限的掩码"},"clear":{"n":"clear","p":"/clear","d":"清除当前屏幕终端上的任何信息"},"squid":{"n":"squid","p":"/squid","d":"squid服务器守护进程"},"paste":{"n":"paste","p":"/paste","d":"将多个文件按列队列合并"},"patch":{"n":"patch","p":"/patch","d":"为开放源代码软件安装补丁程序"},"split":{"n":"split","p":"/split","d":"分割任意大小的文件"},"pfctl":{"n":"pfctl","p":"/pfctl","d":"PF防火墙的配置命令"},"pgrep":{"n":"pgrep","p":"/pgrep","d":"设置用户的认证信息,包括用户密码、密码过期时间等"},"pidof":{"n":"pidof","p":"/pidof","d":"查找指定名称的进程的进程号ID号"},"pkill":{"n":"pkill","p":"/pkill","d":"可以按照进程名杀死进程"},"spell":{"n":"spell","p":"/spell","d":"对文件进行拼写检查"},"dmesg":{"n":"dmesg","p":"/dmesg","d":"显示Linux系统启动信息"},"uname":{"n":"uname","p":"/uname","d":"显示Linux系统信息"},"pushd":{"n":"pushd","p":"/pushd","d":"将目录加入命令堆叠中"},"diff3":{"n":"diff3","p":"/diff3","d":"比较3个文件不同的地方"},"dhcpd":{"n":"dhcpd","p":"/dhcpd","d":"运行DHCP服务器。"},"quota":{"n":"quota","p":"/quota","d":"显示磁盘已使用的空间与限制"},"clock":{"n":"clock","p":"/clock","d":"用于调整 RTC 时间。"},"unarj":{"n":"unarj","p":"/unarj","d":"解压缩由arj命令创建的压缩包"},"users":{"n":"users","p":"/users","d":"显示当前登录系统的所有用户"},"sleep":{"n":"sleep","p":"/sleep","d":"将目前动作延迟一段时间"},"rexec":{"n":"rexec","p":"/rexec","d":"运程执行Linux系统下命令 "},"skill":{"n":"skill","p":"/skill","d":"向选定的进程发送信号冻结进程"},"rmdir":{"n":"rmdir","p":"/rmdir","d":"用来删除空目录"},"rmmod":{"n":"rmmod","p":"/rmmod","d":"从运行的内核中移除指定的内核模块"},"route":{"n":"route","p":"/route","d":"显示并设置Linux中静态路由表"},"blkid":{"n":"blkid","p":"/blkid","d":"查看块设备的文件系统类型、LABEL、UUID等信息"},"rpmdb":{"n":"rpmdb","p":"/rpmdb","d":"初始化和重建RPM数据库"},"shopt":{"n":"shopt","p":"/shopt","d":"显示和设置shell操作选项"},"rsync":{"n":"rsync","p":"/rsync","d":"远程数据同步工具"},"colrm":{"n":"colrm","p":"/colrm","d":"删除文件中的指定列"},"unset":{"n":"unset","p":"/unset","d":"删除指定的shell变量或函数"},"unzip":{"n":"unzip","p":"/unzip","d":"用于解压缩由zip命令压缩的压缩包"},"vgscan":{"n":"vgscan","p":"/vgscan","d":"扫描并显示系统中的卷组"},"bzless":{"n":"bzless","p":"/bzless","d":"增强.bz2压缩包查看器"},"mpstat":{"n":"mpstat","p":"/mpstat","d":"显示各个可用CPU的状态"},"mtools":{"n":"mtools","p":"/mtools","d":"显示mtools支持的指令"},"ipcalc":{"n":"ipcalc","p":"/ipcalc","d":"简单的IP地址计算器"},"lnstat":{"n":"lnstat","p":"/lnstat","d":"显示Linux系统的网路状态"},"locate":{"n":"locate","p":"/locate","d":"比 find 好用的文件查找工具"},"strace":{"n":"strace","p":"/strace","d":"跟踪系统调用和信号"},"whatis":{"n":"whatis","p":"/whatis","d":"查询一个命令执行什么功能"},"arping":{"n":"arping","p":"/arping","d":"通过发送ARP协议报文测试网络"},"logger":{"n":"logger","p":"/logger","d":"在系统日志中记录相应条目"},"e2fsck":{"n":"e2fsck","p":"/e2fsck","d":"用于检查第二扩展文件系统的完整性"},"indent":{"n":"indent","p":"/indent","d":"格式化C语言的源文件"},"chattr":{"n":"chattr","p":"/chattr","d":"用来改变文件属性"},"startx":{"n":"startx","p":"/startx","d":"用来启动X Window"},"chroot":{"n":"chroot","p":"/chroot","d":"把根目录换成指定的目的目录"},"logout":{"n":"logout","p":"/logout","d":"退出当前登录的Shell"},"gunzip":{"n":"gunzip","p":"/gunzip","d":"用来解压缩文件"},"ulimit":{"n":"ulimit","p":"/ulimit","d":"控制shell程序的资源"},"vmstat":{"n":"vmstat","p":"/vmstat","d":"显示虚拟内存状态"},"syslog":{"n":"syslog","p":"/syslog","d":"系统默认的日志守护进程"},"hdparm":{"n":"hdparm","p":"/hdparm","d":"显示与设定硬盘的参数"},"sysctl":{"n":"sysctl","p":"/sysctl","d":"时动态地修改内核的运行参数"},"finger":{"n":"finger","p":"/finger","d":"用于查找并显示用户信息"},"umount":{"n":"umount","p":"/umount","d":"用于卸载已经加载的文件系统"},"ntsysv":{"n":"ntsysv","p":"/ntsysv","d":"集中管理系统的各种服务"},"telnet":{"n":"telnet","p":"/telnet","d":"登录远程主机和管理(测试ip端口是否连通)"},"hping3":{"n":"hping3","p":"/hping3","d":"测试网络及主机的安全"},"findfs":{"n":"findfs","p":"/findfs","d":"标签或UUID查找文件系统"},"parted":{"n":"parted","p":"/parted","d":"磁盘分区和分区大小调整工具"},"passwd":{"n":"passwd","p":"/passwd","d":"用于让用户可以更改自己的密码"},"telint":{"n":"telint","p":"/telint","d":"切换当前正在运行系统的运行等级"},"iptraf":{"n":"iptraf","p":"/iptraf","d":"实时地监视网卡流量"},"lpstat":{"n":"lpstat","p":"/lpstat","d":"显示CUPS中打印机的状态信息"},"export":{"n":"export","p":"/export","d":"设置或显示系统环境变量"},"lsattr":{"n":"lsattr","p":"/lsattr","d":"查看文件的第二扩展文件系统属性"},"ispell":{"n":"ispell","p":"/ispell","d":"检查文件中出现的拼写错误"},"groups":{"n":"groups","p":"/groups","d":"用来打印指定用户所属的工作组"},"jwhois":{"n":"jwhois","p":"/jwhois","d":"whois 客户端服务"},"printf":{"n":"printf","p":"/printf","d":"格式化并输出结果"},"insmod":{"n":"insmod","p":"/insmod","d":"将给定的模块加载到内核中"},"expand":{"n":"expand","p":"/expand","d":"将文件的制表符转换为空白字符"},"pstack":{"n":"pstack","p":"/pstack","d":"显示每个进程的栈跟踪"},"pstree":{"n":"pstree","p":"/pstree","d":"以树状图的方式展现进程之间的派生关系"},"bzmore":{"n":"bzmore","p":"/bzmore","d":"查看bzip2压缩过的文本文件的内容"},"vdfuse":{"n":"vdfuse","p":"/vdfuse","d":"VirtualBox软件挂载VDI分区文件工具"},"uupick":{"n":"uupick","p":"/uupick","d":"命令处理传送进来的文件。"},"bzdiff":{"n":"bzdiff","p":"/bzdiff","d":"直接比较两个.bz2压缩包中文件的不同"},"pvscan":{"n":"pvscan","p":"/pvscan","d":"扫描系统中所有硬盘的物理卷列表"},"pwconv":{"n":"pwconv","p":"/pwconv","d":"用来开启用户的投影密码"},"ltrace":{"n":"ltrace","p":"/ltrace","d":"用来跟踪进程调用库函数的情况"},"hostid":{"n":"hostid","p":"/hostid","d":"用来打印当前主机的数字化标识"},"whoami":{"n":"whoami","p":"/whoami","d":"打印当前有效的用户名称"},"uucico":{"n":"uucico","p":"/uucico","d":"UUCP文件传输服务程序。"},"source":{"n":"source","p":"/source","d":"在当前Shell环境中从指定文件读取和执行命令,命令返回退出状态。"},"rcconf":{"n":"rcconf","p":"/rcconf","d":"Debian Linux下的运行等级服务配置工具"},"depmod":{"n":"depmod","p":"/depmod","d":"分析可载入模块的相依性"},"accept":{"n":"accept","p":"/accept","d":"指示打印系统接受发往指定目标打印机的打印任务"},"reboot":{"n":"reboot","p":"/reboot","d":"重新启动正在运行的Linux操作系统"},"reject":{"n":"reject","p":"/reject","d":"指示打印系统拒绝发往指定目标打印机的打印任务"},"rename":{"n":"rename","p":"/rename","d":"用字符串替换的方式批量改变文件名"},"renice":{"n":"renice","p":"/renice","d":"修改正在运行的进程的调度优先级"},"resize":{"n":"resize","p":"/resize","d":"命令设置终端机视窗的大小。"},"lvscan":{"n":"lvscan","p":"/lvscan","d":"扫描逻辑卷"},"swapon":{"n":"swapon","p":"/swapon","d":"激活Linux系统中交换空间"},"enable":{"n":"enable","p":"/enable","d":"启动或关闭shell内建命令"},"iostat":{"n":"iostat","p":"/iostat","d":"监视系统输入输出设备和CPU的使用情况"},"rlogin":{"n":"rlogin","p":"/rlogin","d":"从当前终端登录到远程Linux主机"},"cancel":{"n":"cancel","p":"/cancel","d":"取消已存在的打印任务"},"elinks":{"n":"elinks","p":"/elinks","d":"纯文本界面的WWW浏览器"},"md5sum":{"n":"md5sum","p":"/md5sum","d":"计算和校验文件报文摘要的工具程序"},"ifdown":{"n":"ifdown","p":"/ifdown","d":"禁用指定的网络接口"},"ifstat":{"n":"ifstat","p":"/ifstat","d":"统计网络接口流量状态"},"mke2fs":{"n":"mke2fs","p":"/mke2fs","d":"创建磁盘分区上的“etc2/etc3”文件系统"},"bzgrep":{"n":"bzgrep","p":"/bzgrep","d":"使用正则表达式搜索.bz2压缩包中文件"},"unlink":{"n":"unlink","p":"/unlink","d":"系统调用函数unlink去删除指定的文件"},"csplit":{"n":"csplit","p":"/csplit","d":"将一个大文件分割成小的碎片文件"},"ftpwho":{"n":"ftpwho","p":"/ftpwho","d":"显示当前每个ftp会话信息"},"ftptop":{"n":"ftptop","p":"/ftptop","d":"proftpd服务器的连接状态"},"uptime":{"n":"uptime","p":"/uptime","d":"查看Linux系统负载信息"},"screen":{"n":"screen","p":"/screen","d":"用于命令行终端切换"},"seinfo":{"n":"seinfo","p":"/seinfo","d":"查询SELinux的策略提供多少相关规则"},"mkswap":{"n":"mkswap","p":"/mkswap","d":"建立和设置SWAP交换分区"},"setsid":{"n":"setsid","p":"/setsid","d":"在新的会话中运行程序。"},"mktemp":{"n":"mktemp","p":"/mktemp","d":"创建临时文件供shell脚本使用"},"setpci":{"n":"setpci","p":"/setpci","d":"查询和配置PCI设备的使用工具"},"strings":{"n":"strings","p":"/strings","d":"在对象文件或二进制文件中查找可打印的字符串"},"setfacl":{"n":"setfacl","p":"/setfacl","d":"设置文件访问控制列表"},"service":{"n":"service","p":"/service","d":"控制系统服务的实用工具"},"crontab":{"n":"crontab","p":"/crontab","d":"提交和管理用户的需要周期性执行的任务"},"useradd":{"n":"useradd","p":"/useradd","d":"创建的新的系统用户"},"rpmsign":{"n":"rpmsign","p":"/rpmsign","d":"使用RPM软件包的签名管理工具"},"userdel":{"n":"userdel","p":"/userdel","d":"用于删除给定的用户以及与用户相关的文件"},"usermod":{"n":"usermod","p":"/usermod","d":"用于修改用户的基本信息"},"slabtop":{"n":"slabtop","p":"/slabtop","d":"实时显示内核slab内存缓存信息"},"declare":{"n":"declare","p":"/declare","d":"声明或显示shell变量"},"slocate":{"n":"slocate","p":"/slocate","d":"命令查找文件或目录"},"restore":{"n":"restore","p":"/restore","d":"所进行的操作和dump指令相反"},"readelf":{"n":"readelf","p":"/readelf","d":"用于显示elf格式文件的信息"},"quotaon":{"n":"quotaon","p":"/quotaon","d":"激活Linux内核中指定文件系统的磁盘配额功能"},"dirname":{"n":"dirname","p":"/dirname","d":"去除文件名中的非目录部分"},"ppp-off":{"n":"ppp-off","p":"/ppp-off","d":"关闭ppp连线"},"pathchk":{"n":"pathchk","p":"/pathchk","d":"检查文件中不可移植的部分"},"openssl":{"n":"openssl","p":"/openssl","d":"强大的安全套接字层密码库"},"unalias":{"n":"unalias","p":"/unalias","d":"删除由alias设置的别名"},"objdump":{"n":"objdump","p":"/objdump","d":"显示二进制文件信息"},"ssh-add":{"n":"ssh-add","p":"/ssh-add","d":"把专用密钥添加到ssh-agent的高速缓存中"},"ntpdate":{"n":"ntpdate","p":"/ntpdate","d":"使用网络计时协议(NTP)设置日期和时间"},"nologin":{"n":"nologin","p":"/nologin","d":"拒绝用户登录系统"},"volname":{"n":"volname","p":"/volname","d":"显示指定的ISO-9660格式的设备的卷名称"},"nfsstat":{"n":"nfsstat","p":"/nfsstat","d":"列出NFS客户端和服务器的工作状态"},"netstat":{"n":"netstat","p":"/netstat","d":"查看Linux中网络系统状态信息"},"nethogs":{"n":"nethogs","p":"/nethogs","d":"终端下的网络流量监控工具"},"whereis":{"n":"whereis","p":"/whereis","d":"查找二进制程序、代码等相关文件路径"},"command":{"n":"command","p":"/command","d":"调用并执行指定的命令"},"e2label":{"n":"e2label","p":"/e2label","d":"设置第二扩展文件系统的卷标"},"edquota":{"n":"edquota","p":"/edquota","d":"用于编辑指定用户或工作组磁盘配额"},"mkisofs":{"n":"mkisofs","p":"/mkisofs","d":"建立ISO 9660映像文件"},"builtin":{"n":"builtin","p":"/builtin","d":"执行shell内部命令"},"swapoff":{"n":"swapoff","p":"/swapoff","d":"关闭指定的交换空间"},"ethtool":{"n":"ethtool","p":"/ethtool","d":"显示或修改以太网卡的配置信息"},"lpadmin":{"n":"lpadmin","p":"/lpadmin","d":"配置CUPS套件中的打印机和类"},"losetup":{"n":"losetup","p":"/losetup","d":"设定与控制循环(loop)设备"},"logsave":{"n":"logsave","p":"/logsave","d":"将命令的输出信息保存到指定的日志文件"},"bunzip2":{"n":"bunzip2","p":"/bunzip2","d":"创一个bz2文件压缩包"},"systool":{"n":"systool","p":"/systool","d":"显示基于总线、类和拓扑显示系统中设备的信息"},"logname":{"n":"logname","p":"/logname","d":"用来显示用户名称"},"ftpshut":{"n":"ftpshut","p":"/ftpshut","d":"在指定的时间关闭FTP服务器"},"lftpget":{"n":"lftpget","p":"/lftpget","d":"调用lftp指令下载指定的文件"},"lastlog":{"n":"lastlog","p":"/lastlog","d":"显示系统中所有用户最近一次登录信息"},"tcpdump":{"n":"tcpdump","p":"/tcpdump","d":"一款sniffer工具,是Linux上的抓包工具,嗅探器。"},"killall":{"n":"killall","p":"/killall","d":"使用进程的名称来杀死一组进程"},"gpasswd":{"n":"gpasswd","p":"/gpasswd","d":"Linux下工作组文件的管理工具"},"apt-key":{"n":"apt-key","p":"/apt-key","d":"管理Debian Linux系统中的软件包密钥"},"apt-get":{"n":"apt-get","p":"/apt-get","d":"Debian Linux发行版中的APT软件包管理工具"},"apropos":{"n":"apropos","p":"/apropos","d":"在 whatis 数据库中查找字符串"},"grpconv":{"n":"grpconv","p":"/grpconv","d":"用来开启群组的投影密码"},"install":{"n":"install","p":"/install","d":"安装或升级软件或备份数据"},"zipinfo":{"n":"zipinfo","p":"/zipinfo","d":"用来列出压缩文件信息"},"hwclock":{"n":"hwclock","p":"/hwclock","d":"显示与设定硬件时钟"},"hexdump":{"n":"hexdump","p":"/hexdump","d":"显示文件十六进制格式"},"history":{"n":"history","p":"/history","d":"用于显示历史命令"},"iptstate":{"n":"iptstate","p":"/iptstate","d":"显示iptables的工作状态"},"arpwatch":{"n":"arpwatch","p":"/arpwatch","d":"监听网络上ARP的记录"},"pvchange":{"n":"pvchange","p":"/pvchange","d":"修改物理卷属性"},"diffstat":{"n":"diffstat","p":"/diffstat","d":"显示diff命令输出信息的柱状图"},"pvcreate":{"n":"pvcreate","p":"/pvcreate","d":"将物理硬盘分区初始化为物理卷"},"basename":{"n":"basename","p":"/basename","d":"打印目录或者文件的基本名称"},"pvremove":{"n":"pvremove","p":"/pvremove","d":"删除一个存在的物理卷"},"lvremove":{"n":"lvremove","p":"/lvremove","d":"删除指定LVM逻辑卷"},"ldconfig":{"n":"ldconfig","p":"/ldconfig","d":"动态链接库管理命令"},"shutdown":{"n":"shutdown","p":"/shutdown","d":"用来执行系统关机的命令"},"dhcrelay":{"n":"dhcrelay","p":"/dhcrelay","d":"使用dhcrelay命令可以提供中继DHCP和BOOTP请求"},"mkinitrd":{"n":"mkinitrd","p":"/mkinitrd","d":"建立要载入ramdisk的映像文件"},"zipsplit":{"n":"zipsplit","p":"/zipsplit","d":"将较大的zip压缩包分割成各个较小的压缩包"},"logwatch":{"n":"logwatch","p":"/logwatch","d":"可定制和可插入式的日志监视系统"},"unexpand":{"n":"unexpand","p":"/unexpand","d":"将文件的空白字符转换为制表符"},"groupmod":{"n":"groupmod","p":"/groupmod","d":"更改群组识别码或名称"},"nslookup":{"n":"nslookup","p":"/nslookup","d":"查询域名DNS信息的工具"},"quotaoff":{"n":"quotaoff","p":"/quotaoff","d":"关闭Linux内核中指定文件系统的磁盘配额功能"},"groupdel":{"n":"groupdel","p":"/groupdel","d":"用于删除指定的工作组"},"modprobe":{"n":"modprobe","p":"/modprobe","d":"自动处理可载入模块"},"dhclient":{"n":"dhclient","p":"/dhclient","d":"动态获取或释放IP地址"},"lvcreate":{"n":"lvcreate","p":"/lvcreate","d":"用于创建LVM的逻辑卷"},"groupadd":{"n":"groupadd","p":"/groupadd","d":"用于创建一个新的工作组"},"readonly":{"n":"readonly","p":"/readonly","d":"定义只读shell变量或函数"},"lvextend":{"n":"lvextend","p":"/lvextend","d":"扩展逻辑卷空间"},"lvreduce":{"n":"lvreduce","p":"/lvreduce","d":"收缩逻辑卷空间"},"vgrename":{"n":"vgrename","p":"/vgrename","d":"使用vgrename命令可以重命名卷组的名称。"},"htdigest":{"n":"htdigest","p":"/htdigest","d":"Apache服务器内置工具"},"blockdev":{"n":"blockdev","p":"/blockdev","d":"从命令行调用区块设备控制程序"},"repquota":{"n":"repquota","p":"/repquota","d":"报表的格式输出磁盘空间限制的状态"},"lvresize":{"n":"lvresize","p":"/lvresize","d":"调整逻辑卷空间大小"},"xlsfonts":{"n":"xlsfonts","p":"/xlsfonts","d":"列出X Server使用的字体"},"chpasswd":{"n":"chpasswd","p":"/chpasswd","d":"批量更新用户口令的工具"},"ftpcount":{"n":"ftpcount","p":"/ftpcount","d":"显示目前已FTP登入的用户人数"},"vgremove":{"n":"vgremove","p":"/vgremove","d":"用于用户删除LVM卷组"},"hostname":{"n":"hostname","p":"/hostname","d":"显示和设置系统的主机名"},"exportfs":{"n":"exportfs","p":"/exportfs","d":"管理NFS共享文件系统列表"},"bmodinfo":{"n":"bmodinfo","p":"/bmodinfo","d":"显示给定模块的详细信息"},"vgreduce":{"n":"vgreduce","p":"/vgreduce","d":"从卷组中删除物理卷"},"dpkg-deb":{"n":"dpkg-deb","p":"/dpkg-deb","d":"Debian Linux下的软件包管理工具"},"mailstat":{"n":"mailstat","p":"/mailstat","d":"显示到达的邮件状态"},"dos2unix":{"n":"dos2unix","p":"/dos2unix","d":"将DOS格式文本文件转换成Unix格式"},"htpasswd":{"n":"htpasswd","p":"/htpasswd","d":"apache服务器创建密码认证文件"},"rpm2cpio":{"n":"rpm2cpio","p":"/rpm2cpio","d":"将RPM软件包转换为cpio格式的文件"},"rpmbuild":{"n":"rpmbuild","p":"/rpmbuild","d":"创建RPM的二进制软件包和源码软件包"},"vgextend":{"n":"vgextend","p":"/vgextend","d":"向卷组中添加物理卷"},"rpmquery":{"n":"rpmquery","p":"/rpmquery","d":"从RPM数据库中查询软件包信息"},"vgcreate":{"n":"vgcreate","p":"/vgcreate","d":"用于创建LVM卷组"},"poweroff":{"n":"poweroff","p":"/poweroff","d":"关闭Linux系统,关闭记录会被写入到/var/log/wtmp日志文件中。"},"iptables":{"n":"iptables","p":"/iptables","d":"Linux上常用的防火墙软件"},"cdrecord":{"n":"cdrecord","p":"/cdrecord","d":"Linux系统下光盘刻录功能命令"},"vgchange":{"n":"vgchange","p":"/vgchange","d":"修改卷组属性"},"runlevel":{"n":"runlevel","p":"/runlevel","d":"打印当前Linux系统的运行等级"},"xlsatoms":{"n":"xlsatoms","p":"/xlsatoms","d":"列出X服务器内部所有定义的原子成分"},"protoize":{"n":"protoize","p":"/protoize","d":"GNU-C代码转换为ANSI-C代码"},"ifconfig":{"n":"ifconfig","p":"/ifconfig","d":"配置和显示Linux系统网卡的网络参数"},"updatedb":{"n":"updatedb","p":"/updatedb","d":"创建或更新slocate命令所必需的数据库文件"},"tempfile":{"n":"tempfile","p":"/tempfile","d":"shell中给临时文件命名"},"mii-tool":{"n":"mii-tool","p":"/mii-tool","d":"配置网络设备协商方式的工具"},"semanage":{"n":"semanage","p":"/semanage","d":"默认目录的安全上下文查询与修改"},"sendmail":{"n":"sendmail","p":"/sendmail","d":"著名电子邮件服务器"},"compress":{"n":"compress","p":"/compress","d":"使用Lempress-Ziv编码压缩数据文件"},"newusers":{"n":"newusers","p":"/newusers","d":"用于批处理的方式一次创建多个命令"},"sesearch":{"n":"sesearch","p":"/sesearch","d":"查询SELinux策略的规则详情"},"aptitude":{"n":"aptitude","p":"/aptitude","d":"Debian Linux系统中软件包管理工具"},"pwunconv":{"n":"pwunconv","p":"/pwunconv","d":"用来关闭用户的投影密码"},"dircolors":{"n":"dircolors","p":"/dircolors","d":"置ls命令在显示目录或文件时所用的色彩"},"getsebool":{"n":"getsebool","p":"/getsebool","d":"查询SElinux策略内各项规则的布尔值"},"systemctl":{"n":"systemctl","p":"/systemctl","d":"系统服务管理器指令"},"fishshell":{"n":"fishshell","p":"/fishshell","d":"比 bash 更好用的 shell"},"chkconfig":{"n":"chkconfig","p":"/chkconfig","d":"检查或设置系统的各种服务"},"logrotate":{"n":"logrotate","p":"/logrotate","d":"统日志进行轮转、压缩和删除"},"lvdisplay":{"n":"lvdisplay","p":"/lvdisplay","d":"显示逻辑卷属性"},"mysqldump":{"n":"mysqldump","p":"/mysqldump","d":"MySQL数据库中备份工具"},"ssh-agent":{"n":"ssh-agent","p":"/ssh-agent","d":"ssh密钥管理器"},"mysqlshow":{"n":"mysqlshow","p":"/mysqlshow","d":"显示MySQL中数据库相关信息"},"grpunconv":{"n":"grpunconv","p":"/grpunconv","d":"用来关闭群组的投影密码"},"smbpasswd":{"n":"smbpasswd","p":"/smbpasswd","d":"samba用户和密码管理工具"},"arptables":{"n":"arptables","p":"/arptables","d":"管理ARP包过滤规则表"},"smbclient":{"n":"smbclient","p":"/smbclient","d":"交互方式访问samba服务器"},"showmount":{"n":"showmount","p":"/showmount","d":"显示NFS服务器加载的信息"},"clockdiff":{"n":"clockdiff","p":"/clockdiff","d":"检测两台linux主机的时间差"},"badblocks":{"n":"badblocks","p":"/badblocks","d":"查找磁盘中损坏的区块"},"ip6tables":{"n":"ip6tables","p":"/ip6tables","d":"linux中防火墙软件"},"setsebool":{"n":"setsebool","p":"/setsebool","d":"修改SElinux策略内各项规则的布尔值"},"apachectl":{"n":"apachectl","p":"/apachectl","d":"Apache服务器前端控制工具"},"rpmverify":{"n":"rpmverify","p":"/rpmverify","d":"验证已安装的RPM软件包的正确性"},"partprobe":{"n":"partprobe","p":"/partprobe","d":"不重启的情况下重读分区"},"tcpreplay":{"n":"tcpreplay","p":"/tcpreplay","d":"将PCAP包重新发送,用于性能或者功能测试"},"vgdisplay":{"n":"vgdisplay","p":"/vgdisplay","d":"显示LVM卷组的信息"},"vgconvert":{"n":"vgconvert","p":"/vgconvert","d":"转换卷组元数据格式"},"dmidecode":{"n":"dmidecode","p":"/dmidecode","d":"在Linux系统下获取有关硬件方面的信息"},"pvdisplay":{"n":"pvdisplay","p":"/pvdisplay","d":"显示物理卷的属性"},"tracepath":{"n":"tracepath","p":"/tracepath","d":"追踪目的主机经过的路由信息"},"uncompress":{"n":"uncompress","p":"/uncompress","d":"用来解压.Z文件"},"quotacheck":{"n":"quotacheck","p":"/quotacheck","d":"检查磁盘的使用空间与限制"},"traceroute":{"n":"traceroute","p":"/traceroute","d":"显示数据包到主机间的路径"},"usernetctl":{"n":"usernetctl","p":"/usernetctl","d":"被允许时操作指定的网络接口"},"domainname":{"n":"domainname","p":"/domainname","d":"显示和设置系统的NIS域名"},"getenforce":{"n":"getenforce","p":"/getenforce","d":"显示当前SELinux的应用模式,是强制、执行还是停用。"},"cupsenable":{"n":"cupsenable","p":"/cupsenable","d":"启动指定的打印机"},"get_module":{"n":"get_module","p":"/get_module","d":"获取Linux内核模块的详细信息"},"dpkg-query":{"n":"dpkg-query","p":"/dpkg-query","d":"Debian Linux中软件包的查询工具"},"ssh-keygen":{"n":"ssh-keygen","p":"/ssh-keygen","d":"为ssh生成、管理和转换认证密钥"},"dpkg-split":{"n":"dpkg-split","p":"/dpkg-split","d":"Debian Linux中将大软件包分割成小包"},"mkbootdisk":{"n":"mkbootdisk","p":"/mkbootdisk","d":"可建立目前系统的启动盘"},"unprotoize":{"n":"unprotoize","p":"/unprotoize","d":"删除C语言源代码文件中的函数原型"},"restorecon":{"n":"restorecon","p":"/restorecon","d":"恢复文件的安全上下文"},"mysqladmin":{"n":"mysqladmin","p":"/mysqladmin","d":"MySQL服务器管理客户端"},"xlsclients":{"n":"xlsclients","p":"/xlsclients","d":"列出显示器中的客户端应用程序"},"mysqlimport":{"n":"mysqlimport","p":"/mysqlimport","d":"为MySQL服务器用命令行方式导入数据"},"squidclient":{"n":"squidclient","p":"/squidclient","d":"squid服务器的客户端管理工具"},"sftp-server":{"n":"sftp-server","p":"/sftp-server","d":"sftp协议的服务器端程序"},"consoletype":{"n":"consoletype","p":"/consoletype","d":"输出已连接的终端类型"},"lsb_release":{"n":"lsb_release","p":"/lsb_release","d":"显示发行版本信息"},"ssh-copy-id":{"n":"ssh-copy-id","p":"/ssh-copy-id","d":"把本地的ssh公钥文件安装到远程主机对应的账户下"},"supervisord":{"n":"supervisord","p":"/supervisord","d":"配置后台服务/常驻进程的进程管家工具"},"cupsdisable":{"n":"cupsdisable","p":"/cupsdisable","d":"停止指定的打印机"},"dpkg-divert":{"n":"dpkg-divert","p":"/dpkg-divert","d":"Debian Linux中创建并管理一个转向列表"},"inotifywait":{"n":"inotifywait","p":"/inotifywait","d":"异步文件系统监控机制"},"ssh-keyscan":{"n":"ssh-keyscan","p":"/ssh-keyscan","d":"收集主机公钥的使用工具"},"dpkg-trigger":{"n":"dpkg-trigger","p":"/dpkg-trigger","d":"Debian Linux下的软件包触发器"},"apt-sortpkgs":{"n":"apt-sortpkgs","p":"/apt-sortpkgs","d":"Debian Linux下对软件包索引文件进行排序的工具"},"convertquota":{"n":"convertquota","p":"/convertquota","d":"把老的配额文件转换为新的格式"},"ypdomainname":{"n":"ypdomainname","p":"/ypdomainname","d":"显示主机的NIS的域名"},"bzip2recover":{"n":"bzip2recover","p":"/bzip2recover","d":"恢复被破坏的.bz2压缩包中的文件"},"firewall-cmd":{"n":"firewall-cmd","p":"/firewall-cmd","d":"Linux上新用的防火墙软件,跟iptables差不多的工具。"},"kernelversion":{"n":"kernelversion","p":"/kernelversion","d":"打印当前内核的主版本号"},"iptables-save":{"n":"iptables-save","p":"/iptables-save","d":"备份iptables的表配置"},"nisdomainname":{"n":"nisdomainname","p":"/nisdomainname","d":"显示主机NIS的域名"},"speedtest-cli":{"n":"speedtest-cli","p":"/speedtest-cli","d":"命令行下测试服务器外网速度"},"dnsdomainname":{"n":"dnsdomainname","p":"/dnsdomainname","d":"定义DNS系统中FQDN名称的域名"},"ip6tables-save":{"n":"ip6tables-save","p":"/ip6tables-save","d":"保存ip6tables表配置"},"named-checkzone":{"n":"named-checkzone","p":"/named-checkzone","d":"使用named-checkzone命令可以进行区域文件有效性检查和转换,必须指定区域名称和区域文件名称。"},"iptables-restore":{"n":"iptables-restore","p":"/iptables-restore","d":"还原iptables表的配置"},"dpkg-reconfigure":{"n":"dpkg-reconfigure","p":"/dpkg-reconfigure","d":"Debian Linux中重新配制一个已经安装的软件包"},"ip6tables-restore":{"n":"ip6tables-restore","p":"/ip6tables-restore","d":"还原ip6tables表"},"dpkg-statoverride":{"n":"dpkg-statoverride","p":"/dpkg-statoverride","d":"Debian Linux中覆盖文件的所有权和模式"},"dpkg-preconfigure":{"n":"dpkg-preconfigure","p":"/dpkg-preconfigure","d":"Debian Linux中软件包安装之前询问问题"}}
\ No newline at end of file
+{"ab":{"n":"ab","p":"/ab","d":"Apache服务器的性能测试工具"},"accept":{"n":"accept","p":"/accept","d":"指示打印系统接受发往指定目标打印机的打印任务"},"ack":{"n":"ack","p":"/ack","d":"比grep好用的文本搜索工具"},"alias":{"n":"alias","p":"/alias","d":"用来设置指令的别名"},"apachectl":{"n":"apachectl","p":"/apachectl","d":"Apache服务器前端控制工具"},"apk":{"n":"apk","p":"/apk","d":"Alpine Linux 下的包管理工具"},"apropos":{"n":"apropos","p":"/apropos","d":"在 whatis 数据库中查找字符串"},"apt-get":{"n":"apt-get","p":"/apt-get","d":"Debian Linux发行版中的APT软件包管理工具"},"apt-key":{"n":"apt-key","p":"/apt-key","d":"管理Debian Linux系统中的软件包密钥"},"apt-sortpkgs":{"n":"apt-sortpkgs","p":"/apt-sortpkgs","d":"Debian Linux下对软件包索引文件进行排序的工具"},"aptitude":{"n":"aptitude","p":"/aptitude","d":"Debian Linux系统中软件包管理工具"},"ar":{"n":"ar","p":"/ar","d":"建立或修改备存文件,或是从备存文件中抽取文件"},"arch":{"n":"arch","p":"/arch","d":"显示当前主机的硬件架构类型"},"arj":{"n":"arj","p":"/arj","d":"用于创建和管理.arj压缩包"},"arp":{"n":"arp","p":"/arp","d":"显示和修改IP到MAC转换表"},"arpd":{"n":"arpd","p":"/arpd","d":"收集免费ARP信息"},"arping":{"n":"arping","p":"/arping","d":"通过发送ARP协议报文测试网络"},"arptables":{"n":"arptables","p":"/arptables","d":"管理ARP包过滤规则表"},"arpwatch":{"n":"arpwatch","p":"/arpwatch","d":"监听网络上ARP的记录"},"as":{"n":"as","p":"/as","d":"汇编语言编译器"},"at":{"n":"at","p":"/at","d":"在指定时间执行一个任务"},"atop":{"n":"atop","p":"/atop","d":"监控Linux系统资源与进程的工具"},"atq":{"n":"atq","p":"/atq","d":"列出当前用户的at任务列表"},"atrm":{"n":"atrm","p":"/atrm","d":"删除待执行任务队列中的指定任务"},"awk":{"n":"awk","p":"/awk","d":"文本和数据进行处理的编程语言"},"axel":{"n":"axel","p":"/axel","d":"多线程下载工具"},"badblocks":{"n":"badblocks","p":"/badblocks","d":"查找磁盘中损坏的区块"},"basename":{"n":"basename","p":"/basename","d":"打印目录或者文件的基本名称"},"batch":{"n":"batch","p":"/batch","d":"在系统不繁忙的时候执行定时任务"},"bc":{"n":"bc","p":"/bc","d":"算术操作精密运算工具"},"bg":{"n":"bg","p":"/bg","d":"用于将作业放到后台运行"},"bind":{"n":"bind","p":"/bind","d":"显示或设置键盘按键与其相关的功能"},"blkid":{"n":"blkid","p":"/blkid","d":"查看块设备的文件系统类型、LABEL、UUID等信息"},"blockdev":{"n":"blockdev","p":"/blockdev","d":"从命令行调用区块设备控制程序"},"bmodinfo":{"n":"bmodinfo","p":"/bmodinfo","d":"显示给定模块的详细信息"},"builtin":{"n":"builtin","p":"/builtin","d":"执行shell内部命令"},"bunzip2":{"n":"bunzip2","p":"/bunzip2","d":"创一个bz2文件压缩包"},"bye":{"n":"bye","p":"/bye","d":"命令用于中断FTP连线并结束程序。。"},"bzcat":{"n":"bzcat","p":"/bzcat","d":"解压缩指定的.bz2文件"},"bzcmp":{"n":"bzcmp","p":"/bzcmp","d":"比较两个压缩包中的文件"},"bzdiff":{"n":"bzdiff","p":"/bzdiff","d":"直接比较两个.bz2压缩包中文件的不同"},"bzgrep":{"n":"bzgrep","p":"/bzgrep","d":"使用正则表达式搜索.bz2压缩包中文件"},"bzip2":{"n":"bzip2","p":"/bzip2","d":"将文件压缩成bz2格式"},"bzip2recover":{"n":"bzip2recover","p":"/bzip2recover","d":"恢复被破坏的.bz2压缩包中的文件"},"bzless":{"n":"bzless","p":"/bzless","d":"增强.bz2压缩包查看器"},"bzmore":{"n":"bzmore","p":"/bzmore","d":"查看bzip2压缩过的文本文件的内容"},"cal":{"n":"cal","p":"/cal","d":"显示当前日历或指定日期的日历"},"cancel":{"n":"cancel","p":"/cancel","d":"取消已存在的打印任务"},"cat":{"n":"cat","p":"/cat","d":"连接文件并打印到标准输出设备上"},"cd":{"n":"cd","p":"/cd","d":"切换用户当前工作目录"},"cdrecord":{"n":"cdrecord","p":"/cdrecord","d":"Linux系统下光盘刻录功能命令"},"chage":{"n":"chage","p":"/chage","d":"修改帐号和密码的有效期限"},"chattr":{"n":"chattr","p":"/chattr","d":"用来改变文件属性"},"chcon":{"n":"chcon","p":"/chcon","d":"修改对象(文件)的安全上下文"},"chfn":{"n":"chfn","p":"/chfn","d":"用来改变finger命令显示的信息"},"chgrp":{"n":"chgrp","p":"/chgrp","d":"用来变更文件或目录的所属群组"},"chkconfig":{"n":"chkconfig","p":"/chkconfig","d":"检查或设置系统的各种服务"},"chmod":{"n":"chmod","p":"/chmod","d":"用来变更文件或目录的权限"},"chown":{"n":"chown","p":"/chown","d":"用来变更文件或目录的拥有者或所属群组"},"chpasswd":{"n":"chpasswd","p":"/chpasswd","d":"批量更新用户口令的工具"},"chroot":{"n":"chroot","p":"/chroot","d":"把根目录换成指定的目的目录"},"chsh":{"n":"chsh","p":"/chsh","d":"用来更换登录系统时使用的shell"},"cksum":{"n":"cksum","p":"/cksum","d":"检查文件的CRC是否正确"},"clear":{"n":"clear","p":"/clear","d":"清除当前屏幕终端上的任何信息"},"clock":{"n":"clock","p":"/clock","d":"用于调整 RTC 时间。"},"clockdiff":{"n":"clockdiff","p":"/clockdiff","d":"检测两台linux主机的时间差"},"cmp":{"n":"cmp","p":"/cmp","d":"比较两个文件是否有差异"},"col":{"n":"col","p":"/col","d":"过滤控制字符"},"colrm":{"n":"colrm","p":"/colrm","d":"删除文件中的指定列"},"comm":{"n":"comm","p":"/comm","d":"两个文件之间的比较"},"command":{"n":"command","p":"/command","d":"调用并执行指定的命令"},"compress":{"n":"compress","p":"/compress","d":"使用Lempress-Ziv编码压缩数据文件"},"consoletype":{"n":"consoletype","p":"/consoletype","d":"输出已连接的终端类型"},"convertquota":{"n":"convertquota","p":"/convertquota","d":"把老的配额文件转换为新的格式"},"cp":{"n":"cp","p":"/cp","d":"将源文件或目录复制到目标文件或目录中"},"cpio":{"n":"cpio","p":"/cpio","d":"用来建立、还原备份档的工具程序"},"crontab":{"n":"crontab","p":"/crontab","d":"提交和管理用户的需要周期性执行的任务"},"csplit":{"n":"csplit","p":"/csplit","d":"将一个大文件分割成小的碎片文件"},"cu":{"n":"cu","p":"/cu","d":"用于连接另一个系统主机。"},"cupsdisable":{"n":"cupsdisable","p":"/cupsdisable","d":"停止指定的打印机"},"cupsenable":{"n":"cupsenable","p":"/cupsenable","d":"启动指定的打印机"},"curl":{"n":"curl","p":"/curl","d":"利用URL规则在命令行下工作的文件传输工具"},"cut":{"n":"cut","p":"/cut","d":"连接文件并打印到标准输出设备上"},"date":{"n":"date","p":"/date","d":"显示或设置系统时间与日期"},"dd":{"n":"dd","p":"/dd","d":"复制文件并对原文件的内容进行转换和格式化处理"},"declare":{"n":"declare","p":"/declare","d":"声明或显示shell变量"},"depmod":{"n":"depmod","p":"/depmod","d":"分析可载入模块的相依性"},"df":{"n":"df","p":"/df","d":"显示磁盘的相关信息"},"dhclient":{"n":"dhclient","p":"/dhclient","d":"动态获取或释放IP地址"},"dhcpd":{"n":"dhcpd","p":"/dhcpd","d":"运行DHCP服务器。"},"dhcrelay":{"n":"dhcrelay","p":"/dhcrelay","d":"使用dhcrelay命令可以提供中继DHCP和BOOTP请求"},"diff":{"n":"diff","p":"/diff","d":"比较给定的两个文件的不同"},"diff3":{"n":"diff3","p":"/diff3","d":"比较3个文件不同的地方"},"diffstat":{"n":"diffstat","p":"/diffstat","d":"显示diff命令输出信息的柱状图"},"dig":{"n":"dig","p":"/dig","d":"域名查询工具"},"dircolors":{"n":"dircolors","p":"/dircolors","d":"置ls命令在显示目录或文件时所用的色彩"},"dirname":{"n":"dirname","p":"/dirname","d":"去除文件名中的非目录部分"},"dirs":{"n":"dirs","p":"/dirs","d":"显示目录记录"},"dmesg":{"n":"dmesg","p":"/dmesg","d":"显示Linux系统启动信息"},"dmidecode":{"n":"dmidecode","p":"/dmidecode","d":"在Linux系统下获取有关硬件方面的信息"},"dnf":{"n":"dnf","p":"/dnf","d":"新一代的RPM软件包管理器"},"dnsdomainname":{"n":"dnsdomainname","p":"/dnsdomainname","d":"定义DNS系统中FQDN名称的域名"},"domainname":{"n":"domainname","p":"/domainname","d":"显示和设置系统的NIS域名"},"dos2unix":{"n":"dos2unix","p":"/dos2unix","d":"将DOS格式文本文件转换成Unix格式"},"dpkg-deb":{"n":"dpkg-deb","p":"/dpkg-deb","d":"Debian Linux下的软件包管理工具"},"dpkg-divert":{"n":"dpkg-divert","p":"/dpkg-divert","d":"Debian Linux中创建并管理一个转向列表"},"dpkg-preconfigure":{"n":"dpkg-preconfigure","p":"/dpkg-preconfigure","d":"Debian Linux中软件包安装之前询问问题"},"dpkg-query":{"n":"dpkg-query","p":"/dpkg-query","d":"Debian Linux中软件包的查询工具"},"dpkg-reconfigure":{"n":"dpkg-reconfigure","p":"/dpkg-reconfigure","d":"Debian Linux中重新配制一个已经安装的软件包"},"dpkg-split":{"n":"dpkg-split","p":"/dpkg-split","d":"Debian Linux中将大软件包分割成小包"},"dpkg-statoverride":{"n":"dpkg-statoverride","p":"/dpkg-statoverride","d":"Debian Linux中覆盖文件的所有权和模式"},"dpkg-trigger":{"n":"dpkg-trigger","p":"/dpkg-trigger","d":"Debian Linux下的软件包触发器"},"dpkg":{"n":"dpkg","p":"/dpkg","d":"Debian Linux系统上安装、创建和管理软件包"},"dris":{"n":"dris","p":"/dris","d":"显示和清空目录堆栈中的内容"},"dstat":{"n":"dstat","p":"/dstat","d":"通用的系统资源统计工具"},"du":{"n":"du","p":"/du","d":"显示每个文件和目录的磁盘使用空间"},"dump":{"n":"dump","p":"/dump","d":"用于备份ext2或者ext3文件系统"},"e2fsck":{"n":"e2fsck","p":"/e2fsck","d":"用于检查第二扩展文件系统的完整性"},"e2label":{"n":"e2label","p":"/e2label","d":"设置第二扩展文件系统的卷标"},"echo":{"n":"echo","p":"/echo","d":"输出指定的字符串或者变量"},"ed":{"n":"ed","p":"/ed","d":"单行纯文本编辑器"},"edquota":{"n":"edquota","p":"/edquota","d":"用于编辑指定用户或工作组磁盘配额"},"egrep":{"n":"egrep","p":"/egrep","d":"在文件内查找指定的字符串"},"eject":{"n":"eject","p":"/eject","d":"用来退出抽取式设备"},"elinks":{"n":"elinks","p":"/elinks","d":"纯文本界面的WWW浏览器"},"elm":{"n":"elm","p":"/elm","d":"纯文本邮件客户端程序"},"emacs":{"n":"emacs","p":"/emacs","d":"功能强大的全屏文本编辑器"},"enable":{"n":"enable","p":"/enable","d":"启动或关闭shell内建命令"},"env":{"n":"env","p":"/env","d":"显示系统中已存在的环境变量"},"ethtool":{"n":"ethtool","p":"/ethtool","d":"显示或修改以太网卡的配置信息"},"ex":{"n":"ex","p":"/ex","d":"启动vim编辑器的ex编辑模式"},"exec":{"n":"exec","p":"/exec","d":"调用并执行指定的命令"},"exit":{"n":"exit","p":"/exit","d":"退出当前的shell"},"expand":{"n":"expand","p":"/expand","d":"将文件的制表符转换为空白字符"},"export":{"n":"export","p":"/export","d":"设置或显示系统环境变量"},"exportfs":{"n":"exportfs","p":"/exportfs","d":"管理NFS共享文件系统列表"},"expr":{"n":"expr","p":"/expr","d":"一款表达式计算工具"},"fc":{"n":"fc","p":"/fc","d":"修改历史命令并执行"},"fdisk":{"n":"fdisk","p":"/fdisk","d":"查看磁盘使用情况和磁盘分区"},"fg":{"n":"fg","p":"/fg","d":"将后台作业放到前台终端运行"},"fgrep":{"n":"fgrep","p":"/fgrep","d":"为文件搜索文字字符串"},"file":{"n":"file","p":"/file","d":"用来探测给定文件的类型。"},"find":{"n":"find","p":"/find","d":"在指定目录下查找文件"},"findfs":{"n":"findfs","p":"/findfs","d":"标签或UUID查找文件系统"},"finger":{"n":"finger","p":"/finger","d":"用于查找并显示用户信息"},"firewall-cmd":{"n":"firewall-cmd","p":"/firewall-cmd","d":"Linux上新用的防火墙软件,跟iptables差不多的工具。"},"fishshell":{"n":"fishshell","p":"/fishshell","d":"比 bash 更好用的 shell"},"fmt":{"n":"fmt","p":"/fmt","d":"读取文件后优化处理并输出"},"fold":{"n":"fold","p":"/fold","d":"控制文件内容输出时所占用的屏幕宽度"},"free":{"n":"free","p":"/free","d":"显示内存的使用情况"},"fsck":{"n":"fsck","p":"/fsck","d":"检查并且试图修复文件系统中的错误"},"ftp":{"n":"ftp","p":"/ftp","d":"用来设置文件系统相关功能"},"ftpcount":{"n":"ftpcount","p":"/ftpcount","d":"显示目前已FTP登入的用户人数"},"ftpshut":{"n":"ftpshut","p":"/ftpshut","d":"在指定的时间关闭FTP服务器"},"ftptop":{"n":"ftptop","p":"/ftptop","d":"proftpd服务器的连接状态"},"ftpwho":{"n":"ftpwho","p":"/ftpwho","d":"显示当前每个ftp会话信息"},"fuser":{"n":"fuser","p":"/fuser","d":"使用文件或文件结构识别进程"},"gcc":{"n":"gcc","p":"/gcc","d":"基于C/C++的编译器"},"gcov":{"n":"gcov","p":"/gcov","d":"测试程序的代码覆盖率的工具"},"gdb":{"n":"gdb","p":"/gdb","d":"功能强大的程序调试器"},"get_module":{"n":"get_module","p":"/get_module","d":"获取Linux内核模块的详细信息"},"getenforce":{"n":"getenforce","p":"/getenforce","d":"显示当前SELinux的应用模式,是强制、执行还是停用。"},"getsebool":{"n":"getsebool","p":"/getsebool","d":"查询SElinux策略内各项规则的布尔值"},"git":{"n":"git","p":"/git","d":"是目前世界上最先进的分布式版本控制系统"},"gpasswd":{"n":"gpasswd","p":"/gpasswd","d":"Linux下工作组文件的管理工具"},"gpm":{"n":"gpm","p":"/gpm","d":"提供文字模式下的滑鼠事件处理"},"grep":{"n":"grep","p":"/grep","d":"强大的文本搜索工具"},"groupadd":{"n":"groupadd","p":"/groupadd","d":"用于创建一个新的工作组"},"groupdel":{"n":"groupdel","p":"/groupdel","d":"用于删除指定的工作组"},"groupmod":{"n":"groupmod","p":"/groupmod","d":"更改群组识别码或名称"},"groups":{"n":"groups","p":"/groups","d":"用来打印指定用户所属的工作组"},"grpck":{"n":"grpck","p":"/grpck","d":"用于验证组文件的完整性"},"grpconv":{"n":"grpconv","p":"/grpconv","d":"用来开启群组的投影密码"},"grpunconv":{"n":"grpunconv","p":"/grpunconv","d":"用来关闭群组的投影密码"},"grub":{"n":"grub","p":"/grub","d":"多重引导程序grub的命令行shell工具"},"gunzip":{"n":"gunzip","p":"/gunzip","d":"用来解压缩文件"},"gzexe":{"n":"gzexe","p":"/gzexe","d":"用来压缩可执行文件"},"gzip":{"n":"gzip","p":"/gzip","d":"用来压缩文件"},"halt":{"n":"halt","p":"/halt","d":"关闭正在运行的Linux操作系统"},"hdparm":{"n":"hdparm","p":"/hdparm","d":"显示与设定硬盘的参数"},"head":{"n":"head","p":"/head","d":"在屏幕上显示指定文件的开头若干行"},"help":{"n":"help","p":"/help","d":"显示帮助信息"},"hexdump":{"n":"hexdump","p":"/hexdump","d":"显示文件十六进制格式"},"history":{"n":"history","p":"/history","d":"用于显示历史命令"},"host":{"n":"host","p":"/host","d":"常用的分析域名查询工具"},"hostid":{"n":"hostid","p":"/hostid","d":"用来打印当前主机的数字化标识"},"hostname":{"n":"hostname","p":"/hostname","d":"显示和设置系统的主机名"},"hping3":{"n":"hping3","p":"/hping3","d":"测试网络及主机的安全"},"htdigest":{"n":"htdigest","p":"/htdigest","d":"Apache服务器内置工具"},"htop":{"n":"htop","p":"/htop","d":"[非内部命令]一个互动的进程查看器,可以动态观察系统进程状况。"},"htpasswd":{"n":"htpasswd","p":"/htpasswd","d":"apache服务器创建密码认证文件"},"hwclock":{"n":"hwclock","p":"/hwclock","d":"显示与设定硬件时钟"},"iconv":{"n":"iconv","p":"/iconv","d":"转换文件的编码方式"},"id":{"n":"id","p":"/id","d":"显示用户的ID以及所属群组的ID"},"ifcfg":{"n":"ifcfg","p":"/ifcfg","d":"置Linux中的网络接口参数"},"ifconfig":{"n":"ifconfig","p":"/ifconfig","d":"配置和显示Linux系统网卡的网络参数"},"ifdown":{"n":"ifdown","p":"/ifdown","d":"禁用指定的网络接口"},"ifstat":{"n":"ifstat","p":"/ifstat","d":"统计网络接口流量状态"},"iftop":{"n":"iftop","p":"/iftop","d":"一款实时流量监控工具"},"ifup":{"n":"ifup","p":"/ifup","d":"激活指定的网络接口"},"indent":{"n":"indent","p":"/indent","d":"格式化C语言的源文件"},"info":{"n":"info","p":"/info","d":"Linux下info格式的帮助指令"},"init":{"n":"init","p":"/init","d":"init进程是所有Linux进程的父进程"},"inotifywait":{"n":"inotifywait","p":"/inotifywait","d":"异步文件系统监控机制"},"insmod":{"n":"insmod","p":"/insmod","d":"将给定的模块加载到内核中"},"install":{"n":"install","p":"/install","d":"安装或升级软件或备份数据"},"iostat":{"n":"iostat","p":"/iostat","d":"监视系统输入输出设备和CPU的使用情况"},"iotop":{"n":"iotop","p":"/iotop","d":"用来监视磁盘I/O使用状况的工具"},"ip":{"n":"ip","p":"/ip","d":"网络配置工具"},"ip6tables-restore":{"n":"ip6tables-restore","p":"/ip6tables-restore","d":"还原ip6tables表"},"ip6tables-save":{"n":"ip6tables-save","p":"/ip6tables-save","d":"保存ip6tables表配置"},"ip6tables":{"n":"ip6tables","p":"/ip6tables","d":"linux中防火墙软件"},"ipcalc":{"n":"ipcalc","p":"/ipcalc","d":"简单的IP地址计算器"},"ipcrm":{"n":"ipcrm","p":"/ipcrm","d":"删除消息队列、信号集、或者共享内存标识"},"ipcs":{"n":"ipcs","p":"/ipcs","d":"分析消息队列共享内存和信号量 "},"iperf":{"n":"iperf","p":"/iperf","d":"网络性能测试工具"},"iptables-restore":{"n":"iptables-restore","p":"/iptables-restore","d":"还原iptables表的配置"},"iptables-save":{"n":"iptables-save","p":"/iptables-save","d":"备份iptables的表配置"},"iptables":{"n":"iptables","p":"/iptables","d":"Linux上常用的防火墙软件"},"iptraf":{"n":"iptraf","p":"/iptraf","d":"实时地监视网卡流量"},"iptstate":{"n":"iptstate","p":"/iptstate","d":"显示iptables的工作状态"},"ispell":{"n":"ispell","p":"/ispell","d":"检查文件中出现的拼写错误"},"jed":{"n":"jed","p":"/jed","d":"主要用于编辑代码的编辑器"},"jobs":{"n":"jobs","p":"/jobs","d":"显示Linux中的任务列表及任务状态"},"joe":{"n":"joe","p":"/joe","d":"强大的纯文本编辑器"},"join":{"n":"join","p":"/join","d":"两个文件中指定栏位内容相同的行连接起来"},"jwhois":{"n":"jwhois","p":"/jwhois","d":"whois 客户端服务"},"kernelversion":{"n":"kernelversion","p":"/kernelversion","d":"打印当前内核的主版本号"},"kexec":{"n":"kexec","p":"/kexec","d":"从当前正在运行的内核引导到一个新内核"},"kill":{"n":"kill","p":"/kill","d":"删除执行中的程序或工作"},"killall":{"n":"killall","p":"/killall","d":"使用进程的名称来杀死一组进程"},"last":{"n":"last","p":"/last","d":"列出目前与过去登入系统的用户相关信息"},"lastb":{"n":"lastb","p":"/lastb","d":"列出登入系统失败的用户相关信息"},"lastlog":{"n":"lastlog","p":"/lastlog","d":"显示系统中所有用户最近一次登录信息"},"ld":{"n":"ld","p":"/ld","d":"将目标文件连接为可执行程序"},"ldconfig":{"n":"ldconfig","p":"/ldconfig","d":"动态链接库管理命令"},"ldd":{"n":"ldd","p":"/ldd","d":"打印程序或者库文件所依赖的共享库列表"},"less":{"n":"less","p":"/less","d":"分屏上下翻页浏览文件内容"},"let":{"n":"let","p":"/let","d":"简单的计算器"},"lftp":{"n":"lftp","p":"/lftp","d":"优秀的文件客户端程序"},"lftpget":{"n":"lftpget","p":"/lftpget","d":"调用lftp指令下载指定的文件"},"lha":{"n":"lha","p":"/lha","d":"压缩或解压缩lzh格式文件"},"lilo":{"n":"lilo","p":"/lilo","d":"安装核心载入开机管理程序"},"ln":{"n":"ln","p":"/ln","d":"用来为文件创件连接"},"lnstat":{"n":"lnstat","p":"/lnstat","d":"显示Linux系统的网路状态"},"locate":{"n":"locate","p":"/locate","d":"比 find 好用的文件查找工具"},"logger":{"n":"logger","p":"/logger","d":"在系统日志中记录相应条目"},"login":{"n":"login","p":"/login","d":"登录系统或切换用户身份"},"logname":{"n":"logname","p":"/logname","d":"用来显示用户名称"},"logout":{"n":"logout","p":"/logout","d":"退出当前登录的Shell"},"logrotate":{"n":"logrotate","p":"/logrotate","d":"统日志进行轮转、压缩和删除"},"logsave":{"n":"logsave","p":"/logsave","d":"将命令的输出信息保存到指定的日志文件"},"logwatch":{"n":"logwatch","p":"/logwatch","d":"可定制和可插入式的日志监视系统"},"look":{"n":"look","p":"/look","d":"显示文件中以指定字符串开头的任意行"},"losetup":{"n":"losetup","p":"/losetup","d":"设定与控制循环(loop)设备"},"lp":{"n":"lp","p":"/lp","d":"打印文件或修改排队的打印任务"},"lpadmin":{"n":"lpadmin","p":"/lpadmin","d":"配置CUPS套件中的打印机和类"},"lpc":{"n":"lpc","p":"/lpc","d":"命令行方式打印机控制程序"},"lpq":{"n":"lpq","p":"/lpq","d":"显示打印队列中的打印任务的状态信息"},"lpr":{"n":"lpr","p":"/lpr","d":"将文件发送给指定打印机进行打印"},"lprm":{"n":"lprm","p":"/lprm","d":"删除打印队列中的打印任务"},"lpstat":{"n":"lpstat","p":"/lpstat","d":"显示CUPS中打印机的状态信息"},"ls":{"n":"ls","p":"/ls","d":"显示目录内容列表"},"lsattr":{"n":"lsattr","p":"/lsattr","d":"查看文件的第二扩展文件系统属性"},"lsb_release":{"n":"lsb_release","p":"/lsb_release","d":"显示发行版本信息"},"lsblk":{"n":"lsblk","p":"/lsblk","d":"列出块设备信息"},"lscpu":{"n":"lscpu","p":"/lscpu","d":"显示有关CPU架构的信息"},"lsmod":{"n":"lsmod","p":"/lsmod","d":"显示已载入系统的模块"},"lsof":{"n":"lsof","p":"/lsof","d":"显示Linux系统当前已打开的所有文件列表 `lsof -p pid`"},"lspci":{"n":"lspci","p":"/lspci","d":"显示当前主机的所有PCI总线信息"},"lsusb":{"n":"lsusb","p":"/lsusb","d":"显示本机的USB设备列表信息"},"ltrace":{"n":"ltrace","p":"/ltrace","d":"用来跟踪进程调用库函数的情况"},"lvcreate":{"n":"lvcreate","p":"/lvcreate","d":"用于创建LVM的逻辑卷"},"lvdisplay":{"n":"lvdisplay","p":"/lvdisplay","d":"显示逻辑卷属性"},"lvextend":{"n":"lvextend","p":"/lvextend","d":"扩展逻辑卷空间"},"lvreduce":{"n":"lvreduce","p":"/lvreduce","d":"收缩逻辑卷空间"},"lvremove":{"n":"lvremove","p":"/lvremove","d":"删除指定LVM逻辑卷"},"lvresize":{"n":"lvresize","p":"/lvresize","d":"调整逻辑卷空间大小"},"lvscan":{"n":"lvscan","p":"/lvscan","d":"扫描逻辑卷"},"lynx":{"n":"lynx","p":"/lynx","d":"纯文本模式的网页浏览器"},"mail":{"n":"mail","p":"/mail","d":"命令行下发送和接收电子邮件"},"mailq":{"n":"mailq","p":"/mailq","d":"显示待发送的邮件队列"},"mailstat":{"n":"mailstat","p":"/mailstat","d":"显示到达的邮件状态"},"make":{"n":"make","p":"/make","d":"GNU的工程化编译工具"},"man":{"n":"man","p":"/man","d":"查看Linux中的指令帮助"},"md5sum":{"n":"md5sum","p":"/md5sum","d":"计算和校验文件报文摘要的工具程序"},"mesg":{"n":"mesg","p":"/mesg","d":"设置当前终端的写权限"},"mii-tool":{"n":"mii-tool","p":"/mii-tool","d":"配置网络设备协商方式的工具"},"mkbootdisk":{"n":"mkbootdisk","p":"/mkbootdisk","d":"可建立目前系统的启动盘"},"mkdir":{"n":"mkdir","p":"/mkdir","d":"用来创建目录"},"mke2fs":{"n":"mke2fs","p":"/mke2fs","d":"创建磁盘分区上的“etc2/etc3”文件系统"},"mkfs":{"n":"mkfs","p":"/mkfs","d":"用于在设备上创建Linux文件系统"},"mkinitrd":{"n":"mkinitrd","p":"/mkinitrd","d":"建立要载入ramdisk的映像文件"},"mkisofs":{"n":"mkisofs","p":"/mkisofs","d":"建立ISO 9660映像文件"},"mknod":{"n":"mknod","p":"/mknod","d":"创建字符设备文件和块设备文件"},"mkswap":{"n":"mkswap","p":"/mkswap","d":"建立和设置SWAP交换分区"},"mktemp":{"n":"mktemp","p":"/mktemp","d":"创建临时文件供shell脚本使用"},"modprobe":{"n":"modprobe","p":"/modprobe","d":"自动处理可载入模块"},"more":{"n":"more","p":"/more","d":"显示文件内容,每次显示一屏"},"mount":{"n":"mount","p":"/mount","d":"用于挂载Linux系统外的文件。"},"mpstat":{"n":"mpstat","p":"/mpstat","d":"显示各个可用CPU的状态"},"mtools":{"n":"mtools","p":"/mtools","d":"显示mtools支持的指令"},"mv":{"n":"mv","p":"/mv","d":"用来对文件或目录重新命名"},"mysql":{"n":"mysql","p":"/mysql","d":"MySQL服务器客户端工具"},"mysqladmin":{"n":"mysqladmin","p":"/mysqladmin","d":"MySQL服务器管理客户端"},"mysqldump":{"n":"mysqldump","p":"/mysqldump","d":"MySQL数据库中备份工具"},"mysqlimport":{"n":"mysqlimport","p":"/mysqlimport","d":"为MySQL服务器用命令行方式导入数据"},"mysqlshow":{"n":"mysqlshow","p":"/mysqlshow","d":"显示MySQL中数据库相关信息"},"named-checkzone":{"n":"named-checkzone","p":"/named-checkzone","d":"使用named-checkzone命令可以进行区域文件有效性检查和转换,必须指定区域名称和区域文件名称。"},"nano":{"n":"nano","p":"/nano","d":"字符终端文本编辑器"},"nc":{"n":"nc","p":"/nc","d":"命令用于设置路由器。"},"ncftp":{"n":"ncftp","p":"/ncftp","d":"是增强的的FTP工具"},"nethogs":{"n":"nethogs","p":"/nethogs","d":"终端下的网络流量监控工具"},"netstat":{"n":"netstat","p":"/netstat","d":"查看Linux中网络系统状态信息"},"newusers":{"n":"newusers","p":"/newusers","d":"用于批处理的方式一次创建多个命令"},"nfsstat":{"n":"nfsstat","p":"/nfsstat","d":"列出NFS客户端和服务器的工作状态"},"ngrep":{"n":"ngrep","p":"/ngrep","d":"方便的数据包匹配和显示工具"},"nice":{"n":"nice","p":"/nice","d":"改变程序执行的优先权等级"},"nisdomainname":{"n":"nisdomainname","p":"/nisdomainname","d":"显示主机NIS的域名"},"nl":{"n":"nl","p":"/nl","d":"在Linux系统中计算文件内容行号"},"nm":{"n":"nm","p":"/nm","d":"显示二进制目标文件的符号表"},"nmap":{"n":"nmap","p":"/nmap","d":"网络探测和安全审核"},"nmcli":{"n":"nmcli","p":"/nmcli","d":"地址配置工具"},"nohup":{"n":"nohup","p":"/nohup","d":"将程序以忽略挂起信号的方式运行起来"},"nologin":{"n":"nologin","p":"/nologin","d":"拒绝用户登录系统"},"nslookup":{"n":"nslookup","p":"/nslookup","d":"查询域名DNS信息的工具"},"ntpdate":{"n":"ntpdate","p":"/ntpdate","d":"使用网络计时协议(NTP)设置日期和时间"},"ntsysv":{"n":"ntsysv","p":"/ntsysv","d":"集中管理系统的各种服务"},"objdump":{"n":"objdump","p":"/objdump","d":"显示二进制文件信息"},"od":{"n":"od","p":"/od","d":"输出文件的八进制、十六进制等格式编码的字节"},"openssl":{"n":"openssl","p":"/openssl","d":"强大的安全套接字层密码库"},"parted":{"n":"parted","p":"/parted","d":"磁盘分区和分区大小调整工具"},"partprobe":{"n":"partprobe","p":"/partprobe","d":"不重启的情况下重读分区"},"passwd":{"n":"passwd","p":"/passwd","d":"用于让用户可以更改自己的密码"},"paste":{"n":"paste","p":"/paste","d":"将多个文件按列队列合并"},"patch":{"n":"patch","p":"/patch","d":"为开放源代码软件安装补丁程序"},"pathchk":{"n":"pathchk","p":"/pathchk","d":"检查文件中不可移植的部分"},"perl":{"n":"perl","p":"/perl","d":"perl语言解释器"},"pfctl":{"n":"pfctl","p":"/pfctl","d":"PF防火墙的配置命令"},"pgrep":{"n":"pgrep","p":"/pgrep","d":"设置用户的认证信息,包括用户密码、密码过期时间等"},"php":{"n":"php","p":"/php","d":"PHP语言的命令行接口"},"pico":{"n":"pico","p":"/pico","d":"功能强大全屏幕的文本编辑器"},"pidof":{"n":"pidof","p":"/pidof","d":"查找指定名称的进程的进程号ID号"},"ping":{"n":"ping","p":"/ping","d":"测试主机之间网络的连通性"},"pkill":{"n":"pkill","p":"/pkill","d":"可以按照进程名杀死进程"},"pmap":{"n":"pmap","p":"/pmap","d":"报告进程的内存映射关系"},"popd":{"n":"popd","p":"/popd","d":"用于删除目录栈中的记录"},"poweroff":{"n":"poweroff","p":"/poweroff","d":"关闭Linux系统,关闭记录会被写入到/var/log/wtmp日志文件中。"},"ppp-off":{"n":"ppp-off","p":"/ppp-off","d":"关闭ppp连线"},"pr":{"n":"pr","p":"/pr","d":"将文本文件转换成适合打印的格式"},"printf":{"n":"printf","p":"/printf","d":"格式化并输出结果"},"protoize":{"n":"protoize","p":"/protoize","d":"GNU-C代码转换为ANSI-C代码"},"ps":{"n":"ps","p":"/ps","d":"报告当前系统的进程状态"},"pssh":{"n":"pssh","p":"/pssh","d":"批量管理执行"},"pstack":{"n":"pstack","p":"/pstack","d":"显示每个进程的栈跟踪"},"pstree":{"n":"pstree","p":"/pstree","d":"以树状图的方式展现进程之间的派生关系"},"pushd":{"n":"pushd","p":"/pushd","d":"将目录加入命令堆叠中"},"pv":{"n":"pv","p":"/pv","d":"显示当前在命令行执行的命令的进度信息,管道查看器。"},"pvchange":{"n":"pvchange","p":"/pvchange","d":"修改物理卷属性"},"pvck":{"n":"pvck","p":"/pvck","d":"检测物理卷的LVM元数据的一致性"},"pvcreate":{"n":"pvcreate","p":"/pvcreate","d":"将物理硬盘分区初始化为物理卷"},"pvdisplay":{"n":"pvdisplay","p":"/pvdisplay","d":"显示物理卷的属性"},"pvremove":{"n":"pvremove","p":"/pvremove","d":"删除一个存在的物理卷"},"pvs":{"n":"pvs","p":"/pvs","d":"输出物理卷信息报表"},"pvscan":{"n":"pvscan","p":"/pvscan","d":"扫描系统中所有硬盘的物理卷列表"},"pwck":{"n":"pwck","p":"/pwck","d":"用来验证系统认证文件内容和格式的完整性"},"pwconv":{"n":"pwconv","p":"/pwconv","d":"用来开启用户的投影密码"},"pwd":{"n":"pwd","p":"/pwd","d":"绝对路径方式显示用户当前工作目录"},"pwunconv":{"n":"pwunconv","p":"/pwunconv","d":"用来关闭用户的投影密码"},"quota":{"n":"quota","p":"/quota","d":"显示磁盘已使用的空间与限制"},"quotacheck":{"n":"quotacheck","p":"/quotacheck","d":"检查磁盘的使用空间与限制"},"quotaoff":{"n":"quotaoff","p":"/quotaoff","d":"关闭Linux内核中指定文件系统的磁盘配额功能"},"quotaon":{"n":"quotaon","p":"/quotaon","d":"激活Linux内核中指定文件系统的磁盘配额功能"},"rcconf":{"n":"rcconf","p":"/rcconf","d":"Debian Linux下的运行等级服务配置工具"},"rcp":{"n":"rcp","p":"/rcp","d":"使在两台Linux主机之间的文件复制操作更简单"},"read":{"n":"read","p":"/read","d":"从键盘读取变量值"},"readelf":{"n":"readelf","p":"/readelf","d":"用于显示elf格式文件的信息"},"readonly":{"n":"readonly","p":"/readonly","d":"定义只读shell变量或函数"},"reboot":{"n":"reboot","p":"/reboot","d":"重新启动正在运行的Linux操作系统"},"reject":{"n":"reject","p":"/reject","d":"指示打印系统拒绝发往指定目标打印机的打印任务"},"rename":{"n":"rename","p":"/rename","d":"用字符串替换的方式批量改变文件名"},"renice":{"n":"renice","p":"/renice","d":"修改正在运行的进程的调度优先级"},"repquota":{"n":"repquota","p":"/repquota","d":"报表的格式输出磁盘空间限制的状态"},"resize":{"n":"resize","p":"/resize","d":"命令设置终端机视窗的大小。"},"restore":{"n":"restore","p":"/restore","d":"所进行的操作和dump指令相反"},"restorecon":{"n":"restorecon","p":"/restorecon","d":"恢复文件的安全上下文"},"rev":{"n":"rev","p":"/rev","d":"将文件内容以字符为单位反序输出"},"rexec":{"n":"rexec","p":"/rexec","d":"运程执行Linux系统下命令 "},"rlogin":{"n":"rlogin","p":"/rlogin","d":"从当前终端登录到远程Linux主机"},"rm":{"n":"rm","p":"/rm","d":"用于删除给定的文件和目录"},"rmdir":{"n":"rmdir","p":"/rmdir","d":"用来删除空目录"},"rmmod":{"n":"rmmod","p":"/rmmod","d":"从运行的内核中移除指定的内核模块"},"route":{"n":"route","p":"/route","d":"显示并设置Linux中静态路由表"},"rpm":{"n":"rpm","p":"/rpm","d":"RPM软件包的管理工具"},"rpm2cpio":{"n":"rpm2cpio","p":"/rpm2cpio","d":"将RPM软件包转换为cpio格式的文件"},"rpmbuild":{"n":"rpmbuild","p":"/rpmbuild","d":"创建RPM的二进制软件包和源码软件包"},"rpmdb":{"n":"rpmdb","p":"/rpmdb","d":"初始化和重建RPM数据库"},"rpmquery":{"n":"rpmquery","p":"/rpmquery","d":"从RPM数据库中查询软件包信息"},"rpmsign":{"n":"rpmsign","p":"/rpmsign","d":"使用RPM软件包的签名管理工具"},"rpmverify":{"n":"rpmverify","p":"/rpmverify","d":"验证已安装的RPM软件包的正确性"},"rsh":{"n":"rsh","p":"/rsh","d":"连接远程主机并执行命令"},"rsync":{"n":"rsync","p":"/rsync","d":"远程数据同步工具"},"runlevel":{"n":"runlevel","p":"/runlevel","d":"打印当前Linux系统的运行等级"},"sar":{"n":"sar","p":"/sar","d":"系统运行状态统计工具"},"scp":{"n":"scp","p":"/scp","d":"加密的方式在本地主机和远程主机之间复制文件"},"screen":{"n":"screen","p":"/screen","d":"用于命令行终端切换"},"sed":{"n":"sed","p":"/sed","d":"功能强大的流式文本编辑器"},"seinfo":{"n":"seinfo","p":"/seinfo","d":"查询SELinux的策略提供多少相关规则"},"semanage":{"n":"semanage","p":"/semanage","d":"默认目录的安全上下文查询与修改"},"sendmail":{"n":"sendmail","p":"/sendmail","d":"著名电子邮件服务器"},"seq":{"n":"seq","p":"/seq","d":"以指定增量从首数开始打印数字到尾数"},"service":{"n":"service","p":"/service","d":"控制系统服务的实用工具"},"sesearch":{"n":"sesearch","p":"/sesearch","d":"查询SELinux策略的规则详情"},"set":{"n":"set","p":"/set","d":"显示或设置shell特性及shell变量"},"setfacl":{"n":"setfacl","p":"/setfacl","d":"设置文件访问控制列表"},"setpci":{"n":"setpci","p":"/setpci","d":"查询和配置PCI设备的使用工具"},"setsebool":{"n":"setsebool","p":"/setsebool","d":"修改SElinux策略内各项规则的布尔值"},"setsid":{"n":"setsid","p":"/setsid","d":"在新的会话中运行程序。"},"sftp-server":{"n":"sftp-server","p":"/sftp-server","d":"sftp协议的服务器端程序"},"sftp":{"n":"sftp","p":"/sftp","d":"交互式的文件传输程序"},"sh":{"n":"sh","p":"/sh","d":"shell命令解释器"},"shopt":{"n":"shopt","p":"/shopt","d":"显示和设置shell操作选项"},"showmount":{"n":"showmount","p":"/showmount","d":"显示NFS服务器加载的信息"},"shutdown":{"n":"shutdown","p":"/shutdown","d":"用来执行系统关机的命令"},"skill":{"n":"skill","p":"/skill","d":"向选定的进程发送信号冻结进程"},"slabtop":{"n":"slabtop","p":"/slabtop","d":"实时显示内核slab内存缓存信息"},"sleep":{"n":"sleep","p":"/sleep","d":"将目前动作延迟一段时间"},"slocate":{"n":"slocate","p":"/slocate","d":"命令查找文件或目录"},"smbclient":{"n":"smbclient","p":"/smbclient","d":"交互方式访问samba服务器"},"smbpasswd":{"n":"smbpasswd","p":"/smbpasswd","d":"samba用户和密码管理工具"},"sort":{"n":"sort","p":"/sort","d":"将文件进行排序并输出"},"source":{"n":"source","p":"/source","d":"在当前Shell环境中从指定文件读取和执行命令,命令返回退出状态。"},"speedtest-cli":{"n":"speedtest-cli","p":"/speedtest-cli","d":"命令行下测试服务器外网速度"},"spell":{"n":"spell","p":"/spell","d":"对文件进行拼写检查"},"split":{"n":"split","p":"/split","d":"分割任意大小的文件"},"squid":{"n":"squid","p":"/squid","d":"squid服务器守护进程"},"squidclient":{"n":"squidclient","p":"/squidclient","d":"squid服务器的客户端管理工具"},"ss":{"n":"ss","p":"/ss","d":"比 netstat 好用的socket统计信息,iproute2 包附带的另一个工具,允许你查询 socket 的有关统计信息。"},"ssh-add":{"n":"ssh-add","p":"/ssh-add","d":"把专用密钥添加到ssh-agent的高速缓存中"},"ssh-agent":{"n":"ssh-agent","p":"/ssh-agent","d":"ssh密钥管理器"},"ssh-copy-id":{"n":"ssh-copy-id","p":"/ssh-copy-id","d":"把本地的ssh公钥文件安装到远程主机对应的账户下"},"ssh-keygen":{"n":"ssh-keygen","p":"/ssh-keygen","d":"为ssh生成、管理和转换认证密钥"},"ssh-keyscan":{"n":"ssh-keyscan","p":"/ssh-keyscan","d":"收集主机公钥的使用工具"},"ssh":{"n":"ssh","p":"/ssh","d":"openssh套件中的客户端连接工具"},"sshd":{"n":"sshd","p":"/sshd","d":"openssh软件套件中的服务器守护进程"},"startx":{"n":"startx","p":"/startx","d":"用来启动X Window"},"stat":{"n":"stat","p":"/stat","d":"用于显示文件的状态信息"},"strace":{"n":"strace","p":"/strace","d":"跟踪系统调用和信号"},"strings":{"n":"strings","p":"/strings","d":"在对象文件或二进制文件中查找可打印的字符串"},"stty":{"n":"stty","p":"/stty","d":"修改终端命令行的相关设置"},"su":{"n":"su","p":"/su","d":"用于切换当前用户身份到其他用户身份"},"sudo":{"n":"sudo","p":"/sudo","d":"以其他身份来执行命令"},"sum":{"n":"sum","p":"/sum","d":"计算文件的校验码和显示块数"},"supervisord":{"n":"supervisord","p":"/supervisord","d":"配置后台服务/常驻进程的进程管家工具"},"swapoff":{"n":"swapoff","p":"/swapoff","d":"关闭指定的交换空间"},"swapon":{"n":"swapon","p":"/swapon","d":"激活Linux系统中交换空间"},"sync":{"n":"sync","p":"/sync","d":"用于强制被改变的内容立刻写入磁盘"},"sysctl":{"n":"sysctl","p":"/sysctl","d":"时动态地修改内核的运行参数"},"syslog":{"n":"syslog","p":"/syslog","d":"系统默认的日志守护进程"},"systemctl":{"n":"systemctl","p":"/systemctl","d":"系统服务管理器指令"},"systool":{"n":"systool","p":"/systool","d":"显示基于总线、类和拓扑显示系统中设备的信息"},"tac":{"n":"tac","p":"/tac","d":"将文件已行为单位的反序输出"},"tail":{"n":"tail","p":"/tail","d":"在屏幕上显示指定文件的末尾若干行"},"tailf":{"n":"tailf","p":"/tailf","d":"在屏幕上显示指定文件的末尾若干行内容,通常用于日志文件的跟踪输出。"},"talk":{"n":"talk","p":"/talk","d":"让用户和其他用户聊天"},"tar":{"n":"tar","p":"/tar","d":"Linux下的归档使用工具,用来打包和备份。"},"tcpdump":{"n":"tcpdump","p":"/tcpdump","d":"一款sniffer工具,是Linux上的抓包工具,嗅探器。"},"tcpreplay":{"n":"tcpreplay","p":"/tcpreplay","d":"将PCAP包重新发送,用于性能或者功能测试"},"tee":{"n":"tee","p":"/tee","d":"把数据重定向到给定文件和屏幕上"},"telint":{"n":"telint","p":"/telint","d":"切换当前正在运行系统的运行等级"},"telnet":{"n":"telnet","p":"/telnet","d":"登录远程主机和管理(测试ip端口是否连通)"},"tempfile":{"n":"tempfile","p":"/tempfile","d":"shell中给临时文件命名"},"test":{"n":"test","p":"/test","d":"shell环境中测试条件表达式工具"},"tftp":{"n":"tftp","p":"/tftp","d":"在本机和tftp服务器之间使用TFTP协议传输文件"},"time":{"n":"time","p":"/time","d":"统计给定命令所花费的总时间"},"tload":{"n":"tload","p":"/tload","d":"显示系统负载状况"},"tmux":{"n":"tmux","p":"/tmux","d":"Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权。"},"top":{"n":"top","p":"/top","d":"显示或管理执行中的程序"},"touch":{"n":"touch","p":"/touch","d":"创建新的空文件"},"tput":{"n":"tput","p":"/tput","d":"通过terminfo数据库对终端会话进行初始化和操作"},"tr":{"n":"tr","p":"/tr","d":"将字符进行替换压缩和删除"},"tracepath":{"n":"tracepath","p":"/tracepath","d":"追踪目的主机经过的路由信息"},"traceroute":{"n":"traceroute","p":"/traceroute","d":"显示数据包到主机间的路径"},"trap":{"n":"trap","p":"/trap","d":"指定在接收到信号后将要采取的动作"},"tree":{"n":"tree","p":"/tree","d":"树状图列出目录的内容"},"tty":{"n":"tty","p":"/tty","d":"显示连接到当前标准输入的终端设备文件名。"},"type":{"n":"type","p":"/type","d":"显示指定命令的类型"},"ulimit":{"n":"ulimit","p":"/ulimit","d":"控制shell程序的资源"},"umask":{"n":"umask","p":"/umask","d":"用来设置限制新建文件权限的掩码"},"umount":{"n":"umount","p":"/umount","d":"用于卸载已经加载的文件系统"},"unalias":{"n":"unalias","p":"/unalias","d":"删除由alias设置的别名"},"uname":{"n":"uname","p":"/uname","d":"显示Linux系统信息"},"unarj":{"n":"unarj","p":"/unarj","d":"解压缩由arj命令创建的压缩包"},"uncompress":{"n":"uncompress","p":"/uncompress","d":"用来解压.Z文件"},"unexpand":{"n":"unexpand","p":"/unexpand","d":"将文件的空白字符转换为制表符"},"uniq":{"n":"uniq","p":"/uniq","d":"报告或忽略文件中的重复行"},"unlink":{"n":"unlink","p":"/unlink","d":"系统调用函数unlink去删除指定的文件"},"unprotoize":{"n":"unprotoize","p":"/unprotoize","d":"删除C语言源代码文件中的函数原型"},"unset":{"n":"unset","p":"/unset","d":"删除指定的shell变量或函数"},"unzip":{"n":"unzip","p":"/unzip","d":"用于解压缩由zip命令压缩的压缩包"},"updatedb":{"n":"updatedb","p":"/updatedb","d":"创建或更新slocate命令所必需的数据库文件"},"uptime":{"n":"uptime","p":"/uptime","d":"查看Linux系统负载信息"},"useradd":{"n":"useradd","p":"/useradd","d":"创建的新的系统用户"},"userdel":{"n":"userdel","p":"/userdel","d":"用于删除给定的用户以及与用户相关的文件"},"usermod":{"n":"usermod","p":"/usermod","d":"用于修改用户的基本信息"},"usernetctl":{"n":"usernetctl","p":"/usernetctl","d":"被允许时操作指定的网络接口"},"users":{"n":"users","p":"/users","d":"显示当前登录系统的所有用户"},"uucico":{"n":"uucico","p":"/uucico","d":"UUCP文件传输服务程序。"},"uupick":{"n":"uupick","p":"/uupick","d":"命令处理传送进来的文件。"},"vdfuse":{"n":"vdfuse","p":"/vdfuse","d":"VirtualBox软件挂载VDI分区文件工具"},"vgchange":{"n":"vgchange","p":"/vgchange","d":"修改卷组属性"},"vgconvert":{"n":"vgconvert","p":"/vgconvert","d":"转换卷组元数据格式"},"vgcreate":{"n":"vgcreate","p":"/vgcreate","d":"用于创建LVM卷组"},"vgdisplay":{"n":"vgdisplay","p":"/vgdisplay","d":"显示LVM卷组的信息"},"vgextend":{"n":"vgextend","p":"/vgextend","d":"向卷组中添加物理卷"},"vgreduce":{"n":"vgreduce","p":"/vgreduce","d":"从卷组中删除物理卷"},"vgremove":{"n":"vgremove","p":"/vgremove","d":"用于用户删除LVM卷组"},"vgrename":{"n":"vgrename","p":"/vgrename","d":"使用vgrename命令可以重命名卷组的名称。"},"vgscan":{"n":"vgscan","p":"/vgscan","d":"扫描并显示系统中的卷组"},"vi":{"n":"vi","p":"/vi","d":"功能强大的纯文本编辑器"},"vmstat":{"n":"vmstat","p":"/vmstat","d":"显示虚拟内存状态"},"volname":{"n":"volname","p":"/volname","d":"显示指定的ISO-9660格式的设备的卷名称"},"w":{"n":"w","p":"/w","d":"显示目前登入系统的用户信息"},"wait":{"n":"wait","p":"/wait","d":"等待进程执行完后返回"},"wall":{"n":"wall","p":"/wall","d":"向系统当前所有打开的终端上输出信息"},"watch":{"n":"watch","p":"/watch","d":"可以将命令的输出结果输出到标准输出设备,多用于周期性执行命令/定时执行命令"},"wc":{"n":"wc","p":"/wc","d":"统计文件的字节数、字数、行数"},"wget":{"n":"wget","p":"/wget","d":"Linux系统下载文件工具"},"whatis":{"n":"whatis","p":"/whatis","d":"查询一个命令执行什么功能"},"whereis":{"n":"whereis","p":"/whereis","d":"查找二进制程序、代码等相关文件路径"},"which":{"n":"which","p":"/which","d":"查找并显示给定命令的绝对路径"},"who":{"n":"who","p":"/who","d":"显示目前登录系统的用户信息"},"whoami":{"n":"whoami","p":"/whoami","d":"打印当前有效的用户名称"},"write":{"n":"write","p":"/write","d":"向指定登录用户终端上发送信息"},"xargs":{"n":"xargs","p":"/xargs","d":"给其他命令传递参数的一个过滤器"},"xauth":{"n":"xauth","p":"/xauth","d":"显示和编辑被用于连接X服务器的认证信息"},"xclip":{"n":"xclip","p":"/xclip","d":"管理 X 粘贴板"},"xhost":{"n":"xhost","p":"/xhost","d":"制哪些X客户端能够在X服务器上显示"},"xinit":{"n":"xinit","p":"/xinit","d":"是Linux下X-Window系统的初始化程序"},"xlsatoms":{"n":"xlsatoms","p":"/xlsatoms","d":"列出X服务器内部所有定义的原子成分"},"xlsclients":{"n":"xlsclients","p":"/xlsclients","d":"列出显示器中的客户端应用程序"},"xlsfonts":{"n":"xlsfonts","p":"/xlsfonts","d":"列出X Server使用的字体"},"xset":{"n":"xset","p":"/xset","d":"设置X-Window系统中的用户爱好的实用工具"},"xz":{"n":"xz","p":"/xz","d":"POSIX 平台开发具有高压缩率的工具。"},"yes":{"n":"yes","p":"/yes","d":"重复打印指定字符串"},"ypdomainname":{"n":"ypdomainname","p":"/ypdomainname","d":"显示主机的NIS的域名"},"yum":{"n":"yum","p":"/yum","d":"基于RPM的软件包管理器"},"zcat":{"n":"zcat","p":"/zcat","d":"显示压缩包中文件的内容"},"zfore":{"n":"zfore","p":"/zfore","d":"强制为gzip格式的压缩文件添加.gz后缀"},"zip":{"n":"zip","p":"/zip","d":"可以用来解压缩文件"},"zipinfo":{"n":"zipinfo","p":"/zipinfo","d":"用来列出压缩文件信息"},"zipsplit":{"n":"zipsplit","p":"/zipsplit","d":"将较大的zip压缩包分割成各个较小的压缩包"},"znew":{"n":"znew","p":"/znew","d":"将.Z压缩包重新转化为gzip命令压缩的.gz压缩包"}}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 998b23b3224..91b2116ff34 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,1768 +1,566 @@
 {
   "name": "linux-command",
-  "version": "1.0.3",
+  "version": "1.2.0",
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
-    "abab": {
-      "version": "https://registry.npmjs.org/abab/-/abab-1.0.3.tgz",
-      "integrity": "sha1-uB3l9ydOxOdW15fNg08wNkJyTl0=",
-      "dev": true
-    },
-    "acorn": {
-      "version": "https://registry.npmjs.org/acorn/-/acorn-4.0.11.tgz",
-      "integrity": "sha1-7c2jvZN+dVZBDULtWGD2c5nHlMA=",
-      "dev": true
-    },
-    "acorn-globals": {
-      "version": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz",
-      "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=",
-      "dev": true,
-      "requires": {
-        "acorn": "https://registry.npmjs.org/acorn/-/acorn-4.0.11.tgz"
-      }
-    },
-    "ajv": {
-      "version": "https://registry.npmjs.org/ajv/-/ajv-4.11.5.tgz",
-      "integrity": "sha1-tu50ZXuZOgHc5Et5RNVvSFgo1b0=",
-      "dev": true,
-      "requires": {
-        "co": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
-        "json-stable-stringify": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz"
-      }
-    },
-    "align-text": {
-      "version": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
-      "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
-      "dev": true,
-      "requires": {
-        "kind-of": "https://registry.npmjs.org/kind-of/-/kind-of-3.1.0.tgz",
-        "longest": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
-        "repeat-string": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz"
-      }
-    },
     "amdefine": {
-      "version": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
       "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
       "dev": true
     },
-    "ansi-regex": {
-      "version": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
-      "dev": true
-    },
-    "ansi-styles": {
-      "version": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
-      "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
-      "dev": true
-    },
-    "argparse": {
-      "version": "1.0.9",
-      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz",
-      "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=",
-      "dev": true,
-      "requires": {
-        "sprintf-js": "1.0.3"
-      }
-    },
-    "array-equal": {
-      "version": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz",
-      "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=",
-      "dev": true
-    },
     "array-union": {
-      "version": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
       "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
       "dev": true,
       "requires": {
-        "array-uniq": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz"
+        "array-uniq": "^1.0.1"
       }
     },
     "array-uniq": {
-      "version": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
       "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
       "dev": true
     },
-    "asn1": {
-      "version": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
-      "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
-      "dev": true
-    },
-    "assert-plus": {
-      "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
-      "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=",
-      "dev": true
-    },
     "async": {
-      "version": "https://registry.npmjs.org/async/-/async-2.1.2.tgz",
-      "integrity": "sha1-YSpKtF70KnDN6Aa62G7m2wR+g4U=",
+      "version": "2.6.1",
+      "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
+      "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
       "dev": true,
       "requires": {
-        "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz"
+        "lodash": "^4.17.10"
       }
     },
-    "asynckit": {
-      "version": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
-      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+    "balanced-match": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
       "dev": true
     },
-    "autoprefixer": {
-      "version": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz",
-      "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=",
+    "brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
       "dev": true,
       "requires": {
-        "browserslist": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
-        "caniuse-db": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000646.tgz",
-        "normalize-range": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
-        "num2fraction": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
-        "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.16.tgz",
-        "postcss-value-parser": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz"
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
       }
     },
-    "autoprefixer-stylus": {
-      "version": "https://registry.npmjs.org/autoprefixer-stylus/-/autoprefixer-stylus-0.11.0.tgz",
-      "integrity": "sha1-AgZO2IvHzws3PzNGu14GYDmzbgI=",
+    "clipboard": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.1.tgz",
+      "integrity": "sha512-7yhQBmtN+uYZmfRjjVjKa0dZdWuabzpSKGtyQZN+9C8xlC788SSJjOHWh7tzurfwTqTD5UDYAhIv5fRJg3sHjQ==",
       "dev": true,
+      "optional": true,
       "requires": {
-        "autoprefixer": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.5.0.tgz",
-        "multi-stage-sourcemap": "https://registry.npmjs.org/multi-stage-sourcemap/-/multi-stage-sourcemap-0.2.1.tgz",
-        "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.4.tgz"
-      },
-      "dependencies": {
-        "autoprefixer": {
-          "version": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.5.0.tgz",
-          "integrity": "sha1-kQ3gqg8ir0x9UDZ8vJ1NQSlFFi8=",
-          "dev": true,
-          "requires": {
-            "browserslist": "https://registry.npmjs.org/browserslist/-/browserslist-1.4.0.tgz",
-            "caniuse-db": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000646.tgz",
-            "normalize-range": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
-            "num2fraction": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
-            "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.4.tgz",
-            "postcss-value-parser": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz"
-          }
-        },
-        "browserslist": {
-          "version": "https://registry.npmjs.org/browserslist/-/browserslist-1.4.0.tgz",
-          "integrity": "sha1-nP3PU4TZFY9bcNoqoAsw6P8BkEk=",
-          "dev": true,
-          "requires": {
-            "caniuse-db": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000646.tgz"
-          }
-        },
-        "postcss": {
-          "version": "https://registry.npmjs.org/postcss/-/postcss-5.2.4.tgz",
-          "integrity": "sha1-jrS+4+XE4JFYWxFt8y2NskpTXyE=",
-          "dev": true,
-          "requires": {
-            "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-            "js-base64": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz",
-            "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
-            "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz"
-          }
-        },
-        "supports-color": {
-          "version": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
-          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
-          "dev": true,
-          "requires": {
-            "has-flag": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz"
-          }
-        }
+        "good-listener": "^1.2.2",
+        "select": "^1.1.2",
+        "tiny-emitter": "^2.0.0"
       }
     },
-    "aws-sign2": {
-      "version": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
-      "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=",
-      "dev": true
-    },
-    "aws4": {
-      "version": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
-      "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=",
+    "colors-cli": {
+      "version": "1.0.20",
+      "resolved": "https://registry.npmjs.org/colors-cli/-/colors-cli-1.0.20.tgz",
+      "integrity": "sha512-cV6cg526xhNa1vUkMIK6+vSoPTXz9eqiYRTTnOokm7jUT57w/Gpwi6wqrFtu388w2eC7SPYdEzQ19uMP9buB+w==",
       "dev": true
     },
-    "balanced-match": {
-      "version": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
-      "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
+    "commander": {
+      "version": "2.18.0",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-2.18.0.tgz",
+      "integrity": "sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==",
       "dev": true
     },
-    "bcrypt-pbkdf": {
-      "version": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
-      "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "tweetnacl": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz"
-      }
-    },
-    "block-elements": {
-      "version": "https://registry.npmjs.org/block-elements/-/block-elements-1.1.0.tgz",
-      "integrity": "sha1-ef6/iDD6aiJTK1thnZybGB518JM=",
+    "concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
       "dev": true
     },
-    "boolbase": {
-      "version": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
-      "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
+    "css-parse": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz",
+      "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=",
       "dev": true
     },
-    "boom": {
-      "version": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
-      "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
-      "dev": true,
-      "requires": {
-        "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz"
-      }
-    },
-    "brace-expansion": {
-      "version": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz",
-      "integrity": "sha1-cZfX6qm4fmSDkOph/GbIRCdCDfk=",
+    "debug": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.0.1.tgz",
+      "integrity": "sha512-K23FHJ/Mt404FSlp6gSZCevIbTMLX0j3fmHhUEhQ3Wq0FMODW3+cUSoLdy1Gx4polAf4t/lphhmHH35BB8cLYw==",
       "dev": true,
       "requires": {
-        "balanced-match": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
-        "concat-map": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
+        "ms": "^2.1.1"
       }
     },
-    "browserslist": {
-      "version": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
-      "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
+    "delegate": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
+      "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==",
       "dev": true,
-      "requires": {
-        "caniuse-db": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000646.tgz",
-        "electron-to-chromium": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.2.tgz"
-      }
+      "optional": true
     },
-    "buffer-shims": {
-      "version": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz",
-      "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=",
+    "ejs": {
+      "version": "2.6.1",
+      "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz",
+      "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==",
       "dev": true
     },
-    "camelcase": {
-      "version": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
-      "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+    "email-addresses": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.0.2.tgz",
+      "integrity": "sha512-IMn9dnwLMsgZjdUHswB/UZ0S8LQ/u+2/qjnHJ9tCtp3QHZsIYwJCiJOo2FT0i3CwwK/dtSODYtxuvzV4D9MY5g==",
       "dev": true
     },
-    "caniuse-db": {
-      "version": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000646.tgz",
-      "integrity": "sha1-xyS5DWHfJChuAV/FKNBiBzwA3vQ=",
+    "escape-string-regexp": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
       "dev": true
     },
-    "caseless": {
-      "version": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
-      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+    "filename-reserved-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz",
+      "integrity": "sha1-5hz4BfDeHJhFZ9A4bcXfUO5a9+Q=",
       "dev": true
     },
-    "center-align": {
-      "version": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
-      "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
-      "dev": true,
-      "requires": {
-        "align-text": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
-        "lazy-cache": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz"
-      }
-    },
-    "chalk": {
-      "version": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-      "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+    "filenamify": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-1.2.1.tgz",
+      "integrity": "sha1-qfL/0RxQO+0wABUCknI3jx8TZaU=",
       "dev": true,
       "requires": {
-        "ansi-styles": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
-        "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
-        "has-ansi": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
-        "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-        "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz"
+        "filename-reserved-regex": "^1.0.0",
+        "strip-outer": "^1.0.0",
+        "trim-repeated": "^1.0.0"
       }
     },
-    "cheerio": {
-      "version": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz",
-      "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=",
+    "filenamify-url": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/filenamify-url/-/filenamify-url-1.0.0.tgz",
+      "integrity": "sha1-syvYExnvWGO3MHi+1Q9GpPeXX1A=",
       "dev": true,
       "requires": {
-        "css-select": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
-        "dom-serializer": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
-        "entities": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
-        "htmlparser2": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz",
-        "lodash.assignin": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz",
-        "lodash.bind": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz",
-        "lodash.defaults": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
-        "lodash.filter": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz",
-        "lodash.flatten": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
-        "lodash.foreach": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz",
-        "lodash.map": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz",
-        "lodash.merge": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz",
-        "lodash.pick": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
-        "lodash.reduce": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz",
-        "lodash.reject": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz",
-        "lodash.some": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz"
+        "filenamify": "^1.0.0",
+        "humanize-url": "^1.0.0"
       }
     },
-    "cliui": {
-      "version": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
-      "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+    "fs-extra": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.0.tgz",
+      "integrity": "sha512-EglNDLRpmaTWiD/qraZn6HREAEAHJcJOmxNEYwq6xeMKnVMAy3GUcFB+wXt2C6k4CNvB/mP1y/U3dzvKKj5OtQ==",
       "dev": true,
       "requires": {
-        "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-        "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-        "wrap-ansi": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz"
+        "graceful-fs": "^4.1.2",
+        "jsonfile": "^4.0.0",
+        "universalify": "^0.1.0"
       }
     },
-    "co": {
-      "version": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
-      "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
-      "dev": true
-    },
-    "code-point-at": {
-      "version": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
-      "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+    "fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
       "dev": true
     },
-    "collapse-whitespace": {
-      "version": "https://registry.npmjs.org/collapse-whitespace/-/collapse-whitespace-1.1.2.tgz",
-      "integrity": "sha1-ubMdedVZTuPCLBWBnFSCjlZbMIU=",
+    "gh-pages": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-2.0.0.tgz",
+      "integrity": "sha512-zGs6QDPXOpzZRa53s4/ezazHnRLY11RPo6CfbhOyVIl/wdWMZOIuuOhxrUhmVAO8Xdiu2OeGmBPy/+zsUCD/0Q==",
       "dev": true,
       "requires": {
-        "block-elements": "https://registry.npmjs.org/block-elements/-/block-elements-1.1.0.tgz",
-        "void-elements": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz"
+        "async": "^2.6.1",
+        "commander": "^2.18.0",
+        "email-addresses": "^3.0.1",
+        "filenamify-url": "^1.0.0",
+        "fs-extra": "^7.0.0",
+        "globby": "^6.1.0",
+        "graceful-fs": "^4.1.11",
+        "rimraf": "^2.6.2"
       }
     },
-    "collections": {
-      "version": "https://registry.npmjs.org/collections/-/collections-0.2.2.tgz",
-      "integrity": "sha1-HyMCay7zb5J+7MkB6ZxfDUj6M04=",
+    "glob": {
+      "version": "7.1.3",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+      "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
       "dev": true,
       "requires": {
-        "weak-map": "https://registry.npmjs.org/weak-map/-/weak-map-1.0.0.tgz"
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.0.4",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
       }
     },
-    "colors-cli": {
-      "version": "https://registry.npmjs.org/colors-cli/-/colors-cli-1.0.8.tgz",
-      "integrity": "sha1-svtixOo8MWk7u7mWgqYK3P6pyfs=",
-      "dev": true
-    },
-    "combined-stream": {
-      "version": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
-      "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
+    "globby": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
+      "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
       "dev": true,
       "requires": {
-        "delayed-stream": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
+        "array-union": "^1.0.1",
+        "glob": "^7.0.3",
+        "object-assign": "^4.0.1",
+        "pify": "^2.0.0",
+        "pinkie-promise": "^2.0.0"
       }
     },
-    "commander": {
-      "version": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
-      "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=",
+    "good-listener": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
+      "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=",
       "dev": true,
+      "optional": true,
       "requires": {
-        "graceful-readlink": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz"
+        "delegate": "^3.1.2"
       }
     },
-    "component-emitter": {
-      "version": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
-      "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
-      "dev": true
-    },
-    "concat-map": {
-      "version": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
-      "dev": true
-    },
-    "content-type-parser": {
-      "version": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.1.tgz",
-      "integrity": "sha1-w+VpiMU8ZRJ/tG1AMqOpACRv3JQ=",
-      "dev": true
-    },
-    "cookiejar": {
-      "version": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.0.tgz",
-      "integrity": "sha1-hlSWiVObbQ4mm2Y3owS+UIGU2Jg=",
-      "dev": true
-    },
-    "core-util-is": {
-      "version": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
-      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+    "graceful-fs": {
+      "version": "4.1.11",
+      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+      "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
       "dev": true
     },
-    "cryptiles": {
-      "version": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
-      "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
+    "humanize-url": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/humanize-url/-/humanize-url-1.0.1.tgz",
+      "integrity": "sha1-9KuZ4NKIF0yk4eUEB8VfuuRk7/8=",
       "dev": true,
       "requires": {
-        "boom": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz"
+        "normalize-url": "^1.0.0",
+        "strip-url-auth": "^1.0.0"
       }
     },
-    "css-parse": {
-      "version": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz",
-      "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=",
-      "dev": true
-    },
-    "css-select": {
-      "version": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
-      "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
+    "inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
       "dev": true,
       "requires": {
-        "boolbase": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
-        "css-what": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz",
-        "domutils": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
-        "nth-check": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz"
+        "once": "^1.3.0",
+        "wrappy": "1"
       }
     },
-    "css-what": {
-      "version": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz",
-      "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=",
+    "inherits": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
       "dev": true
     },
-    "cssom": {
-      "version": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz",
-      "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=",
+    "is-plain-obj": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+      "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
       "dev": true
     },
-    "cssstyle": {
-      "version": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz",
-      "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=",
-      "dev": true,
-      "requires": {
-        "cssom": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz"
-      }
-    },
-    "dashdash": {
-      "version": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
-      "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+    "jsonfile": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+      "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
       "dev": true,
       "requires": {
-        "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz"
-      },
-      "dependencies": {
-        "assert-plus": {
-          "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
-          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
-          "dev": true
-        }
+        "graceful-fs": "^4.1.6"
       }
     },
-    "debug": {
-      "version": "https://registry.npmjs.org/debug/-/debug-2.6.3.tgz",
-      "integrity": "sha1-D364wwll7AjHKsz6ATDIt5mEFB0=",
+    "loading-cli": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/loading-cli/-/loading-cli-1.0.8.tgz",
+      "integrity": "sha512-h2PgbEPRQzDj9Ox8voggvXfRkxIQGMGRPwCAGPijRjXB0UyiIBAdYjoJG0on/uCl0gYLeJJQ9bgOiKO1v+++vA==",
       "dev": true,
       "requires": {
-        "ms": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz"
+        "colors-cli": "^1.0.14"
       }
     },
-    "decamelize": {
-      "version": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-      "dev": true
-    },
-    "deep-is": {
-      "version": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
-      "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+    "lodash": {
+      "version": "4.17.11",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
+      "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
       "dev": true
     },
-    "delayed-stream": {
-      "version": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
-      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+    "marked": {
+      "version": "0.5.1",
+      "resolved": "https://registry.npmjs.org/marked/-/marked-0.5.1.tgz",
+      "integrity": "sha512-iUkBZegCZou4AdwbKTwSW/lNDcz5OuRSl3qdcl31Ia0B2QPG0Jn+tKblh/9/eP9/6+4h27vpoh8wel/vQOV0vw==",
       "dev": true
     },
-    "dom-serializer": {
-      "version": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
-      "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
+    "minimatch": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
       "dev": true,
       "requires": {
-        "domelementtype": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
-        "entities": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz"
-      },
-      "dependencies": {
-        "domelementtype": {
-          "version": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
-          "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=",
-          "dev": true
-        }
+        "brace-expansion": "^1.1.7"
       }
     },
-    "domelementtype": {
-      "version": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
-      "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=",
+    "minimist": {
+      "version": "0.0.8",
+      "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+      "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
       "dev": true
     },
-    "domhandler": {
-      "version": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz",
-      "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=",
+    "mkdirp": {
+      "version": "0.5.1",
+      "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
       "dev": true,
       "requires": {
-        "domelementtype": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz"
+        "minimist": "0.0.8"
       }
     },
-    "domutils": {
-      "version": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
-      "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
-      "dev": true,
-      "requires": {
-        "dom-serializer": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
-        "domelementtype": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz"
-      }
+    "ms": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+      "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+      "dev": true
     },
-    "ecc-jsbn": {
-      "version": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
-      "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
+    "normalize-url": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz",
+      "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
       "dev": true,
-      "optional": true,
       "requires": {
-        "jsbn": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz"
+        "object-assign": "^4.0.1",
+        "prepend-http": "^1.0.0",
+        "query-string": "^4.1.0",
+        "sort-keys": "^1.0.0"
       }
     },
-    "ejs": {
-      "version": "https://registry.npmjs.org/ejs/-/ejs-2.5.6.tgz",
-      "integrity": "sha1-R5Y2v6P+Ox3r1SCH8KyyBLTxnIg=",
-      "dev": true
-    },
-    "electron-to-chromium": {
-      "version": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.2.tgz",
-      "integrity": "sha1-uM5ck7MI2w6S9tBDXEbd7I9jY6s=",
-      "dev": true
-    },
-    "entities": {
-      "version": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
-      "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=",
-      "dev": true
-    },
-    "escape-string-regexp": {
-      "version": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
-      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+    "object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
       "dev": true
     },
-    "escodegen": {
-      "version": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz",
-      "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=",
+    "once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
       "dev": true,
       "requires": {
-        "esprima": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
-        "estraverse": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz",
-        "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
-        "optionator": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
-        "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz",
-          "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "amdefine": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz"
-          }
-        }
+        "wrappy": "1"
       }
     },
-    "esprima": {
-      "version": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
-      "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
-      "dev": true
-    },
-    "estraverse": {
-      "version": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz",
-      "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=",
-      "dev": true
-    },
-    "esutils": {
-      "version": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
-      "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
-      "dev": true
-    },
-    "exec-sh": {
-      "version": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.0.tgz",
-      "integrity": "sha1-FPdd4/INKG75MwmbLOUKkDWc7xA=",
+    "path": {
+      "version": "0.12.7",
+      "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz",
+      "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=",
       "dev": true,
       "requires": {
-        "merge": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz"
+        "process": "^0.11.1",
+        "util": "^0.10.3"
       }
     },
-    "extend": {
-      "version": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz",
-      "integrity": "sha1-WkdDU7nzNT3dgXbf03uRyDpG8dQ=",
-      "dev": true
-    },
-    "extsprintf": {
-      "version": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz",
-      "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=",
+    "path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
       "dev": true
     },
-    "fast-levenshtein": {
-      "version": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
-      "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+    "pify": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+      "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
       "dev": true
     },
-    "forever-agent": {
-      "version": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
-      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+    "pinkie": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
       "dev": true
     },
-    "form-data": {
-      "version": "https://registry.npmjs.org/form-data/-/form-data-2.1.2.tgz",
-      "integrity": "sha1-icNTQAi5fq2ky7FX1Y9vXfAl6uQ=",
+    "pinkie-promise": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
       "dev": true,
       "requires": {
-        "asynckit": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
-        "combined-stream": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
-        "mime-types": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz"
+        "pinkie": "^2.0.0"
       }
     },
-    "formidable": {
-      "version": "https://registry.npmjs.org/formidable/-/formidable-1.1.1.tgz",
-      "integrity": "sha1-lriIb3w8NQi5Mta9cMTTqI818ak=",
-      "dev": true
-    },
-    "fs.realpath": {
-      "version": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+    "prepend-http": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
+      "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
       "dev": true
     },
-    "getpass": {
-      "version": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz",
-      "integrity": "sha1-KD/9n8ElaECHUxHBtg6MQBhxEOY=",
+    "prismjs": {
+      "version": "1.15.0",
+      "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.15.0.tgz",
+      "integrity": "sha512-Lf2JrFYx8FanHrjoV5oL8YHCclLQgbJcVZR+gikGGMqz6ub5QVWDTM6YIwm3BuPxM/LOV+rKns3LssXNLIf+DA==",
       "dev": true,
       "requires": {
-        "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz"
-      },
-      "dependencies": {
-        "assert-plus": {
-          "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
-          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
-          "dev": true
-        }
+        "clipboard": "^2.0.0"
       }
     },
-    "gh-pages": {
-      "version": "https://registry.npmjs.org/gh-pages/-/gh-pages-0.12.0.tgz",
-      "integrity": "sha1-2VHj7Zi4VpnUsEGOsaFbGgSYjcE=",
+    "process": {
+      "version": "0.11.10",
+      "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+      "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+      "dev": true
+    },
+    "query-string": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz",
+      "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=",
       "dev": true,
       "requires": {
-        "async": "https://registry.npmjs.org/async/-/async-2.1.2.tgz",
-        "commander": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
-        "globby": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
-        "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.10.tgz",
-        "q": "https://registry.npmjs.org/q/-/q-1.4.1.tgz",
-        "q-io": "https://registry.npmjs.org/q-io/-/q-io-1.13.2.tgz",
-        "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz"
-      },
-      "dependencies": {
-        "globby": {
-          "version": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
-          "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
-          "dev": true,
-          "requires": {
-            "array-union": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
-            "glob": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz",
-            "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-            "pify": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-            "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz"
-          }
-        },
-        "graceful-fs": {
-          "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.10.tgz",
-          "integrity": "sha1-8tcgwiCS90Mih3XHXjYSYyUB8TE=",
-          "dev": true
-        }
+        "object-assign": "^4.1.0",
+        "strict-uri-encode": "^1.0.0"
       }
     },
-    "glob": {
-      "version": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz",
-      "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=",
+    "rimraf": {
+      "version": "2.6.2",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
+      "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
       "dev": true,
       "requires": {
-        "fs.realpath": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-        "inflight": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-        "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-        "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz",
-        "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-        "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
+        "glob": "^7.0.5"
       }
     },
-    "graceful-readlink": {
-      "version": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
-      "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
+    "sax": {
+      "version": "0.5.8",
+      "resolved": "http://registry.npmjs.org/sax/-/sax-0.5.8.tgz",
+      "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=",
       "dev": true
     },
-    "har-schema": {
-      "version": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz",
-      "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=",
-      "dev": true
+    "select": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
+      "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=",
+      "dev": true,
+      "optional": true
     },
-    "har-validator": {
-      "version": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz",
-      "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=",
+    "sort-keys": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
+      "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
       "dev": true,
       "requires": {
-        "ajv": "https://registry.npmjs.org/ajv/-/ajv-4.11.5.tgz",
-        "har-schema": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz"
+        "is-plain-obj": "^1.0.0"
       }
     },
-    "has-ansi": {
-      "version": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
-      "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+    "source-map": {
+      "version": "0.1.43",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
+      "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
       "dev": true,
       "requires": {
-        "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz"
+        "amdefine": ">=0.0.4"
       }
     },
-    "has-flag": {
-      "version": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
-      "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+    "strict-uri-encode": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
+      "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
       "dev": true
     },
-    "hawk": {
-      "version": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
-      "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
+    "strip-outer": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz",
+      "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==",
       "dev": true,
       "requires": {
-        "boom": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
-        "cryptiles": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
-        "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
-        "sntp": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz"
+        "escape-string-regexp": "^1.0.2"
       }
     },
-    "highlight.js": {
-      "version": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.10.0.tgz",
-      "integrity": "sha1-+fCxTAvgDw5PseV3t0n+2eb1L1U=",
-      "dev": true
-    },
-    "hoek": {
-      "version": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
-      "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
+    "strip-url-auth": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/strip-url-auth/-/strip-url-auth-1.0.1.tgz",
+      "integrity": "sha1-IrD6OkE4WzO+PzMVUbu4N/oM164=",
       "dev": true
     },
-    "html-encoding-sniffer": {
-      "version": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz",
-      "integrity": "sha1-eb96eF6klf5mFl5zQVPzY/9UN9o=",
+    "stylus": {
+      "version": "0.54.5",
+      "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz",
+      "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=",
       "dev": true,
       "requires": {
-        "whatwg-encoding": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz"
+        "css-parse": "1.7.x",
+        "debug": "*",
+        "glob": "7.0.x",
+        "mkdirp": "0.5.x",
+        "sax": "0.5.x",
+        "source-map": "0.1.x"
+      },
+      "dependencies": {
+        "glob": {
+          "version": "7.0.6",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz",
+          "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=",
+          "dev": true,
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^3.0.2",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
+        }
       }
     },
-    "htmlparser2": {
-      "version": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz",
-      "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=",
+    "tiny-emitter": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz",
+      "integrity": "sha512-2NM0auVBGft5tee/OxP4PI3d8WItkDM+fPnaRAVo6xTDI2knbz9eC5ArWGqtGlYqiH3RU5yMpdyTTO7MguC4ow==",
       "dev": true,
-      "requires": {
-        "domelementtype": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
-        "domhandler": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz",
-        "domutils": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
-        "entities": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
-        "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-        "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.6.tgz"
-      }
+      "optional": true
     },
-    "http-signature": {
-      "version": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
-      "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
+    "trim-repeated": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
+      "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=",
       "dev": true,
       "requires": {
-        "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
-        "jsprim": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz",
-        "sshpk": "https://registry.npmjs.org/sshpk/-/sshpk-1.11.0.tgz"
+        "escape-string-regexp": "^1.0.2"
       }
     },
-    "iconv-lite": {
-      "version": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz",
-      "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=",
-      "dev": true
-    },
-    "inflight": {
-      "version": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+    "uglify-js": {
+      "version": "3.4.9",
+      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz",
+      "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==",
       "dev": true,
       "requires": {
-        "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-        "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
+        "commander": "~2.17.1",
+        "source-map": "~0.6.1"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.17.1",
+          "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
+          "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
       }
     },
-    "inherits": {
-      "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
-      "dev": true
-    },
-    "invert-kv": {
-      "version": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
-      "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
-      "dev": true
-    },
-    "is-buffer": {
-      "version": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz",
-      "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=",
+    "universalify": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+      "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
       "dev": true
     },
-    "is-fullwidth-code-point": {
-      "version": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
-      "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+    "util": {
+      "version": "0.10.4",
+      "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
+      "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
       "dev": true,
       "requires": {
-        "number-is-nan": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz"
+        "inherits": "2.0.3"
       }
     },
-    "is-typedarray": {
-      "version": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
-      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
-      "dev": true
-    },
-    "isarray": {
-      "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
-      "dev": true
-    },
-    "isstream": {
-      "version": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
-      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+    "wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
       "dev": true
-    },
-    "jodid25519": {
-      "version": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz",
-      "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "jsbn": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz"
-      }
-    },
-    "js-base64": {
-      "version": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz",
-      "integrity": "sha1-8OgK4DmkvWVLXygfyT8EqRSn/M4=",
-      "dev": true
-    },
-    "jsbn": {
-      "version": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
-      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
-      "dev": true,
-      "optional": true
-    },
-    "jsdom": {
-      "version": "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz",
-      "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=",
-      "dev": true,
-      "requires": {
-        "abab": "https://registry.npmjs.org/abab/-/abab-1.0.3.tgz",
-        "acorn": "https://registry.npmjs.org/acorn/-/acorn-4.0.11.tgz",
-        "acorn-globals": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz",
-        "array-equal": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz",
-        "content-type-parser": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.1.tgz",
-        "cssom": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz",
-        "cssstyle": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz",
-        "escodegen": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz",
-        "html-encoding-sniffer": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz",
-        "nwmatcher": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.3.9.tgz",
-        "parse5": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz",
-        "request": "https://registry.npmjs.org/request/-/request-2.81.0.tgz",
-        "sax": "https://registry.npmjs.org/sax/-/sax-1.2.2.tgz",
-        "symbol-tree": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz",
-        "tough-cookie": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz",
-        "webidl-conversions": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.1.tgz",
-        "whatwg-encoding": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz",
-        "whatwg-url": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.6.0.tgz",
-        "xml-name-validator": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz"
-      },
-      "dependencies": {
-        "sax": {
-          "version": "https://registry.npmjs.org/sax/-/sax-1.2.2.tgz",
-          "integrity": "sha1-/YYxojvHgmvvXYcb24c3jJVkeCg=",
-          "dev": true
-        }
-      }
-    },
-    "json-schema": {
-      "version": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
-      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
-      "dev": true
-    },
-    "json-stable-stringify": {
-      "version": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
-      "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
-      "dev": true,
-      "requires": {
-        "jsonify": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz"
-      }
-    },
-    "json-stringify-safe": {
-      "version": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
-      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
-      "dev": true
-    },
-    "jsonify": {
-      "version": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
-      "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
-      "dev": true
-    },
-    "jsprim": {
-      "version": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz",
-      "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=",
-      "dev": true,
-      "requires": {
-        "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
-        "extsprintf": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz",
-        "json-schema": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
-        "verror": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz"
-      },
-      "dependencies": {
-        "assert-plus": {
-          "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
-          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
-          "dev": true
-        }
-      }
-    },
-    "kind-of": {
-      "version": "https://registry.npmjs.org/kind-of/-/kind-of-3.1.0.tgz",
-      "integrity": "sha1-R11pil5J/15T0U4+cyQp3Iv0z0c=",
-      "dev": true,
-      "requires": {
-        "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz"
-      }
-    },
-    "lazy-cache": {
-      "version": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
-      "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
-      "dev": true
-    },
-    "lcid": {
-      "version": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
-      "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
-      "dev": true,
-      "requires": {
-        "invert-kv": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz"
-      }
-    },
-    "levn": {
-      "version": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
-      "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
-      "dev": true,
-      "requires": {
-        "prelude-ls": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
-        "type-check": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz"
-      }
-    },
-    "linkify-it": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.0.3.tgz",
-      "integrity": "sha1-2UpGSPmxwXnWT6lykSaL22zpQ08=",
-      "dev": true,
-      "requires": {
-        "uc.micro": "1.0.3"
-      }
-    },
-    "loading-cli": {
-      "version": "https://registry.npmjs.org/loading-cli/-/loading-cli-1.0.2.tgz",
-      "integrity": "sha1-nqRz9dPKZgKTMdhUmt9pFmavHNg=",
-      "dev": true
-    },
-    "lodash": {
-      "version": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
-      "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
-      "dev": true
-    },
-    "lodash.assignin": {
-      "version": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz",
-      "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=",
-      "dev": true
-    },
-    "lodash.bind": {
-      "version": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz",
-      "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=",
-      "dev": true
-    },
-    "lodash.defaults": {
-      "version": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
-      "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=",
-      "dev": true
-    },
-    "lodash.filter": {
-      "version": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz",
-      "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=",
-      "dev": true
-    },
-    "lodash.flatten": {
-      "version": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
-      "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=",
-      "dev": true
-    },
-    "lodash.foreach": {
-      "version": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz",
-      "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=",
-      "dev": true
-    },
-    "lodash.map": {
-      "version": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz",
-      "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=",
-      "dev": true
-    },
-    "lodash.merge": {
-      "version": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz",
-      "integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU=",
-      "dev": true
-    },
-    "lodash.pick": {
-      "version": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
-      "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=",
-      "dev": true
-    },
-    "lodash.reduce": {
-      "version": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz",
-      "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=",
-      "dev": true
-    },
-    "lodash.reject": {
-      "version": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz",
-      "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=",
-      "dev": true
-    },
-    "lodash.some": {
-      "version": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz",
-      "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=",
-      "dev": true
-    },
-    "longest": {
-      "version": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
-      "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
-      "dev": true
-    },
-    "markdown-it": {
-      "version": "8.4.0",
-      "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.0.tgz",
-      "integrity": "sha512-tNuOCCfunY5v5uhcO2AUMArvKAyKMygX8tfup/JrgnsDqcCATQsAExBq7o5Ml9iMmO82bk6jYNLj6khcrl0JGA==",
-      "dev": true,
-      "requires": {
-        "argparse": "1.0.9",
-        "entities": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
-        "linkify-it": "2.0.3",
-        "mdurl": "1.0.1",
-        "uc.micro": "1.0.3"
-      }
-    },
-    "marked": {
-      "version": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz",
-      "integrity": "sha1-ssbGGPzOzk74bE/Gy4p8v1rtqNc=",
-      "dev": true
-    },
-    "marked3": {
-      "version": "0.5.1",
-      "resolved": "https://registry.npmjs.org/marked3/-/marked3-0.5.1.tgz",
-      "integrity": "sha512-I5XLEvFfGk9FBN0QUk9gyISaIsXeSHfhn67k2HsOlCQFsgepLoAgUJGCtAdanr7oifmdTiZQmLEMh2P7C2ieIw==",
-      "dev": true,
-      "requires": {
-        "slugo": "0.2.1"
-      }
-    },
-    "mdurl": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
-      "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=",
-      "dev": true
-    },
-    "merge": {
-      "version": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz",
-      "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=",
-      "dev": true
-    },
-    "methods": {
-      "version": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
-      "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
-      "dev": true
-    },
-    "mime": {
-      "version": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz",
-      "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=",
-      "dev": true
-    },
-    "mime-db": {
-      "version": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz",
-      "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=",
-      "dev": true
-    },
-    "mime-types": {
-      "version": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz",
-      "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=",
-      "dev": true,
-      "requires": {
-        "mime-db": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz"
-      }
-    },
-    "mimeparse": {
-      "version": "https://registry.npmjs.org/mimeparse/-/mimeparse-0.1.4.tgz",
-      "integrity": "sha1-2vsCdSNw/SJgk64xUsJxrwGsJUo=",
-      "dev": true
-    },
-    "minimatch": {
-      "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz",
-      "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=",
-      "dev": true,
-      "requires": {
-        "brace-expansion": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz"
-      }
-    },
-    "minimist": {
-      "version": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
-      "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
-      "dev": true
-    },
-    "mkdirp": {
-      "version": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
-      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
-      "dev": true,
-      "requires": {
-        "minimist": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz"
-      }
-    },
-    "ms": {
-      "version": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
-      "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
-      "dev": true
-    },
-    "multi-stage-sourcemap": {
-      "version": "https://registry.npmjs.org/multi-stage-sourcemap/-/multi-stage-sourcemap-0.2.1.tgz",
-      "integrity": "sha1-sJ/IWG6qF/gdV1xK0C4Pej9rEQU=",
-      "dev": true,
-      "requires": {
-        "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
-          "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
-          "dev": true,
-          "requires": {
-            "amdefine": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz"
-          }
-        }
-      }
-    },
-    "normalize-range": {
-      "version": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
-      "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
-      "dev": true
-    },
-    "nth-check": {
-      "version": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz",
-      "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=",
-      "dev": true,
-      "requires": {
-        "boolbase": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz"
-      }
-    },
-    "num2fraction": {
-      "version": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
-      "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
-      "dev": true
-    },
-    "number-is-nan": {
-      "version": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
-      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
-      "dev": true
-    },
-    "nwmatcher": {
-      "version": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.3.9.tgz",
-      "integrity": "sha1-i6tIb/f6Pf0IZla76LFxFtNpLSo=",
-      "dev": true
-    },
-    "oauth-sign": {
-      "version": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
-      "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
-      "dev": true
-    },
-    "object-assign": {
-      "version": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
-      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
-      "dev": true
-    },
-    "once": {
-      "version": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
-      "dev": true,
-      "requires": {
-        "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
-      }
-    },
-    "optionator": {
-      "version": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
-      "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
-      "dev": true,
-      "requires": {
-        "deep-is": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
-        "fast-levenshtein": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
-        "levn": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
-        "prelude-ls": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
-        "type-check": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
-        "wordwrap": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz"
-      }
-    },
-    "os-locale": {
-      "version": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
-      "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
-      "dev": true,
-      "requires": {
-        "lcid": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz"
-      }
-    },
-    "parse5": {
-      "version": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz",
-      "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=",
-      "dev": true
-    },
-    "path-is-absolute": {
-      "version": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
-      "dev": true
-    },
-    "performance-now": {
-      "version": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
-      "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=",
-      "dev": true
-    },
-    "pify": {
-      "version": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-      "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
-      "dev": true
-    },
-    "pinkie": {
-      "version": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
-      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
-      "dev": true
-    },
-    "pinkie-promise": {
-      "version": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
-      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
-      "dev": true,
-      "requires": {
-        "pinkie": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz"
-      }
-    },
-    "postcss": {
-      "version": "https://registry.npmjs.org/postcss/-/postcss-5.2.16.tgz",
-      "integrity": "sha1-cysxAAAPn/g3mkilODntCXN2rVc=",
-      "dev": true,
-      "requires": {
-        "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-        "js-base64": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz",
-        "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
-        "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz"
-      },
-      "dependencies": {
-        "supports-color": {
-          "version": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
-          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
-          "dev": true,
-          "requires": {
-            "has-flag": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz"
-          }
-        }
-      }
-    },
-    "postcss-value-parser": {
-      "version": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz",
-      "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=",
-      "dev": true
-    },
-    "prelude-ls": {
-      "version": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
-      "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
-      "dev": true
-    },
-    "process-nextick-args": {
-      "version": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
-      "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
-      "dev": true
-    },
-    "punycode": {
-      "version": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
-      "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
-      "dev": true
-    },
-    "q": {
-      "version": "https://registry.npmjs.org/q/-/q-1.4.1.tgz",
-      "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=",
-      "dev": true
-    },
-    "q-io": {
-      "version": "https://registry.npmjs.org/q-io/-/q-io-1.13.2.tgz",
-      "integrity": "sha1-7qEw1IHdteGqG8WmaFX3OR0G8AM=",
-      "dev": true,
-      "requires": {
-        "collections": "https://registry.npmjs.org/collections/-/collections-0.2.2.tgz",
-        "mime": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz",
-        "mimeparse": "https://registry.npmjs.org/mimeparse/-/mimeparse-0.1.4.tgz",
-        "q": "https://registry.npmjs.org/q/-/q-1.4.1.tgz",
-        "qs": "https://registry.npmjs.org/qs/-/qs-1.2.2.tgz",
-        "url2": "https://registry.npmjs.org/url2/-/url2-0.0.0.tgz"
-      }
-    },
-    "qs": {
-      "version": "https://registry.npmjs.org/qs/-/qs-1.2.2.tgz",
-      "integrity": "sha1-GbV/8k3CqZzh+L32r82ln472H4g=",
-      "dev": true
-    },
-    "readable-stream": {
-      "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.6.tgz",
-      "integrity": "sha1-i0Ou125xSDk40SqNRsbPGgCx+BY=",
-      "dev": true,
-      "requires": {
-        "buffer-shims": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz",
-        "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
-        "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-        "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-        "process-nextick-args": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
-        "string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
-        "util-deprecate": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
-      }
-    },
-    "repeat-string": {
-      "version": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
-      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
-      "dev": true
-    },
-    "request": {
-      "version": "https://registry.npmjs.org/request/-/request-2.81.0.tgz",
-      "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=",
-      "dev": true,
-      "requires": {
-        "aws-sign2": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
-        "aws4": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
-        "caseless": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
-        "combined-stream": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
-        "extend": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz",
-        "forever-agent": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
-        "form-data": "https://registry.npmjs.org/form-data/-/form-data-2.1.2.tgz",
-        "har-validator": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz",
-        "hawk": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
-        "http-signature": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
-        "is-typedarray": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
-        "isstream": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
-        "json-stringify-safe": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
-        "mime-types": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz",
-        "oauth-sign": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
-        "performance-now": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
-        "qs": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
-        "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz",
-        "stringstream": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
-        "tough-cookie": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz",
-        "tunnel-agent": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
-        "uuid": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz"
-      },
-      "dependencies": {
-        "qs": {
-          "version": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
-          "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=",
-          "dev": true
-        }
-      }
-    },
-    "right-align": {
-      "version": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
-      "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
-      "dev": true,
-      "requires": {
-        "align-text": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz"
-      }
-    },
-    "rimraf": {
-      "version": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz",
-      "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=",
-      "dev": true,
-      "requires": {
-        "glob": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz"
-      }
-    },
-    "safe-buffer": {
-      "version": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz",
-      "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=",
-      "dev": true
-    },
-    "sax": {
-      "version": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz",
-      "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=",
-      "dev": true
-    },
-    "slugo": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/slugo/-/slugo-0.2.1.tgz",
-      "integrity": "sha1-pEuyxqcqiSGIiwj8GOMYHp3X344=",
-      "dev": true
-    },
-    "sntp": {
-      "version": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
-      "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
-      "dev": true,
-      "requires": {
-        "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz"
-      }
-    },
-    "source-map": {
-      "version": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
-      "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=",
-      "dev": true
-    },
-    "sprintf-js": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
-      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
-      "dev": true
-    },
-    "sshpk": {
-      "version": "https://registry.npmjs.org/sshpk/-/sshpk-1.11.0.tgz",
-      "integrity": "sha1-LY1eu0pvqyj/ujf6YqkPSj6lnXc=",
-      "dev": true,
-      "requires": {
-        "asn1": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
-        "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
-        "bcrypt-pbkdf": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
-        "dashdash": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
-        "ecc-jsbn": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
-        "getpass": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz",
-        "jodid25519": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz",
-        "jsbn": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
-        "tweetnacl": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz"
-      },
-      "dependencies": {
-        "assert-plus": {
-          "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
-          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
-          "dev": true
-        }
-      }
-    },
-    "ssr": {
-      "version": "https://registry.npmjs.org/ssr/-/ssr-1.1.1.tgz",
-      "integrity": "sha1-uo6R+PCgFd0Vc+4tXpztjoWRm+4=",
-      "dev": true,
-      "requires": {
-        "colors-cli": "https://registry.npmjs.org/colors-cli/-/colors-cli-1.0.8.tgz",
-        "iconv-lite": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz",
-        "yargs": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz"
-      }
-    },
-    "string_decoder": {
-      "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
-      "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
-      "dev": true
-    },
-    "string-width": {
-      "version": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-      "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
-      "dev": true,
-      "requires": {
-        "code-point-at": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
-        "is-fullwidth-code-point": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
-        "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz"
-      }
-    },
-    "stringstream": {
-      "version": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
-      "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=",
-      "dev": true
-    },
-    "strip-ansi": {
-      "version": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
-      "dev": true,
-      "requires": {
-        "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz"
-      }
-    },
-    "stylus": {
-      "version": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz",
-      "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=",
-      "dev": true,
-      "requires": {
-        "css-parse": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz",
-        "debug": "https://registry.npmjs.org/debug/-/debug-2.6.3.tgz",
-        "glob": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz",
-        "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
-        "sax": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz",
-        "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz"
-      },
-      "dependencies": {
-        "glob": {
-          "version": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz",
-          "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=",
-          "dev": true,
-          "requires": {
-            "fs.realpath": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-            "inflight": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-            "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-            "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz",
-            "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-            "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
-          }
-        },
-        "source-map": {
-          "version": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
-          "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
-          "dev": true,
-          "requires": {
-            "amdefine": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz"
-          }
-        }
-      }
-    },
-    "superagent": {
-      "version": "https://registry.npmjs.org/superagent/-/superagent-3.5.2.tgz",
-      "integrity": "sha1-M2GjlxVnUEw1EGOr6q4PqiPb8/g=",
-      "dev": true,
-      "requires": {
-        "component-emitter": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
-        "cookiejar": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.0.tgz",
-        "debug": "https://registry.npmjs.org/debug/-/debug-2.6.3.tgz",
-        "extend": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz",
-        "form-data": "https://registry.npmjs.org/form-data/-/form-data-2.1.2.tgz",
-        "formidable": "https://registry.npmjs.org/formidable/-/formidable-1.1.1.tgz",
-        "methods": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
-        "mime": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz",
-        "qs": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
-        "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.6.tgz"
-      },
-      "dependencies": {
-        "qs": {
-          "version": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
-          "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=",
-          "dev": true
-        }
-      }
-    },
-    "supports-color": {
-      "version": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
-      "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
-      "dev": true
-    },
-    "symbol-tree": {
-      "version": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz",
-      "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=",
-      "dev": true
-    },
-    "to-markdown": {
-      "version": "https://registry.npmjs.org/to-markdown/-/to-markdown-3.0.4.tgz",
-      "integrity": "sha1-PHgi+ShrwpT/N/ng5eIxVMEizmk=",
-      "dev": true,
-      "requires": {
-        "collapse-whitespace": "https://registry.npmjs.org/collapse-whitespace/-/collapse-whitespace-1.1.2.tgz",
-        "jsdom": "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz"
-      }
-    },
-    "tough-cookie": {
-      "version": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz",
-      "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=",
-      "dev": true,
-      "requires": {
-        "punycode": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz"
-      }
-    },
-    "tr46": {
-      "version": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
-      "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=",
-      "dev": true
-    },
-    "tunnel-agent": {
-      "version": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
-      "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
-      "dev": true,
-      "requires": {
-        "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz"
-      }
-    },
-    "tweetnacl": {
-      "version": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
-      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
-      "dev": true,
-      "optional": true
-    },
-    "type-check": {
-      "version": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
-      "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
-      "dev": true,
-      "requires": {
-        "prelude-ls": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz"
-      }
-    },
-    "uc.micro": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.3.tgz",
-      "integrity": "sha1-ftUNXg+an7ClczeSWfKndFjVAZI=",
-      "dev": true
-    },
-    "uglify-js": {
-      "version": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.18.tgz",
-      "integrity": "sha1-kl0UuuSKti0Yg7Qa/m4iYWYq244=",
-      "dev": true,
-      "requires": {
-        "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
-        "uglify-to-browserify": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
-        "yargs": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz"
-      },
-      "dependencies": {
-        "camelcase": {
-          "version": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
-          "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
-          "dev": true
-        },
-        "cliui": {
-          "version": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
-          "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
-          "dev": true,
-          "requires": {
-            "center-align": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
-            "right-align": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
-            "wordwrap": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz"
-          }
-        },
-        "window-size": {
-          "version": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
-          "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
-          "dev": true
-        },
-        "wordwrap": {
-          "version": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
-          "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
-          "dev": true
-        },
-        "yargs": {
-          "version": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
-          "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
-          "dev": true,
-          "requires": {
-            "camelcase": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
-            "cliui": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
-            "decamelize": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-            "window-size": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz"
-          }
-        }
-      }
-    },
-    "uglify-to-browserify": {
-      "version": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
-      "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
-      "dev": true,
-      "optional": true
-    },
-    "url2": {
-      "version": "https://registry.npmjs.org/url2/-/url2-0.0.0.tgz",
-      "integrity": "sha1-Tqq9HVw6yQ1iq0SFyZhCKGWgSxo=",
-      "dev": true
-    },
-    "util-deprecate": {
-      "version": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
-      "dev": true
-    },
-    "uuid": {
-      "version": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz",
-      "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=",
-      "dev": true
-    },
-    "verror": {
-      "version": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz",
-      "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=",
-      "dev": true,
-      "requires": {
-        "extsprintf": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz"
-      }
-    },
-    "void-elements": {
-      "version": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
-      "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=",
-      "dev": true
-    },
-    "watch": {
-      "version": "https://registry.npmjs.org/watch/-/watch-1.0.2.tgz",
-      "integrity": "sha1-NApxe952Vyb6CqB9ch4BR6VR3ww=",
-      "dev": true,
-      "requires": {
-        "exec-sh": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.0.tgz",
-        "minimist": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz"
-      },
-      "dependencies": {
-        "minimist": {
-          "version": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
-          "dev": true
-        }
-      }
-    },
-    "weak-map": {
-      "version": "https://registry.npmjs.org/weak-map/-/weak-map-1.0.0.tgz",
-      "integrity": "sha1-tm5Wqd8L0lp2u/G1FNsSkIBhSjc=",
-      "dev": true
-    },
-    "webidl-conversions": {
-      "version": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.1.tgz",
-      "integrity": "sha1-gBWherg+fhsxFjhIas6B2mziBqA=",
-      "dev": true
-    },
-    "whatwg-encoding": {
-      "version": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz",
-      "integrity": "sha1-PGxFGhmO567FWx7GHQkgxngBpfQ=",
-      "dev": true,
-      "requires": {
-        "iconv-lite": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz"
-      },
-      "dependencies": {
-        "iconv-lite": {
-          "version": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz",
-          "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=",
-          "dev": true
-        }
-      }
-    },
-    "whatwg-url": {
-      "version": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.6.0.tgz",
-      "integrity": "sha1-75jaRCJzvgTPljLhdvJX0jlaGuQ=",
-      "dev": true,
-      "requires": {
-        "tr46": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
-        "webidl-conversions": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz"
-      },
-      "dependencies": {
-        "webidl-conversions": {
-          "version": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
-          "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=",
-          "dev": true
-        }
-      }
-    },
-    "window-size": {
-      "version": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz",
-      "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=",
-      "dev": true
-    },
-    "wordwrap": {
-      "version": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
-      "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
-      "dev": true
-    },
-    "wrap-ansi": {
-      "version": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
-      "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
-      "dev": true,
-      "requires": {
-        "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-        "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz"
-      }
-    },
-    "wrappy": {
-      "version": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
-      "dev": true
-    },
-    "xml-name-validator": {
-      "version": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz",
-      "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=",
-      "dev": true
-    },
-    "y18n": {
-      "version": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
-      "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
-      "dev": true
-    },
-    "yargs": {
-      "version": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz",
-      "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=",
-      "dev": true,
-      "requires": {
-        "camelcase": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
-        "cliui": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
-        "decamelize": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-        "os-locale": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
-        "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-        "window-size": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz",
-        "y18n": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz"
-      }
     }
   }
 }
diff --git a/package.json b/package.json
index 1c6c125266a..687ac780034 100644
--- a/package.json
+++ b/package.json
@@ -4,13 +4,11 @@
   "description": "Linux Command",
   "main": "dist/data.json",
   "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1",
     "start": "node build/compile.js && npm run deploy",
-    "deploy": "node build/deploy.js",
-    "build:css": "stylus -u autoprefixer-stylus template/styl/index.styl -o .deploy/ -c",
-    "watch:css": "stylus -u autoprefixer-stylus -w template/styl/index.styl -o .deploy/ -c"
+    "deploy": "node build/deploy.js"
   },
   "keywords": [
+    "cli",
     "Linux",
     "Command"
   ],
@@ -21,23 +19,16 @@
     "url": "git+https://github.com/jaywcjlove/linux-command.git"
   },
   "devDependencies": {
-    "autoprefixer": "^6.5.1",
-    "autoprefixer-stylus": "^0.11.0",
-    "cheerio": "^0.22.0",
-    "colors-cli": "^1.0.7",
-    "ejs": "^2.5.2",
-    "gh-pages": "^0.12.0",
-    "highlight.js": "^9.8.0",
-    "loading-cli": "^1.0.2",
-    "markdown-it": "^8.4.0",
-    "marked": "^0.3.6",
-    "marked3": "^0.5.1",
-    "ssr": "^1.1.1",
+    "colors-cli": "^1.0.20",
+    "ejs": "^2.6.1",
+    "fs-extra": "^7.0.0",
+    "gh-pages": "^2.0.0",
+    "loading-cli": "^1.0.8",
+    "marked": "^0.5.1",
+    "path": "^0.12.7",
+    "prismjs": "^1.15.0",
     "stylus": "^0.54.5",
-    "superagent": "^3.0.0",
-    "to-markdown": "^3.0.3",
-    "uglify-js": "^2.7.4",
-    "watch": "^1.0.1"
+    "uglify-js": "^3.4.9"
   },
   "dependencies": {},
   "bugs": {

From e041518d012af3d8729f0a4c15d89dc49de3a98f Mon Sep 17 00:00:00 2001
From: jaywcjlove <398188662@qq.com>
Date: Sat, 29 Sep 2018 16:09:36 +0800
Subject: [PATCH 0051/1126] Modify build.js

---
 build/build.js | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/build/build.js b/build/build.js
index 360e0b4c8cf..8dbb32ced14 100644
--- a/build/build.js
+++ b/build/build.js
@@ -11,10 +11,10 @@ const colors = require('colors-cli/toxic');
 const renderer = new marked.Renderer();
 renderer.heading = (text, level) => {
   if (/[\u4E00-\u9FA5]/i.test(text)) {
-    return '' + text + '';
+    return `${text}`;
   } else {
-    var escapedText = text.toLowerCase().replace(/[^\w]+/g, '-');
-    return '' + text + '';
+    const escapedText = text.toLowerCase().replace(/[^\w]+/g, '-');
+    return `${text}`;
   }
 }
 

From af65b1b0699a7fa7bdfdfd21b65b97ba758cab78 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=A1=B9=E9=87=91?= 
Date: Sun, 7 Oct 2018 10:42:15 +0800
Subject: [PATCH 0052/1126] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20--send-eth/--sen?=
 =?UTF-8?q?d-ip=20=E8=AF=B4=E6=98=8E?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 command/nmap.md | 145 ++++++++++++++++++++++++------------------------
 1 file changed, 73 insertions(+), 72 deletions(-)

diff --git a/command/nmap.md b/command/nmap.md
index bb558a64525..c5a0790f524 100644
--- a/command/nmap.md
+++ b/command/nmap.md
@@ -1,72 +1,73 @@
-nmap
-===
-
-网络探测和安全审核
-
-## 补充说明
-
-**nmap命令** 是一款开放源代码的网络探测和安全审核工具,它的设计目标是快速地扫描大型网络。
-
-### 语法  
-
-```
-nmap(选项)(参数)
-```
-
-### 选项  
-
-```
--O:激活操作探测;
--P0:值进行扫描,不ping主机;
--PT:是同TCP的ping;
--sV:探测服务版本信息;
--sP:ping扫描,仅发现目标主机是否存活;
--ps:发送同步(SYN)报文;
--PU:发送udp ping;
--PE:强制执行直接的ICMPping;
--PB:默认模式,可以使用ICMPping和TCPping;
--6:使用IPv6地址;
--v:得到更多选项信息;
--d:增加调试信息地输出;
--oN:以人们可阅读的格式输出;
--oX:以xml格式向指定文件输出信息;
--oM:以机器可阅读的格式输出;
--A:使用所有高级扫描选项;
---resume:继续上次执行完的扫描;
--P:指定要扫描的端口,可以是一个单独的端口,用逗号隔开多个端口,使用“-”表示端口范围;
--e:在多网络接口Linux系统中,指定扫描使用的网络接口;
--g:将指定的端口作为源端口进行扫描;
---ttl:指定发送的扫描报文的生存期;
---packet-trace:显示扫描过程中收发报文统计;
---scanflags:设置在扫描报文中的TCP标志。
-```
-
-### 参数  
-
-ip地址:指定待扫描报文中的TCP地址。
-
-### 实例  
-
- **安装nmap** 
-
-```
-yum install nmap
-```
-
- **使用nmap扫描www.jsdig.com的开放端口** 
-
-```
-[root@localhost ~]# nmap www.jsdig.com
-
-Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2013-12-28 00:06 CST
-Interesting ports on 100-42-212-8.static.webnx.com (100.42.212.8):
-Not shown: 1678 filtered ports
-PORT   STATE service
-22/tcp open  ssh
-80/tcp open  http
-
-Nmap finished: 1 IP address (1 host up) scanned in 45.870 seconds
-```
-
-
-
\ No newline at end of file
+nmap
+===
+
+网络探测和安全审核
+
+## 补充说明
+
+**nmap命令** 是一款开放源代码的网络探测和安全审核工具,它的设计目标是快速地扫描大型网络。
+
+### 语法  
+
+```
+nmap(选项)(参数)
+```
+
+### 选项  
+
+```
+-O:激活操作探测;
+-P0:值进行扫描,不ping主机;
+-PT:是同TCP的ping;
+-sV:探测服务版本信息;
+-sP:ping扫描,仅发现目标主机是否存活;
+-ps:发送同步(SYN)报文;
+-PU:发送udp ping;
+-PE:强制执行直接的ICMPping;
+-PB:默认模式,可以使用ICMPping和TCPping;
+-6:使用IPv6地址;
+-v:得到更多选项信息;
+-d:增加调试信息地输出;
+-oN:以人们可阅读的格式输出;
+-oX:以xml格式向指定文件输出信息;
+-oM:以机器可阅读的格式输出;
+-A:使用所有高级扫描选项;
+--resume:继续上次执行完的扫描;
+-P:指定要扫描的端口,可以是一个单独的端口,用逗号隔开多个端口,使用“-”表示端口范围;
+-e:在多网络接口Linux系统中,指定扫描使用的网络接口;
+-g:将指定的端口作为源端口进行扫描;
+--ttl:指定发送的扫描报文的生存期;
+--packet-trace:显示扫描过程中收发报文统计;
+--scanflags:设置在扫描报文中的TCP标志。
+--send-eth/--send-ip 使用原始以太网发送/构造指定IP发送
+```
+
+### 参数  
+
+ip地址:指定待扫描报文中的TCP地址。
+
+### 实例  
+
+ **安装nmap** 
+
+```
+yum install nmap
+```
+
+ **使用nmap扫描www.jsdig.com的开放端口** 
+
+```
+[root@localhost ~]# nmap www.jsdig.com
+
+Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2013-12-28 00:06 CST
+Interesting ports on 100-42-212-8.static.webnx.com (100.42.212.8):
+Not shown: 1678 filtered ports
+PORT   STATE service
+22/tcp open  ssh
+80/tcp open  http
+
+Nmap finished: 1 IP address (1 host up) scanned in 45.870 seconds
+```
+
+
+

From daec36f19513c6568d877351125d9bf379198e26 Mon Sep 17 00:00:00 2001
From: jaywcjlove <398188662@qq.com>
Date: Sun, 7 Oct 2018 11:17:33 +0800
Subject: [PATCH 0053/1126] Fix deploy command error.

---
 build/deploy.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/build/deploy.js b/build/deploy.js
index 10c094ffe27..59f731cbcd5 100644
--- a/build/deploy.js
+++ b/build/deploy.js
@@ -2,7 +2,7 @@ const ghpages = require('gh-pages');
 const loading = require('loading-cli');
 const path = require('path');
 const fs = require('fs');
-const color = require('colors-cli/safe');
+const color = require('colors-cli/toxic');
 
 const deploy_path = path.join(process.cwd(), '.deploy');
 

From 22926dcf097d03fa71185e6d3be6b46d38614263 Mon Sep 17 00:00:00 2001
From: jaywcjlove <398188662@qq.com>
Date: Sun, 7 Oct 2018 11:20:16 +0800
Subject: [PATCH 0054/1126] Update scripts command.

---
 package.json | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/package.json b/package.json
index 687ac780034..145c98f74b7 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,8 @@
   "description": "Linux Command",
   "main": "dist/data.json",
   "scripts": {
-    "start": "node build/compile.js && npm run deploy",
+    "start": "npm run build && npm run deploy",
+    "build": "node build/build.js",
     "deploy": "node build/deploy.js"
   },
   "keywords": [

From 64ad089c95b346636439d9d4e3dc23aa9d6c27f2 Mon Sep 17 00:00:00 2001
From: jaywcjlove <398188662@qq.com>
Date: Mon, 8 Oct 2018 16:06:51 +0800
Subject: [PATCH 0055/1126] Modify markdown styles.

---
 template/styl/mixins/markdown.styl | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/template/styl/mixins/markdown.styl b/template/styl/mixins/markdown.styl
index ca78d37b459..d6873d34280 100644
--- a/template/styl/mixins/markdown.styl
+++ b/template/styl/mixins/markdown.styl
@@ -2,7 +2,7 @@
 .markdown-body {
   padding 70px 35px 30px 35px
   word-wrap break-word
-  font-family "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif
+  font-family: "SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;
   font-size 14px
   line-height 1.6
   color #333
@@ -47,7 +47,6 @@
     position: relative
     background-color: #f7f7f9
     border-radius: 3px
-    font: "Source Code Pro", Consolas, Menlo, Monaco, "Courier New", monospace
     font-size: 0.93em
     -webkit-overflow-scrolling: touch
     code {
@@ -64,6 +63,7 @@
       white-space: inherit
       overflow-wrap: normal
       word-wrap: normal!important
+      font-family: "SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;
     }
   }
   .class-name {
@@ -209,4 +209,11 @@
   .shebang, .important {
     color: #FF1717;
   }
+  ul, ol {
+    padding-left: 2em;
+  }
+  p, blockquote, ul, ol, dl, table, pre {
+    margin-top: 0;
+    margin-bottom: 16px;
+  }
 }
\ No newline at end of file

From b590341480846ea9423a650d2351d7f7b10f4a9f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83=E2=84=A2?=
 <398188662@qq.com>
Date: Thu, 11 Oct 2018 09:55:40 +0800
Subject: [PATCH 0056/1126] Update nc.md

---
 command/nc.md | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/command/nc.md b/command/nc.md
index e8cd6b22f88..361745c791b 100644
--- a/command/nc.md
+++ b/command/nc.md
@@ -60,4 +60,13 @@ TCP端口扫描
 y  //用户输入
 ```
 
+查看 443 端口是否被阻止
+
+```bash
+nc -vz acme-v02.api.letsencrypt.org 443 -w2
+# Ncat: Version 7.50 ( https://nmap.org/ncat )
+# Ncat: Connected to 23.77.214.183:443.
+# Ncat: 0 bytes sent, 0 bytes received in 0.07 seconds.
+```
+
 

From e1c6a356096a036174380746a0b926aca07631e7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83=E2=84=A2?=
 <398188662@qq.com>
Date: Thu, 11 Oct 2018 09:57:30 +0800
Subject: [PATCH 0057/1126] Update nc.md

---
 command/nc.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/command/nc.md b/command/nc.md
index 361745c791b..11489e6fdb6 100644
--- a/command/nc.md
+++ b/command/nc.md
@@ -60,7 +60,7 @@ TCP端口扫描
 y  //用户输入
 ```
 
-查看 443 端口是否被阻止
+查看从服务器到目的地的出站端口 443 是否被防火墙阻止
 
 ```bash
 nc -vz acme-v02.api.letsencrypt.org 443 -w2

From c7caaa437c569ca6f1cc6f860ed50ae3f19e0368 Mon Sep 17 00:00:00 2001
From: jaywcjlove <398188662@qq.com>
Date: Thu, 11 Oct 2018 12:49:18 +0800
Subject: [PATCH 0058/1126] Modify footer info.

---
 template/footer.ejs | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/template/footer.ejs b/template/footer.ejs
index 130a354720f..2182f82624d 100644
--- a/template/footer.ejs
+++ b/template/footer.ejs
@@ -1,10 +1,15 @@
 
   

数据来源于 GitHub Contributors,使用action-contributors创建。 From 0db6aa6243718b2ab3a7f76f02ffc41abcd71eca Mon Sep 17 00:00:00 2001 From: FunKeen <112614943+FunKeen@users.noreply.github.com> Date: Wed, 10 Jul 2024 21:30:56 +0800 Subject: [PATCH 1004/1126] doc: update command/awk.md (#590) --- command/awk.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/command/awk.md b/command/awk.md index 00145315da7..9a540cb3d81 100644 --- a/command/awk.md +++ b/command/awk.md @@ -371,7 +371,7 @@ awk 'NR%2==1{next}{print NR,$0;}' text.txt 当记录行号除以2余1,就跳过当前行。下面的`print NR,$0`也不会执行。下一行开始,程序有开始判断`NR%2`值。这个时候记录行号是`:2` ,就会执行下面语句块:`'print NR,$0'` -分析发现需要将包含有“web”行进行跳过,然后需要将内容与下面行合并为一行: +跳过以“web”为首的行,再将该行内容分别与下面不以“web”为首的行合并打印,使用一个“:”和一个制表符连接: ```shell cat text.txt @@ -386,7 +386,7 @@ web03[192.168.2.102] mysqld ok httpd ok 0 -awk '/^web/{T=$0;next;}{print T":"t,$0;}' text.txt +awk '/^web/{T=$0;next;}{print T":\t"$0;}' text.txt web01[192.168.2.100]: httpd ok web01[192.168.2.100]: tomcat ok web01[192.168.2.100]: sendmail ok From d8438272b0bf5913a260a28822566583c8f4c1e7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 10 Jul 2024 13:31:41 +0000 Subject: [PATCH 1005/1126] doc: update README.md. --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0f8d193c9ee..6da01a1f3e1 100644 --- a/README.md +++ b/README.md @@ -361,6 +361,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. shc sfwwslm rexlin600 +MinsonLee Marnm mwei Wang @@ -381,7 +382,6 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. HighScorePlayer Herbert8 Guiying Li -FunKeen Frankie Divenire Derek @@ -391,6 +391,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Azroy Alan 0x_000 +c2ch brinkqiang bell azureology @@ -419,8 +420,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Rining Wu Ray Yee QinShower -Mystic -MinsonLee +Mystic 贡献者列表,由 [contributors](https://github.com/jaywcjlove/github-action-contributors) 自动生成 From 7553e4f483b86a1c6d9e1ae09f82750d663d2da7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 10 Jul 2024 13:31:42 +0000 Subject: [PATCH 1006/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index 0b4ad636e1d..b92b768b4ce 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -107,6 +107,7 @@ shc sfwwslm rexlin600 +MinsonLee Marnm mwei Wang @@ -127,7 +128,6 @@ HighScorePlayer Herbert8 Guiying Li -FunKeen Frankie Divenire Derek @@ -137,6 +137,7 @@ Azroy Alan 0x_000 +c2ch brinkqiang bell azureology @@ -165,8 +166,7 @@ Rining Wu Ray Yee QinShower -Mystic -MinsonLee +Mystic

数据来源于 GitHub Contributors,使用action-contributors创建。 From f9de3eb62156ead712f9d852deb556132e00bdc3 Mon Sep 17 00:00:00 2001 From: "Q.Ben Zheng" <40693636+Zhengqbbb@users.noreply.github.com> Date: Thu, 11 Jul 2024 09:33:42 +0800 Subject: [PATCH 1007/1126] docs: add X-CMD social website (#591) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 6da01a1f3e1..bc9f51e9048 100644 --- a/README.md +++ b/README.md @@ -191,6 +191,7 @@ https://raw.githubusercontent.com/jaywcjlove/linux-command/master/command/<命 - [鸟哥的linux私房菜](http://linux.vbird.org/) - 非常适合Linux入门初学者看的教程。 - [Linux公社](http://www.linuxidc.com/) - Linux相关的新闻、教程、主题、壁纸都有。 - [Linux Today](http://www.linuxde.net) - Linux新闻资讯发布,Linux职业技术学习!。 +- [X-CMD](https://www.x-cmd.com/) - Shell + AWK 为核心增强原生命令输出以及交互体验,各种命令以及现代化软件包的介绍和使用教程,每日科技新闻资讯,欢迎浏览关注! ### 知识相关 From f686028a0f260eba0101fce5cbeb7b80cd75c9fc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 11 Jul 2024 01:34:27 +0000 Subject: [PATCH 1008/1126] doc: update README.md. --- README.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index bc9f51e9048..2c50f0cc271 100644 --- a/README.md +++ b/README.md @@ -290,23 +290,23 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. xhal VVatt gggwvg -Dazhuangw -Alterem -YH -YEUNGCHIE -Xrtero -Xingwen Zhang -Shan Chenyu -RichardLCD BingCoke Ein Verne +FunKeen Pan, Wen-Ming -lewis1573 -leo -kid1412621 -kassadin +RichardLCD +Shan Chenyu +Xingwen Zhang +Xrtero +YEUNGCHIE +Dazhuangw +Alterem +YH juemuren4449 -jqz3.tech +kassadin +kid1412621 +leo +lewis1573 linuxwd Ricardowang cole @@ -315,6 +315,8 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. noodles2hg nsnans oliver +Yidan Wang +jqz3.tech jcdj666 hululu1068 huangyao @@ -329,8 +331,6 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. dayday cxalc Forever121 -c2ch -Yidan Wang Panthea Johnson 远方 谢民皆 From 071e0c0aa1535c828b42ba71b5933e698035a7cb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 11 Jul 2024 01:34:29 +0000 Subject: [PATCH 1009/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index b92b768b4ce..c4c13664ab2 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -35,23 +35,23 @@ xhal VVatt gggwvg -Dazhuangw -Alterem -YH -YEUNGCHIE -Xrtero -Xingwen Zhang -Shan Chenyu -RichardLCD BingCoke Ein Verne +FunKeen Pan, Wen-Ming -lewis1573 -leo -kid1412621 -kassadin +RichardLCD +Shan Chenyu +Xingwen Zhang +Xrtero +YEUNGCHIE +Dazhuangw +Alterem +YH juemuren4449 -jqz3.tech +kassadin +kid1412621 +leo +lewis1573 linuxwd Ricardowang cole @@ -60,6 +60,8 @@ noodles2hg nsnans oliver +Yidan Wang +jqz3.tech jcdj666 hululu1068 huangyao @@ -74,8 +76,6 @@ dayday cxalc Forever121 -c2ch -Yidan Wang Panthea Johnson 远方 谢民皆 From e479f15adfb16f08b5f0c8e6cd09dcd65eef1cd3 Mon Sep 17 00:00:00 2001 From: hotdogc1017 Date: Mon, 15 Jul 2024 10:19:49 +0800 Subject: [PATCH 1010/1126] =?UTF-8?q?docs(find=E5=91=BD=E4=BB=A4):=20?= =?UTF-8?q?=E6=8B=93=E5=B1=95`find`=E5=91=BD=E4=BB=A4=E6=8F=8F=E8=BF=B0?= =?UTF-8?q?=E4=BB=A5=E5=8F=8A=E8=A1=A5=E5=85=85=E9=A2=9D=E5=A4=96=E7=9A=84?= =?UTF-8?q?=E8=A1=A8=E8=BE=BE=E5=BC=8F=E9=80=89=E9=A1=B9=20(#593)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- command/find.md | 399 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 369 insertions(+), 30 deletions(-) diff --git a/command/find.md b/command/find.md index d6c5521366b..96612ab8420 100644 --- a/command/find.md +++ b/command/find.md @@ -3,18 +3,43 @@ find 在指定目录下查找文件 +## 解释 + +从每个指定的起始点 (目录) 开始,搜索以该点为根的目录树,并按照运算符优先级规则**从左至右**评估给定的表达式,直到结果确定,此时`find`会继续处理下一个文件名。 + ## 补充说明 -**find命令** 用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。 +本文列出的选项指的是**表达式列表中的选项**。这些选项控制了`find`的行为,需在**最后一个路径名之后**立即指定。 -### 语法 +五个真实选项: `-H、-L、-P、-D 和 -O`。如果出现,**必须位于第一个路径名之前**。关于这部分内容本文不做描述,具体内容可参考[man7.org中的find](https://man7.org/linux/man-pages/man1/find.1.html#top_of_page) +如果使用该命令时,不设置任何参数,则`find`命令将在当前目录下查找子目录与文件,并且将查找到的子目录和文件全部进行显示。等效于以下命令: ```shell -find(选项)(参数) +find . -print ``` -### 选项 +## 语法 + +```shell +find [-H] [-L] [-P] [-D debugopts] [-Olevel] [起始点...] [表达式] +``` +忽略真实选项后 (更为常见): +```shell +find [起始点...] [表达式] +``` + +## 表达式分类 +起始点(列表)之后的部分是表达式。这是一种**查询规范**,描述了我们如何匹配文件(返回**真**或者**假**)以及对匹配到的文件进行何种操作。表达式由一系列元素组成: +- 测试(Tests):测试返回一个真或假值,通常基于我们正在考虑的文件的某个属性。例如,`-empty`测试仅在当前文件为空时为真。 +- 操作(Actions):操作具有副作用(例如在标准输出上打印内容),并返回真或假,通常基于它们是否成功。例如,`-print`操作会在标准输出上打印当前文件的名称。 +- 全局(Global):全局选项影响命令行中任何部分指定的测试和操作的执行。全局选项始终返回真值。例如,`-depth`选项使find以深度优先的顺序遍历文件系统。 +- 位置(Positional):位置选项仅影响其后的测试或操作。位置选项始终返回真值。例如,`-regextype`选项是位置选项,用于指定命令行中后续正则表达式所使用的正则表达式方言。 +- 操作符(Operators):运算符将表达式中的其他项连接起来。例如,它们包括`-o`(表示逻辑或)和`-a`(表示逻辑与)。如果缺少运算符,则默认使用`-a`。 + +## 表达式选项 + +### 测试选项 ```shell -amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算; -anewer<参考文件或目录>:查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录; @@ -22,65 +47,379 @@ find(选项)(参数) -cmin<分钟>:查找在指定时间之时被更改过的文件或目录; -cnewer<参考文件或目录>查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录; -ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算; --daystart:从本日开始计算时间; --depth:从指定目录下最深层的子目录开始查找; -empty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录; --exec<执行指令>:假设find指令的回传值为True,就执行该指令; +-executable 匹配当前用户可执行的文件和可搜索的目录。 -false:将find指令的回传值皆设为False; --fls<列表文件>:此参数的效果和指定“-ls”参数类似,但会把结果保存为指定的列表文件; --follow:排除符号连接; --fprint<列表文件>:此参数的效果和指定“-print”参数类似,但会把结果保存成指定的列表文件; --fprint0<列表文件>:此参数的效果和指定“-print0”参数类似,但会把结果保存成指定的列表文件; --fprintf<列表文件><输出格式>:此参数的效果和指定“-printf”参数类似,但会把结果保存成指定的列表文件; -fstype<文件系统类型>:只寻找该文件系统类型下的文件或目录; -gid<群组识别码>:查找符合指定之群组识别码的文件或目录; -group<群组名称>:查找符合指定之群组名称的文件或目录; --help或--help:在线帮助; -ilname<范本样式>:此参数的效果和指定“-lname”参数类似,但忽略字符大小写的差别; -iname<范本样式>:此参数的效果和指定“-name”参数类似,但忽略字符大小写的差别; -inum:查找符合指定的inode编号的文件或目录; -ipath<范本样式>:此参数的效果和指定“-path”参数类似,但忽略字符大小写的差别; -iregex<范本样式>:此参数的效果和指定“-regexe”参数类似,但忽略字符大小写的差别; +-iwholename 模式参见`-ipath`。此选项的可移植性较`-ipath`差。 -links<连接数目>:查找符合指定的硬连接数目的文件或目录; -lname<范本样式>:指定字符串作为寻找符号连接的范本样式; --ls:假设find指令的回传值为True,就将文件或目录名称列出到标准输出; --maxdepth<目录层级>:设置最大目录层级; --mindepth<目录层级>:设置最小目录层级; -mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算; --mount:此参数的效果和指定“-xdev”相同; -mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算; -name<范本样式>:指定字符串作为寻找文件或目录的范本样式; -newer<参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录; +-newerXY<引用>:如果正在考虑的文件的时间戳 X 比文件引用的时间戳 Y 更新则成功。 -nogroup:找出不属于本地主机群组识别码的文件或目录; --noleaf:不去考虑目录至少需拥有两个硬连接存在; -nouser:找出不属于本地主机用户识别码的文件或目录; --ok<执行指令>:此参数的效果和指定“-exec”类似,但在执行指令之前会先询问用户,若回答“y”或“Y”,则放弃执行命令; -path<范本样式>:指定字符串作为寻找目录的范本样式; -perm<权限数值>:查找符合指定的权限数值的文件或目录; --print:假设find指令的回传值为True,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串; --print0:假设find指令的回传值为True,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行; --printf<输出格式>:假设find指令的回传值为True,就将文件或目录名称列出到标准输出。格式可以自行指定; --prune:不寻找字符串作为寻找文件或目录的范本样式; +-readable:匹配当前用户可读的文件 -regex<范本样式>:指定字符串作为寻找文件或目录的范本样式; +-samefile 名称 文件与名称指向相同的 inode。 -size<文件大小>:查找符合指定的文件大小的文件; --true:将find指令的回传值皆设为True; -type<文件类型>:只寻找符合指定的文件类型的文件; -uid<用户识别码>:查找符合指定的用户识别码的文件或目录; -used<日数>:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算; -user<拥有者名称>:查找符和指定的拥有者名称的文件或目录; --version或——version:显示版本信息; --xdev:将范围局限在先行的文件系统中; +-writable:匹配当前用户可写入的文件。 -xtype<文件类型>:此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查。 +-context<表达式>:仅限 SELinux。文件的安全上下文与全局模式匹配 ``` -### 参数 +### 操作选项 + +#### -delete 删除文件或目录。 +> :warning:警告:find 命令会将命令行作为表达式进行解析,因此将`-delete`放在首位会将指定的起始点下的**所有内容删除**。且`-delete`操作无法删除一个目录,除非它是空的。 + +##### *无参数* + +##### 描述 +如果删除成功则返回真。若删除失败,将显示错误消息,并且 find 最终退出时的状态码将为非零。 + +##### 相关选项 +- **-depth**:在命令行中使用`-delete`操作会自动启用`-depth`选项。为了避免意外情况,通常最好在早期的**Tests选项**中**明确使用**`-depth`选项。 +- **-prune**:由于`-depth`会使`-prune`失效,因此`-delete`操作无法与`-prune`有效结合使用。通常,用户可能希望在实际删除操作前,先用带有`-print`的查找命令行进行测试,以确保在添加`-delete`进行实际删除时不会出现意外结果。 +- **-ignore_readdir_race**:`-delete`与此选项一起使用时,find 会忽略自父目录读取以来文件已消失的情况下`-delete`操作的错误:它不会输出错误诊断,不会将退出代码更改为非零,并且`-delete`操作的返回代码将为真。 + +#### -exec 执行命令 + +> :warning:警告:使用`-exec`操作存在不可避免的安全问题,应改用`-execdir`选项。 + +##### 参数 +`command ;` 或 `command {} +` + +##### 描述 +如果返回状态为 0,则结果为真。**注意**:find 命令会将**所有后续参数**视为`command`的参数,直到遇到包含`;`的参数为止。字符串`{}`会在`command`的参数中所有出现的位置被替换为当前正在处理的文件名,而不仅仅是在它单独出现的参数中,这与某些版本的 find 不同。这两种结构可能需要使用反斜杠`\`或引号来转义,以防止被 shell 扩展。指定的命令会为每个匹配的文件运行一次。命令在起始目录中执行。 + +#### -execdir 在包含匹配文件的子目录中执行命令 + +##### 参数 +`command ;` | `command {} +` + +##### 描述 +类似于`-exec`,但指定的`command`会在包含匹配文件的**子目录中运行**,而非find的起始点目录。与`-exec`一样,如果从shell调用find,`{}`应加引号。这是一种更安全的调用`command`方式,因为它避免了在解析匹配文件路径时出现的竞争条件。与`-exec`操作类似,`+`形式的`-execdir`会构建一个命令行来处理多个匹配文件,但任何给定的`command`调用只会列出存在于同一子目录中的文件。如果使用此选项,必须确保 PATH 环境变量未引用`.`,否则攻击者可以通过在您将运行`-execdir`的目录中留下一个适当命名的文件来运行任何命令。同样,PATH 中的条目**不应为空**或**非绝对目录名**。如果使用`+`形式的任何调用以非零值作为退出状态返回,则 find 也会返回非零退出状态。如果 find 遇到错误,有时会导致立即退出,**因此某些待处理的command可能根本不会运行**。 操作结果取决于使用的是`+`还是`;`变体。`-execdir command {} + `总是返回真,而 `-execdir command {} ;`仅在命令返回 0 时返回真。 + +#### -fls 创建文件并将结果写入文件 + +##### 参数 +`file` + +##### 描述 +此选项始终返回真。`-fls`类似于`-ls`和`-fprint`,但`-fls`会将结果写入文件中。无论谓词是否匹配,输出文件始终会被创建。有关文件名中特殊字符处理的信息,请参阅“特殊文件名处理”部分。 + +#### -fprint 将完整文件名打印到指定文件中 + +##### 参数 +`file` + +##### 描述 +此选项始终返回真。若运行 find 时`file`不存在,则创建该`file`;若`file`已存在,则截断其内容。文件名`/dev/stdout`和`/dev/stderr`有特殊处理,分别指向标准输出和标准错误输出。即使谓词从未匹配,输出文件也会始终创建。 + +#### -fprint0 + +##### 参数 +`file` + +##### 描述 +此选项始终返回真。类似于`-print0`,但将输出写入文件;类似于`-fprint`。即使谓词从未匹配,输出文件也始终会被创建。 + +#### -fprintf + +##### 参数 +`file` + +##### 描述 +此选项始终返回真。类似于`-printf`,但将输出写入文件;类似于`-fprint`,即使谓词从未匹配,输出文件也会始终创建。 + +#### -ls 列出当前文件并输出到标准输出 + +##### *无参数* + +##### 描述 +此选项始终返回真。以`ls -dils`格式列出当前文件并输出到标准输出。块计数为 1 KB 块,除非设置了环境变量 POSIXLY_CORRECT,此时使用 512 字节块。 + +#### -ok 执行命令前询问用户 + +##### 参数 +`command ;` + +##### 描述 +类似于`-exec`,但首先会询问用户。如果用户同意,则运行该命令;否则仅返回 false。若运行该命令,其标准输入将被重定向至`/dev/null`。对提示的响应会与一对正则表达式进行匹配,以确定其为肯定或否定回答。若设置POSIXLY_CORRECT 环境变量,则该正则表达式从系统获取;否则,从 find 的消息翻译中获取。如果系统没有合适的定义,将使用 find 自身的定义。无论哪种情况,正则表达式本身的解释都会受到环境变量 LC_CTYPE(字符类)和 LC_COLLATE(字符范围和等价类)的影响。 + +##### 相关选项 +- **-files0-from**:不能与`-ok`同时指定。 + +#### -okdir + +##### 参数 +`command ;` + +##### 描述 +类似于`-execdir`,但在执行前会以与`-ok`相同的方式询问用户。如果用户不同意,则直接返回 false。如果命令被执行,其标准输入将从`/dev/null`重定向。 + +##### 相关选项 +- **-files0-from**:不能与`-okdir`同时指定。 + +#### -print 打印完整文件名,后跟一个换行符 + +##### *无参数* + +##### 描述 +此选项始终返回真。如果你将 find 的输出通过管道传输到另一个程序,并且你正在搜索的文件可能包含换行符,那么应该考虑使用`-print0`而不是`-print`。 + +#### -print0 打印完整文件名,后跟一个空字符 + +##### *无参数* + +##### 描述 +此选项始终返回真。包含换行符或其他类型空白字符的文件名能被正确解析,以便处理 find 输出的程序能正确理解。此选项对应于`xargs`的`-0`选项。 + +#### -printf 打印格式 + +##### 参数 +`format` + +可用的转义字符和指令包括: +- \a 警报。 +- \b 退格键。 +- \c 立即停止打印并清空输出。 +- \f 换页。 +- \n 换行。 +- \r 回车符。 +- \t 水平制表符。 +- \v 垂直制表符。 +- \0 空字符。 +- \\\ 一个字面的反斜杠`\`。 +- \NNN 字符,其 ASCII 码为 NNN(八进制)。 +- A 一个反斜杠字符`\`后跟任何其他字符,都会被视为普通字符,因此它们都会被打印出来。 +- %% 一个字面的百分号。 +- %a 文件的最后访问时间,格式为 C 语言 ctime(3)函数返回的样式。 + .....更多内容待补充 + +##### 描述 +*暂无* + +#### -prune 如果文件是目录,则不进入该目录 + +##### *无参数* + +##### 描述 +此选项始终返回真。 + +##### 相关选项 +- **-depth**:如果指定了`-depth`,那么`-prune`将无效。 +- **-delete**:因为`-delete`隐含了`-depth`,所以不能有效地同时使用两者。 + +#### -quit 立即退出 + +##### *无参数* + +##### 描述 +如果没有发生错误,则返回值为零。这与`-prune `不同,因为`-prune`仅适用于被修剪目录的内容,而`-quit`则使 find 立即停止。不会有任何子进程继续运行。在程序退出之前,任何通过`-exec ... +`或`-execdir ... +`构建的命令行都会被调用。执行`-quit`后,命令行中指定的文件将不再被处理。例如,`find /tmp/foo /tmp/bar -print -quit`将仅打印 `/tmp/foo`。`-quit`的一个常见用途是在找到所需内容后停止搜索文件系统。 + +### 全局选项 +始终返回真值。全局选项对命令行中较早出现的测试也会生效。为避免混淆,全局选项应在命令行上列出**起始点之后、第一个测试选项、位置选项或操作选项之前指定**。若在其他位置指定全局选项,find 会发出警告消息,说明这可能引起混淆。 + +> 全局选项出现在起始点列表之后,因此与例如`-L` 这样的选项不属于同一类别。 + +#### -d `-depth`的同义词 + +##### *无参数* + +##### 描述 +仅用于与 FreeBSD、NetBSD、MacOS X 和 OpenBSD 兼容。 + +#### -depth 遍历级别 + +##### 参数 +`levels` + +##### 描述 +在处理目录本身之前,先处理目录中的内容。`-delete`操作也隐含了`-depth`。 + +#### -files0-from 从文件中读取起始点,而非通过命令行获取。 + +##### 参数 +`file` + +##### 描述 + +使用此选项可以安全地给 find 命令传递任意数量的起始点。使用此选项和在命令行中传递起始点**是互斥的**,因此不允许同时进行。文件参数是强制性的。文件中的起始点必须用 ASCII NUL 字符分隔。两个连续的 NUL 字符,即带有零长度文件名的起始点是不允许的,这将导致错误诊断,并随后产生非零退出码。 + +与标准调用不同,在标准调用中,如果没有传递路径参数,find 会默认将当前目录作为起始点。起始点的处理方式与其他情况相同,例如,find 命令会递归进入子目录,除非另有阻止。若要仅处理起始点,可以额外传递`-maxdepth 0`参数。 + +**其他说明**:如果一个文件在输入文件中被列出多次,则其是否会被多次访问未作规定。如果在查找操作期间文件被修改,结果同样未作规定。最后,find 退出时(无论是通过`-quit`还是其他方式),命名文件中的查找位置也未作规定。此处**未作规定**意味着它**可能有效也可能无效**,**或者不做任何特定的事情**,并且该行为可能因平台或 findutils 版本而异。 + +> :bulb:可以使用`-files0-from`**从标准输入流中读取起始点列表**,例如从管道中读取。在这种情况下,不允许使用`-ok`和`-okdir`操作,因为它们会干扰从标准输入读取以获取用户确认。 + +> :warning:警告:如果给定文件为空,find 不会处理任何起始点,因此在解析完程序参数后会立即退出。 + +#### -help 和 --help 打印 find 命令行用法的摘要并退出。 + +##### *无参数* + +##### 描述 +*无描述* + +#### -ignore_readdir_race + +##### *无参数* + +##### 描述 +通常情况下,当 find 无法对文件进行状态检查(stat)时,会发出错误消息。如果您**启用此选项**,并且在 find 从目录读取文件名,到尝试进行状态检查**之间的时间内文件被删除**,则不会发出任何错误消息。这也适用于命令行中指定的文件或目录。此选项在命令行读取时生效,这意味着您不能在文件系统的某部分启用此选项,而在另一部分禁用它(如果需要这样做,您需要发出两个 find 命令,一个启用选项,一个不启用)。此外,使用`-ignore_readdir_race`选项时,如果在读取父目录后文件已消失,find 命令将忽略`-delete`操作的错误:它不会输出错误诊断信息,并且`-delete`操作的返回码将为真。 + +#### -maxdepth 最大遍历级别 + +##### 参数 +`levels` + +##### 描述 +最多向下遍历 levels 级(一个非负整数)目录层级。使用`-maxdepth 0`表示**仅对起始点本身**应用测试和操作。 + +#### -mindepth 最小遍历级别 + +##### 参数 +`levels` + +##### 描述 +在小于指定级别(非负整数)的层级上不执行任何测试或操作。使用`-mindepth 1`表示处理**除起始点外的所有文件**。 + +#### -mount 不在其他文件系统中下降目录 + +##### *无参数* + +##### 描述 +这是`-xdev`的替代名称,用于与其他一些版本的 find 兼容。 + +#### -noignore_readdir_race + +##### *无参数* + +##### 描述 +关闭了`-ignore_readdir_race`的效果。 + +#### -noleaf 不进行优化。 + +##### *无参数* + +##### 描述 +不通过假设目录包含比其硬链接数少 2 个子目录来进行优化。在搜索不遵循 Unix 目录链接惯例的文件系统时,需要此选项,例如 CD-ROM、MS-DOS 文件系统或 AFS 卷挂载点。在正常的 Unix 文件系统上,每个目录至少有 2 个硬链接:其名称及其`.`条目。此外,其子目录(如果有)各自有一个指向该目录的`..`条目。当 find 检查一个目录时,在它已经统计了比目录链接数少 2 个子目录之后,它知道该目录中的其余条目是非目录(目录树中的“叶”文件)。如果只需要检查文件的名称,则无需对其进行状态检查;这可以显著提高搜索速度。 + +#### -version 和 --version 打印 find 的版本号并退出。 + +##### *无参数* + +##### 描述 +*无描述* + +#### -xdev 不进入其他文件系统的目录。 + +##### *无参数* + +##### 描述 +*无描述* + +### 位置选项 +始终返回真值。它们仅影响命令行中后续的测试。 + +#### -daystart 从今天开始 + +> 用于 `-amin`、`-atime`、`-cmin`、`-ctime`、`-mmin` 和 `-mtime` + +##### *无参数* + +##### 描述 +从今天开始而非从 24 小时前开始。此选项仅影响命令行中后续出现的测试。 + +#### ~~-follow~~ 解引用符号链接。 + +##### *无参数* + +##### 描述 +**已弃用,请改用`-L`选项**。隐含`-noleaf`。`-follow`选项仅影响命令行中出现在其后的那些测试。除非已指定`-H`或`-L`选项,否则`-follow`选项的位置会改变`-newer`谓词的行为;作为`-newer`参数列出的任何文件,如果它们是符号链接,则会被解引用。同样的情况适用于`-newerXY`、`-anewer`和`-cnewer`。类似地,`-type `谓词将始终匹配符号链接所指向的文件类型,而非链接本身。使用`-follow`会导致 `-lname`和`-ilname`谓词始终返回 false。 + +#### -regextype 更改正则表达式语法 + +##### 参数 +`type` + +##### 描述 +更改`-regex`和`-iregex`测试在命令行后续部分所理解的正则表达式语法。要查看已知的正则表达式类型,请使用`-regextype help`。Texinfo 文档解释了各种正则表达式类型的含义及其差异。如果您不使用此选项,find 的行为如同已指定正则表达式类型为`emacs`。 + +#### -warn 和 -nowarn 开启或关闭警告消息。 + +##### *无参数* + +##### 描述 +这些警告仅适用于命令行使用,不适用于 find 在搜索目录时可能遇到的情况。默认行为是:如果标准输入是`tty`,则对应`-warn`;否则对应`-nowarn`。如果产生与命令行使用相关的警告消息,find 的退出状态不受影响。如果设置了 POSIXLY_CORRECT 环境变量,并且也使用了`-warn`,则未指定哪些(如果有)警告会被激活。 + +### 运算符选项 +运算符按优先级递减顺序列出: +- `(expr)` 强制优先级。由于括号对 shell 有特殊含义,通常需要对它们进行引用。许多示例为此使用了反斜杠:`\(...\)` 而非 `(...)`。 +- `! expr` 若表达式为假则结果为真(取反)。此字符通常也需要防止被 shell 解释。 + +> :bulb:提示:当`-a`隐式指定(例如两个测试之间没有显式运算符)或显式指定时,其优先级高于`-o`。例如,`find . -name foo -o -name bar -print`永远不会打印`foo`。 + +#### -not + +##### 参数 +`expr` + +##### 描述 +等同于`! expr`,但不符合 POSIX 标准。 + +#### -a + +##### 参数 +`expr1` -a `expr2` + +##### 描述 +两个连续的表达式被视为隐含地用`-a`连接;如果`expr1`为假,则不评估`expr2`。等同于`expr1 expr2`。 + +#### -and + +##### 参数 +`expr1` -and `expr2` + +##### 描述 +与`-a`相同。但不符合 POSIX 标准。 + +#### -o + +##### 参数 +`expr1` -o `expr2` + +##### 描述 +`expr1`和`expr2`始终都会被评估。`expr1`的值会被丢弃;列表的值即为`expr2`的值。逗号运算符(`,`)在搜索多种不同类型的事物时非常有用,但只会遍历文件系统层次结构一次。`-fprintf`动作可用于将各种匹配项列出到多个不同的输出文件中。若`expr1`为真,则不评估`expr2`。 +#### -or + +##### 参数 +`expr1` -or `expr2` -起始目录:查找文件的起始目录。 +##### 描述 +与`-o`相同。但不符合 POSIX 标准。 -### 实例 +## 例子 +当前目录搜索所有文件,且文件内容包含 “140.206.111.111” ```shell -# 当前目录搜索所有文件,文件内容 包含 “140.206.111.111” 的内容 find . -type f -name "*" | xargs grep "140.206.111.111" ``` From be1fb35497ef07b9c11ca542ebee05248f968361 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 15 Jul 2024 02:20:23 +0000 Subject: [PATCH 1011/1126] doc: update README.md. --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 2c50f0cc271..49a4b0a773b 100644 --- a/README.md +++ b/README.md @@ -302,6 +302,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Dazhuangw Alterem YH +jqz3.tech juemuren4449 kassadin kid1412621 @@ -315,8 +316,6 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. noodles2hg nsnans oliver -Yidan Wang -jqz3.tech jcdj666 hululu1068 huangyao @@ -331,6 +330,8 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. dayday cxalc Forever121 +c2ch +Yidan Wang Panthea Johnson 远方 谢民皆 @@ -392,7 +393,6 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Azroy Alan 0x_000 -c2ch brinkqiang bell azureology @@ -421,6 +421,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Rining Wu Ray Yee QinShower +Q.Ben Zheng Mystic 贡献者列表,由 [contributors](https://github.com/jaywcjlove/github-action-contributors) 自动生成 From ead3b5460a6d13b25e03ccdee24b05ef75e13f9e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 15 Jul 2024 02:20:24 +0000 Subject: [PATCH 1012/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index c4c13664ab2..9b51e3691fd 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -47,6 +47,7 @@ Dazhuangw Alterem YH +jqz3.tech juemuren4449 kassadin kid1412621 @@ -60,8 +61,6 @@ noodles2hg nsnans oliver -Yidan Wang -jqz3.tech jcdj666 hululu1068 huangyao @@ -76,6 +75,8 @@ dayday cxalc Forever121 +c2ch +Yidan Wang Panthea Johnson 远方 谢民皆 @@ -137,7 +138,6 @@ Azroy Alan 0x_000 -c2ch brinkqiang bell azureology @@ -166,6 +166,7 @@ Rining Wu Ray Yee QinShower +Q.Ben Zheng Mystic

From 6545af6381e10908c5f954a7b76f6aaa8eda5b1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83?= Date: Wed, 31 Jul 2024 15:25:44 +0800 Subject: [PATCH 1013/1126] doc: Update README.md #595 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 49a4b0a773b..c4203235e3e 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ **推荐使用的镜像 web 版本** -[**`getaifun.com`**](https://getaifun.com/linux),[**`linux.devonline.net`**](http://linux.devonline.net/),[**`man.zch.ooo`**](https://man.zch.ooo/),[**`linux.mmoke.com`**](https://linux.mmoke.com),[**`bqrdh.com`**](https://tools.bqrdh.com/linux-command/),[**`linux.zyimm.com`**](http://linux.zyimm.com/),[**`linux.vovuo.com`**](https://linux.vovuo.com/),[`linux.liguiying.cn`](https://linux.liguiying.cn/), [`renye.net`](https://renye.net/), [`diqi.org`](https://diqi.org/),[`linux.alistnas.xyz`](https://linux.alistnas.xyz/) +[**`srebro.cn`**](https://linux.srebro.cn/),[**`getaifun.com`**](https://getaifun.com/linux),[**`linux.devonline.net`**](http://linux.devonline.net/),[**`man.zch.ooo`**](https://man.zch.ooo/),[**`linux.mmoke.com`**](https://linux.mmoke.com),[**`bqrdh.com`**](https://tools.bqrdh.com/linux-command/),[**`linux.zyimm.com`**](http://linux.zyimm.com/),[**`linux.vovuo.com`**](https://linux.vovuo.com/),[`linux.liguiying.cn`](https://linux.liguiying.cn/), [`renye.net`](https://renye.net/), [`diqi.org`](https://diqi.org/),[`linux.alistnas.xyz`](https://linux.alistnas.xyz/) **其它 web 版本** From ef397aec19745e23f24eba1dd237b7dc14a93068 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 31 Jul 2024 07:26:17 +0000 Subject: [PATCH 1014/1126] doc: update README.md. --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c4203235e3e..c9ec9c2ec57 100644 --- a/README.md +++ b/README.md @@ -319,6 +319,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. jcdj666 hululu1068 huangyao +hotdogc1017 gcluffy ghy gesty @@ -330,7 +331,6 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. dayday cxalc Forever121 -c2ch Yidan Wang Panthea Johnson 远方 @@ -363,6 +363,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. shc sfwwslm rexlin600 +c2ch MinsonLee Marnm mwei From 5f8043de11b823018e95aef0500e67bb435ef479 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 31 Jul 2024 07:26:18 +0000 Subject: [PATCH 1015/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index 9b51e3691fd..f2cf5f0e086 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -64,6 +64,7 @@ jcdj666 hululu1068 huangyao +hotdogc1017 gcluffy ghy gesty @@ -75,7 +76,6 @@ dayday cxalc Forever121 -c2ch Yidan Wang Panthea Johnson 远方 @@ -108,6 +108,7 @@ shc sfwwslm rexlin600 +c2ch MinsonLee Marnm mwei From 774d3af78e3d3203b3edc03f3e759e51a1e63e91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83?= Date: Thu, 1 Aug 2024 01:08:44 +0800 Subject: [PATCH 1016/1126] doc: Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c9ec9c2ec57..9c3e2d11ec9 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ **推荐使用的镜像 web 版本** -[**`srebro.cn`**](https://linux.srebro.cn/),[**`getaifun.com`**](https://getaifun.com/linux),[**`linux.devonline.net`**](http://linux.devonline.net/),[**`man.zch.ooo`**](https://man.zch.ooo/),[**`linux.mmoke.com`**](https://linux.mmoke.com),[**`bqrdh.com`**](https://tools.bqrdh.com/linux-command/),[**`linux.zyimm.com`**](http://linux.zyimm.com/),[**`linux.vovuo.com`**](https://linux.vovuo.com/),[`linux.liguiying.cn`](https://linux.liguiying.cn/), [`renye.net`](https://renye.net/), [`diqi.org`](https://diqi.org/),[`linux.alistnas.xyz`](https://linux.alistnas.xyz/) +[**`srebro.cn`**](https://linux.srebro.cn/),[**`getaifun.com`**](https://getaifun.com/linux),[**`linux.devonline.net`**](http://linux.devonline.net/),[**`man.zch.ooo`**](https://man.zch.ooo/),[**`linux.mmoke.com`**](https://linux.mmoke.com),[**`bqrdh.com`**](https://tools.bqrdh.com/linux-command/),[**`linux.zyimm.com`**](http://linux.zyimm.com/),[**`linux.vovuo.com`**](https://linux.vovuo.com/),[`linux.liguiying.cn`](https://linux.liguiying.cn/), [`renye.net`](https://renye.net/), [`diqi.org`](https://diqi.org/),[`linux.alistnas.xyz`](https://linux.alistnas.xyz/),[`nenufm.com`](https://www.nenufm.com/linux-command/) **其它 web 版本** From 15c63feb00972d728585fa13b965af2d2a789cc5 Mon Sep 17 00:00:00 2001 From: zyy2477 Date: Thu, 15 Aug 2024 21:19:09 +0800 Subject: [PATCH 1017/1126] doc: update axel.md (#596) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update axel.md 添加 axel 源码安装方法。 * Update axel.md 更新 axel 源码安装和 -k 参数 --- command/axel.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/command/axel.md b/command/axel.md index 74915d6e15f..0d38af3af37 100644 --- a/command/axel.md +++ b/command/axel.md @@ -9,6 +9,14 @@ axel ### 安装 +#### 源码安装 + +github地址:https://github.com/axel-download-accelerator/axel + +下载相应的 release 版本后,解压进入目录执行`./configure && make && make install`安装即可。 + +#### 二进制安装 + CentOS安装Axel: 目前yum源上没有Axel,我们可以到 http://pkgs.repoforge.org/axel/ 下载rpm包安装。 @@ -54,6 +62,7 @@ axel [options] url1 [url2] [url...] --alternate , -a # Alternate progress indicator --help ,-h # 帮助 --version ,-V # 版本信息 +--insecure,-k # 不验证SSL证书 ``` ### 实例 From 6079545fee37e9800eda0734d6423c5357efdb05 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 15 Aug 2024 13:19:43 +0000 Subject: [PATCH 1018/1126] doc: update README.md. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9c3e2d11ec9..c6961bae31c 100644 --- a/README.md +++ b/README.md @@ -332,7 +332,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. cxalc Forever121 Yidan Wang -Panthea Johnson +Wendy May 远方 谢民皆 Kyofin @@ -344,9 +344,9 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Loofra Wei Xu 尘埃 -宋小北 孤城落寞 七朔 +zyy2477 zyimm zuixin369 zoomdong From d88ec7ce3ef17d3542e8ad285b9b3bb937a52df1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 15 Aug 2024 13:19:44 +0000 Subject: [PATCH 1019/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index f2cf5f0e086..0d1361025b2 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -77,7 +77,7 @@ cxalc Forever121 Yidan Wang -Panthea Johnson +Wendy May 远方 谢民皆 Kyofin @@ -89,9 +89,9 @@ Loofra Wei Xu 尘埃 -宋小北 孤城落寞 七朔 +zyy2477 zyimm zuixin369 zoomdong From 7155c78adc11f4e340ea0fba6d565db2270be4e4 Mon Sep 17 00:00:00 2001 From: zyy2477 Date: Thu, 29 Aug 2024 16:49:07 +0800 Subject: [PATCH 1020/1126] doc: Update iostat.md (#599) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 从 Linux 2.6.18 内核的 iostat 更新到 4.18.0 内核的 iostat。并参数说明和示例 --- command/iostat.md | 208 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 156 insertions(+), 52 deletions(-) diff --git a/command/iostat.md b/command/iostat.md index 0bf3d25e003..0ab85f2d431 100644 --- a/command/iostat.md +++ b/command/iostat.md @@ -1,74 +1,178 @@ -iostat -=== +# iostat -监视系统输入输出设备和CPU的使用情况 +iostat命令被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。 +iowait 指在一个采样周期内有百分之几的时间是属于以下情况:CPU处于空闲状态并且至少有一个未完成的磁盘IO请求。 -## 补充说明 +## 安装 iostat -**iostat命令** 被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。 +iostat包含在**sysstat**包内。如果你没有,你首先需要安装它。 +在 RedHat / CentOS / Fedora -### 语法 +```bash +yum install sysstat +``` + +在 Debian / Ubuntu / Linux Mint + +```bash +sudo apt-get install sysstat +``` -```shell +## 语法 + +```bash iostat(选项)(参数) ``` -### 选项 - -```shell --c:仅显示CPU使用情况; --d:仅显示设备利用率; --k:显示状态以千字节每秒为单位,而不使用块每秒; --m:显示状态以兆字节每秒为单位; --p:仅显示块设备和所有被使用的其他分区的状态; --t:显示每个报告产生时的时间; --V:显示版号并退出; --x:显示扩展状态。 +### 选项 + +```bash +# iostat --help +Usage: iostat [ options ] [ [ ] ] +Options are: +[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -s ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ] +[ -j { ID | LABEL | PATH | UUID | ... } ] [ --human ] [ -o JSON ] +[ [ -H ] -g ] [ -p [ [,...] | ALL ] ] +``` + +参数说明: +``` +-c 输出CPU统计信息。不能与-d参数同时使用。 +-d 输出设备和分区的I/O统计信息。不能与-c参数同时使用。(默认的参数是-d)。 +-h 让人类更容易阅读设备使用情况报告。--human使用此选项隐式启用。 +-k 用“kbytes/秒”代替“块/秒”显示统计信息。 +-m 用“mbytes/秒”代替“块/秒”显示统计信息。 +-t 打印显示的每份报告的时间。 +-V 显示版本号并退出。 +-x 显示扩展统计信息。不能与参数-p同时使用。 +-y 如果在给定时间间隔内显示多条记录,则省略自系统启动以来的第一份统计报告。 +-z 告诉 iostat 忽略在样本期间没有活动的设备的输出。 +-j 显示持久的设备名称。选项ID、LABEL等指定持久名称的类型。 +--human 以人类可读格式打印大小(例如1.0k, 1.2M等)。使用此选项显示的单位取代与度量相关的任何其他默认单位(例如千字节,扇区…)。 +-o 以JSON (Javascript Object Notation)格式显示统计数据。JSON输出字段顺序未定义,未来可能会添加新字段。 +-H 该选项必须与-g一起使用,表示只显示组的全局统计信息,而不显示组中单个设备的统计信息。 +-p 选项显示系统使用的块设备及其所有分区的统计信息。如果在命令行中输入一个设备名,那么将显示该设备及其所有分区的统计信息。最后,ALL关键字表示必须显示系统定义的所有块设备和分区的统计信息,包括那些从未使用过的设备和分区。如果在此选项之前定义了选项-j,则可以使用所选的持久名称类型指定在命令行上输入的设备。 +``` + +### 参数 + +interval 刷新时间间隔 +count 刷新次数 + +## 运行示例 + +### 示例1 + +```bash +# iostat +Linux 4.18.0-477.13.1.el8_8.x86_64 (node1) 08/28/2024 _x86_64_ (2 CPU) + +avg-cpu: %user %nice %system %iowait %steal %idle + 3.30 0.01 1.90 0.12 0.00 94.68 + +Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn +vda 7.85 84.22 36.59 1081853831 470049100 + ``` -### 参数 +第一部分包含了CPU报告 + +| 性能指标 | 含义 | +| --- | --- | +| %user | 显示在用户级(应用程序)执行时发生的CPU利用率百分比。 | +| %nice | 显示在具有nice优先级的用户级别执行时发生的CPU利用率百分比。 | +| %system | 显示在系统级(内核)执行时发生的CPU利用率百分比。 | +| %iowait | 显示在系统有未完成的磁盘I/O请求期间CPU空闲的时间百分比。 | +| %steal | 显示虚拟机监控程序为另一个虚拟处理器提供服务时,一个或多个虚拟CPU在非自愿等待上花费的时间百分比。 | +| %idle | 显示CPU空闲且系统没有未完成的磁盘I/O请求的时间百分比。 | + +第二部分包含了设备利用率报告 + +| 性能指标 | 含义 | +| --- | --- | +| Device | 此列给出了 /dev 目录中列出的设备(或分区)名称。 | +| tps | 表示每秒向设备发出的传输次数。传输是对设备的 I/O 请求。多个逻辑请求可合并为对设备的一个 I/O 请求。传输大小不确定。 | +| kB_read/s | 表示每秒从设备读取的数据量,以块数(千字节、兆字节)表示。块相当于扇区,因此大小为 512 字节。 | +| kB_wrtn/s | 表示写入设备的数据量,以每秒块数(千字节、兆字节)表示。 | +| kB_read | 读取的数据块总数(千字节、兆字节)。 | +| kB_wrtn | 写入的数据块总数(千字节、兆字节)。 | + +### 示例2 + +以更友好的显示方式显示 IO 信息,使用`-y`忽略第一份统计。并每隔 1 秒重新一次,共5次。 -* 间隔时间:每次报告的间隔时间(秒); -* 次数:显示报告的次数。 +```bash +# iostat -hdy 1 5 +Linux 4.18.0-477.13.1.el8_8.x86_64 (node1) 08/28/2024 _x86_64_ (2 CPU) -### 实例 + tps kB_read/s kB_wrtn/s kB_read kB_wrtn Device + 64.00 288.0k 308.0k 288.0k 308.0k vda -用`iostat -x /dev/sda1`来观看磁盘I/O的详细情况: + tps kB_read/s kB_wrtn/s kB_read kB_wrtn Device + 12.00 0.0k 84.0k 0.0k 84.0k vda -```shell -iostat -x /dev/sda1 -Linux 2.6.18-164.el5xen (localhost.localdomain) -2010年03月26日 + tps kB_read/s kB_wrtn/s kB_read kB_wrtn Device + 15.00 0.0k 36.0k 0.0k 36.0k vda -avg-cpu: %user %nice %system %iowait -%steal %idle - 0.11 0.02 0.18 0.35 -0.03 99.31 + tps kB_read/s kB_wrtn/s kB_read kB_wrtn Device + 28.00 0.0k 76.0k 0.0k 76.0k vda + + tps kB_read/s kB_wrtn/s kB_read kB_wrtn Device + 11.00 0.0k 100.0k 0.0k 100.0k vda -Device: tps Blk_read/s Blk_wrtn/s -Blk_read Blk_wrtn -sda1 0.02 0.08 -0.00 2014 4 ``` -详细说明:第二行是系统信息和监测时间,第三行和第四行显示CPU使用情况(具体内容和mpstat命令相同)。这里主要关注后面I/O输出的信息,如下所示: +### 示例3 + +```bash +# iostat -xd 1 +Linux 4.18.0-477.13.1.el8_8.x86_64 (node1) 08/28/2024 _x86_64_ (2 CPU) + +Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util +vda 4.64 3.21 84.14 36.59 0.28 1.07 5.64 25.01 5.86 8.23 0.05 18.12 11.41 0.44 0.34 + +Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util +vda 1.00 0.00 4.00 0.00 0.00 0.00 0.00 0.00 1.00 0.00 0.00 4.00 0.00 2.00 0.20 +Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util +vda 0.00 37.00 0.00 395.50 0.00 10.00 0.00 21.28 0.00 0.92 0.03 0.00 10.69 0.11 0.40 -标示 | 说明 ---- | --- -Device | 监测设备名称 -rrqm/s | 每秒需要读取需求的数量 -wrqm/s | 每秒需要写入需求的数量 -r/s | 每秒实际读取需求的数量 -w/s | 每秒实际写入需求的数量 -rsec/s | 每秒读取区段的数量 -wsec/s | 每秒写入区段的数量 -rkB/s | 每秒实际读取的大小,单位为KB -wkB/s | 每秒实际写入的大小,单位为KB -avgrq-sz | 需求的平均大小区段 -avgqu-sz | 需求的平均队列长度 -await | 等待I/O平均的时间(milliseconds) -svctm | I/O需求完成的平均时间 -%util | 设备带宽的使用率,达到100%表示饱和,达到性能瓶颈,如果是支持处理并发请求的设备则不代表性能瓶颈。 +Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util +vda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 +Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util +vda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 + +Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util +vda 1.00 0.00 4.00 0.00 0.00 0.00 0.00 0.00 1.00 0.00 0.00 4.00 0.00 1.00 0.10 + +``` +从这里你可以看到,iostat 提供了非常丰富的性能指标。第一列的 Device 表示磁盘设备的名字,其他各列指标,虽然数量较多,但是每个指标的含义都很重要。 + +| 性能指标 | 含义 | +| --- | --- | +| r/s | 设备每秒完成的读取请求数(合并后)。 | +| w/s | 设备每秒完成的写入请求数(合并后)。 | +| rkB/s | 每秒从设备读取的扇区数(千字节、兆字节)。 | +| wkB/s | 每秒写入设备的扇区数(千字节、兆字节)。 | +| rrqm/s | 每秒合并到设备的排队 I/O 请求数。 | +| wrqm/s | 每秒合并到设备的写入请求数。 | +| %rrqm | 在发送到设备之前合并在一起的读取请求的百分比。 | +| %wrqm | 发送到设备前合并在一起的写入请求的百分比。 | +| r_await | 向设备发出的读取请求获得服务的平均时间(毫秒)。这包括请求在队列中花费的时间和为请求提供服务的时间。 | +| w_await | 向待服务设备发出写入请求的平均时间(毫秒)。这包括请求在队列中花费的时间和为请求提供服务的时间。 | +| aqu-sz | 向设备发出的请求的平均队列长度。注意:在以前的版本中,该字段被称为 avgqu-sz。 | +| rareq-sz | 向设备发出的读取请求的平均大小(千字节)。 | +| wareq-sz | 向设备发出的写入请求的平均大小(千字节)。 | +| svctm | 向设备发出的 I/O 请求的平均服务时间(毫秒)。警告!不要再相信这个字段了。 未来的 sysstat 版本将删除此字段。 | +| %util | 向设备发出 I/O 请求所用时间的百分比(设备带宽利用率)。 对于串行服务请求的设备,当该值接近 100%,设备就会饱和。 但对于以并行方式提供请求的设备,如 RAID 阵列和现代固态硬盘,该数值并不能反映其性能极限。 | + +当 %iowait 升高,需要重点关注以下指标: + +- avgrq-sz: 向设备发出请求的平均大小(单位:扇区) +- avgqu-sz: 向设备发出请求的队列平均长度。也是个做 IO 调优时需要注意的地方,这个就是直接每次操作的数据的大小,如果次数多,但数据拿的小的话,其实 IO 也会很小.如果数据拿的大,IO 的数据会高 +- r_await: 向服务设备发出读取请求的平均时间(单位:毫秒)。包括请求入队的时间以及设备处理请求的时间 +- w_await: 向服务设备发出写请求的平均时间(单位:毫秒)。包括请求入队的时间以及设备处理请求的时间 +- %util:一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈 +- %svctm:平均每次设备 I/O 操作的服务时间 (毫秒)。一般要小于 await (因为同时等待的请求的等待时间被重复计算了),svctm 的大小一般和磁盘性能有关,CPU/内存的负荷也会对其有影响,请求过多也会间接导致 svctm 的增加。await 的大小一般取决于服务时间(svctm) 以及 I/O 队列的长度和 I/O 请求的发出模式。如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明 I/O 队列太长,应用得到的响应时间变慢,如果响应时间超过了用户可以容许的范围,这时可以考虑更换更快的磁盘,调整内核 elevator 算法,优化应用,或者升级 CPU From 2f8778a1f7ed614dbd3778e1680f0f98f6426c0d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 29 Aug 2024 08:49:42 +0000 Subject: [PATCH 1021/1126] doc: update README.md. --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index c6961bae31c..e964f2474f5 100644 --- a/README.md +++ b/README.md @@ -286,6 +286,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Wang Yujia alfred 沙漠之子 +zyy2477 Shell xhal VVatt @@ -302,6 +303,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Dazhuangw Alterem YH +jcdj666 jqz3.tech juemuren4449 kassadin @@ -315,8 +317,6 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. miniwater noodles2hg nsnans -oliver -jcdj666 hululu1068 huangyao hotdogc1017 @@ -331,6 +331,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. dayday cxalc Forever121 +c2ch Yidan Wang Wendy May 远方 @@ -346,7 +347,6 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. 尘埃 孤城落寞 七朔 -zyy2477 zyimm zuixin369 zoomdong @@ -363,7 +363,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. shc sfwwslm rexlin600 -c2ch +oliver MinsonLee Marnm mwei From 37bcd5ff8fd016a500d5287e151e16d8f1f54670 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 29 Aug 2024 08:49:43 +0000 Subject: [PATCH 1022/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index 0d1361025b2..d6c1e7bb095 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -31,6 +31,7 @@ Wang Yujia alfred 沙漠之子 +zyy2477 Shell xhal VVatt @@ -47,6 +48,7 @@ Dazhuangw Alterem YH +jcdj666 jqz3.tech juemuren4449 kassadin @@ -60,8 +62,6 @@ miniwater noodles2hg nsnans -oliver -jcdj666 hululu1068 huangyao hotdogc1017 @@ -76,6 +76,7 @@ dayday cxalc Forever121 +c2ch Yidan Wang Wendy May 远方 @@ -91,7 +92,6 @@ 尘埃 孤城落寞 七朔 -zyy2477 zyimm zuixin369 zoomdong @@ -108,7 +108,7 @@ shc sfwwslm rexlin600 -c2ch +oliver MinsonLee Marnm mwei From 80c5150c92a638fc9a8a69c6e8fe0cc90ed118cb Mon Sep 17 00:00:00 2001 From: zyy2477 Date: Sun, 1 Sep 2024 15:57:44 +0800 Subject: [PATCH 1023/1126] doc: update command/passwd.md (#600) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加通过 echo 命令结合管道符来修改密码的例子。 --- command/passwd.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/command/passwd.md b/command/passwd.md index 54651890747..a3f8df7368a 100644 --- a/command/passwd.md +++ b/command/passwd.md @@ -85,6 +85,15 @@ Retype new UNIX password: # 再输入一次; passwd: all authentication tokens updated successfully. # 成功; ``` +或通过管道符把`echo`命令和`passwd`命令的`--stdin`参数相结合,用一条命令来完成密码修改,无序交互。 +以 linuxde 用户的密码改成 123456 为例: + +```shell +[root@localhost ~]# echo "123456" | passwd --stdin linuxde +Changing password for user linuxde. # 正在更改 linuxde 用户的密码。 +passwd: all authentication tokens updated successfully. # passwd:所有身份验证令牌都已成功更新 +``` + 普通用户如果想更改自己的密码,直接运行passwd即可,比如当前操作的用户是linuxde。 ```shell From b2bab26746038e501a8d367fea7530a9c629b959 Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Tue, 3 Sep 2024 13:35:16 +0800 Subject: [PATCH 1024/1126] fix: correct formatting issue causing errors. #601 --- command/iostat.md | 3 ++- dist/data.json | 14 ++++++++++++-- dist/data.min.json | 2 +- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/command/iostat.md b/command/iostat.md index 0ab85f2d431..2c41ac779a5 100644 --- a/command/iostat.md +++ b/command/iostat.md @@ -1,4 +1,5 @@ -# iostat +iostat +=== iostat命令被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。 iowait 指在一个采样周期内有百分之几的时间是属于以下情况:CPU处于空闲状态并且至少有一个未完成的磁盘IO请求。 diff --git a/dist/data.json b/dist/data.json index a5301ee6e3b..75eae0c05a3 100644 --- a/dist/data.json +++ b/dist/data.json @@ -759,6 +759,11 @@ "p": "/fgrep", "d": "为文件搜索文字字符串" }, + "figlet": { + "n": "figlet", + "p": "/figlet", + "d": "字符串转为 “字画符”。" + }, "file": { "n": "file", "p": "/file", @@ -889,6 +894,11 @@ "p": "/gpasswd", "d": "Linux下工作组文件的管理工具" }, + "gpg": { + "n": "gpg", + "p": "/gpg", + "d": "可用于签名、检查、加密或解密的工具" + }, "gpm": { "n": "gpm", "p": "/gpm", @@ -1122,7 +1132,7 @@ "iostat": { "n": "iostat", "p": "/iostat", - "d": "监视系统输入输出设备和CPU的使用情况" + "d": "iostat命令被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。iowait 指在一个采样周期内有百分之几的时间是属于以下情况:CPU处于空闲状态并且至少有一个未完成的磁盘IO请求。" }, "iotop": { "n": "iotop", @@ -1637,7 +1647,7 @@ "mtr": { "n": "mtr", "p": "/mtr", - "d": "`mtr`结合了`traceroute`和`ping`程序的功能,是一款简单的网络诊断工具。 " + "d": "`mtr` 结合了 `traceroute` 和 `ping` 程序的功能,是一款简单的网络诊断工具" }, "mv": { "n": "mv", diff --git a/dist/data.min.json b/dist/data.min.json index 02f10339d70..cb420adfeff 100644 --- a/dist/data.min.json +++ b/dist/data.min.json @@ -1 +1 @@ -{"7z":{"n":"7z","p":"/7z","d":"拥有极高压缩比的开源压缩软件。"},"ab":{"n":"ab","p":"/ab","d":"Apache服务器的性能测试工具"},"accept":{"n":"accept","p":"/accept","d":"指示打印系统接受发往指定目标打印机的打印任务"},"ack":{"n":"ack","p":"/ack","d":"比grep好用的文本搜索工具"},"ag":{"n":"ag","p":"/ag","d":"ack 的升级版,C语言编写,更快更人性化"},"alias":{"n":"alias","p":"/alias","d":"定义或显示别名。"},"apachectl":{"n":"apachectl","p":"/apachectl","d":"Apache服务器前端控制工具"},"apk":{"n":"apk","p":"/apk","d":"Alpine Linux 下的包管理工具"},"apropos":{"n":"apropos","p":"/apropos","d":"在 whatis 数据库中查找字符串"},"apt-get":{"n":"apt-get","p":"/apt-get","d":"Debian Linux发行版中的APT软件包管理工具"},"apt-key":{"n":"apt-key","p":"/apt-key","d":"管理Debian Linux系统中的软件包密钥"},"apt-sortpkgs":{"n":"apt-sortpkgs","p":"/apt-sortpkgs","d":"Debian Linux下对软件包索引文件进行排序的工具"},"aptitude":{"n":"aptitude","p":"/aptitude","d":"Debian Linux系统中软件包管理工具"},"ar":{"n":"ar","p":"/ar","d":"建立或修改备存文件,或是从备存文件中抽取文件"},"arch":{"n":"arch","p":"/arch","d":"显示当前主机的硬件架构类型"},"arj":{"n":"arj","p":"/arj","d":"用于创建和管理.arj压缩包"},"arp":{"n":"arp","p":"/arp","d":"arp 命令用于显示和修改 IP 到 MAC 转换表"},"arpd":{"n":"arpd","p":"/arpd","d":"收集免费ARP信息"},"arping":{"n":"arping","p":"/arping","d":"通过发送ARP协议报文测试网络"},"arptables":{"n":"arptables","p":"/arptables","d":"管理ARP包过滤规则表"},"arpwatch":{"n":"arpwatch","p":"/arpwatch","d":"监听网络上ARP的记录"},"as":{"n":"as","p":"/as","d":"汇编语言编译器"},"at":{"n":"at","p":"/at","d":"在指定时间执行一个任务"},"atop":{"n":"atop","p":"/atop","d":"监控Linux系统资源与进程的工具"},"atq":{"n":"atq","p":"/atq","d":"列出当前用户的at任务列表"},"atrm":{"n":"atrm","p":"/atrm","d":"删除待执行任务队列中的指定任务"},"awk":{"n":"awk","p":"/awk","d":"文本和数据进行处理的编程语言"},"axel":{"n":"axel","p":"/axel","d":"多线程下载工具"},"badblocks":{"n":"badblocks","p":"/badblocks","d":"查找磁盘中损坏的区块"},"base64":{"n":"base64","p":"/base64","d":"base64 编码/解码文件或标准输入输出"},"basename":{"n":"basename","p":"/basename","d":"打印目录或者文件的基本名称"},"batch":{"n":"batch","p":"/batch","d":"在系统不繁忙的时候执行定时任务"},"bc":{"n":"bc","p":"/bc","d":"算术操作精密运算工具"},"bg":{"n":"bg","p":"/bg","d":"将前台终端作业移动到后台运行"},"bind":{"n":"bind","p":"/bind","d":"显示或设置键盘按键与其相关的功能"},"blkid":{"n":"blkid","p":"/blkid","d":"查看块设备的文件系统类型、LABEL、UUID等信息"},"blockdev":{"n":"blockdev","p":"/blockdev","d":"从命令行调用区块设备控制程序"},"bmodinfo":{"n":"bmodinfo","p":"/bmodinfo","d":"显示给定模块的详细信息"},"break":{"n":"break","p":"/break","d":"结束for,while或until循环。"},"builtin":{"n":"builtin","p":"/builtin","d":"执行bash内建命令。"},"bunzip2":{"n":"bunzip2","p":"/bunzip2","d":"可解压缩.bz2格式的压缩文件。 "},"bye":{"n":"bye","p":"/bye","d":"命令用于中断FTP连线并结束程序"},"bzcat":{"n":"bzcat","p":"/bzcat","d":"不解压,直接查看指定的.bz2文件"},"bzcmp":{"n":"bzcmp","p":"/bzcmp","d":"比较两个压缩包中的文件"},"bzdiff":{"n":"bzdiff","p":"/bzdiff","d":"直接比较两个.bz2压缩包中文件的不同"},"bzgrep":{"n":"bzgrep","p":"/bzgrep","d":"使用正则表达式搜索.bz2压缩包中文件"},"bzip2":{"n":"bzip2","p":"/bzip2","d":"将文件压缩成bz2格式"},"bzip2recover":{"n":"bzip2recover","p":"/bzip2recover","d":"恢复被破坏的.bz2压缩包中的文件"},"bzless":{"n":"bzless","p":"/bzless","d":"增强.bz2压缩包查看器"},"bzmore":{"n":"bzmore","p":"/bzmore","d":"查看bzip2压缩过的文本文件的内容"},"cal":{"n":"cal","p":"/cal","d":"显示当前日历或指定日期的日历"},"cancel":{"n":"cancel","p":"/cancel","d":"取消已存在的打印任务"},"cat":{"n":"cat","p":"/cat","d":"连接多个文件并打印到标准输出。"},"cd":{"n":"cd","p":"/cd","d":"切换用户当前工作目录。"},"cdrecord":{"n":"cdrecord","p":"/cdrecord","d":"Linux系统下光盘刻录功能命令"},"chage":{"n":"chage","p":"/chage","d":"修改帐号和密码的有效期限"},"chattr":{"n":"chattr","p":"/chattr","d":"用来改变文件属性"},"chcon":{"n":"chcon","p":"/chcon","d":"修改对象(文件)的安全上下文"},"chfn":{"n":"chfn","p":"/chfn","d":"用来改变finger命令显示的信息"},"chgrp":{"n":"chgrp","p":"/chgrp","d":"用来变更文件或目录的所属群组"},"chkconfig":{"n":"chkconfig","p":"/chkconfig","d":"检查或设置系统的各种服务"},"chmod":{"n":"chmod","p":"/chmod","d":"用来变更文件或目录的权限"},"chown":{"n":"chown","p":"/chown","d":"用来变更文件或目录的拥有者或所属群组"},"chpasswd":{"n":"chpasswd","p":"/chpasswd","d":"批量更新用户口令的工具"},"chroot":{"n":"chroot","p":"/chroot","d":"把根目录换成指定的目的目录"},"chsh":{"n":"chsh","p":"/chsh","d":"用来更换登录系统时使用的shell"},"cksum":{"n":"cksum","p":"/cksum","d":"检查文件的CRC是否正确"},"clear":{"n":"clear","p":"/clear","d":"清除当前屏幕终端上的任何信息"},"clock":{"n":"clock","p":"/clock","d":"用于调整 RTC 时间"},"clockdiff":{"n":"clockdiff","p":"/clockdiff","d":"检测两台linux主机的时间差"},"cmp":{"n":"cmp","p":"/cmp","d":"比较两个文件是否有差异"},"col":{"n":"col","p":"/col","d":"过滤控制字符"},"colrm":{"n":"colrm","p":"/colrm","d":"删除文件中的指定列"},"column":{"n":"column","p":"/column","d":"按列格式化输出文件"},"comm":{"n":"comm","p":"/comm","d":"按行比较两个已排序的文件。"},"command":{"n":"command","p":"/command","d":"调用并执行指定的命令"},"compress":{"n":"compress","p":"/compress","d":"使用Lempress-Ziv编码压缩数据文件"},"consoletype":{"n":"consoletype","p":"/consoletype","d":"输出已连接的终端类型"},"continue":{"n":"continue","p":"/continue","d":"结束本次循环,继续执行下一个for,while或until循环。"},"convertquota":{"n":"convertquota","p":"/convertquota","d":"把老的配额文件转换为新的格式"},"cp":{"n":"cp","p":"/cp","d":"将源文件或目录复制到目标文件或目录中"},"cpio":{"n":"cpio","p":"/cpio","d":"用来建立、还原备份档的工具程序"},"createrepo":{"n":"createrepo","p":"/createrepo","d":"创建YUM仓库"},"crontab":{"n":"crontab","p":"/crontab","d":"提交和管理用户的需要周期性执行的任务"},"csplit":{"n":"csplit","p":"/csplit","d":"将一个大文件分割成小的碎片文件"},"cu":{"n":"cu","p":"/cu","d":"用于连接另一个系统主机"},"cupsdisable":{"n":"cupsdisable","p":"/cupsdisable","d":"停止指定的打印机"},"cupsenable":{"n":"cupsenable","p":"/cupsenable","d":"启动指定的打印机"},"curl":{"n":"curl","p":"/curl","d":"利用URL规则在命令行下工作的文件传输工具"},"cut":{"n":"cut","p":"/cut","d":"连接文件并打印到标准输出设备上"},"date":{"n":"date","p":"/date","d":"显示或设置系统时间与日期"},"dc":{"n":"dc","p":"/dc","d":"任意精度计算器"},"dd":{"n":"dd","p":"/dd","d":"复制文件并对原文件的内容进行转换和格式化处理"},"declare":{"n":"declare","p":"/declare","d":"声明变量,设置或显示变量的值和属性。"},"depmod":{"n":"depmod","p":"/depmod","d":"分析可载入模块的相依性"},"df":{"n":"df","p":"/df","d":"显示磁盘的相关信息"},"dhclient":{"n":"dhclient","p":"/dhclient","d":"动态获取或释放IP地址"},"dhcpd":{"n":"dhcpd","p":"/dhcpd","d":"运行DHCP服务器"},"dhcrelay":{"n":"dhcrelay","p":"/dhcrelay","d":"使用dhcrelay命令可以提供中继DHCP和BOOTP请求"},"diff":{"n":"diff","p":"/diff","d":"比较给定的两个文件的不同"},"diff3":{"n":"diff3","p":"/diff3","d":"比较3个文件不同的地方"},"diffstat":{"n":"diffstat","p":"/diffstat","d":"显示diff命令输出信息的柱状图"},"dig":{"n":"dig","p":"/dig","d":"域名查询工具"},"dircolors":{"n":"dircolors","p":"/dircolors","d":"置ls命令在显示目录或文件时所用的色彩"},"dirname":{"n":"dirname","p":"/dirname","d":"去除文件名中的非目录部分"},"dirs":{"n":"dirs","p":"/dirs","d":"显示目录堆栈。"},"disown":{"n":"disown","p":"/disown","d":"从当前的shell中移除作业。"},"dmesg":{"n":"dmesg","p":"/dmesg","d":"显示Linux系统启动信息"},"dmidecode":{"n":"dmidecode","p":"/dmidecode","d":"在Linux系统下获取有关硬件方面的信息"},"dnf":{"n":"dnf","p":"/dnf","d":"新一代的RPM软件包管理器"},"dnsdomainname":{"n":"dnsdomainname","p":"/dnsdomainname","d":"定义DNS系统中FQDN名称的域名"},"docker":{"n":"docker","p":"/docker","d":"容器化技术,可以将应用程序及其依赖项打包到一个可移植的容器中,使其可以在不同的环境中运行"},"domainname":{"n":"domainname","p":"/domainname","d":"显示和设置系统的NIS域名"},"dos2unix":{"n":"dos2unix","p":"/dos2unix","d":"将DOS格式文本文件转换成Unix格式"},"dpkg-deb":{"n":"dpkg-deb","p":"/dpkg-deb","d":"Debian Linux下的软件包管理工具"},"dpkg-divert":{"n":"dpkg-divert","p":"/dpkg-divert","d":"Debian Linux中创建并管理一个转向列表"},"dpkg-preconfigure":{"n":"dpkg-preconfigure","p":"/dpkg-preconfigure","d":"Debian Linux中软件包安装之前询问问题"},"dpkg-query":{"n":"dpkg-query","p":"/dpkg-query","d":"Debian Linux中软件包的查询工具"},"dpkg-reconfigure":{"n":"dpkg-reconfigure","p":"/dpkg-reconfigure","d":"Debian Linux中重新配制一个已经安装的软件包"},"dpkg-split":{"n":"dpkg-split","p":"/dpkg-split","d":"Debian Linux中将大软件包分割成小包"},"dpkg-statoverride":{"n":"dpkg-statoverride","p":"/dpkg-statoverride","d":"Debian Linux中覆盖文件的所有权和模式"},"dpkg-trigger":{"n":"dpkg-trigger","p":"/dpkg-trigger","d":"Debian Linux下的软件包触发器"},"dpkg":{"n":"dpkg","p":"/dpkg","d":"Debian Linux系统上安装、创建和管理软件包"},"dris":{"n":"dris","p":"/dris","d":"显示和清空目录堆栈中的内容"},"dstat":{"n":"dstat","p":"/dstat","d":"通用的系统资源统计工具"},"du":{"n":"du","p":"/du","d":"显示每个文件和目录的磁盘使用空间"},"dump":{"n":"dump","p":"/dump","d":"用于备份ext2或者ext3文件系统"},"e2fsck":{"n":"e2fsck","p":"/e2fsck","d":"用于检查第二扩展文件系统的完整性"},"e2label":{"n":"e2label","p":"/e2label","d":"设置第二扩展文件系统的卷标"},"echo":{"n":"echo","p":"/echo","d":"输出指定的字符串或者变量"},"ed":{"n":"ed","p":"/ed","d":"单行纯文本编辑器"},"edquota":{"n":"edquota","p":"/edquota","d":"用于编辑指定用户或工作组磁盘配额"},"egrep":{"n":"egrep","p":"/egrep","d":"在文件内查找指定的字符串"},"eject":{"n":"eject","p":"/eject","d":"用来退出抽取式设备"},"elinks":{"n":"elinks","p":"/elinks","d":"纯文本界面的WWW浏览器"},"elm":{"n":"elm","p":"/elm","d":"纯文本邮件客户端程序"},"emacs":{"n":"emacs","p":"/emacs","d":"功能强大的全屏文本编辑器"},"enable":{"n":"enable","p":"/enable","d":"启动或禁用shell内建命令"},"env":{"n":"env","p":"/env","d":"显示系统中已存在的环境变量"},"ethtool":{"n":"ethtool","p":"/ethtool","d":"显示或修改以太网卡的配置信息"},"ex":{"n":"ex","p":"/ex","d":"启动vim编辑器的ex编辑模式"},"exec":{"n":"exec","p":"/exec","d":"调用并执行指定的命令"},"exit":{"n":"exit","p":"/exit","d":"退出当前的shell。"},"expand":{"n":"expand","p":"/expand","d":"将文件的制表符转换为空白字符"},"export":{"n":"export","p":"/export","d":"为shell变量或函数设置导出属性。"},"exportfs":{"n":"exportfs","p":"/exportfs","d":"管理NFS共享文件系统列表"},"expr":{"n":"expr","p":"/expr","d":"一款表达式计算工具"},"false":{"n":"false","p":"/false","d":"返回状态为失败。"},"fc":{"n":"fc","p":"/fc","d":"显示历史列表中的命令或修改指定的历史命令并执行。"},"fdisk":{"n":"fdisk","p":"/fdisk","d":"查看磁盘使用情况和磁盘分区"},"fg":{"n":"fg","p":"/fg","d":"将后台作业移动到前台终端运行"},"fgrep":{"n":"fgrep","p":"/fgrep","d":"为文件搜索文字字符串"},"file":{"n":"file","p":"/file","d":"用来探测给定文件的类型"},"find":{"n":"find","p":"/find","d":"在指定目录下查找文件"},"findfs":{"n":"findfs","p":"/findfs","d":"标签或UUID查找文件系统"},"finger":{"n":"finger","p":"/finger","d":"用于查找并显示用户信息"},"firewall-cmd":{"n":"firewall-cmd","p":"/firewall-cmd","d":"Linux上新用的防火墙软件,跟iptables差不多的工具"},"fishshell":{"n":"fishshell","p":"/fishshell","d":"比 bash 更好用的 shell"},"fmt":{"n":"fmt","p":"/fmt","d":"读取文件后优化处理并输出"},"fold":{"n":"fold","p":"/fold","d":"控制文件内容输出时所占用的屏幕宽度"},"fping":{"n":"fping","p":"/fping","d":"fping检测主机是否存在"},"free":{"n":"free","p":"/free","d":"显示内存的使用情况"},"fsck":{"n":"fsck","p":"/fsck","d":"fsck(英文全拼:file system check)命令检查并且试图修复文件系统中的错误"},"ftp":{"n":"ftp","p":"/ftp","d":"用来设置文件系统相关功能"},"ftpcount":{"n":"ftpcount","p":"/ftpcount","d":"显示目前已FTP登入的用户人数"},"ftpshut":{"n":"ftpshut","p":"/ftpshut","d":"在指定的时间关闭FTP服务器"},"ftptop":{"n":"ftptop","p":"/ftptop","d":"proftpd服务器的连接状态"},"ftpwho":{"n":"ftpwho","p":"/ftpwho","d":"显示当前每个ftp会话信息"},"fuser":{"n":"fuser","p":"/fuser","d":"使用文件或文件结构识别进程"},"gcc":{"n":"gcc","p":"/gcc","d":"基于C/C++的编译器"},"gcov":{"n":"gcov","p":"/gcov","d":"测试程序的代码覆盖率的工具"},"gdb":{"n":"gdb","p":"/gdb","d":"功能强大的程序调试器"},"get_module":{"n":"get_module","p":"/get_module","d":"获取Linux内核模块的详细信息"},"getenforce":{"n":"getenforce","p":"/getenforce","d":"显示当前SELinux的应用模式,是强制、执行还是停用"},"getent":{"n":"getent","p":"/getent","d":"查询 DNS 名称服务器中的命名空间"},"getsebool":{"n":"getsebool","p":"/getsebool","d":"查询SElinux策略内各项规则的布尔值"},"git":{"n":"git","p":"/git","d":"是目前世界上最先进的分布式版本控制系统"},"gpasswd":{"n":"gpasswd","p":"/gpasswd","d":"Linux下工作组文件的管理工具"},"gpm":{"n":"gpm","p":"/gpm","d":"提供文字模式下的滑鼠事件处理"},"grep":{"n":"grep","p":"/grep","d":"强大的文本搜索工具"},"groupadd":{"n":"groupadd","p":"/groupadd","d":"用于创建一个新的工作组"},"groupdel":{"n":"groupdel","p":"/groupdel","d":"用于删除指定的工作组"},"groupmems":{"n":"groupmems","p":"/groupmems","d":"管理用户主要组的成员"},"groupmod":{"n":"groupmod","p":"/groupmod","d":"更改群组识别码或名称"},"groups":{"n":"groups","p":"/groups","d":"打印指定用户所在组的名称。"},"grpck":{"n":"grpck","p":"/grpck","d":"用于验证组文件的完整性"},"grpconv":{"n":"grpconv","p":"/grpconv","d":"用来开启群组的投影密码"},"grpunconv":{"n":"grpunconv","p":"/grpunconv","d":"用来关闭群组的投影密码"},"grub":{"n":"grub","p":"/grub","d":"多重引导程序grub的命令行shell工具"},"grub2-mkconfig":{"n":"grub2-mkconfig","p":"/grub2-mkconfig","d":"生成 grub.cfg 配置文件。"},"grub2-set-default":{"n":"grub2-set-default","p":"/grub2-set-default","d":"设置系统默认的启动内核"},"gunzip":{"n":"gunzip","p":"/gunzip","d":"用来解压缩文件"},"gzexe":{"n":"gzexe","p":"/gzexe","d":"用来压缩可执行文件"},"gzip":{"n":"gzip","p":"/gzip","d":"用来压缩文件"},"halt":{"n":"halt","p":"/halt","d":"关闭正在运行的Linux操作系统"},"hcitool":{"n":"hcitool","p":"/hcitool","d":"hcitool是一个Linux命令行工具,用于管理和调试蓝牙设备。它可以用于扫描周围的蓝牙设备、连接到蓝牙设备发送命令和数据包等。"},"hdparm":{"n":"hdparm","p":"/hdparm","d":"显示与设定硬盘的参数"},"head":{"n":"head","p":"/head","d":"显示文件的开头部分。"},"help":{"n":"help","p":"/help","d":"该命令是bash内建命令,用于显示bash内建命令的帮助信息。"},"hexdump":{"n":"hexdump","p":"/hexdump","d":"显示文件十六进制格式"},"history":{"n":"history","p":"/history","d":"显示或操作历史列表。"},"host":{"n":"host","p":"/host","d":"常用的分析域名查询工具"},"hostid":{"n":"hostid","p":"/hostid","d":"显示当前主机的十六进制数字标识。"},"hostname":{"n":"hostname","p":"/hostname","d":"显示和设置系统的主机名"},"hostnamectl":{"n":"hostnamectl","p":"/hostnamectl","d":"查询或更改系统主机名"},"hping3":{"n":"hping3","p":"/hping3","d":"测试网络及主机的安全"},"htdigest":{"n":"htdigest","p":"/htdigest","d":"Apache服务器内置工具"},"htop":{"n":"htop","p":"/htop","d":"[非内部命令]一个互动的进程查看器,可以动态观察系统进程状况"},"htpasswd":{"n":"htpasswd","p":"/htpasswd","d":"apache服务器创建密码认证文件"},"hwclock":{"n":"hwclock","p":"/hwclock","d":"显示与设定硬件时钟"},"iconv":{"n":"iconv","p":"/iconv","d":"转换文件的编码方式"},"id":{"n":"id","p":"/id","d":"打印真实以及有效的用户和所在组的信息"},"ifcfg":{"n":"ifcfg","p":"/ifcfg","d":"置Linux中的网络接口参数"},"ifconfig":{"n":"ifconfig","p":"/ifconfig","d":"配置和显示Linux系统网卡的网络参数"},"ifdown":{"n":"ifdown","p":"/ifdown","d":"禁用指定的网络接口"},"ifstat":{"n":"ifstat","p":"/ifstat","d":"统计网络接口流量状态"},"iftop":{"n":"iftop","p":"/iftop","d":"一款实时流量监控工具"},"ifup":{"n":"ifup","p":"/ifup","d":"激活指定的网络接口"},"indent":{"n":"indent","p":"/indent","d":"格式化C语言的源文件"},"info":{"n":"info","p":"/info","d":"Linux下info格式的帮助指令"},"init":{"n":"init","p":"/init","d":"init进程是所有Linux进程的父进程"},"inotifywait":{"n":"inotifywait","p":"/inotifywait","d":"异步文件系统监控机制"},"insmod":{"n":"insmod","p":"/insmod","d":"将给定的模块加载到内核中"},"install":{"n":"install","p":"/install","d":"安装或升级软件或备份数据"},"iostat":{"n":"iostat","p":"/iostat","d":"监视系统输入输出设备和CPU的使用情况"},"iotop":{"n":"iotop","p":"/iotop","d":"用来监视磁盘I/O使用状况的工具"},"ip":{"n":"ip","p":"/ip","d":"网络配置工具"},"ip6tables-restore":{"n":"ip6tables-restore","p":"/ip6tables-restore","d":"还原ip6tables表"},"ip6tables-save":{"n":"ip6tables-save","p":"/ip6tables-save","d":"保存ip6tables表配置"},"ip6tables":{"n":"ip6tables","p":"/ip6tables","d":"linux中防火墙软件"},"ipcalc":{"n":"ipcalc","p":"/ipcalc","d":"简单的IP地址计算器"},"ipcrm":{"n":"ipcrm","p":"/ipcrm","d":"删除消息队列、信号集、或者共享内存标识"},"ipcs":{"n":"ipcs","p":"/ipcs","d":"分析消息队列共享内存和信号量"},"iperf":{"n":"iperf","p":"/iperf","d":"网络性能测试工具"},"iptables-restore":{"n":"iptables-restore","p":"/iptables-restore","d":"还原iptables表的配置"},"iptables-save":{"n":"iptables-save","p":"/iptables-save","d":"备份iptables的表配置"},"iptables":{"n":"iptables","p":"/iptables","d":"Linux上常用的防火墙软件"},"iptraf":{"n":"iptraf","p":"/iptraf","d":"实时地监视网卡流量"},"iptstate":{"n":"iptstate","p":"/iptstate","d":"显示iptables的工作状态"},"iscsiadm":{"n":"iscsiadm","p":"/iscsiadm","d":"管理iSCSI连接"},"ispell":{"n":"ispell","p":"/ispell","d":"检查文件中出现的拼写错误"},"jed":{"n":"jed","p":"/jed","d":"主要用于编辑代码的编辑器"},"jobs":{"n":"jobs","p":"/jobs","d":"显示作业的状态。"},"joe":{"n":"joe","p":"/joe","d":"强大的纯文本编辑器"},"join":{"n":"join","p":"/join","d":"两个文件中指定栏位内容相同的行连接起来"},"journalctl":{"n":"journalctl","p":"/journalctl","d":"检索 systemd 日志,是 CentOS 7 才有的工具。"},"jq":{"n":"jq","p":"/jq","d":"一个灵活的轻量级命令行JSON处理器"},"jwhois":{"n":"jwhois","p":"/jwhois","d":"whois 客户端服务"},"kernelversion":{"n":"kernelversion","p":"/kernelversion","d":"打印当前内核的主版本号"},"kexec":{"n":"kexec","p":"/kexec","d":"从当前正在运行的内核引导到一个新内核"},"kill":{"n":"kill","p":"/kill","d":"发送信号到进程。"},"killall":{"n":"killall","p":"/killall","d":"使用进程的名称来杀死一组进程"},"last":{"n":"last","p":"/last","d":"列出目前与过去登入系统的用户相关信息"},"lastb":{"n":"lastb","p":"/lastb","d":"列出登入系统失败的用户相关信息"},"lastlog":{"n":"lastlog","p":"/lastlog","d":"显示系统中所有用户最近一次登录信息"},"ld":{"n":"ld","p":"/ld","d":"将目标文件连接为可执行程序"},"ldconfig":{"n":"ldconfig","p":"/ldconfig","d":"动态链接库管理命令"},"ldd":{"n":"ldd","p":"/ldd","d":"打印程序或者库文件所依赖的共享库列表"},"less":{"n":"less","p":"/less","d":"分屏上下翻页浏览文件内容"},"let":{"n":"let","p":"/let","d":"简单的计算器,执行算术表达式。"},"lftp":{"n":"lftp","p":"/lftp","d":"优秀的文件客户端程序"},"lftpget":{"n":"lftpget","p":"/lftpget","d":"调用lftp指令下载指定的文件"},"lha":{"n":"lha","p":"/lha","d":"压缩或解压缩lzh格式文件"},"lilo":{"n":"lilo","p":"/lilo","d":"安装核心载入开机管理程序"},"ln":{"n":"ln","p":"/ln","d":"用来为文件创建链接"},"lnstat":{"n":"lnstat","p":"/lnstat","d":"显示Linux系统的网路状态"},"local":{"n":"local","p":"/local","d":"在函数内定义局部变量。"},"locate":{"n":"locate","p":"/locate","d":"比 find 好用的文件查找工具"},"logger":{"n":"logger","p":"/logger","d":"在系统日志中记录相应条目"},"login":{"n":"login","p":"/login","d":"登录系统或切换用户身份"},"logname":{"n":"logname","p":"/logname","d":"打印当前终端登录用户的名称。"},"logout":{"n":"logout","p":"/logout","d":"退出当前登录的Shell"},"logrotate":{"n":"logrotate","p":"/logrotate","d":"系统日志进行轮转、压缩和删除"},"logsave":{"n":"logsave","p":"/logsave","d":"将命令的输出信息保存到指定的日志文件"},"logwatch":{"n":"logwatch","p":"/logwatch","d":"可定制和可插入式的日志监视系统"},"look":{"n":"look","p":"/look","d":"显示文件中以指定字符串开头的任意行"},"losetup":{"n":"losetup","p":"/losetup","d":"设定与控制循环(loop)设备"},"lp":{"n":"lp","p":"/lp","d":"打印文件或修改排队的打印任务"},"lpadmin":{"n":"lpadmin","p":"/lpadmin","d":"配置CUPS套件中的打印机和类"},"lpc":{"n":"lpc","p":"/lpc","d":"命令行方式打印机控制程序"},"lpq":{"n":"lpq","p":"/lpq","d":"显示打印队列中的打印任务的状态信息"},"lpr":{"n":"lpr","p":"/lpr","d":"将文件发送给指定打印机进行打印"},"lprm":{"n":"lprm","p":"/lprm","d":"删除打印队列中的打印任务"},"lpstat":{"n":"lpstat","p":"/lpstat","d":"显示CUPS中打印机的状态信息"},"ls":{"n":"ls","p":"/ls","d":"显示目录内容列表"},"lsattr":{"n":"lsattr","p":"/lsattr","d":"查看文件的第二扩展文件系统属性"},"lsb_release":{"n":"lsb_release","p":"/lsb_release","d":"显示发行版本信息"},"lsblk":{"n":"lsblk","p":"/lsblk","d":"列出块设备信息"},"lscpu":{"n":"lscpu","p":"/lscpu","d":"显示有关CPU架构的信息"},"lsmod":{"n":"lsmod","p":"/lsmod","d":"显示已载入系统的模块"},"lsof":{"n":"lsof","p":"/lsof","d":"显示Linux系统当前已打开的所有文件列表 `lsof -p pid`"},"lspci":{"n":"lspci","p":"/lspci","d":"显示当前主机的所有PCI总线信息"},"lsusb":{"n":"lsusb","p":"/lsusb","d":"显示本机的USB设备列表信息"},"ltrace":{"n":"ltrace","p":"/ltrace","d":"用来跟踪进程调用库函数的情况"},"lvcreate":{"n":"lvcreate","p":"/lvcreate","d":"用于创建LVM的逻辑卷"},"lvdisplay":{"n":"lvdisplay","p":"/lvdisplay","d":"显示逻辑卷属性"},"lvextend":{"n":"lvextend","p":"/lvextend","d":"扩展逻辑卷空间"},"lvreduce":{"n":"lvreduce","p":"/lvreduce","d":"收缩逻辑卷空间"},"lvremove":{"n":"lvremove","p":"/lvremove","d":"删除指定LVM逻辑卷"},"lvresize":{"n":"lvresize","p":"/lvresize","d":"调整逻辑卷空间大小"},"lvscan":{"n":"lvscan","p":"/lvscan","d":"扫描逻辑卷"},"lynx":{"n":"lynx","p":"/lynx","d":"纯文本模式的网页浏览器"},"mail":{"n":"mail","p":"/mail","d":"命令行下发送和接收电子邮件"},"mailq":{"n":"mailq","p":"/mailq","d":"显示待发送的邮件队列"},"mailstat":{"n":"mailstat","p":"/mailstat","d":"显示到达的邮件状态"},"make":{"n":"make","p":"/make","d":"GNU的工程化编译工具"},"man":{"n":"man","p":"/man","d":"查看Linux中的指令帮助"},"mapfile":{"n":"mapfile","p":"/mapfile","d":"从标准输入读取行并赋值到数组。"},"md5sum":{"n":"md5sum","p":"/md5sum","d":"计算和校验文件报文摘要的工具程序"},"mesg":{"n":"mesg","p":"/mesg","d":"设置当前终端的写权限"},"mii-tool":{"n":"mii-tool","p":"/mii-tool","d":"配置网络设备协商方式的工具"},"mkbootdisk":{"n":"mkbootdisk","p":"/mkbootdisk","d":"可建立目前系统的启动盘"},"mkcert":{"n":"mkcert","p":"/mkcert","d":"用来生成自签证书的工具"},"mkdir":{"n":"mkdir","p":"/mkdir","d":"用来创建目录"},"mke2fs":{"n":"mke2fs","p":"/mke2fs","d":"创建磁盘分区上的“etc2/etc3”文件系统"},"mkfs":{"n":"mkfs","p":"/mkfs","d":"用于在设备上创建Linux文件系统"},"mkinitrd":{"n":"mkinitrd","p":"/mkinitrd","d":"建立要载入ramdisk的映像文件"},"mkisofs":{"n":"mkisofs","p":"/mkisofs","d":"建立ISO 9660映像文件"},"mknod":{"n":"mknod","p":"/mknod","d":"创建字符设备文件和块设备文件"},"mkswap":{"n":"mkswap","p":"/mkswap","d":"建立和设置SWAP交换分区"},"mktemp":{"n":"mktemp","p":"/mktemp","d":"创建临时文件供shell脚本使用"},"modetest":{"n":"modetest","p":"/modetest","d":"DRM/KMS驱动程序libdrm中的模式测试工具"},"modprobe":{"n":"modprobe","p":"/modprobe","d":"自动处理可载入模块"},"more":{"n":"more","p":"/more","d":"显示文件内容,每次显示一屏"},"mount":{"n":"mount","p":"/mount","d":"用于挂载Linux系统外的文件"},"mpstat":{"n":"mpstat","p":"/mpstat","d":"显示各个可用CPU的状态"},"mtools":{"n":"mtools","p":"/mtools","d":"显示mtools支持的指令"},"mtr":{"n":"mtr","p":"/mtr","d":"`mtr`结合了`traceroute`和`ping`程序的功能,是一款简单的网络诊断工具。 "},"mv":{"n":"mv","p":"/mv","d":"用来对文件或目录重新命名"},"mysql":{"n":"mysql","p":"/mysql","d":"MySQL服务器客户端工具"},"mysqladmin":{"n":"mysqladmin","p":"/mysqladmin","d":"MySQL服务器管理客户端"},"mysqldump":{"n":"mysqldump","p":"/mysqldump","d":"MySQL数据库中备份工具"},"mysqlimport":{"n":"mysqlimport","p":"/mysqlimport","d":"为MySQL服务器用命令行方式导入数据"},"mysqlshow":{"n":"mysqlshow","p":"/mysqlshow","d":"显示MySQL中数据库相关信息"},"named-checkzone":{"n":"named-checkzone","p":"/named-checkzone","d":"使用named-checkzone命令可以进行区域文件有效性检查和转换,必须指定区域名称和区域文件名称"},"nano":{"n":"nano","p":"/nano","d":"字符终端文本编辑器"},"nc":{"n":"nc","p":"/nc","d":"nc是网络工具中的瑞士军刀"},"ncftp":{"n":"ncftp","p":"/ncftp","d":"是增强的的FTP工具"},"neofetch":{"n":"neofetch","p":"/neofetch","d":"显示带有发行徽标的系统信息的工具"},"nethogs":{"n":"nethogs","p":"/nethogs","d":"终端下的网络流量监控工具"},"netstat":{"n":"netstat","p":"/netstat","d":"查看Linux中网络系统状态信息"},"newusers":{"n":"newusers","p":"/newusers","d":"用于批处理的方式一次创建多个命令"},"nfsstat":{"n":"nfsstat","p":"/nfsstat","d":"列出NFS客户端和服务器的工作状态"},"ngrep":{"n":"ngrep","p":"/ngrep","d":"方便的数据包匹配和显示工具"},"nice":{"n":"nice","p":"/nice","d":"调整程序执行的优先权等级"},"nisdomainname":{"n":"nisdomainname","p":"/nisdomainname","d":"显示主机NIS的域名"},"nl":{"n":"nl","p":"/nl","d":"为每一个文件添加行号。"},"nm":{"n":"nm","p":"/nm","d":"显示二进制目标文件的符号表"},"nmap":{"n":"nmap","p":"/nmap","d":"网络探测和安全审核"},"nmcli":{"n":"nmcli","p":"/nmcli","d":"地址配置工具"},"nohup":{"n":"nohup","p":"/nohup","d":"将程序以忽略挂起信号的方式运行起来"},"nologin":{"n":"nologin","p":"/nologin","d":"拒绝用户登录系统"},"nproc":{"n":"nproc","p":"/nproc","d":"打印可用的处理器单元数量。"},"nslookup":{"n":"nslookup","p":"/nslookup","d":"查询域名DNS信息的工具"},"ntpdate":{"n":"ntpdate","p":"/ntpdate","d":"使用网络计时协议(NTP)设置日期和时间"},"ntsysv":{"n":"ntsysv","p":"/ntsysv","d":"集中管理系统的各种服务"},"objdump":{"n":"objdump","p":"/objdump","d":"显示二进制文件信息"},"od":{"n":"od","p":"/od","d":"输出文件的八进制、十六进制等格式编码的字节"},"openssl":{"n":"openssl","p":"/openssl","d":"强大的安全套接字层密码库"},"pacman":{"n":"pacman","p":"/pacman","d":"Arch Linux 系统及其衍生系统中默认使用的包管理器"},"parted":{"n":"parted","p":"/parted","d":"磁盘分区和分区大小调整工具"},"partprobe":{"n":"partprobe","p":"/partprobe","d":"不重启的情况下重读分区"},"passwd":{"n":"passwd","p":"/passwd","d":"用于让用户可以更改自己的密码"},"paste":{"n":"paste","p":"/paste","d":"将多个文件按列队列合并"},"patch":{"n":"patch","p":"/patch","d":"为开放源代码软件安装补丁程序"},"pathchk":{"n":"pathchk","p":"/pathchk","d":"检查文件中不可移植的部分"},"perl":{"n":"perl","p":"/perl","d":"perl语言解释器"},"pfctl":{"n":"pfctl","p":"/pfctl","d":"PF防火墙的配置命令"},"pgrep":{"n":"pgrep","p":"/pgrep","d":"根据用户给出的信息在当前运行进程中查找并列出符合条件的进程ID(PID)"},"php":{"n":"php","p":"/php","d":"PHP语言的命令行接口"},"pico":{"n":"pico","p":"/pico","d":"功能强大全屏幕的文本编辑器"},"pidof":{"n":"pidof","p":"/pidof","d":"查找指定名称的进程的进程号ID号"},"pidstat":{"n":"pidstat","p":"/pidstat","d":"监控进程的系统资源占用情况"},"pigz":{"n":"pigz","p":"/pigz","d":"可以用来解压缩文件,gzip的并行实现升级版"},"ping":{"n":"ping","p":"/ping","d":"测试主机之间网络的连通性(ipv4)"},"ping6":{"n":"ping6","p":"/ping6","d":"测试主机之间网络的连通性(ipv6)"},"pip":{"n":"pip","p":"/pip","d":"Python 编程语言中的包管理器,用于安装和管理第三方 Python 模块"},"pkexec":{"n":"pkexec","p":"/pkexec","d":"以其他用户身份执行命令"},"pkill":{"n":"pkill","p":"/pkill","d":"可以按照进程名杀死进程"},"pmap":{"n":"pmap","p":"/pmap","d":"报告进程的内存映射关系"},"popd":{"n":"popd","p":"/popd","d":"从目录堆栈中删除目录。"},"poweroff":{"n":"poweroff","p":"/poweroff","d":"关闭Linux系统,关闭记录会被写入到/var/log/wtmp日志文件中"},"ppp-off":{"n":"ppp-off","p":"/ppp-off","d":"关闭ppp连线"},"pr":{"n":"pr","p":"/pr","d":"将文本文件转换成适合打印的格式"},"printf":{"n":"printf","p":"/printf","d":"格式化并输出结果。"},"protoize":{"n":"protoize","p":"/protoize","d":"GNU-C代码转换为ANSI-C代码"},"prtstat":{"n":"prtstat","p":"/prtstat","d":"显示进程信息"},"ps":{"n":"ps","p":"/ps","d":"报告当前系统的进程状态"},"pssh":{"n":"pssh","p":"/pssh","d":"批量管理执行"},"pstack":{"n":"pstack","p":"/pstack","d":"显示每个进程的栈跟踪"},"pstree":{"n":"pstree","p":"/pstree","d":"以树状图的方式展现进程之间的派生关系"},"pushd":{"n":"pushd","p":"/pushd","d":"将目录添加到目录堆栈顶部。"},"pv":{"n":"pv","p":"/pv","d":"显示当前在命令行执行的命令的进度信息,管道查看器"},"pvchange":{"n":"pvchange","p":"/pvchange","d":"修改物理卷属性"},"pvck":{"n":"pvck","p":"/pvck","d":"检测物理卷的LVM元数据的一致性"},"pvcreate":{"n":"pvcreate","p":"/pvcreate","d":"将物理硬盘分区初始化为物理卷"},"pvdisplay":{"n":"pvdisplay","p":"/pvdisplay","d":"显示物理卷的属性"},"pvremove":{"n":"pvremove","p":"/pvremove","d":"删除一个存在的物理卷"},"pvs":{"n":"pvs","p":"/pvs","d":"输出物理卷信息报表"},"pvscan":{"n":"pvscan","p":"/pvscan","d":"扫描系统中所有硬盘的物理卷列表"},"pwck":{"n":"pwck","p":"/pwck","d":"用来验证系统认证文件内容和格式的完整性"},"pwconv":{"n":"pwconv","p":"/pwconv","d":"用来开启用户的投影密码"},"pwd":{"n":"pwd","p":"/pwd","d":"显示当前工作目录的绝对路径。"},"pwdx":{"n":"pwdx","p":"/pwdx","d":"用于显示指定进程的当前工作目录"},"pwunconv":{"n":"pwunconv","p":"/pwunconv","d":"用来关闭用户的投影密码"},"quota":{"n":"quota","p":"/quota","d":"显示磁盘已使用的空间与限制"},"quotacheck":{"n":"quotacheck","p":"/quotacheck","d":"检查磁盘的使用空间与限制"},"quotaoff":{"n":"quotaoff","p":"/quotaoff","d":"关闭Linux内核中指定文件系统的磁盘配额功能"},"quotaon":{"n":"quotaon","p":"/quotaon","d":"激活Linux内核中指定文件系统的磁盘配额功能"},"rcconf":{"n":"rcconf","p":"/rcconf","d":"Debian Linux下的运行等级服务配置工具"},"rcp":{"n":"rcp","p":"/rcp","d":"使在两台Linux主机之间的文件复制操作更简单"},"read":{"n":"read","p":"/read","d":"从键盘读取变量值"},"readelf":{"n":"readelf","p":"/readelf","d":"用于显示elf格式文件的信息"},"readonly":{"n":"readonly","p":"/readonly","d":"标记shell变量或函数为只读"},"reboot":{"n":"reboot","p":"/reboot","d":"重新启动正在运行的Linux操作系统"},"reject":{"n":"reject","p":"/reject","d":"指示打印系统拒绝发往指定目标打印机的打印任务"},"rename":{"n":"rename","p":"/rename","d":"用字符串替换的方式批量改变文件名"},"renice":{"n":"renice","p":"/renice","d":"修改正在运行的进程的调度优先级"},"reposync":{"n":"reposync","p":"/reposync","d":"同步yum存储库到本地目录"},"repquota":{"n":"repquota","p":"/repquota","d":"报表的格式输出磁盘空间限制的状态"},"resize":{"n":"resize","p":"/resize","d":"命令设置终端机视窗的大小"},"restore":{"n":"restore","p":"/restore","d":"所进行的操作和dump指令相反"},"restorecon":{"n":"restorecon","p":"/restorecon","d":"恢复文件的安全上下文"},"return":{"n":"return","p":"/return","d":"从函数中退出并返回数值。"},"rev":{"n":"rev","p":"/rev","d":"将文件内容以字符为单位反序输出"},"rexec":{"n":"rexec","p":"/rexec","d":"远程执行Linux系统下命令"},"rlogin":{"n":"rlogin","p":"/rlogin","d":"从当前终端登录到远程Linux主机"},"rm":{"n":"rm","p":"/rm","d":"用于删除给定的文件和目录"},"rmdir":{"n":"rmdir","p":"/rmdir","d":"用来删除空目录"},"rmmod":{"n":"rmmod","p":"/rmmod","d":"从运行的内核中移除指定的内核模块"},"route":{"n":"route","p":"/route","d":"显示并设置Linux中静态路由表"},"rpm":{"n":"rpm","p":"/rpm","d":"RPM软件包的管理工具"},"rpm2cpio":{"n":"rpm2cpio","p":"/rpm2cpio","d":"将RPM软件包转换为cpio格式的文件"},"rpmbuild":{"n":"rpmbuild","p":"/rpmbuild","d":"创建RPM的二进制软件包和源码软件包"},"rpmdb":{"n":"rpmdb","p":"/rpmdb","d":"初始化和重建RPM数据库"},"rpmquery":{"n":"rpmquery","p":"/rpmquery","d":"从RPM数据库中查询软件包信息"},"rpmsign":{"n":"rpmsign","p":"/rpmsign","d":"使用RPM软件包的签名管理工具"},"rpmverify":{"n":"rpmverify","p":"/rpmverify","d":"验证已安装的RPM软件包的正确性"},"rsh":{"n":"rsh","p":"/rsh","d":"连接远程主机并执行命令"},"rsync":{"n":"rsync","p":"/rsync","d":"远程数据同步工具"},"runlevel":{"n":"runlevel","p":"/runlevel","d":"打印当前Linux系统的运行等级"},"sar":{"n":"sar","p":"/sar","d":"系统运行状态统计工具"},"scp":{"n":"scp","p":"/scp","d":"加密的方式在本地主机和远程主机之间复制文件"},"screen":{"n":"screen","p":"/screen","d":"用于命令行终端切换"},"script":{"n":"script","p":"/script","d":"记录终端会话的所有操作"},"scriptreplay":{"n":"scriptreplay","p":"/scriptreplay","d":"重新播放终端会话的所有操作"},"sed":{"n":"sed","p":"/sed","d":"功能强大的流式文本编辑器"},"seinfo":{"n":"seinfo","p":"/seinfo","d":"查询SELinux的策略提供多少相关规则"},"semanage":{"n":"semanage","p":"/semanage","d":"默认目录的安全上下文查询与修改"},"sendmail":{"n":"sendmail","p":"/sendmail","d":"著名电子邮件服务器"},"seq":{"n":"seq","p":"/seq","d":"以指定增量从首数开始打印数字到尾数"},"service":{"n":"service","p":"/service","d":"控制系统服务的实用工具"},"sesearch":{"n":"sesearch","p":"/sesearch","d":"查询SELinux策略的规则详情"},"set":{"n":"set","p":"/set","d":"显示或设置shell特性及shell变量"},"setfacl":{"n":"setfacl","p":"/setfacl","d":"设置文件访问控制列表"},"setpci":{"n":"setpci","p":"/setpci","d":"查询和配置PCI设备的使用工具"},"setsebool":{"n":"setsebool","p":"/setsebool","d":"修改SElinux策略内各项规则的布尔值"},"setsid":{"n":"setsid","p":"/setsid","d":"在新的会话中运行程序"},"sftp-server":{"n":"sftp-server","p":"/sftp-server","d":"sftp协议的服务器端程序"},"sftp":{"n":"sftp","p":"/sftp","d":"交互式的文件传输程序"},"sh":{"n":"sh","p":"/sh","d":"shell命令解释器"},"sha256sum":{"n":"sha256sum","p":"/sha256sum","d":"用于计算文件的 SHA-256 哈希值"},"shift":{"n":"shift","p":"/shift","d":"移动位置参数。"},"shopt":{"n":"shopt","p":"/shopt","d":"显示和设置shell操作选项"},"showmount":{"n":"showmount","p":"/showmount","d":"显示NFS服务器加载的信息"},"shuf":{"n":"shuf","p":"/shuf","d":"产生随机的排列。"},"shutdown":{"n":"shutdown","p":"/shutdown","d":"用来执行系统关机的命令"},"skill":{"n":"skill","p":"/skill","d":"向选定的进程发送信号冻结进程"},"slabtop":{"n":"slabtop","p":"/slabtop","d":"实时显示内核slab内存缓存信息"},"sleep":{"n":"sleep","p":"/sleep","d":"将目前动作延迟一段时间"},"slocate":{"n":"slocate","p":"/slocate","d":"命令查找文件或目录"},"smartmontools":{"n":"smartmontools","p":"/smartmontools","d":"Smartmontools 是一种硬盘检测工具,通过控制和管理硬盘的SMART(Self Monitoring Analysis and Reporting Technology,自动检测分析及报告技术)技术来实现的"},"smbclient":{"n":"smbclient","p":"/smbclient","d":"交互方式访问samba服务器"},"smbpasswd":{"n":"smbpasswd","p":"/smbpasswd","d":"samba用户和密码管理工具"},"sort":{"n":"sort","p":"/sort","d":"对文本文件中所有行进行排序。"},"source":{"n":"source","p":"/source","d":"在当前Shell环境中从指定文件读取和执行命令。"},"speedtest-cli":{"n":"speedtest-cli","p":"/speedtest-cli","d":"命令行下测试服务器外网速度"},"spell":{"n":"spell","p":"/spell","d":"对文件进行拼写检查"},"split":{"n":"split","p":"/split","d":"分割任意大小的文件"},"squid":{"n":"squid","p":"/squid","d":"squid服务器守护进程"},"squidclient":{"n":"squidclient","p":"/squidclient","d":"squid服务器的客户端管理工具"},"ss":{"n":"ss","p":"/ss","d":"比 netstat 好用的socket统计信息,iproute2 包附带的另一个工具,允许你查询 socket 的有关统计信息"},"ssh-add":{"n":"ssh-add","p":"/ssh-add","d":"把专用密钥添加到ssh-agent的高速缓存中"},"ssh-agent":{"n":"ssh-agent","p":"/ssh-agent","d":"ssh密钥管理器"},"ssh-copy-id":{"n":"ssh-copy-id","p":"/ssh-copy-id","d":"把本地的ssh公钥文件安装到远程主机对应的账户下"},"ssh-keygen":{"n":"ssh-keygen","p":"/ssh-keygen","d":"为ssh生成、管理和转换认证密钥"},"ssh-keyscan":{"n":"ssh-keyscan","p":"/ssh-keyscan","d":"收集主机公钥的使用工具"},"ssh":{"n":"ssh","p":"/ssh","d":"openssh套件中的客户端连接工具"},"sshd":{"n":"sshd","p":"/sshd","d":"openssh软件套件中的服务器守护进程"},"sshpass":{"n":"sshpass","p":"/sshpass","d":"免交互 SSH 登录工具。"},"startx":{"n":"startx","p":"/startx","d":"用来启动X Window"},"stat":{"n":"stat","p":"/stat","d":"用于显示文件的状态信息"},"strace":{"n":"strace","p":"/strace","d":"跟踪系统调用和信号"},"strings":{"n":"strings","p":"/strings","d":"在对象文件或二进制文件中查找可打印的字符串"},"stty":{"n":"stty","p":"/stty","d":"修改终端命令行的相关设置"},"su":{"n":"su","p":"/su","d":"用于切换当前用户身份到其他用户身份"},"sudo":{"n":"sudo","p":"/sudo","d":"以其他身份来执行命令"},"sum":{"n":"sum","p":"/sum","d":"计算文件的校验码和显示块数"},"supervisord":{"n":"supervisord","p":"/supervisord","d":"配置后台服务/常驻进程的进程管家工具"},"suspend":{"n":"suspend","p":"/suspend","d":"挂起shell的执行。"},"swapoff":{"n":"swapoff","p":"/swapoff","d":"关闭指定的交换空间"},"swapon":{"n":"swapon","p":"/swapon","d":"激活Linux系统中交换空间"},"sync":{"n":"sync","p":"/sync","d":"用于强制被改变的内容立刻写入磁盘"},"sysctl":{"n":"sysctl","p":"/sysctl","d":"时动态地修改内核的运行参数"},"syslog":{"n":"syslog","p":"/syslog","d":"系统默认的日志守护进程"},"systemctl":{"n":"systemctl","p":"/systemctl","d":"系统服务管理器指令"},"systool":{"n":"systool","p":"/systool","d":"显示基于总线、类和拓扑显示系统中设备的信息"},"tac":{"n":"tac","p":"/tac","d":"连接多个文件并以行为单位反向打印到标准输出。"},"tail":{"n":"tail","p":"/tail","d":"在屏幕上显示指定文件的末尾若干行"},"tailf":{"n":"tailf","p":"/tailf","d":"在屏幕上显示指定文件的末尾若干行内容,通常用于日志文件的跟踪输出"},"talk":{"n":"talk","p":"/talk","d":"让用户和其他用户聊天"},"tar":{"n":"tar","p":"/tar","d":"将许多文件一起保存至一个单独的磁带或磁盘归档,并能从归档中单独还原所需文件。"},"tcpdump":{"n":"tcpdump","p":"/tcpdump","d":"一款sniffer工具,是Linux上的抓包工具,嗅探器"},"tcpreplay":{"n":"tcpreplay","p":"/tcpreplay","d":"将保存在 PCAP 文件包重新发送,用于性能或者功能测试"},"tee":{"n":"tee","p":"/tee","d":"从标准输入读取数据并重定向到标准输出和文件。"},"telinit":{"n":"telinit","p":"/telinit","d":"切换当前正在运行系统的运行等级"},"telnet":{"n":"telnet","p":"/telnet","d":"登录远程主机和管理(测试ip端口是否连通)"},"tempfile":{"n":"tempfile","p":"/tempfile","d":"shell中给临时文件命名"},"test":{"n":"test","p":"/test","d":"执行条件表达式。"},"tftp":{"n":"tftp","p":"/tftp","d":"在本机和tftp服务器之间使用TFTP协议传输文件"},"time":{"n":"time","p":"/time","d":"统计给定命令所花费的总时间"},"timedatectl":{"n":"timedatectl","p":"/timedatectl","d":"用于在 Linux 中设置或查询系统时间、日期和时区等配置。"},"times":{"n":"times","p":"/times","d":"显示进程累计时间。"},"tload":{"n":"tload","p":"/tload","d":"显示系统负载状况"},"tmux":{"n":"tmux","p":"/tmux","d":"Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权"},"top":{"n":"top","p":"/top","d":"显示或管理执行中的程序"},"touch":{"n":"touch","p":"/touch","d":"创建新的空文件"},"tput":{"n":"tput","p":"/tput","d":"通过terminfo数据库对终端会话进行初始化和操作"},"tr":{"n":"tr","p":"/tr","d":"将字符进行替换压缩和删除"},"tracepath":{"n":"tracepath","p":"/tracepath","d":"追踪目的主机经过的路由信息"},"traceroute":{"n":"traceroute","p":"/traceroute","d":"显示数据包到主机间的路径"},"trap":{"n":"trap","p":"/trap","d":"捕捉信号和其他事件并执行命令。"},"tree":{"n":"tree","p":"/tree","d":"树状图列出目录的内容"},"true":{"n":"true","p":"/true","d":"返回状态为成功。"},"tty":{"n":"tty","p":"/tty","d":"显示连接到当前标准输入的终端设备文件名"},"type":{"n":"type","p":"/type","d":"显示指定命令的类型。"},"ulimit":{"n":"ulimit","p":"/ulimit","d":"控制shell程序的资源"},"umask":{"n":"umask","p":"/umask","d":"显示或设置创建文件的权限掩码。"},"umount":{"n":"umount","p":"/umount","d":"用于卸载已经加载的文件系统"},"unalias":{"n":"unalias","p":"/unalias","d":"删除由alias设置的别名"},"uname":{"n":"uname","p":"/uname","d":"打印系统信息。"},"unarj":{"n":"unarj","p":"/unarj","d":"解压缩由arj命令创建的压缩包"},"uncompress":{"n":"uncompress","p":"/uncompress","d":"用来解压.Z文件"},"unexpand":{"n":"unexpand","p":"/unexpand","d":"将文件的空白字符转换为制表符"},"uniq":{"n":"uniq","p":"/uniq","d":"显示或忽略重复的行。"},"unlink":{"n":"unlink","p":"/unlink","d":"系统调用函数unlink去删除指定的文件"},"unprotoize":{"n":"unprotoize","p":"/unprotoize","d":"删除C语言源代码文件中的函数原型"},"unrar":{"n":"unrar","p":"/unrar","d":"解压rar文件命令,从 rar 压缩包中提取文件"},"unset":{"n":"unset","p":"/unset","d":"删除指定的shell变量或函数。"},"unzip":{"n":"unzip","p":"/unzip","d":"用于解压缩由zip命令压缩的压缩包"},"updatedb":{"n":"updatedb","p":"/updatedb","d":"创建或更新slocate命令所必需的数据库文件"},"uptime":{"n":"uptime","p":"/uptime","d":"查看Linux系统负载信息"},"useradd":{"n":"useradd","p":"/useradd","d":"创建的新的系统用户"},"userdel":{"n":"userdel","p":"/userdel","d":"用于删除给定的用户以及与用户相关的文件"},"usermod":{"n":"usermod","p":"/usermod","d":"用于修改用户的基本信息"},"usernetctl":{"n":"usernetctl","p":"/usernetctl","d":"被允许时操作指定的网络接口"},"users":{"n":"users","p":"/users","d":"打印当前主机所有登陆用户的名称。"},"uucico":{"n":"uucico","p":"/uucico","d":"UUCP文件传输服务程序"},"uupick":{"n":"uupick","p":"/uupick","d":"命令处理传送进来的文件"},"uuto":{"n":"uuto","p":"/uuto","d":"将文件传送到远端的UUCP主机"},"vdfuse":{"n":"vdfuse","p":"/vdfuse","d":"VirtualBox软件挂载VDI分区文件工具"},"vgchange":{"n":"vgchange","p":"/vgchange","d":"修改卷组属性"},"vgconvert":{"n":"vgconvert","p":"/vgconvert","d":"转换卷组元数据格式"},"vgcreate":{"n":"vgcreate","p":"/vgcreate","d":"用于创建LVM卷组"},"vgdisplay":{"n":"vgdisplay","p":"/vgdisplay","d":"显示LVM卷组的信息"},"vgextend":{"n":"vgextend","p":"/vgextend","d":"向卷组中添加物理卷"},"vgreduce":{"n":"vgreduce","p":"/vgreduce","d":"从卷组中删除物理卷"},"vgremove":{"n":"vgremove","p":"/vgremove","d":"用于用户删除LVM卷组"},"vgrename":{"n":"vgrename","p":"/vgrename","d":"使用vgrename命令可以重命名卷组的名称"},"vgscan":{"n":"vgscan","p":"/vgscan","d":"扫描并显示系统中的卷组"},"vi":{"n":"vi","p":"/vi","d":"功能强大的纯文本编辑器"},"vmstat":{"n":"vmstat","p":"/vmstat","d":"显示虚拟内存状态"},"volname":{"n":"volname","p":"/volname","d":"显示指定的ISO-9660格式的设备的卷名称"},"w":{"n":"w","p":"/w","d":"显示目前登入系统的用户信息"},"wait":{"n":"wait","p":"/wait","d":"等待进程执行完后返回"},"wall":{"n":"wall","p":"/wall","d":"向系统当前所有打开的终端上输出信息"},"watch":{"n":"watch","p":"/watch","d":"可以将命令的输出结果输出到标准输出设备,多用于周期性执行命令/定时执行命令"},"wc":{"n":"wc","p":"/wc","d":"统计文件的字节数、字数、行数"},"wget":{"n":"wget","p":"/wget","d":"Linux系统下载文件工具"},"whatis":{"n":"whatis","p":"/whatis","d":"查询一个命令执行什么功能"},"whereis":{"n":"whereis","p":"/whereis","d":"查找二进制程序、代码等相关文件路径"},"which":{"n":"which","p":"/which","d":"查找并显示给定命令的绝对路径"},"who":{"n":"who","p":"/who","d":"显示当前所有登陆用户的信息。"},"whoami":{"n":"whoami","p":"/whoami","d":"打印当前有效的用户ID对应的名称"},"write":{"n":"write","p":"/write","d":"向指定登录用户终端上发送信息"},"xargs":{"n":"xargs","p":"/xargs","d":"给其他命令传递参数的一个过滤器"},"xauth":{"n":"xauth","p":"/xauth","d":"显示和编辑被用于连接X服务器的认证信息"},"xclip":{"n":"xclip","p":"/xclip","d":"管理 X 粘贴板"},"xhost":{"n":"xhost","p":"/xhost","d":"制哪些X客户端能够在X服务器上显示"},"xinit":{"n":"xinit","p":"/xinit","d":"是Linux下X-Window系统的初始化程序"},"xlsatoms":{"n":"xlsatoms","p":"/xlsatoms","d":"列出X服务器内部所有定义的原子成分"},"xlsclients":{"n":"xlsclients","p":"/xlsclients","d":"列出显示器中的客户端应用程序"},"xlsfonts":{"n":"xlsfonts","p":"/xlsfonts","d":"列出X Server使用的字体"},"xrandr":{"n":"xrandr","p":"/xrandr","d":"X 窗口系统配置管理工具"},"xset":{"n":"xset","p":"/xset","d":"设置X-Window系统中的用户爱好的实用工具"},"xz":{"n":"xz","p":"/xz","d":"POSIX 平台开发具有高压缩率的工具"},"yes":{"n":"yes","p":"/yes","d":"重复打印指定字符串"},"ypdomainname":{"n":"ypdomainname","p":"/ypdomainname","d":"显示主机的NIS的域名"},"yum":{"n":"yum","p":"/yum","d":"基于RPM的软件包管理器"},"zcat":{"n":"zcat","p":"/zcat","d":"显示压缩包中文件的内容"},"zfore":{"n":"zfore","p":"/zfore","d":"强制为gzip格式的压缩文件添加.gz后缀"},"zip":{"n":"zip","p":"/zip","d":"可以用来解压缩文件"},"zipinfo":{"n":"zipinfo","p":"/zipinfo","d":"用来列出压缩文件信息"},"zipsplit":{"n":"zipsplit","p":"/zipsplit","d":"将较大的zip压缩包分割成各个较小的压缩包"},"znew":{"n":"znew","p":"/znew","d":"将.Z压缩包重新转化为gzip命令压缩的.gz压缩包"}} \ No newline at end of file +{"7z":{"n":"7z","p":"/7z","d":"拥有极高压缩比的开源压缩软件。"},"ab":{"n":"ab","p":"/ab","d":"Apache服务器的性能测试工具"},"accept":{"n":"accept","p":"/accept","d":"指示打印系统接受发往指定目标打印机的打印任务"},"ack":{"n":"ack","p":"/ack","d":"比grep好用的文本搜索工具"},"ag":{"n":"ag","p":"/ag","d":"ack 的升级版,C语言编写,更快更人性化"},"alias":{"n":"alias","p":"/alias","d":"定义或显示别名。"},"apachectl":{"n":"apachectl","p":"/apachectl","d":"Apache服务器前端控制工具"},"apk":{"n":"apk","p":"/apk","d":"Alpine Linux 下的包管理工具"},"apropos":{"n":"apropos","p":"/apropos","d":"在 whatis 数据库中查找字符串"},"apt-get":{"n":"apt-get","p":"/apt-get","d":"Debian Linux发行版中的APT软件包管理工具"},"apt-key":{"n":"apt-key","p":"/apt-key","d":"管理Debian Linux系统中的软件包密钥"},"apt-sortpkgs":{"n":"apt-sortpkgs","p":"/apt-sortpkgs","d":"Debian Linux下对软件包索引文件进行排序的工具"},"aptitude":{"n":"aptitude","p":"/aptitude","d":"Debian Linux系统中软件包管理工具"},"ar":{"n":"ar","p":"/ar","d":"建立或修改备存文件,或是从备存文件中抽取文件"},"arch":{"n":"arch","p":"/arch","d":"显示当前主机的硬件架构类型"},"arj":{"n":"arj","p":"/arj","d":"用于创建和管理.arj压缩包"},"arp":{"n":"arp","p":"/arp","d":"arp 命令用于显示和修改 IP 到 MAC 转换表"},"arpd":{"n":"arpd","p":"/arpd","d":"收集免费ARP信息"},"arping":{"n":"arping","p":"/arping","d":"通过发送ARP协议报文测试网络"},"arptables":{"n":"arptables","p":"/arptables","d":"管理ARP包过滤规则表"},"arpwatch":{"n":"arpwatch","p":"/arpwatch","d":"监听网络上ARP的记录"},"as":{"n":"as","p":"/as","d":"汇编语言编译器"},"at":{"n":"at","p":"/at","d":"在指定时间执行一个任务"},"atop":{"n":"atop","p":"/atop","d":"监控Linux系统资源与进程的工具"},"atq":{"n":"atq","p":"/atq","d":"列出当前用户的at任务列表"},"atrm":{"n":"atrm","p":"/atrm","d":"删除待执行任务队列中的指定任务"},"awk":{"n":"awk","p":"/awk","d":"文本和数据进行处理的编程语言"},"axel":{"n":"axel","p":"/axel","d":"多线程下载工具"},"badblocks":{"n":"badblocks","p":"/badblocks","d":"查找磁盘中损坏的区块"},"base64":{"n":"base64","p":"/base64","d":"base64 编码/解码文件或标准输入输出"},"basename":{"n":"basename","p":"/basename","d":"打印目录或者文件的基本名称"},"batch":{"n":"batch","p":"/batch","d":"在系统不繁忙的时候执行定时任务"},"bc":{"n":"bc","p":"/bc","d":"算术操作精密运算工具"},"bg":{"n":"bg","p":"/bg","d":"将前台终端作业移动到后台运行"},"bind":{"n":"bind","p":"/bind","d":"显示或设置键盘按键与其相关的功能"},"blkid":{"n":"blkid","p":"/blkid","d":"查看块设备的文件系统类型、LABEL、UUID等信息"},"blockdev":{"n":"blockdev","p":"/blockdev","d":"从命令行调用区块设备控制程序"},"bmodinfo":{"n":"bmodinfo","p":"/bmodinfo","d":"显示给定模块的详细信息"},"break":{"n":"break","p":"/break","d":"结束for,while或until循环。"},"builtin":{"n":"builtin","p":"/builtin","d":"执行bash内建命令。"},"bunzip2":{"n":"bunzip2","p":"/bunzip2","d":"可解压缩.bz2格式的压缩文件。 "},"bye":{"n":"bye","p":"/bye","d":"命令用于中断FTP连线并结束程序"},"bzcat":{"n":"bzcat","p":"/bzcat","d":"不解压,直接查看指定的.bz2文件"},"bzcmp":{"n":"bzcmp","p":"/bzcmp","d":"比较两个压缩包中的文件"},"bzdiff":{"n":"bzdiff","p":"/bzdiff","d":"直接比较两个.bz2压缩包中文件的不同"},"bzgrep":{"n":"bzgrep","p":"/bzgrep","d":"使用正则表达式搜索.bz2压缩包中文件"},"bzip2":{"n":"bzip2","p":"/bzip2","d":"将文件压缩成bz2格式"},"bzip2recover":{"n":"bzip2recover","p":"/bzip2recover","d":"恢复被破坏的.bz2压缩包中的文件"},"bzless":{"n":"bzless","p":"/bzless","d":"增强.bz2压缩包查看器"},"bzmore":{"n":"bzmore","p":"/bzmore","d":"查看bzip2压缩过的文本文件的内容"},"cal":{"n":"cal","p":"/cal","d":"显示当前日历或指定日期的日历"},"cancel":{"n":"cancel","p":"/cancel","d":"取消已存在的打印任务"},"cat":{"n":"cat","p":"/cat","d":"连接多个文件并打印到标准输出。"},"cd":{"n":"cd","p":"/cd","d":"切换用户当前工作目录。"},"cdrecord":{"n":"cdrecord","p":"/cdrecord","d":"Linux系统下光盘刻录功能命令"},"chage":{"n":"chage","p":"/chage","d":"修改帐号和密码的有效期限"},"chattr":{"n":"chattr","p":"/chattr","d":"用来改变文件属性"},"chcon":{"n":"chcon","p":"/chcon","d":"修改对象(文件)的安全上下文"},"chfn":{"n":"chfn","p":"/chfn","d":"用来改变finger命令显示的信息"},"chgrp":{"n":"chgrp","p":"/chgrp","d":"用来变更文件或目录的所属群组"},"chkconfig":{"n":"chkconfig","p":"/chkconfig","d":"检查或设置系统的各种服务"},"chmod":{"n":"chmod","p":"/chmod","d":"用来变更文件或目录的权限"},"chown":{"n":"chown","p":"/chown","d":"用来变更文件或目录的拥有者或所属群组"},"chpasswd":{"n":"chpasswd","p":"/chpasswd","d":"批量更新用户口令的工具"},"chroot":{"n":"chroot","p":"/chroot","d":"把根目录换成指定的目的目录"},"chsh":{"n":"chsh","p":"/chsh","d":"用来更换登录系统时使用的shell"},"cksum":{"n":"cksum","p":"/cksum","d":"检查文件的CRC是否正确"},"clear":{"n":"clear","p":"/clear","d":"清除当前屏幕终端上的任何信息"},"clock":{"n":"clock","p":"/clock","d":"用于调整 RTC 时间"},"clockdiff":{"n":"clockdiff","p":"/clockdiff","d":"检测两台linux主机的时间差"},"cmp":{"n":"cmp","p":"/cmp","d":"比较两个文件是否有差异"},"col":{"n":"col","p":"/col","d":"过滤控制字符"},"colrm":{"n":"colrm","p":"/colrm","d":"删除文件中的指定列"},"column":{"n":"column","p":"/column","d":"按列格式化输出文件"},"comm":{"n":"comm","p":"/comm","d":"按行比较两个已排序的文件。"},"command":{"n":"command","p":"/command","d":"调用并执行指定的命令"},"compress":{"n":"compress","p":"/compress","d":"使用Lempress-Ziv编码压缩数据文件"},"consoletype":{"n":"consoletype","p":"/consoletype","d":"输出已连接的终端类型"},"continue":{"n":"continue","p":"/continue","d":"结束本次循环,继续执行下一个for,while或until循环。"},"convertquota":{"n":"convertquota","p":"/convertquota","d":"把老的配额文件转换为新的格式"},"cp":{"n":"cp","p":"/cp","d":"将源文件或目录复制到目标文件或目录中"},"cpio":{"n":"cpio","p":"/cpio","d":"用来建立、还原备份档的工具程序"},"createrepo":{"n":"createrepo","p":"/createrepo","d":"创建YUM仓库"},"crontab":{"n":"crontab","p":"/crontab","d":"提交和管理用户的需要周期性执行的任务"},"csplit":{"n":"csplit","p":"/csplit","d":"将一个大文件分割成小的碎片文件"},"cu":{"n":"cu","p":"/cu","d":"用于连接另一个系统主机"},"cupsdisable":{"n":"cupsdisable","p":"/cupsdisable","d":"停止指定的打印机"},"cupsenable":{"n":"cupsenable","p":"/cupsenable","d":"启动指定的打印机"},"curl":{"n":"curl","p":"/curl","d":"利用URL规则在命令行下工作的文件传输工具"},"cut":{"n":"cut","p":"/cut","d":"连接文件并打印到标准输出设备上"},"date":{"n":"date","p":"/date","d":"显示或设置系统时间与日期"},"dc":{"n":"dc","p":"/dc","d":"任意精度计算器"},"dd":{"n":"dd","p":"/dd","d":"复制文件并对原文件的内容进行转换和格式化处理"},"declare":{"n":"declare","p":"/declare","d":"声明变量,设置或显示变量的值和属性。"},"depmod":{"n":"depmod","p":"/depmod","d":"分析可载入模块的相依性"},"df":{"n":"df","p":"/df","d":"显示磁盘的相关信息"},"dhclient":{"n":"dhclient","p":"/dhclient","d":"动态获取或释放IP地址"},"dhcpd":{"n":"dhcpd","p":"/dhcpd","d":"运行DHCP服务器"},"dhcrelay":{"n":"dhcrelay","p":"/dhcrelay","d":"使用dhcrelay命令可以提供中继DHCP和BOOTP请求"},"diff":{"n":"diff","p":"/diff","d":"比较给定的两个文件的不同"},"diff3":{"n":"diff3","p":"/diff3","d":"比较3个文件不同的地方"},"diffstat":{"n":"diffstat","p":"/diffstat","d":"显示diff命令输出信息的柱状图"},"dig":{"n":"dig","p":"/dig","d":"域名查询工具"},"dircolors":{"n":"dircolors","p":"/dircolors","d":"置ls命令在显示目录或文件时所用的色彩"},"dirname":{"n":"dirname","p":"/dirname","d":"去除文件名中的非目录部分"},"dirs":{"n":"dirs","p":"/dirs","d":"显示目录堆栈。"},"disown":{"n":"disown","p":"/disown","d":"从当前的shell中移除作业。"},"dmesg":{"n":"dmesg","p":"/dmesg","d":"显示Linux系统启动信息"},"dmidecode":{"n":"dmidecode","p":"/dmidecode","d":"在Linux系统下获取有关硬件方面的信息"},"dnf":{"n":"dnf","p":"/dnf","d":"新一代的RPM软件包管理器"},"dnsdomainname":{"n":"dnsdomainname","p":"/dnsdomainname","d":"定义DNS系统中FQDN名称的域名"},"docker":{"n":"docker","p":"/docker","d":"容器化技术,可以将应用程序及其依赖项打包到一个可移植的容器中,使其可以在不同的环境中运行"},"domainname":{"n":"domainname","p":"/domainname","d":"显示和设置系统的NIS域名"},"dos2unix":{"n":"dos2unix","p":"/dos2unix","d":"将DOS格式文本文件转换成Unix格式"},"dpkg-deb":{"n":"dpkg-deb","p":"/dpkg-deb","d":"Debian Linux下的软件包管理工具"},"dpkg-divert":{"n":"dpkg-divert","p":"/dpkg-divert","d":"Debian Linux中创建并管理一个转向列表"},"dpkg-preconfigure":{"n":"dpkg-preconfigure","p":"/dpkg-preconfigure","d":"Debian Linux中软件包安装之前询问问题"},"dpkg-query":{"n":"dpkg-query","p":"/dpkg-query","d":"Debian Linux中软件包的查询工具"},"dpkg-reconfigure":{"n":"dpkg-reconfigure","p":"/dpkg-reconfigure","d":"Debian Linux中重新配制一个已经安装的软件包"},"dpkg-split":{"n":"dpkg-split","p":"/dpkg-split","d":"Debian Linux中将大软件包分割成小包"},"dpkg-statoverride":{"n":"dpkg-statoverride","p":"/dpkg-statoverride","d":"Debian Linux中覆盖文件的所有权和模式"},"dpkg-trigger":{"n":"dpkg-trigger","p":"/dpkg-trigger","d":"Debian Linux下的软件包触发器"},"dpkg":{"n":"dpkg","p":"/dpkg","d":"Debian Linux系统上安装、创建和管理软件包"},"dris":{"n":"dris","p":"/dris","d":"显示和清空目录堆栈中的内容"},"dstat":{"n":"dstat","p":"/dstat","d":"通用的系统资源统计工具"},"du":{"n":"du","p":"/du","d":"显示每个文件和目录的磁盘使用空间"},"dump":{"n":"dump","p":"/dump","d":"用于备份ext2或者ext3文件系统"},"e2fsck":{"n":"e2fsck","p":"/e2fsck","d":"用于检查第二扩展文件系统的完整性"},"e2label":{"n":"e2label","p":"/e2label","d":"设置第二扩展文件系统的卷标"},"echo":{"n":"echo","p":"/echo","d":"输出指定的字符串或者变量"},"ed":{"n":"ed","p":"/ed","d":"单行纯文本编辑器"},"edquota":{"n":"edquota","p":"/edquota","d":"用于编辑指定用户或工作组磁盘配额"},"egrep":{"n":"egrep","p":"/egrep","d":"在文件内查找指定的字符串"},"eject":{"n":"eject","p":"/eject","d":"用来退出抽取式设备"},"elinks":{"n":"elinks","p":"/elinks","d":"纯文本界面的WWW浏览器"},"elm":{"n":"elm","p":"/elm","d":"纯文本邮件客户端程序"},"emacs":{"n":"emacs","p":"/emacs","d":"功能强大的全屏文本编辑器"},"enable":{"n":"enable","p":"/enable","d":"启动或禁用shell内建命令"},"env":{"n":"env","p":"/env","d":"显示系统中已存在的环境变量"},"ethtool":{"n":"ethtool","p":"/ethtool","d":"显示或修改以太网卡的配置信息"},"ex":{"n":"ex","p":"/ex","d":"启动vim编辑器的ex编辑模式"},"exec":{"n":"exec","p":"/exec","d":"调用并执行指定的命令"},"exit":{"n":"exit","p":"/exit","d":"退出当前的shell。"},"expand":{"n":"expand","p":"/expand","d":"将文件的制表符转换为空白字符"},"export":{"n":"export","p":"/export","d":"为shell变量或函数设置导出属性。"},"exportfs":{"n":"exportfs","p":"/exportfs","d":"管理NFS共享文件系统列表"},"expr":{"n":"expr","p":"/expr","d":"一款表达式计算工具"},"false":{"n":"false","p":"/false","d":"返回状态为失败。"},"fc":{"n":"fc","p":"/fc","d":"显示历史列表中的命令或修改指定的历史命令并执行。"},"fdisk":{"n":"fdisk","p":"/fdisk","d":"查看磁盘使用情况和磁盘分区"},"fg":{"n":"fg","p":"/fg","d":"将后台作业移动到前台终端运行"},"fgrep":{"n":"fgrep","p":"/fgrep","d":"为文件搜索文字字符串"},"figlet":{"n":"figlet","p":"/figlet","d":"字符串转为 “字画符”。"},"file":{"n":"file","p":"/file","d":"用来探测给定文件的类型"},"find":{"n":"find","p":"/find","d":"在指定目录下查找文件"},"findfs":{"n":"findfs","p":"/findfs","d":"标签或UUID查找文件系统"},"finger":{"n":"finger","p":"/finger","d":"用于查找并显示用户信息"},"firewall-cmd":{"n":"firewall-cmd","p":"/firewall-cmd","d":"Linux上新用的防火墙软件,跟iptables差不多的工具"},"fishshell":{"n":"fishshell","p":"/fishshell","d":"比 bash 更好用的 shell"},"fmt":{"n":"fmt","p":"/fmt","d":"读取文件后优化处理并输出"},"fold":{"n":"fold","p":"/fold","d":"控制文件内容输出时所占用的屏幕宽度"},"fping":{"n":"fping","p":"/fping","d":"fping检测主机是否存在"},"free":{"n":"free","p":"/free","d":"显示内存的使用情况"},"fsck":{"n":"fsck","p":"/fsck","d":"fsck(英文全拼:file system check)命令检查并且试图修复文件系统中的错误"},"ftp":{"n":"ftp","p":"/ftp","d":"用来设置文件系统相关功能"},"ftpcount":{"n":"ftpcount","p":"/ftpcount","d":"显示目前已FTP登入的用户人数"},"ftpshut":{"n":"ftpshut","p":"/ftpshut","d":"在指定的时间关闭FTP服务器"},"ftptop":{"n":"ftptop","p":"/ftptop","d":"proftpd服务器的连接状态"},"ftpwho":{"n":"ftpwho","p":"/ftpwho","d":"显示当前每个ftp会话信息"},"fuser":{"n":"fuser","p":"/fuser","d":"使用文件或文件结构识别进程"},"gcc":{"n":"gcc","p":"/gcc","d":"基于C/C++的编译器"},"gcov":{"n":"gcov","p":"/gcov","d":"测试程序的代码覆盖率的工具"},"gdb":{"n":"gdb","p":"/gdb","d":"功能强大的程序调试器"},"get_module":{"n":"get_module","p":"/get_module","d":"获取Linux内核模块的详细信息"},"getenforce":{"n":"getenforce","p":"/getenforce","d":"显示当前SELinux的应用模式,是强制、执行还是停用"},"getent":{"n":"getent","p":"/getent","d":"查询 DNS 名称服务器中的命名空间"},"getsebool":{"n":"getsebool","p":"/getsebool","d":"查询SElinux策略内各项规则的布尔值"},"git":{"n":"git","p":"/git","d":"是目前世界上最先进的分布式版本控制系统"},"gpasswd":{"n":"gpasswd","p":"/gpasswd","d":"Linux下工作组文件的管理工具"},"gpg":{"n":"gpg","p":"/gpg","d":"可用于签名、检查、加密或解密的工具"},"gpm":{"n":"gpm","p":"/gpm","d":"提供文字模式下的滑鼠事件处理"},"grep":{"n":"grep","p":"/grep","d":"强大的文本搜索工具"},"groupadd":{"n":"groupadd","p":"/groupadd","d":"用于创建一个新的工作组"},"groupdel":{"n":"groupdel","p":"/groupdel","d":"用于删除指定的工作组"},"groupmems":{"n":"groupmems","p":"/groupmems","d":"管理用户主要组的成员"},"groupmod":{"n":"groupmod","p":"/groupmod","d":"更改群组识别码或名称"},"groups":{"n":"groups","p":"/groups","d":"打印指定用户所在组的名称。"},"grpck":{"n":"grpck","p":"/grpck","d":"用于验证组文件的完整性"},"grpconv":{"n":"grpconv","p":"/grpconv","d":"用来开启群组的投影密码"},"grpunconv":{"n":"grpunconv","p":"/grpunconv","d":"用来关闭群组的投影密码"},"grub":{"n":"grub","p":"/grub","d":"多重引导程序grub的命令行shell工具"},"grub2-mkconfig":{"n":"grub2-mkconfig","p":"/grub2-mkconfig","d":"生成 grub.cfg 配置文件。"},"grub2-set-default":{"n":"grub2-set-default","p":"/grub2-set-default","d":"设置系统默认的启动内核"},"gunzip":{"n":"gunzip","p":"/gunzip","d":"用来解压缩文件"},"gzexe":{"n":"gzexe","p":"/gzexe","d":"用来压缩可执行文件"},"gzip":{"n":"gzip","p":"/gzip","d":"用来压缩文件"},"halt":{"n":"halt","p":"/halt","d":"关闭正在运行的Linux操作系统"},"hcitool":{"n":"hcitool","p":"/hcitool","d":"hcitool是一个Linux命令行工具,用于管理和调试蓝牙设备。它可以用于扫描周围的蓝牙设备、连接到蓝牙设备发送命令和数据包等。"},"hdparm":{"n":"hdparm","p":"/hdparm","d":"显示与设定硬盘的参数"},"head":{"n":"head","p":"/head","d":"显示文件的开头部分。"},"help":{"n":"help","p":"/help","d":"该命令是bash内建命令,用于显示bash内建命令的帮助信息。"},"hexdump":{"n":"hexdump","p":"/hexdump","d":"显示文件十六进制格式"},"history":{"n":"history","p":"/history","d":"显示或操作历史列表。"},"host":{"n":"host","p":"/host","d":"常用的分析域名查询工具"},"hostid":{"n":"hostid","p":"/hostid","d":"显示当前主机的十六进制数字标识。"},"hostname":{"n":"hostname","p":"/hostname","d":"显示和设置系统的主机名"},"hostnamectl":{"n":"hostnamectl","p":"/hostnamectl","d":"查询或更改系统主机名"},"hping3":{"n":"hping3","p":"/hping3","d":"测试网络及主机的安全"},"htdigest":{"n":"htdigest","p":"/htdigest","d":"Apache服务器内置工具"},"htop":{"n":"htop","p":"/htop","d":"[非内部命令]一个互动的进程查看器,可以动态观察系统进程状况"},"htpasswd":{"n":"htpasswd","p":"/htpasswd","d":"apache服务器创建密码认证文件"},"hwclock":{"n":"hwclock","p":"/hwclock","d":"显示与设定硬件时钟"},"iconv":{"n":"iconv","p":"/iconv","d":"转换文件的编码方式"},"id":{"n":"id","p":"/id","d":"打印真实以及有效的用户和所在组的信息"},"ifcfg":{"n":"ifcfg","p":"/ifcfg","d":"置Linux中的网络接口参数"},"ifconfig":{"n":"ifconfig","p":"/ifconfig","d":"配置和显示Linux系统网卡的网络参数"},"ifdown":{"n":"ifdown","p":"/ifdown","d":"禁用指定的网络接口"},"ifstat":{"n":"ifstat","p":"/ifstat","d":"统计网络接口流量状态"},"iftop":{"n":"iftop","p":"/iftop","d":"一款实时流量监控工具"},"ifup":{"n":"ifup","p":"/ifup","d":"激活指定的网络接口"},"indent":{"n":"indent","p":"/indent","d":"格式化C语言的源文件"},"info":{"n":"info","p":"/info","d":"Linux下info格式的帮助指令"},"init":{"n":"init","p":"/init","d":"init进程是所有Linux进程的父进程"},"inotifywait":{"n":"inotifywait","p":"/inotifywait","d":"异步文件系统监控机制"},"insmod":{"n":"insmod","p":"/insmod","d":"将给定的模块加载到内核中"},"install":{"n":"install","p":"/install","d":"安装或升级软件或备份数据"},"iostat":{"n":"iostat","p":"/iostat","d":"iostat命令被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。iowait 指在一个采样周期内有百分之几的时间是属于以下情况:CPU处于空闲状态并且至少有一个未完成的磁盘IO请求。"},"iotop":{"n":"iotop","p":"/iotop","d":"用来监视磁盘I/O使用状况的工具"},"ip":{"n":"ip","p":"/ip","d":"网络配置工具"},"ip6tables-restore":{"n":"ip6tables-restore","p":"/ip6tables-restore","d":"还原ip6tables表"},"ip6tables-save":{"n":"ip6tables-save","p":"/ip6tables-save","d":"保存ip6tables表配置"},"ip6tables":{"n":"ip6tables","p":"/ip6tables","d":"linux中防火墙软件"},"ipcalc":{"n":"ipcalc","p":"/ipcalc","d":"简单的IP地址计算器"},"ipcrm":{"n":"ipcrm","p":"/ipcrm","d":"删除消息队列、信号集、或者共享内存标识"},"ipcs":{"n":"ipcs","p":"/ipcs","d":"分析消息队列共享内存和信号量"},"iperf":{"n":"iperf","p":"/iperf","d":"网络性能测试工具"},"iptables-restore":{"n":"iptables-restore","p":"/iptables-restore","d":"还原iptables表的配置"},"iptables-save":{"n":"iptables-save","p":"/iptables-save","d":"备份iptables的表配置"},"iptables":{"n":"iptables","p":"/iptables","d":"Linux上常用的防火墙软件"},"iptraf":{"n":"iptraf","p":"/iptraf","d":"实时地监视网卡流量"},"iptstate":{"n":"iptstate","p":"/iptstate","d":"显示iptables的工作状态"},"iscsiadm":{"n":"iscsiadm","p":"/iscsiadm","d":"管理iSCSI连接"},"ispell":{"n":"ispell","p":"/ispell","d":"检查文件中出现的拼写错误"},"jed":{"n":"jed","p":"/jed","d":"主要用于编辑代码的编辑器"},"jobs":{"n":"jobs","p":"/jobs","d":"显示作业的状态。"},"joe":{"n":"joe","p":"/joe","d":"强大的纯文本编辑器"},"join":{"n":"join","p":"/join","d":"两个文件中指定栏位内容相同的行连接起来"},"journalctl":{"n":"journalctl","p":"/journalctl","d":"检索 systemd 日志,是 CentOS 7 才有的工具。"},"jq":{"n":"jq","p":"/jq","d":"一个灵活的轻量级命令行JSON处理器"},"jwhois":{"n":"jwhois","p":"/jwhois","d":"whois 客户端服务"},"kernelversion":{"n":"kernelversion","p":"/kernelversion","d":"打印当前内核的主版本号"},"kexec":{"n":"kexec","p":"/kexec","d":"从当前正在运行的内核引导到一个新内核"},"kill":{"n":"kill","p":"/kill","d":"发送信号到进程。"},"killall":{"n":"killall","p":"/killall","d":"使用进程的名称来杀死一组进程"},"last":{"n":"last","p":"/last","d":"列出目前与过去登入系统的用户相关信息"},"lastb":{"n":"lastb","p":"/lastb","d":"列出登入系统失败的用户相关信息"},"lastlog":{"n":"lastlog","p":"/lastlog","d":"显示系统中所有用户最近一次登录信息"},"ld":{"n":"ld","p":"/ld","d":"将目标文件连接为可执行程序"},"ldconfig":{"n":"ldconfig","p":"/ldconfig","d":"动态链接库管理命令"},"ldd":{"n":"ldd","p":"/ldd","d":"打印程序或者库文件所依赖的共享库列表"},"less":{"n":"less","p":"/less","d":"分屏上下翻页浏览文件内容"},"let":{"n":"let","p":"/let","d":"简单的计算器,执行算术表达式。"},"lftp":{"n":"lftp","p":"/lftp","d":"优秀的文件客户端程序"},"lftpget":{"n":"lftpget","p":"/lftpget","d":"调用lftp指令下载指定的文件"},"lha":{"n":"lha","p":"/lha","d":"压缩或解压缩lzh格式文件"},"lilo":{"n":"lilo","p":"/lilo","d":"安装核心载入开机管理程序"},"ln":{"n":"ln","p":"/ln","d":"用来为文件创建链接"},"lnstat":{"n":"lnstat","p":"/lnstat","d":"显示Linux系统的网路状态"},"local":{"n":"local","p":"/local","d":"在函数内定义局部变量。"},"locate":{"n":"locate","p":"/locate","d":"比 find 好用的文件查找工具"},"logger":{"n":"logger","p":"/logger","d":"在系统日志中记录相应条目"},"login":{"n":"login","p":"/login","d":"登录系统或切换用户身份"},"logname":{"n":"logname","p":"/logname","d":"打印当前终端登录用户的名称。"},"logout":{"n":"logout","p":"/logout","d":"退出当前登录的Shell"},"logrotate":{"n":"logrotate","p":"/logrotate","d":"系统日志进行轮转、压缩和删除"},"logsave":{"n":"logsave","p":"/logsave","d":"将命令的输出信息保存到指定的日志文件"},"logwatch":{"n":"logwatch","p":"/logwatch","d":"可定制和可插入式的日志监视系统"},"look":{"n":"look","p":"/look","d":"显示文件中以指定字符串开头的任意行"},"losetup":{"n":"losetup","p":"/losetup","d":"设定与控制循环(loop)设备"},"lp":{"n":"lp","p":"/lp","d":"打印文件或修改排队的打印任务"},"lpadmin":{"n":"lpadmin","p":"/lpadmin","d":"配置CUPS套件中的打印机和类"},"lpc":{"n":"lpc","p":"/lpc","d":"命令行方式打印机控制程序"},"lpq":{"n":"lpq","p":"/lpq","d":"显示打印队列中的打印任务的状态信息"},"lpr":{"n":"lpr","p":"/lpr","d":"将文件发送给指定打印机进行打印"},"lprm":{"n":"lprm","p":"/lprm","d":"删除打印队列中的打印任务"},"lpstat":{"n":"lpstat","p":"/lpstat","d":"显示CUPS中打印机的状态信息"},"ls":{"n":"ls","p":"/ls","d":"显示目录内容列表"},"lsattr":{"n":"lsattr","p":"/lsattr","d":"查看文件的第二扩展文件系统属性"},"lsb_release":{"n":"lsb_release","p":"/lsb_release","d":"显示发行版本信息"},"lsblk":{"n":"lsblk","p":"/lsblk","d":"列出块设备信息"},"lscpu":{"n":"lscpu","p":"/lscpu","d":"显示有关CPU架构的信息"},"lsmod":{"n":"lsmod","p":"/lsmod","d":"显示已载入系统的模块"},"lsof":{"n":"lsof","p":"/lsof","d":"显示Linux系统当前已打开的所有文件列表 `lsof -p pid`"},"lspci":{"n":"lspci","p":"/lspci","d":"显示当前主机的所有PCI总线信息"},"lsusb":{"n":"lsusb","p":"/lsusb","d":"显示本机的USB设备列表信息"},"ltrace":{"n":"ltrace","p":"/ltrace","d":"用来跟踪进程调用库函数的情况"},"lvcreate":{"n":"lvcreate","p":"/lvcreate","d":"用于创建LVM的逻辑卷"},"lvdisplay":{"n":"lvdisplay","p":"/lvdisplay","d":"显示逻辑卷属性"},"lvextend":{"n":"lvextend","p":"/lvextend","d":"扩展逻辑卷空间"},"lvreduce":{"n":"lvreduce","p":"/lvreduce","d":"收缩逻辑卷空间"},"lvremove":{"n":"lvremove","p":"/lvremove","d":"删除指定LVM逻辑卷"},"lvresize":{"n":"lvresize","p":"/lvresize","d":"调整逻辑卷空间大小"},"lvscan":{"n":"lvscan","p":"/lvscan","d":"扫描逻辑卷"},"lynx":{"n":"lynx","p":"/lynx","d":"纯文本模式的网页浏览器"},"mail":{"n":"mail","p":"/mail","d":"命令行下发送和接收电子邮件"},"mailq":{"n":"mailq","p":"/mailq","d":"显示待发送的邮件队列"},"mailstat":{"n":"mailstat","p":"/mailstat","d":"显示到达的邮件状态"},"make":{"n":"make","p":"/make","d":"GNU的工程化编译工具"},"man":{"n":"man","p":"/man","d":"查看Linux中的指令帮助"},"mapfile":{"n":"mapfile","p":"/mapfile","d":"从标准输入读取行并赋值到数组。"},"md5sum":{"n":"md5sum","p":"/md5sum","d":"计算和校验文件报文摘要的工具程序"},"mesg":{"n":"mesg","p":"/mesg","d":"设置当前终端的写权限"},"mii-tool":{"n":"mii-tool","p":"/mii-tool","d":"配置网络设备协商方式的工具"},"mkbootdisk":{"n":"mkbootdisk","p":"/mkbootdisk","d":"可建立目前系统的启动盘"},"mkcert":{"n":"mkcert","p":"/mkcert","d":"用来生成自签证书的工具"},"mkdir":{"n":"mkdir","p":"/mkdir","d":"用来创建目录"},"mke2fs":{"n":"mke2fs","p":"/mke2fs","d":"创建磁盘分区上的“etc2/etc3”文件系统"},"mkfs":{"n":"mkfs","p":"/mkfs","d":"用于在设备上创建Linux文件系统"},"mkinitrd":{"n":"mkinitrd","p":"/mkinitrd","d":"建立要载入ramdisk的映像文件"},"mkisofs":{"n":"mkisofs","p":"/mkisofs","d":"建立ISO 9660映像文件"},"mknod":{"n":"mknod","p":"/mknod","d":"创建字符设备文件和块设备文件"},"mkswap":{"n":"mkswap","p":"/mkswap","d":"建立和设置SWAP交换分区"},"mktemp":{"n":"mktemp","p":"/mktemp","d":"创建临时文件供shell脚本使用"},"modetest":{"n":"modetest","p":"/modetest","d":"DRM/KMS驱动程序libdrm中的模式测试工具"},"modprobe":{"n":"modprobe","p":"/modprobe","d":"自动处理可载入模块"},"more":{"n":"more","p":"/more","d":"显示文件内容,每次显示一屏"},"mount":{"n":"mount","p":"/mount","d":"用于挂载Linux系统外的文件"},"mpstat":{"n":"mpstat","p":"/mpstat","d":"显示各个可用CPU的状态"},"mtools":{"n":"mtools","p":"/mtools","d":"显示mtools支持的指令"},"mtr":{"n":"mtr","p":"/mtr","d":"`mtr` 结合了 `traceroute` 和 `ping` 程序的功能,是一款简单的网络诊断工具"},"mv":{"n":"mv","p":"/mv","d":"用来对文件或目录重新命名"},"mysql":{"n":"mysql","p":"/mysql","d":"MySQL服务器客户端工具"},"mysqladmin":{"n":"mysqladmin","p":"/mysqladmin","d":"MySQL服务器管理客户端"},"mysqldump":{"n":"mysqldump","p":"/mysqldump","d":"MySQL数据库中备份工具"},"mysqlimport":{"n":"mysqlimport","p":"/mysqlimport","d":"为MySQL服务器用命令行方式导入数据"},"mysqlshow":{"n":"mysqlshow","p":"/mysqlshow","d":"显示MySQL中数据库相关信息"},"named-checkzone":{"n":"named-checkzone","p":"/named-checkzone","d":"使用named-checkzone命令可以进行区域文件有效性检查和转换,必须指定区域名称和区域文件名称"},"nano":{"n":"nano","p":"/nano","d":"字符终端文本编辑器"},"nc":{"n":"nc","p":"/nc","d":"nc是网络工具中的瑞士军刀"},"ncftp":{"n":"ncftp","p":"/ncftp","d":"是增强的的FTP工具"},"neofetch":{"n":"neofetch","p":"/neofetch","d":"显示带有发行徽标的系统信息的工具"},"nethogs":{"n":"nethogs","p":"/nethogs","d":"终端下的网络流量监控工具"},"netstat":{"n":"netstat","p":"/netstat","d":"查看Linux中网络系统状态信息"},"newusers":{"n":"newusers","p":"/newusers","d":"用于批处理的方式一次创建多个命令"},"nfsstat":{"n":"nfsstat","p":"/nfsstat","d":"列出NFS客户端和服务器的工作状态"},"ngrep":{"n":"ngrep","p":"/ngrep","d":"方便的数据包匹配和显示工具"},"nice":{"n":"nice","p":"/nice","d":"调整程序执行的优先权等级"},"nisdomainname":{"n":"nisdomainname","p":"/nisdomainname","d":"显示主机NIS的域名"},"nl":{"n":"nl","p":"/nl","d":"为每一个文件添加行号。"},"nm":{"n":"nm","p":"/nm","d":"显示二进制目标文件的符号表"},"nmap":{"n":"nmap","p":"/nmap","d":"网络探测和安全审核"},"nmcli":{"n":"nmcli","p":"/nmcli","d":"地址配置工具"},"nohup":{"n":"nohup","p":"/nohup","d":"将程序以忽略挂起信号的方式运行起来"},"nologin":{"n":"nologin","p":"/nologin","d":"拒绝用户登录系统"},"nproc":{"n":"nproc","p":"/nproc","d":"打印可用的处理器单元数量。"},"nslookup":{"n":"nslookup","p":"/nslookup","d":"查询域名DNS信息的工具"},"ntpdate":{"n":"ntpdate","p":"/ntpdate","d":"使用网络计时协议(NTP)设置日期和时间"},"ntsysv":{"n":"ntsysv","p":"/ntsysv","d":"集中管理系统的各种服务"},"objdump":{"n":"objdump","p":"/objdump","d":"显示二进制文件信息"},"od":{"n":"od","p":"/od","d":"输出文件的八进制、十六进制等格式编码的字节"},"openssl":{"n":"openssl","p":"/openssl","d":"强大的安全套接字层密码库"},"pacman":{"n":"pacman","p":"/pacman","d":"Arch Linux 系统及其衍生系统中默认使用的包管理器"},"parted":{"n":"parted","p":"/parted","d":"磁盘分区和分区大小调整工具"},"partprobe":{"n":"partprobe","p":"/partprobe","d":"不重启的情况下重读分区"},"passwd":{"n":"passwd","p":"/passwd","d":"用于让用户可以更改自己的密码"},"paste":{"n":"paste","p":"/paste","d":"将多个文件按列队列合并"},"patch":{"n":"patch","p":"/patch","d":"为开放源代码软件安装补丁程序"},"pathchk":{"n":"pathchk","p":"/pathchk","d":"检查文件中不可移植的部分"},"perl":{"n":"perl","p":"/perl","d":"perl语言解释器"},"pfctl":{"n":"pfctl","p":"/pfctl","d":"PF防火墙的配置命令"},"pgrep":{"n":"pgrep","p":"/pgrep","d":"根据用户给出的信息在当前运行进程中查找并列出符合条件的进程ID(PID)"},"php":{"n":"php","p":"/php","d":"PHP语言的命令行接口"},"pico":{"n":"pico","p":"/pico","d":"功能强大全屏幕的文本编辑器"},"pidof":{"n":"pidof","p":"/pidof","d":"查找指定名称的进程的进程号ID号"},"pidstat":{"n":"pidstat","p":"/pidstat","d":"监控进程的系统资源占用情况"},"pigz":{"n":"pigz","p":"/pigz","d":"可以用来解压缩文件,gzip的并行实现升级版"},"ping":{"n":"ping","p":"/ping","d":"测试主机之间网络的连通性(ipv4)"},"ping6":{"n":"ping6","p":"/ping6","d":"测试主机之间网络的连通性(ipv6)"},"pip":{"n":"pip","p":"/pip","d":"Python 编程语言中的包管理器,用于安装和管理第三方 Python 模块"},"pkexec":{"n":"pkexec","p":"/pkexec","d":"以其他用户身份执行命令"},"pkill":{"n":"pkill","p":"/pkill","d":"可以按照进程名杀死进程"},"pmap":{"n":"pmap","p":"/pmap","d":"报告进程的内存映射关系"},"popd":{"n":"popd","p":"/popd","d":"从目录堆栈中删除目录。"},"poweroff":{"n":"poweroff","p":"/poweroff","d":"关闭Linux系统,关闭记录会被写入到/var/log/wtmp日志文件中"},"ppp-off":{"n":"ppp-off","p":"/ppp-off","d":"关闭ppp连线"},"pr":{"n":"pr","p":"/pr","d":"将文本文件转换成适合打印的格式"},"printf":{"n":"printf","p":"/printf","d":"格式化并输出结果。"},"protoize":{"n":"protoize","p":"/protoize","d":"GNU-C代码转换为ANSI-C代码"},"prtstat":{"n":"prtstat","p":"/prtstat","d":"显示进程信息"},"ps":{"n":"ps","p":"/ps","d":"报告当前系统的进程状态"},"pssh":{"n":"pssh","p":"/pssh","d":"批量管理执行"},"pstack":{"n":"pstack","p":"/pstack","d":"显示每个进程的栈跟踪"},"pstree":{"n":"pstree","p":"/pstree","d":"以树状图的方式展现进程之间的派生关系"},"pushd":{"n":"pushd","p":"/pushd","d":"将目录添加到目录堆栈顶部。"},"pv":{"n":"pv","p":"/pv","d":"显示当前在命令行执行的命令的进度信息,管道查看器"},"pvchange":{"n":"pvchange","p":"/pvchange","d":"修改物理卷属性"},"pvck":{"n":"pvck","p":"/pvck","d":"检测物理卷的LVM元数据的一致性"},"pvcreate":{"n":"pvcreate","p":"/pvcreate","d":"将物理硬盘分区初始化为物理卷"},"pvdisplay":{"n":"pvdisplay","p":"/pvdisplay","d":"显示物理卷的属性"},"pvremove":{"n":"pvremove","p":"/pvremove","d":"删除一个存在的物理卷"},"pvs":{"n":"pvs","p":"/pvs","d":"输出物理卷信息报表"},"pvscan":{"n":"pvscan","p":"/pvscan","d":"扫描系统中所有硬盘的物理卷列表"},"pwck":{"n":"pwck","p":"/pwck","d":"用来验证系统认证文件内容和格式的完整性"},"pwconv":{"n":"pwconv","p":"/pwconv","d":"用来开启用户的投影密码"},"pwd":{"n":"pwd","p":"/pwd","d":"显示当前工作目录的绝对路径。"},"pwdx":{"n":"pwdx","p":"/pwdx","d":"用于显示指定进程的当前工作目录"},"pwunconv":{"n":"pwunconv","p":"/pwunconv","d":"用来关闭用户的投影密码"},"quota":{"n":"quota","p":"/quota","d":"显示磁盘已使用的空间与限制"},"quotacheck":{"n":"quotacheck","p":"/quotacheck","d":"检查磁盘的使用空间与限制"},"quotaoff":{"n":"quotaoff","p":"/quotaoff","d":"关闭Linux内核中指定文件系统的磁盘配额功能"},"quotaon":{"n":"quotaon","p":"/quotaon","d":"激活Linux内核中指定文件系统的磁盘配额功能"},"rcconf":{"n":"rcconf","p":"/rcconf","d":"Debian Linux下的运行等级服务配置工具"},"rcp":{"n":"rcp","p":"/rcp","d":"使在两台Linux主机之间的文件复制操作更简单"},"read":{"n":"read","p":"/read","d":"从键盘读取变量值"},"readelf":{"n":"readelf","p":"/readelf","d":"用于显示elf格式文件的信息"},"readonly":{"n":"readonly","p":"/readonly","d":"标记shell变量或函数为只读"},"reboot":{"n":"reboot","p":"/reboot","d":"重新启动正在运行的Linux操作系统"},"reject":{"n":"reject","p":"/reject","d":"指示打印系统拒绝发往指定目标打印机的打印任务"},"rename":{"n":"rename","p":"/rename","d":"用字符串替换的方式批量改变文件名"},"renice":{"n":"renice","p":"/renice","d":"修改正在运行的进程的调度优先级"},"reposync":{"n":"reposync","p":"/reposync","d":"同步yum存储库到本地目录"},"repquota":{"n":"repquota","p":"/repquota","d":"报表的格式输出磁盘空间限制的状态"},"resize":{"n":"resize","p":"/resize","d":"命令设置终端机视窗的大小"},"restore":{"n":"restore","p":"/restore","d":"所进行的操作和dump指令相反"},"restorecon":{"n":"restorecon","p":"/restorecon","d":"恢复文件的安全上下文"},"return":{"n":"return","p":"/return","d":"从函数中退出并返回数值。"},"rev":{"n":"rev","p":"/rev","d":"将文件内容以字符为单位反序输出"},"rexec":{"n":"rexec","p":"/rexec","d":"远程执行Linux系统下命令"},"rlogin":{"n":"rlogin","p":"/rlogin","d":"从当前终端登录到远程Linux主机"},"rm":{"n":"rm","p":"/rm","d":"用于删除给定的文件和目录"},"rmdir":{"n":"rmdir","p":"/rmdir","d":"用来删除空目录"},"rmmod":{"n":"rmmod","p":"/rmmod","d":"从运行的内核中移除指定的内核模块"},"route":{"n":"route","p":"/route","d":"显示并设置Linux中静态路由表"},"rpm":{"n":"rpm","p":"/rpm","d":"RPM软件包的管理工具"},"rpm2cpio":{"n":"rpm2cpio","p":"/rpm2cpio","d":"将RPM软件包转换为cpio格式的文件"},"rpmbuild":{"n":"rpmbuild","p":"/rpmbuild","d":"创建RPM的二进制软件包和源码软件包"},"rpmdb":{"n":"rpmdb","p":"/rpmdb","d":"初始化和重建RPM数据库"},"rpmquery":{"n":"rpmquery","p":"/rpmquery","d":"从RPM数据库中查询软件包信息"},"rpmsign":{"n":"rpmsign","p":"/rpmsign","d":"使用RPM软件包的签名管理工具"},"rpmverify":{"n":"rpmverify","p":"/rpmverify","d":"验证已安装的RPM软件包的正确性"},"rsh":{"n":"rsh","p":"/rsh","d":"连接远程主机并执行命令"},"rsync":{"n":"rsync","p":"/rsync","d":"远程数据同步工具"},"runlevel":{"n":"runlevel","p":"/runlevel","d":"打印当前Linux系统的运行等级"},"sar":{"n":"sar","p":"/sar","d":"系统运行状态统计工具"},"scp":{"n":"scp","p":"/scp","d":"加密的方式在本地主机和远程主机之间复制文件"},"screen":{"n":"screen","p":"/screen","d":"用于命令行终端切换"},"script":{"n":"script","p":"/script","d":"记录终端会话的所有操作"},"scriptreplay":{"n":"scriptreplay","p":"/scriptreplay","d":"重新播放终端会话的所有操作"},"sed":{"n":"sed","p":"/sed","d":"功能强大的流式文本编辑器"},"seinfo":{"n":"seinfo","p":"/seinfo","d":"查询SELinux的策略提供多少相关规则"},"semanage":{"n":"semanage","p":"/semanage","d":"默认目录的安全上下文查询与修改"},"sendmail":{"n":"sendmail","p":"/sendmail","d":"著名电子邮件服务器"},"seq":{"n":"seq","p":"/seq","d":"以指定增量从首数开始打印数字到尾数"},"service":{"n":"service","p":"/service","d":"控制系统服务的实用工具"},"sesearch":{"n":"sesearch","p":"/sesearch","d":"查询SELinux策略的规则详情"},"set":{"n":"set","p":"/set","d":"显示或设置shell特性及shell变量"},"setfacl":{"n":"setfacl","p":"/setfacl","d":"设置文件访问控制列表"},"setpci":{"n":"setpci","p":"/setpci","d":"查询和配置PCI设备的使用工具"},"setsebool":{"n":"setsebool","p":"/setsebool","d":"修改SElinux策略内各项规则的布尔值"},"setsid":{"n":"setsid","p":"/setsid","d":"在新的会话中运行程序"},"sftp-server":{"n":"sftp-server","p":"/sftp-server","d":"sftp协议的服务器端程序"},"sftp":{"n":"sftp","p":"/sftp","d":"交互式的文件传输程序"},"sh":{"n":"sh","p":"/sh","d":"shell命令解释器"},"sha256sum":{"n":"sha256sum","p":"/sha256sum","d":"用于计算文件的 SHA-256 哈希值"},"shift":{"n":"shift","p":"/shift","d":"移动位置参数。"},"shopt":{"n":"shopt","p":"/shopt","d":"显示和设置shell操作选项"},"showmount":{"n":"showmount","p":"/showmount","d":"显示NFS服务器加载的信息"},"shuf":{"n":"shuf","p":"/shuf","d":"产生随机的排列。"},"shutdown":{"n":"shutdown","p":"/shutdown","d":"用来执行系统关机的命令"},"skill":{"n":"skill","p":"/skill","d":"向选定的进程发送信号冻结进程"},"slabtop":{"n":"slabtop","p":"/slabtop","d":"实时显示内核slab内存缓存信息"},"sleep":{"n":"sleep","p":"/sleep","d":"将目前动作延迟一段时间"},"slocate":{"n":"slocate","p":"/slocate","d":"命令查找文件或目录"},"smartmontools":{"n":"smartmontools","p":"/smartmontools","d":"Smartmontools 是一种硬盘检测工具,通过控制和管理硬盘的SMART(Self Monitoring Analysis and Reporting Technology,自动检测分析及报告技术)技术来实现的"},"smbclient":{"n":"smbclient","p":"/smbclient","d":"交互方式访问samba服务器"},"smbpasswd":{"n":"smbpasswd","p":"/smbpasswd","d":"samba用户和密码管理工具"},"sort":{"n":"sort","p":"/sort","d":"对文本文件中所有行进行排序。"},"source":{"n":"source","p":"/source","d":"在当前Shell环境中从指定文件读取和执行命令。"},"speedtest-cli":{"n":"speedtest-cli","p":"/speedtest-cli","d":"命令行下测试服务器外网速度"},"spell":{"n":"spell","p":"/spell","d":"对文件进行拼写检查"},"split":{"n":"split","p":"/split","d":"分割任意大小的文件"},"squid":{"n":"squid","p":"/squid","d":"squid服务器守护进程"},"squidclient":{"n":"squidclient","p":"/squidclient","d":"squid服务器的客户端管理工具"},"ss":{"n":"ss","p":"/ss","d":"比 netstat 好用的socket统计信息,iproute2 包附带的另一个工具,允许你查询 socket 的有关统计信息"},"ssh-add":{"n":"ssh-add","p":"/ssh-add","d":"把专用密钥添加到ssh-agent的高速缓存中"},"ssh-agent":{"n":"ssh-agent","p":"/ssh-agent","d":"ssh密钥管理器"},"ssh-copy-id":{"n":"ssh-copy-id","p":"/ssh-copy-id","d":"把本地的ssh公钥文件安装到远程主机对应的账户下"},"ssh-keygen":{"n":"ssh-keygen","p":"/ssh-keygen","d":"为ssh生成、管理和转换认证密钥"},"ssh-keyscan":{"n":"ssh-keyscan","p":"/ssh-keyscan","d":"收集主机公钥的使用工具"},"ssh":{"n":"ssh","p":"/ssh","d":"openssh套件中的客户端连接工具"},"sshd":{"n":"sshd","p":"/sshd","d":"openssh软件套件中的服务器守护进程"},"sshpass":{"n":"sshpass","p":"/sshpass","d":"免交互 SSH 登录工具。"},"startx":{"n":"startx","p":"/startx","d":"用来启动X Window"},"stat":{"n":"stat","p":"/stat","d":"用于显示文件的状态信息"},"strace":{"n":"strace","p":"/strace","d":"跟踪系统调用和信号"},"strings":{"n":"strings","p":"/strings","d":"在对象文件或二进制文件中查找可打印的字符串"},"stty":{"n":"stty","p":"/stty","d":"修改终端命令行的相关设置"},"su":{"n":"su","p":"/su","d":"用于切换当前用户身份到其他用户身份"},"sudo":{"n":"sudo","p":"/sudo","d":"以其他身份来执行命令"},"sum":{"n":"sum","p":"/sum","d":"计算文件的校验码和显示块数"},"supervisord":{"n":"supervisord","p":"/supervisord","d":"配置后台服务/常驻进程的进程管家工具"},"suspend":{"n":"suspend","p":"/suspend","d":"挂起shell的执行。"},"swapoff":{"n":"swapoff","p":"/swapoff","d":"关闭指定的交换空间"},"swapon":{"n":"swapon","p":"/swapon","d":"激活Linux系统中交换空间"},"sync":{"n":"sync","p":"/sync","d":"用于强制被改变的内容立刻写入磁盘"},"sysctl":{"n":"sysctl","p":"/sysctl","d":"时动态地修改内核的运行参数"},"syslog":{"n":"syslog","p":"/syslog","d":"系统默认的日志守护进程"},"systemctl":{"n":"systemctl","p":"/systemctl","d":"系统服务管理器指令"},"systool":{"n":"systool","p":"/systool","d":"显示基于总线、类和拓扑显示系统中设备的信息"},"tac":{"n":"tac","p":"/tac","d":"连接多个文件并以行为单位反向打印到标准输出。"},"tail":{"n":"tail","p":"/tail","d":"在屏幕上显示指定文件的末尾若干行"},"tailf":{"n":"tailf","p":"/tailf","d":"在屏幕上显示指定文件的末尾若干行内容,通常用于日志文件的跟踪输出"},"talk":{"n":"talk","p":"/talk","d":"让用户和其他用户聊天"},"tar":{"n":"tar","p":"/tar","d":"将许多文件一起保存至一个单独的磁带或磁盘归档,并能从归档中单独还原所需文件。"},"tcpdump":{"n":"tcpdump","p":"/tcpdump","d":"一款sniffer工具,是Linux上的抓包工具,嗅探器"},"tcpreplay":{"n":"tcpreplay","p":"/tcpreplay","d":"将保存在 PCAP 文件包重新发送,用于性能或者功能测试"},"tee":{"n":"tee","p":"/tee","d":"从标准输入读取数据并重定向到标准输出和文件。"},"telinit":{"n":"telinit","p":"/telinit","d":"切换当前正在运行系统的运行等级"},"telnet":{"n":"telnet","p":"/telnet","d":"登录远程主机和管理(测试ip端口是否连通)"},"tempfile":{"n":"tempfile","p":"/tempfile","d":"shell中给临时文件命名"},"test":{"n":"test","p":"/test","d":"执行条件表达式。"},"tftp":{"n":"tftp","p":"/tftp","d":"在本机和tftp服务器之间使用TFTP协议传输文件"},"time":{"n":"time","p":"/time","d":"统计给定命令所花费的总时间"},"timedatectl":{"n":"timedatectl","p":"/timedatectl","d":"用于在 Linux 中设置或查询系统时间、日期和时区等配置。"},"times":{"n":"times","p":"/times","d":"显示进程累计时间。"},"tload":{"n":"tload","p":"/tload","d":"显示系统负载状况"},"tmux":{"n":"tmux","p":"/tmux","d":"Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权"},"top":{"n":"top","p":"/top","d":"显示或管理执行中的程序"},"touch":{"n":"touch","p":"/touch","d":"创建新的空文件"},"tput":{"n":"tput","p":"/tput","d":"通过terminfo数据库对终端会话进行初始化和操作"},"tr":{"n":"tr","p":"/tr","d":"将字符进行替换压缩和删除"},"tracepath":{"n":"tracepath","p":"/tracepath","d":"追踪目的主机经过的路由信息"},"traceroute":{"n":"traceroute","p":"/traceroute","d":"显示数据包到主机间的路径"},"trap":{"n":"trap","p":"/trap","d":"捕捉信号和其他事件并执行命令。"},"tree":{"n":"tree","p":"/tree","d":"树状图列出目录的内容"},"true":{"n":"true","p":"/true","d":"返回状态为成功。"},"tty":{"n":"tty","p":"/tty","d":"显示连接到当前标准输入的终端设备文件名"},"type":{"n":"type","p":"/type","d":"显示指定命令的类型。"},"ulimit":{"n":"ulimit","p":"/ulimit","d":"控制shell程序的资源"},"umask":{"n":"umask","p":"/umask","d":"显示或设置创建文件的权限掩码。"},"umount":{"n":"umount","p":"/umount","d":"用于卸载已经加载的文件系统"},"unalias":{"n":"unalias","p":"/unalias","d":"删除由alias设置的别名"},"uname":{"n":"uname","p":"/uname","d":"打印系统信息。"},"unarj":{"n":"unarj","p":"/unarj","d":"解压缩由arj命令创建的压缩包"},"uncompress":{"n":"uncompress","p":"/uncompress","d":"用来解压.Z文件"},"unexpand":{"n":"unexpand","p":"/unexpand","d":"将文件的空白字符转换为制表符"},"uniq":{"n":"uniq","p":"/uniq","d":"显示或忽略重复的行。"},"unlink":{"n":"unlink","p":"/unlink","d":"系统调用函数unlink去删除指定的文件"},"unprotoize":{"n":"unprotoize","p":"/unprotoize","d":"删除C语言源代码文件中的函数原型"},"unrar":{"n":"unrar","p":"/unrar","d":"解压rar文件命令,从 rar 压缩包中提取文件"},"unset":{"n":"unset","p":"/unset","d":"删除指定的shell变量或函数。"},"unzip":{"n":"unzip","p":"/unzip","d":"用于解压缩由zip命令压缩的压缩包"},"updatedb":{"n":"updatedb","p":"/updatedb","d":"创建或更新slocate命令所必需的数据库文件"},"uptime":{"n":"uptime","p":"/uptime","d":"查看Linux系统负载信息"},"useradd":{"n":"useradd","p":"/useradd","d":"创建的新的系统用户"},"userdel":{"n":"userdel","p":"/userdel","d":"用于删除给定的用户以及与用户相关的文件"},"usermod":{"n":"usermod","p":"/usermod","d":"用于修改用户的基本信息"},"usernetctl":{"n":"usernetctl","p":"/usernetctl","d":"被允许时操作指定的网络接口"},"users":{"n":"users","p":"/users","d":"打印当前主机所有登陆用户的名称。"},"uucico":{"n":"uucico","p":"/uucico","d":"UUCP文件传输服务程序"},"uupick":{"n":"uupick","p":"/uupick","d":"命令处理传送进来的文件"},"uuto":{"n":"uuto","p":"/uuto","d":"将文件传送到远端的UUCP主机"},"vdfuse":{"n":"vdfuse","p":"/vdfuse","d":"VirtualBox软件挂载VDI分区文件工具"},"vgchange":{"n":"vgchange","p":"/vgchange","d":"修改卷组属性"},"vgconvert":{"n":"vgconvert","p":"/vgconvert","d":"转换卷组元数据格式"},"vgcreate":{"n":"vgcreate","p":"/vgcreate","d":"用于创建LVM卷组"},"vgdisplay":{"n":"vgdisplay","p":"/vgdisplay","d":"显示LVM卷组的信息"},"vgextend":{"n":"vgextend","p":"/vgextend","d":"向卷组中添加物理卷"},"vgreduce":{"n":"vgreduce","p":"/vgreduce","d":"从卷组中删除物理卷"},"vgremove":{"n":"vgremove","p":"/vgremove","d":"用于用户删除LVM卷组"},"vgrename":{"n":"vgrename","p":"/vgrename","d":"使用vgrename命令可以重命名卷组的名称"},"vgscan":{"n":"vgscan","p":"/vgscan","d":"扫描并显示系统中的卷组"},"vi":{"n":"vi","p":"/vi","d":"功能强大的纯文本编辑器"},"vmstat":{"n":"vmstat","p":"/vmstat","d":"显示虚拟内存状态"},"volname":{"n":"volname","p":"/volname","d":"显示指定的ISO-9660格式的设备的卷名称"},"w":{"n":"w","p":"/w","d":"显示目前登入系统的用户信息"},"wait":{"n":"wait","p":"/wait","d":"等待进程执行完后返回"},"wall":{"n":"wall","p":"/wall","d":"向系统当前所有打开的终端上输出信息"},"watch":{"n":"watch","p":"/watch","d":"可以将命令的输出结果输出到标准输出设备,多用于周期性执行命令/定时执行命令"},"wc":{"n":"wc","p":"/wc","d":"统计文件的字节数、字数、行数"},"wget":{"n":"wget","p":"/wget","d":"Linux系统下载文件工具"},"whatis":{"n":"whatis","p":"/whatis","d":"查询一个命令执行什么功能"},"whereis":{"n":"whereis","p":"/whereis","d":"查找二进制程序、代码等相关文件路径"},"which":{"n":"which","p":"/which","d":"查找并显示给定命令的绝对路径"},"who":{"n":"who","p":"/who","d":"显示当前所有登陆用户的信息。"},"whoami":{"n":"whoami","p":"/whoami","d":"打印当前有效的用户ID对应的名称"},"write":{"n":"write","p":"/write","d":"向指定登录用户终端上发送信息"},"xargs":{"n":"xargs","p":"/xargs","d":"给其他命令传递参数的一个过滤器"},"xauth":{"n":"xauth","p":"/xauth","d":"显示和编辑被用于连接X服务器的认证信息"},"xclip":{"n":"xclip","p":"/xclip","d":"管理 X 粘贴板"},"xhost":{"n":"xhost","p":"/xhost","d":"制哪些X客户端能够在X服务器上显示"},"xinit":{"n":"xinit","p":"/xinit","d":"是Linux下X-Window系统的初始化程序"},"xlsatoms":{"n":"xlsatoms","p":"/xlsatoms","d":"列出X服务器内部所有定义的原子成分"},"xlsclients":{"n":"xlsclients","p":"/xlsclients","d":"列出显示器中的客户端应用程序"},"xlsfonts":{"n":"xlsfonts","p":"/xlsfonts","d":"列出X Server使用的字体"},"xrandr":{"n":"xrandr","p":"/xrandr","d":"X 窗口系统配置管理工具"},"xset":{"n":"xset","p":"/xset","d":"设置X-Window系统中的用户爱好的实用工具"},"xz":{"n":"xz","p":"/xz","d":"POSIX 平台开发具有高压缩率的工具"},"yes":{"n":"yes","p":"/yes","d":"重复打印指定字符串"},"ypdomainname":{"n":"ypdomainname","p":"/ypdomainname","d":"显示主机的NIS的域名"},"yum":{"n":"yum","p":"/yum","d":"基于RPM的软件包管理器"},"zcat":{"n":"zcat","p":"/zcat","d":"显示压缩包中文件的内容"},"zfore":{"n":"zfore","p":"/zfore","d":"强制为gzip格式的压缩文件添加.gz后缀"},"zip":{"n":"zip","p":"/zip","d":"可以用来解压缩文件"},"zipinfo":{"n":"zipinfo","p":"/zipinfo","d":"用来列出压缩文件信息"},"zipsplit":{"n":"zipsplit","p":"/zipsplit","d":"将较大的zip压缩包分割成各个较小的压缩包"},"znew":{"n":"znew","p":"/znew","d":"将.Z压缩包重新转化为gzip命令压缩的.gz压缩包"}} \ No newline at end of file From 14ce75c9c8ca717e17628647bdc02679f3c051a3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 3 Sep 2024 05:35:50 +0000 Subject: [PATCH 1025/1126] doc: update README.md. --- README.md | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index e964f2474f5..0d517ea15ec 100644 --- a/README.md +++ b/README.md @@ -266,49 +266,49 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. L 圆头圆脑 clay-wangzhi -Glett 烟草的香味 -Jayin Tang +Glett 丛林意志 -Zijing Zhang +Jayin Tang Fubin Zhang __FresHmaN -dulltackle -ernest +Zijing Zhang 谈笑风生间 +ernest +dulltackle +zyy2477 rgshare loverainye +James Wang +Lnkstls lavaicer SteveLauC -Lnkstls -James Wang -Qliangw Wang Yujia alfred +Qliangw 沙漠之子 -zyy2477 Shell xhal VVatt gggwvg -BingCoke -Ein Verne -FunKeen -Pan, Wen-Ming -RichardLCD -Shan Chenyu -Xingwen Zhang -Xrtero -YEUNGCHIE Dazhuangw Alterem YH -jcdj666 -jqz3.tech -juemuren4449 -kassadin -kid1412621 +YEUNGCHIE +Xrtero +Xingwen Zhang +Shan Chenyu +RichardLCD +Pan, Wen-Ming +FunKeen +BingCoke +Ein Verne leo +kid1412621 +kassadin +juemuren4449 +jqz3.tech +jcdj666 lewis1573 linuxwd Ricardowang From 8555c10fb16118fa10cfaf4f3a483bb2e8b4bda4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 3 Sep 2024 05:35:51 +0000 Subject: [PATCH 1026/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 46 +++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index d6c1e7bb095..2eac794cb6d 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -11,49 +11,49 @@ L 圆头圆脑 clay-wangzhi -Glett 烟草的香味 -Jayin Tang +Glett 丛林意志 -Zijing Zhang +Jayin Tang Fubin Zhang __FresHmaN -dulltackle -ernest +Zijing Zhang 谈笑风生间 +ernest +dulltackle +zyy2477 rgshare loverainye +James Wang +Lnkstls lavaicer SteveLauC -Lnkstls -James Wang -Qliangw Wang Yujia alfred +Qliangw 沙漠之子 -zyy2477 Shell xhal VVatt gggwvg -BingCoke -Ein Verne -FunKeen -Pan, Wen-Ming -RichardLCD -Shan Chenyu -Xingwen Zhang -Xrtero -YEUNGCHIE Dazhuangw Alterem YH -jcdj666 -jqz3.tech -juemuren4449 -kassadin -kid1412621 +YEUNGCHIE +Xrtero +Xingwen Zhang +Shan Chenyu +RichardLCD +Pan, Wen-Ming +FunKeen +BingCoke +Ein Verne leo +kid1412621 +kassadin +juemuren4449 +jqz3.tech +jcdj666 lewis1573 linuxwd Ricardowang From 424972567368f0518da79aac5c449afe3e645ffe Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Tue, 3 Sep 2024 13:44:41 +0800 Subject: [PATCH 1027/1126] released v1.19.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c52d9644e3a..b4051540693 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "linux-command", - "version": "1.18.0", + "version": "1.19.0", "description": "Linux Command", "homepage": "https://jaywcjlove.github.io/linux-command/", "main": "dist/data.json", From 16c4a08fdee723e07ad6e9cb751a8198580e6b13 Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Tue, 3 Sep 2024 15:21:42 +0800 Subject: [PATCH 1028/1126] fix(docset): resolve error during docset file generation. #601 --- scripts/dash.mjs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/dash.mjs b/scripts/dash.mjs index fc518caa074..fc62b40f9b5 100644 --- a/scripts/dash.mjs +++ b/scripts/dash.mjs @@ -118,7 +118,9 @@ async function build() { console.info('compressing tgz'); // https://github.com/node-modules/compressing/issues/42 建议最好休眠15s,等待其余资源复制完毕 - spawn("sleep", ['15']) + // 确保所有操作完成后再压缩 + await new Promise(resolve => setTimeout(resolve, 30000)); // 增加到 30 秒 + const outputPath = pathJoin(process.cwd(), '.deploy', 'linux-command.docset.tgz'); await tgz.compressDir(DOCSET_DIR, outputPath); } From 3c6f616c5ffd74a5a74ef25733da300d9deb6242 Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Tue, 3 Sep 2024 15:22:47 +0800 Subject: [PATCH 1029/1126] released v1.19.1 #601 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b4051540693..bceaab71802 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "linux-command", - "version": "1.19.0", + "version": "1.19.1", "description": "Linux Command", "homepage": "https://jaywcjlove.github.io/linux-command/", "main": "dist/data.json", From 0f186819584d47074b67d3981a118c76aaddbdf0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Sep 2024 15:24:22 +0800 Subject: [PATCH 1030/1126] chore(deps-dev): bump sqlite3 from 5.0.8 to 5.1.5 (#528) Bumps [sqlite3](https://github.com/TryGhost/node-sqlite3) from 5.0.8 to 5.1.5. - [Release notes](https://github.com/TryGhost/node-sqlite3/releases) - [Commits](https://github.com/TryGhost/node-sqlite3/compare/v5.0.8...v5.1.5) --- updated-dependencies: - dependency-name: sqlite3 dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bceaab71802..4045d316e8b 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "fs-extra": "~10.1.0", "markdown-to-html-cli": "~4.0.0", "sitemap-generator": "~8.5.1", - "sqlite3": "5.0.8", + "sqlite3": "5.1.5", "stylus": "~0.59.0", "uglify-js": "~3.17.0" }, From 7851b27f46d126cb59bb7bfd538e09e293e7edfc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 3 Sep 2024 15:24:48 +0800 Subject: [PATCH 1031/1126] chore(deps): update dependency uglify-js to ~3.19.0 (#583) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4045d316e8b..219e8a72373 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "sitemap-generator": "~8.5.1", "sqlite3": "5.1.5", "stylus": "~0.59.0", - "uglify-js": "~3.17.0" + "uglify-js": "~3.19.0" }, "engines": { "node": ">=16.0.0" From 27374284c18165a06c44a59ad3dbe2663b849dc5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 3 Sep 2024 15:34:13 +0800 Subject: [PATCH 1032/1126] chore(deps): update dependency stylus to ~0.63.0 (#522) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 219e8a72373..8bba58fe3ac 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "markdown-to-html-cli": "~4.0.0", "sitemap-generator": "~8.5.1", "sqlite3": "5.1.5", - "stylus": "~0.59.0", + "stylus": "~0.63.0", "uglify-js": "~3.19.0" }, "engines": { From cb46889491b405aef4704741e2a2e84634ffcda4 Mon Sep 17 00:00:00 2001 From: duzhuoshanwai <65448395+duzhuoshanwai@users.noreply.github.com> Date: Thu, 12 Sep 2024 21:36:11 +0800 Subject: [PATCH 1033/1126] doc: update docker.md (#603) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加新的安装方式 --- command/docker.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/command/docker.md b/command/docker.md index 7245dff9fde..5e293866f5e 100644 --- a/command/docker.md +++ b/command/docker.md @@ -37,6 +37,17 @@ sudo systemctl start docker ``` +```bash +# Docker官方提供的快速安装脚本 https://github.com/docker/docker-install +# 不建议在生产环境中使用 +curl -fsSL https://get.docker.com -o get-docker.sh +sudo sh ./get-docker.sh --dry-run + +# 使用systemctl设置开机启动 +sudo systemctl enable docker.service +sudo systemctl enable containerd.service +``` + ## 语法 ```shell From 6321537d9ffcf4300075c3ff58d19f7418199dd8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 12 Sep 2024 13:36:43 +0000 Subject: [PATCH 1034/1126] doc: update README.md. --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 0d517ea15ec..029e2a69740 100644 --- a/README.md +++ b/README.md @@ -266,13 +266,13 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. L 圆头圆脑 clay-wangzhi -烟草的香味 Glett -丛林意志 +烟草的香味 Jayin Tang +丛林意志 +Zijing Zhang Fubin Zhang __FresHmaN -Zijing Zhang 谈笑风生间 ernest dulltackle @@ -313,7 +313,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. linuxwd Ricardowang cole -myliwenbo +dufu miniwater noodles2hg nsnans From c50c19a78f070c420d6d2bd57333d9ce563df0b5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 12 Sep 2024 13:36:44 +0000 Subject: [PATCH 1035/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index 2eac794cb6d..58eb30f9304 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -11,13 +11,13 @@ L 圆头圆脑 clay-wangzhi -烟草的香味 Glett -丛林意志 +烟草的香味 Jayin Tang +丛林意志 +Zijing Zhang Fubin Zhang __FresHmaN -Zijing Zhang 谈笑风生间 ernest dulltackle @@ -58,7 +58,7 @@ linuxwd Ricardowang cole -myliwenbo +dufu miniwater noodles2hg nsnans From f4645362823b263cca816edd9854539afab83c26 Mon Sep 17 00:00:00 2001 From: will Date: Fri, 20 Sep 2024 13:19:35 +0800 Subject: [PATCH 1036/1126] chore: Add kubernetes deployment (#605) * add kubernetes deployment * add kubernetes deployment README * update deployment README * update deployment yaml --- deploy/yamls/README.md | 64 +++++++++++++++++++++++++++++++++ deploy/yamls/linux-command.yaml | 50 ++++++++++++++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 deploy/yamls/README.md create mode 100644 deploy/yamls/linux-command.yaml diff --git a/deploy/yamls/README.md b/deploy/yamls/README.md new file mode 100644 index 00000000000..f7fe3316f70 --- /dev/null +++ b/deploy/yamls/README.md @@ -0,0 +1,64 @@ +# 快速入门指南 + +本指南旨在帮助您在 Kubernetes 中部署基于 `wcjiang/linux-command` 镜像的 `linux-command` 应用。该应用提供了一套 `Deployment`,并通过 `Service` 对外暴露服务端口。 + +## 前提条件 + +- 已安装并配置好的 Kubernetes 集群 +- 安装并配置好的 `kubectl`,并连接至你的 Kubernetes 集群 + +## 安装步骤 + +我们将使用此存储库中的`kubectl`应用 YAML 文件,该文件将安装 `linux-command` 应用。 + +```bash +$ kubectl apply -f https://raw.githubusercontent.com/jaywcjlove/linux-command/master/deploy/yamls/linux-command.yaml +``` + +检查 `Deployment` 状态: + +```bash +$ kubectl get deployments -n linux-command +NAME READY UP-TO-DATE AVAILABLE AGE +linux-command 1/1 1 1 17m +``` + +你可以查看 `Pod` 的状态以确保其正常运行: + +```bash +$ kubectl get pods -n linux-command +NAME READY STATUS RESTARTS AGE +linux-command-fff454654-427zp 1/1 Running 0 12m +``` + +验证 `Service` 是否成功创建并获取暴露的端口: + +``` +$ kubectl get services -n linux-command +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +linux-command-service NodePort 10.96.2.225 9665:30204/TCP 18m +``` + +## 访问应用 + +通过获取 `NodePort` 的端口来访问应用。以下是获取 `NodePort` 服务信息的命令: + +``` +$ kubectl get svc linux-command-service -n linux-command +``` + +根据输出,使用 `EXTERNAL-IP:PORT` 访问服务。例如: + +``` +http://: +``` + +## 卸载应用 + +如果需要删除已部署的资源,可以按以下顺序操作: + +``` +kubectl delete -f linux-command.yaml +``` + +这将会清理所有创建的 Kubernetes 资源。 diff --git a/deploy/yamls/linux-command.yaml b/deploy/yamls/linux-command.yaml new file mode 100644 index 00000000000..bc7fd6abb44 --- /dev/null +++ b/deploy/yamls/linux-command.yaml @@ -0,0 +1,50 @@ +--- +apiVersion: v1 +kind: Namespace +metadata: + name: linux-command +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: linux-command + namespace: linux-command + labels: + app: linux-command +spec: + replicas: 1 + selector: + matchLabels: + app: linux-command + template: + metadata: + labels: + app: linux-command + spec: + containers: + - name: linux-command-container + image: wcjiang/linux-command:latest + imagePullPolicy: IfNotPresent + ports: + - containerPort: 3000 + resources: + requests: + cpu: "100m" + memory: "50Mi" + limits: + cpu: "100m" + memory: "50Mi" +--- +apiVersion: v1 +kind: Service +metadata: + name: linux-command-service + namespace: linux-command +spec: + selector: + app: linux-command + ports: + - protocol: TCP + port: 9665 + targetPort: 3000 + type: NodePort From 8e072074ca2f4ff33955b77216ee2185d87354d1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 20 Sep 2024 05:20:07 +0000 Subject: [PATCH 1037/1126] doc: update README.md. --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 029e2a69740..957067ae295 100644 --- a/README.md +++ b/README.md @@ -326,12 +326,12 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. gedune gang.yang ecjtusbs +duzhuoshanwai dongpohezui Deny dayday cxalc Forever121 -c2ch Yidan Wang Wendy May 远方 @@ -364,6 +364,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. sfwwslm rexlin600 oliver +c2ch MinsonLee Marnm mwei From 3281700170ba24f83467bd89d7fea083b714f20c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 20 Sep 2024 05:20:08 +0000 Subject: [PATCH 1038/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index 58eb30f9304..ef252c950f0 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -71,12 +71,12 @@ gedune gang.yang ecjtusbs +duzhuoshanwai dongpohezui Deny dayday cxalc Forever121 -c2ch Yidan Wang Wendy May 远方 @@ -109,6 +109,7 @@ sfwwslm rexlin600 oliver +c2ch MinsonLee Marnm mwei From d85be58c782bde0f94b3fb4c8e527d9d1dc6d9b3 Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Tue, 3 Sep 2024 18:53:00 +0800 Subject: [PATCH 1039/1126] doc: update command/iostat.md --- command/iostat.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/command/iostat.md b/command/iostat.md index 2c41ac779a5..b90088c5248 100644 --- a/command/iostat.md +++ b/command/iostat.md @@ -1,7 +1,12 @@ iostat === -iostat命令被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。 +监视系统输入输出设备和CPU的使用情况 + +## 补充说明 + +**iostat命令** 被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。 + iowait 指在一个采样周期内有百分之几的时间是属于以下情况:CPU处于空闲状态并且至少有一个未完成的磁盘IO请求。 ## 安装 iostat From 50b5782734189b8ad8990b5b56f97153e196577c Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Fri, 20 Sep 2024 13:23:05 +0800 Subject: [PATCH 1040/1126] chore: rename deploy/yamls -> k8s #605 --- {deploy/yamls => k8s}/README.md | 0 {deploy/yamls => k8s}/linux-command.yaml | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename {deploy/yamls => k8s}/README.md (100%) rename {deploy/yamls => k8s}/linux-command.yaml (100%) diff --git a/deploy/yamls/README.md b/k8s/README.md similarity index 100% rename from deploy/yamls/README.md rename to k8s/README.md diff --git a/deploy/yamls/linux-command.yaml b/k8s/linux-command.yaml similarity index 100% rename from deploy/yamls/linux-command.yaml rename to k8s/linux-command.yaml From d82ca52f067ad06579902d3a3a18e44159d6961c Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Fri, 20 Sep 2024 19:21:04 +0800 Subject: [PATCH 1041/1126] doc: update k8s/README.md --- k8s/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/k8s/README.md b/k8s/README.md index f7fe3316f70..146392149aa 100644 --- a/k8s/README.md +++ b/k8s/README.md @@ -12,7 +12,7 @@ 我们将使用此存储库中的`kubectl`应用 YAML 文件,该文件将安装 `linux-command` 应用。 ```bash -$ kubectl apply -f https://raw.githubusercontent.com/jaywcjlove/linux-command/master/deploy/yamls/linux-command.yaml +$ kubectl apply -f https://raw.githubusercontent.com/jaywcjlove/linux-command/refs/heads/master/k8s/linux-command.yaml ``` 检查 `Deployment` 状态: From 9870dba05f36cb9656073cf58085376ba8030a42 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 20 Sep 2024 11:22:02 +0000 Subject: [PATCH 1042/1126] doc: update README.md. --- README.md | 107 +++++++++++++++++++++++++++--------------------------- 1 file changed, 54 insertions(+), 53 deletions(-) diff --git a/README.md b/README.md index 957067ae295..e2995e3f3b2 100644 --- a/README.md +++ b/README.md @@ -273,42 +273,41 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Zijing Zhang Fubin Zhang __FresHmaN -谈笑风生间 -ernest dulltackle +ernest +谈笑风生间 zyy2477 rgshare loverainye -James Wang -Lnkstls lavaicer SteveLauC +Lnkstls +James Wang +Qliangw Wang Yujia alfred -Qliangw 沙漠之子 Shell xhal VVatt gggwvg +BingCoke +Ein Verne +FunKeen +Pan, Wen-Ming +RichardLCD +Shan Chenyu +Xingwen Zhang +Xrtero +YEUNGCHIE Dazhuangw Alterem YH -YEUNGCHIE -Xrtero -Xingwen Zhang -Shan Chenyu -RichardLCD -Pan, Wen-Ming -FunKeen -BingCoke -Ein Verne -leo -kid1412621 -kassadin -juemuren4449 jqz3.tech -jcdj666 +juemuren4449 +kassadin +kid1412621 +leo lewis1573 linuxwd Ricardowang @@ -317,6 +316,8 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. miniwater noodles2hg nsnans +oliver +jcdj666 hululu1068 huangyao hotdogc1017 @@ -331,40 +332,39 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Deny dayday cxalc -Forever121 -Yidan Wang -Wendy May -远方 -谢民皆 -Kyofin -老犁 -继刚 -移动的红烧肉 -极简XksA -ReZero -Loofra -Wei Xu -尘埃 -孤城落寞 -七朔 +Mystic zyimm -zuixin369 -zoomdong -zodiac -zjlovezj -yanyx -Lingfeng Wang -weibk -UniqueDing -tutianyu101 -tangke -snovey -shuangcui -shc -sfwwslm +七朔 +孤城落寞 +尘埃 +Wei Xu +Loofra +ReZero +极简XksA +移动的红烧肉 +继刚 +老犁 +Kyofin +谢民皆 +远方 +Wendy May +Yidan Wang rexlin600 -oliver -c2ch +sfwwslm +shc +shuangcui +snovey +tangke +tutianyu101 +UniqueDing +weibk +will +Lingfeng Wang +yanyx +zjlovezj +zodiac +zoomdong +zuixin369 MinsonLee Marnm mwei @@ -395,6 +395,8 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Azroy Alan 0x_000 +Forever121 +c2ch brinkqiang bell azureology @@ -423,8 +425,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Rining Wu Ray Yee QinShower -Q.Ben Zheng -Mystic +Q.Ben Zheng 贡献者列表,由 [contributors](https://github.com/jaywcjlove/github-action-contributors) 自动生成 From f6a17c0c577ea708d802e963c7c9ab3ae40e5a09 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 20 Sep 2024 11:22:03 +0000 Subject: [PATCH 1043/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 107 +++++++++++++++++++------------------- 1 file changed, 54 insertions(+), 53 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index ef252c950f0..80deae78548 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -18,42 +18,41 @@ Zijing Zhang Fubin Zhang __FresHmaN -谈笑风生间 -ernest dulltackle +ernest +谈笑风生间 zyy2477 rgshare loverainye -James Wang -Lnkstls lavaicer SteveLauC +Lnkstls +James Wang +Qliangw Wang Yujia alfred -Qliangw 沙漠之子 Shell xhal VVatt gggwvg +BingCoke +Ein Verne +FunKeen +Pan, Wen-Ming +RichardLCD +Shan Chenyu +Xingwen Zhang +Xrtero +YEUNGCHIE Dazhuangw Alterem YH -YEUNGCHIE -Xrtero -Xingwen Zhang -Shan Chenyu -RichardLCD -Pan, Wen-Ming -FunKeen -BingCoke -Ein Verne -leo -kid1412621 -kassadin -juemuren4449 jqz3.tech -jcdj666 +juemuren4449 +kassadin +kid1412621 +leo lewis1573 linuxwd Ricardowang @@ -62,6 +61,8 @@ miniwater noodles2hg nsnans +oliver +jcdj666 hululu1068 huangyao hotdogc1017 @@ -76,40 +77,39 @@ Deny dayday cxalc -Forever121 -Yidan Wang -Wendy May -远方 -谢民皆 -Kyofin -老犁 -继刚 -移动的红烧肉 -极简XksA -ReZero -Loofra -Wei Xu -尘埃 -孤城落寞 -七朔 +Mystic zyimm -zuixin369 -zoomdong -zodiac -zjlovezj -yanyx -Lingfeng Wang -weibk -UniqueDing -tutianyu101 -tangke -snovey -shuangcui -shc -sfwwslm +七朔 +孤城落寞 +尘埃 +Wei Xu +Loofra +ReZero +极简XksA +移动的红烧肉 +继刚 +老犁 +Kyofin +谢民皆 +远方 +Wendy May +Yidan Wang rexlin600 -oliver -c2ch +sfwwslm +shc +shuangcui +snovey +tangke +tutianyu101 +UniqueDing +weibk +will +Lingfeng Wang +yanyx +zjlovezj +zodiac +zoomdong +zuixin369 MinsonLee Marnm mwei @@ -140,6 +140,8 @@ Azroy Alan 0x_000 +Forever121 +c2ch brinkqiang bell azureology @@ -168,8 +170,7 @@ Rining Wu Ray Yee QinShower -Q.Ben Zheng -Mystic +Q.Ben Zheng

数据来源于 GitHub Contributors,使用action-contributors创建。 From 686f4452a14fd4fb02cf00dd0838d6b01004a195 Mon Sep 17 00:00:00 2001 From: will Date: Fri, 20 Sep 2024 19:25:45 +0800 Subject: [PATCH 1044/1126] chore: add helm charts (#606) * add helm charts * update README --- deploy/helm/charts/linux-command/.helmignore | 23 +++++++ deploy/helm/charts/linux-command/Chart.yaml | 21 +++++++ deploy/helm/charts/linux-command/README.md | 44 +++++++++++++ .../linux-command/templates/_helpers.tpl | 62 +++++++++++++++++++ .../linux-command/templates/deployment.yaml | 32 ++++++++++ .../linux-command/templates/service.yaml | 13 ++++ deploy/helm/charts/linux-command/values.yaml | 20 ++++++ 7 files changed, 215 insertions(+) create mode 100644 deploy/helm/charts/linux-command/.helmignore create mode 100644 deploy/helm/charts/linux-command/Chart.yaml create mode 100644 deploy/helm/charts/linux-command/README.md create mode 100644 deploy/helm/charts/linux-command/templates/_helpers.tpl create mode 100644 deploy/helm/charts/linux-command/templates/deployment.yaml create mode 100644 deploy/helm/charts/linux-command/templates/service.yaml create mode 100644 deploy/helm/charts/linux-command/values.yaml diff --git a/deploy/helm/charts/linux-command/.helmignore b/deploy/helm/charts/linux-command/.helmignore new file mode 100644 index 00000000000..0e8a0eb36f4 --- /dev/null +++ b/deploy/helm/charts/linux-command/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/deploy/helm/charts/linux-command/Chart.yaml b/deploy/helm/charts/linux-command/Chart.yaml new file mode 100644 index 00000000000..62db357f2ec --- /dev/null +++ b/deploy/helm/charts/linux-command/Chart.yaml @@ -0,0 +1,21 @@ +apiVersion: v2 +name: linux-command +description: A Helm chart for Kubernetes +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "0.1.0" diff --git a/deploy/helm/charts/linux-command/README.md b/deploy/helm/charts/linux-command/README.md new file mode 100644 index 00000000000..042c4695a6b --- /dev/null +++ b/deploy/helm/charts/linux-command/README.md @@ -0,0 +1,44 @@ +# linux-command + +linux-command 的 Helm 图表。该图表使用 Helm 软件包管理器在 Kubernetes 集群上引导部署 linux-command。 + +## 安装 Chart + +``` +$ helm install linux-command ./linux-command --namespace linux-command --create-namespace +``` + +## 卸载 Chart + +``` +$ helm -n linux-command uninstall linux-command +``` + +这会删除与图表相关的所有 Kubernetes 组件,并删除发布。 + +## 配置参数 + +下表列出了 linux-command 图表的可配置参数及其默认值。 + +| Key | Type | Default | Description | +| ------------------------------------------------------------ | ------ | ------------------------- | ----------- | +| linuxCommand.linuxCommandContainer.image.repository | string | `"wcjiang/linux-command"` | | +| linuxCommand.linuxCommandContainer.image.tag | string | `"latest"` | | +| linuxCommand.linuxCommandContainer.imagePullPolicy | string | `"IfNotPresent"` | | +| linuxCommand.linuxCommandContainer.resources.limits.cpu | string | `"100m"` | | +| linuxCommand.linuxCommandContainer.resources.limits.memory | string | `"50Mi"` | | +| linuxCommand.linuxCommandContainer.resources.requests.cpu | string | `"100m"` | | +| linuxCommand.linuxCommandContainer.resources.requests.memory | string | `"50Mi"` | | +| linuxCommand.replicas | int | `1` | | +| service.ports[0].port | int | `9665` | | +| service.ports[0].protocol | string | `"TCP"` | | +| service.ports[0].targetPort | int | `3000` | | +| service.type | string | `"NodePort"` | | + +使用`-set key=value[,key=value]`参数为`helm install`指定每个参数。 + +或者,也可以在安装图表时提供指定参数值的 YAML 文件。例如 + +``` +helm install -f values.yaml ./linux-command +``` diff --git a/deploy/helm/charts/linux-command/templates/_helpers.tpl b/deploy/helm/charts/linux-command/templates/_helpers.tpl new file mode 100644 index 00000000000..68cb3b48b25 --- /dev/null +++ b/deploy/helm/charts/linux-command/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "linux-command.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "linux-command.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "linux-command.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "linux-command.labels" -}} +helm.sh/chart: {{ include "linux-command.chart" . }} +{{ include "linux-command.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "linux-command.selectorLabels" -}} +app.kubernetes.io/name: {{ include "linux-command.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "linux-command.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "linux-command.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/deploy/helm/charts/linux-command/templates/deployment.yaml b/deploy/helm/charts/linux-command/templates/deployment.yaml new file mode 100644 index 00000000000..fbfc1318671 --- /dev/null +++ b/deploy/helm/charts/linux-command/templates/deployment.yaml @@ -0,0 +1,32 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "linux-command.fullname" . }}-linux-command + labels: + app: linux-command + {{- include "linux-command.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.linuxCommand.replicas }} + selector: + matchLabels: + app: linux-command + {{- include "linux-command.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + app: linux-command + {{- include "linux-command.selectorLabels" . | nindent 8 }} + spec: + containers: + - env: + - name: KUBERNETES_CLUSTER_DOMAIN + value: {{ quote .Values.kubernetesClusterDomain }} + image: {{ .Values.linuxCommand.linuxCommandContainer.image.repository }}:{{ .Values.linuxCommand.linuxCommandContainer.image.tag + | default .Chart.AppVersion }} + imagePullPolicy: {{ .Values.linuxCommand.linuxCommandContainer.imagePullPolicy + }} + name: linux-command-container + ports: + - containerPort: 3000 + resources: {{- toYaml .Values.linuxCommand.linuxCommandContainer.resources | nindent + 10 }} \ No newline at end of file diff --git a/deploy/helm/charts/linux-command/templates/service.yaml b/deploy/helm/charts/linux-command/templates/service.yaml new file mode 100644 index 00000000000..4f5faa02ee7 --- /dev/null +++ b/deploy/helm/charts/linux-command/templates/service.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "linux-command.fullname" . }}-service + labels: + {{- include "linux-command.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + selector: + app: linux-command + {{- include "linux-command.selectorLabels" . | nindent 4 }} + ports: + {{- .Values.service.ports | toYaml | nindent 2 }} diff --git a/deploy/helm/charts/linux-command/values.yaml b/deploy/helm/charts/linux-command/values.yaml new file mode 100644 index 00000000000..5b449e33bcb --- /dev/null +++ b/deploy/helm/charts/linux-command/values.yaml @@ -0,0 +1,20 @@ +linuxCommand: + linuxCommandContainer: + image: + repository: wcjiang/linux-command + tag: latest + imagePullPolicy: IfNotPresent + resources: + limits: + cpu: 100m + memory: 50Mi + requests: + cpu: 100m + memory: 50Mi + replicas: 1 +service: + ports: + - port: 9665 + protocol: TCP + targetPort: 3000 + type: NodePort From fc97de6b4433b48915e86ba478ef22718b5e18bd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 20 Sep 2024 11:26:34 +0000 Subject: [PATCH 1045/1126] doc: update README.md. --- README.md | 72 +++++++++++++++++++++++++++---------------------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index e2995e3f3b2..0c9bfce4a34 100644 --- a/README.md +++ b/README.md @@ -289,6 +289,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. 沙漠之子 Shell xhal +will VVatt gggwvg BingCoke @@ -303,6 +304,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Dazhuangw Alterem YH +jcdj666 jqz3.tech juemuren4449 kassadin @@ -316,8 +318,6 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. miniwater noodles2hg nsnans -oliver -jcdj666 hululu1068 huangyao hotdogc1017 @@ -332,39 +332,40 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Deny dayday cxalc -Mystic -zyimm -七朔 -孤城落寞 -尘埃 -Wei Xu -Loofra -ReZero -极简XksA -移动的红烧肉 -继刚 -老犁 -Kyofin -谢民皆 -远方 -Wendy May +Forever121 Yidan Wang -rexlin600 -sfwwslm -shc -shuangcui -snovey -tangke -tutianyu101 -UniqueDing -weibk -will -Lingfeng Wang -yanyx -zjlovezj -zodiac -zoomdong +Wendy May +远方 +谢民皆 +Kyofin +老犁 +继刚 +移动的红烧肉 +极简XksA +ReZero +Loofra +Wei Xu +尘埃 +孤城落寞 +七朔 +zyimm zuixin369 +zoomdong +zodiac +zjlovezj +yanyx +Lingfeng Wang +weibk +UniqueDing +tutianyu101 +tangke +snovey +shuangcui +shc +sfwwslm +rexlin600 +oliver +c2ch MinsonLee Marnm mwei @@ -395,8 +396,6 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Azroy Alan 0x_000 -Forever121 -c2ch brinkqiang bell azureology @@ -425,7 +424,8 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Rining Wu Ray Yee QinShower -Q.Ben Zheng +Q.Ben Zheng +Mystic 贡献者列表,由 [contributors](https://github.com/jaywcjlove/github-action-contributors) 自动生成 From a727bb37dbfe5d14c27a6d5857a9ab64fc3e435b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 20 Sep 2024 11:26:35 +0000 Subject: [PATCH 1046/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 72 +++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index 80deae78548..3c6664e164b 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -34,6 +34,7 @@ 沙漠之子 Shell xhal +will VVatt gggwvg BingCoke @@ -48,6 +49,7 @@ Dazhuangw Alterem YH +jcdj666 jqz3.tech juemuren4449 kassadin @@ -61,8 +63,6 @@ miniwater noodles2hg nsnans -oliver -jcdj666 hululu1068 huangyao hotdogc1017 @@ -77,39 +77,40 @@ Deny dayday cxalc -Mystic -zyimm -七朔 -孤城落寞 -尘埃 -Wei Xu -Loofra -ReZero -极简XksA -移动的红烧肉 -继刚 -老犁 -Kyofin -谢民皆 -远方 -Wendy May +Forever121 Yidan Wang -rexlin600 -sfwwslm -shc -shuangcui -snovey -tangke -tutianyu101 -UniqueDing -weibk -will -Lingfeng Wang -yanyx -zjlovezj -zodiac -zoomdong +Wendy May +远方 +谢民皆 +Kyofin +老犁 +继刚 +移动的红烧肉 +极简XksA +ReZero +Loofra +Wei Xu +尘埃 +孤城落寞 +七朔 +zyimm zuixin369 +zoomdong +zodiac +zjlovezj +yanyx +Lingfeng Wang +weibk +UniqueDing +tutianyu101 +tangke +snovey +shuangcui +shc +sfwwslm +rexlin600 +oliver +c2ch MinsonLee Marnm mwei @@ -140,8 +141,6 @@ Azroy Alan 0x_000 -Forever121 -c2ch brinkqiang bell azureology @@ -170,7 +169,8 @@ Rining Wu Ray Yee QinShower -Q.Ben Zheng +Q.Ben Zheng +Mystic

数据来源于 GitHub Contributors,使用action-contributors创建。 From 4997c40f80e78409d4fba3d339e6ccfc8b9158e1 Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Fri, 20 Sep 2024 19:27:15 +0800 Subject: [PATCH 1047/1126] chore: renamed deploy/helm/ -> k8s/helm/ #606 --- {deploy => k8s}/helm/charts/linux-command/.helmignore | 0 {deploy => k8s}/helm/charts/linux-command/Chart.yaml | 0 {deploy => k8s}/helm/charts/linux-command/README.md | 0 {deploy => k8s}/helm/charts/linux-command/templates/_helpers.tpl | 0 .../helm/charts/linux-command/templates/deployment.yaml | 0 {deploy => k8s}/helm/charts/linux-command/templates/service.yaml | 0 {deploy => k8s}/helm/charts/linux-command/values.yaml | 0 7 files changed, 0 insertions(+), 0 deletions(-) rename {deploy => k8s}/helm/charts/linux-command/.helmignore (100%) rename {deploy => k8s}/helm/charts/linux-command/Chart.yaml (100%) rename {deploy => k8s}/helm/charts/linux-command/README.md (100%) rename {deploy => k8s}/helm/charts/linux-command/templates/_helpers.tpl (100%) rename {deploy => k8s}/helm/charts/linux-command/templates/deployment.yaml (100%) rename {deploy => k8s}/helm/charts/linux-command/templates/service.yaml (100%) rename {deploy => k8s}/helm/charts/linux-command/values.yaml (100%) diff --git a/deploy/helm/charts/linux-command/.helmignore b/k8s/helm/charts/linux-command/.helmignore similarity index 100% rename from deploy/helm/charts/linux-command/.helmignore rename to k8s/helm/charts/linux-command/.helmignore diff --git a/deploy/helm/charts/linux-command/Chart.yaml b/k8s/helm/charts/linux-command/Chart.yaml similarity index 100% rename from deploy/helm/charts/linux-command/Chart.yaml rename to k8s/helm/charts/linux-command/Chart.yaml diff --git a/deploy/helm/charts/linux-command/README.md b/k8s/helm/charts/linux-command/README.md similarity index 100% rename from deploy/helm/charts/linux-command/README.md rename to k8s/helm/charts/linux-command/README.md diff --git a/deploy/helm/charts/linux-command/templates/_helpers.tpl b/k8s/helm/charts/linux-command/templates/_helpers.tpl similarity index 100% rename from deploy/helm/charts/linux-command/templates/_helpers.tpl rename to k8s/helm/charts/linux-command/templates/_helpers.tpl diff --git a/deploy/helm/charts/linux-command/templates/deployment.yaml b/k8s/helm/charts/linux-command/templates/deployment.yaml similarity index 100% rename from deploy/helm/charts/linux-command/templates/deployment.yaml rename to k8s/helm/charts/linux-command/templates/deployment.yaml diff --git a/deploy/helm/charts/linux-command/templates/service.yaml b/k8s/helm/charts/linux-command/templates/service.yaml similarity index 100% rename from deploy/helm/charts/linux-command/templates/service.yaml rename to k8s/helm/charts/linux-command/templates/service.yaml diff --git a/deploy/helm/charts/linux-command/values.yaml b/k8s/helm/charts/linux-command/values.yaml similarity index 100% rename from deploy/helm/charts/linux-command/values.yaml rename to k8s/helm/charts/linux-command/values.yaml From ffc270e9860edf93cd58c1072144e29ac8ed98fa Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 20 Sep 2024 11:28:40 +0000 Subject: [PATCH 1048/1126] doc: update README.md. --- README.md | 72 +++++++++++++++++++++++++++---------------------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index 0c9bfce4a34..e2995e3f3b2 100644 --- a/README.md +++ b/README.md @@ -289,7 +289,6 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. 沙漠之子 Shell xhal -will VVatt gggwvg BingCoke @@ -304,7 +303,6 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Dazhuangw Alterem YH -jcdj666 jqz3.tech juemuren4449 kassadin @@ -318,6 +316,8 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. miniwater noodles2hg nsnans +oliver +jcdj666 hululu1068 huangyao hotdogc1017 @@ -332,40 +332,39 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Deny dayday cxalc -Forever121 -Yidan Wang -Wendy May -远方 -谢民皆 -Kyofin -老犁 -继刚 -移动的红烧肉 -极简XksA -ReZero -Loofra -Wei Xu -尘埃 -孤城落寞 -七朔 +Mystic zyimm -zuixin369 -zoomdong -zodiac -zjlovezj -yanyx -Lingfeng Wang -weibk -UniqueDing -tutianyu101 -tangke -snovey -shuangcui -shc -sfwwslm +七朔 +孤城落寞 +尘埃 +Wei Xu +Loofra +ReZero +极简XksA +移动的红烧肉 +继刚 +老犁 +Kyofin +谢民皆 +远方 +Wendy May +Yidan Wang rexlin600 -oliver -c2ch +sfwwslm +shc +shuangcui +snovey +tangke +tutianyu101 +UniqueDing +weibk +will +Lingfeng Wang +yanyx +zjlovezj +zodiac +zoomdong +zuixin369 MinsonLee Marnm mwei @@ -396,6 +395,8 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Azroy Alan 0x_000 +Forever121 +c2ch brinkqiang bell azureology @@ -424,8 +425,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Rining Wu Ray Yee QinShower -Q.Ben Zheng -Mystic +Q.Ben Zheng 贡献者列表,由 [contributors](https://github.com/jaywcjlove/github-action-contributors) 自动生成 From 5cd5a451b49e996f557abd9201cd94b0e0a87809 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 20 Sep 2024 11:28:41 +0000 Subject: [PATCH 1049/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 72 +++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index 3c6664e164b..80deae78548 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -34,7 +34,6 @@ 沙漠之子 Shell xhal -will VVatt gggwvg BingCoke @@ -49,7 +48,6 @@ Dazhuangw Alterem YH -jcdj666 jqz3.tech juemuren4449 kassadin @@ -63,6 +61,8 @@ miniwater noodles2hg nsnans +oliver +jcdj666 hululu1068 huangyao hotdogc1017 @@ -77,40 +77,39 @@ Deny dayday cxalc -Forever121 -Yidan Wang -Wendy May -远方 -谢民皆 -Kyofin -老犁 -继刚 -移动的红烧肉 -极简XksA -ReZero -Loofra -Wei Xu -尘埃 -孤城落寞 -七朔 +Mystic zyimm -zuixin369 -zoomdong -zodiac -zjlovezj -yanyx -Lingfeng Wang -weibk -UniqueDing -tutianyu101 -tangke -snovey -shuangcui -shc -sfwwslm +七朔 +孤城落寞 +尘埃 +Wei Xu +Loofra +ReZero +极简XksA +移动的红烧肉 +继刚 +老犁 +Kyofin +谢民皆 +远方 +Wendy May +Yidan Wang rexlin600 -oliver -c2ch +sfwwslm +shc +shuangcui +snovey +tangke +tutianyu101 +UniqueDing +weibk +will +Lingfeng Wang +yanyx +zjlovezj +zodiac +zoomdong +zuixin369 MinsonLee Marnm mwei @@ -141,6 +140,8 @@ Azroy Alan 0x_000 +Forever121 +c2ch brinkqiang bell azureology @@ -169,8 +170,7 @@ Rining Wu Ray Yee QinShower -Q.Ben Zheng -Mystic +Q.Ben Zheng

数据来源于 GitHub Contributors,使用action-contributors创建。 From 06c56e9e88777b46bc358f4d2cfaedb651b48bac Mon Sep 17 00:00:00 2001 From: bestlaw66 <94432849+bestlaw66@users.noreply.github.com> Date: Thu, 31 Oct 2024 11:30:27 +0800 Subject: [PATCH 1050/1126] docs: add BT Panel Deployment Method (#613) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在国内有大部分用户都在使用宝塔面板管理服务器,因此增加使用宝塔面板部署的教程,可视化的部署文档可以帮助用户更加便捷的部署Linux Command --- README.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/README.md b/README.md index e2995e3f3b2..870475462a4 100644 --- a/README.md +++ b/README.md @@ -94,6 +94,41 @@ http://localhost:9665/ 通过 Vercel 分配的域名访问,或者自行在设置中绑定域名。 +## 宝塔面板 + +可通过宝塔面板应用商店快速部署 linux-command + +

+部署步骤 + +### 前提 + +* 仅适用于宝塔面板 9.2.0 及以上版本 +* 安装宝塔面板,前往[宝塔面板](https://www.bt.cn/new/download.html)官网,选择正式版的脚本下载安装 + +### 部署 + +1. 登录宝塔面板,在左侧菜单栏中点击 `Docker` +2. 首次会提示安装`Docker`和`Docker Compose`服务,点击立即安装,若已安装请忽略。 +3. 安装完成后在`Docker-应用商店-实用工具`中找到 `linux-command`,点击`安装`,也可以在搜索框直接搜索`linux`。 +4. 设置域名等基本信息,点击`确定` +* 说明: + * 名称:应用名称,默认`linuxcommand_随机字符` + * 版本选择:默认`latest` + * 域名:如您需要通过域名访问,请在此处填写您的域名 + * 允许外部访问:如您需通过`IP+Port`直接访问,请勾选,如您已经设置了域名,请不要勾选此处 + * 端口:默认`3000`,可自行修改 + * CPU 限制:0 为不限制,根据实际需要设置 + * 内存限制:0 为不限制,根据实际需要设置 +5. 提交后面板会自动进行应用初始化,大概需要`1-3`分钟,初始化完成后即可访问。 + +### 访问 linux-command + +* 如果您填写域名,请在浏览器输入您的域名访问,如`http://demo.linux-command`,即可访问 `linux-command` 页面。 +* 如您选择`IP+端口访问`请在浏览器地址栏中输入域名访问 `http://<宝塔面板IP>:6806`,即可访问 `linux-command` 页面。 + +
+ ## Linux命令分类 *这里存放Linux 命令大全并不全,你可以通过[linux-command](https://jaywcjlove.github.io/linux-command/)来搜索,它是把 [command](./assets/command) 目录里面搜集的命令,生成了静态HTML并提供预览以及索引搜索。* From 3ad005aafe6e4f9eb924f8e9e93063b0c4cee27b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 31 Oct 2024 03:30:54 +0000 Subject: [PATCH 1051/1126] doc: update README.md. --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 870475462a4..7fe84730157 100644 --- a/README.md +++ b/README.md @@ -324,6 +324,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. 沙漠之子 Shell xhal +will VVatt gggwvg BingCoke @@ -338,6 +339,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Dazhuangw Alterem YH +jcdj666 jqz3.tech juemuren4449 kassadin @@ -351,8 +353,6 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. miniwater noodles2hg nsnans -oliver -jcdj666 hululu1068 huangyao hotdogc1017 @@ -367,6 +367,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Deny dayday cxalc +Forever121 Mystic zyimm 七朔 @@ -384,6 +385,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. 远方 Wendy May Yidan Wang +oliver rexlin600 sfwwslm shc @@ -393,7 +395,6 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. tutianyu101 UniqueDing weibk -will Lingfeng Wang yanyx zjlovezj @@ -430,9 +431,9 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Azroy Alan 0x_000 -Forever121 c2ch brinkqiang +bestlaw66 bell azureology Ashine From 7c36a2f50f29d7e747fa1a32774312230365d64a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 31 Oct 2024 03:30:54 +0000 Subject: [PATCH 1052/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index 80deae78548..cc6ddf65f69 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -34,6 +34,7 @@ 沙漠之子 Shell xhal +will VVatt gggwvg BingCoke @@ -48,6 +49,7 @@ Dazhuangw Alterem YH +jcdj666 jqz3.tech juemuren4449 kassadin @@ -61,8 +63,6 @@ miniwater noodles2hg nsnans -oliver -jcdj666 hululu1068 huangyao hotdogc1017 @@ -77,6 +77,7 @@ Deny dayday cxalc +Forever121 Mystic zyimm 七朔 @@ -94,6 +95,7 @@ 远方 Wendy May Yidan Wang +oliver rexlin600 sfwwslm shc @@ -103,7 +105,6 @@ tutianyu101 UniqueDing weibk -will Lingfeng Wang yanyx zjlovezj @@ -140,9 +141,9 @@ Azroy Alan 0x_000 -Forever121 c2ch brinkqiang +bestlaw66 bell azureology Ashine From 2268588c603129baa8191f51a1e3230ae16ca04e Mon Sep 17 00:00:00 2001 From: chaofan Date: Tue, 12 Nov 2024 10:49:56 +0800 Subject: [PATCH 1053/1126] doc: update command/free.md (#615) Add `-h` args description. --- command/free.md | 1 + 1 file changed, 1 insertion(+) diff --git a/command/free.md b/command/free.md index 7559c114305..11e927b395b 100644 --- a/command/free.md +++ b/command/free.md @@ -24,6 +24,7 @@ free(选项) -s<间隔秒数> # 持续观察内存使用状况; -t # 显示内存总和列; -V # 显示版本信息。 +-h, --human # 自动缩放到最短三位单位的并打印输出 ``` ### 实例 From a607043c9aeb9de834d06d7613cddb25ad827753 Mon Sep 17 00:00:00 2001 From: YEUNGCHIE <30793662+yeungchie@users.noreply.github.com> Date: Tue, 26 Nov 2024 10:20:14 +0800 Subject: [PATCH 1054/1126] doc: update command/strings.md (#617) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `实例` 中的第二个例子的命令错误,缺少管道符 `|` --- command/strings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/command/strings.md b/command/strings.md index baf174c6c85..bdc513d0856 100644 --- a/command/strings.md +++ b/command/strings.md @@ -38,7 +38,7 @@ strings /bin/ls 列出ls中所有的ASCII文本: ```shell -cat /bin/ls strings +cat /bin/ls | strings ``` 查找ls中包含libc的字符串,不区分大小写: From fbba20936881da812101e162fc76c088227f006d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 26 Nov 2024 02:20:46 +0000 Subject: [PATCH 1055/1126] doc: update README.md. --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7fe84730157..6d5641f5c21 100644 --- a/README.md +++ b/README.md @@ -315,6 +315,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. rgshare loverainye lavaicer +YEUNGCHIE SteveLauC Lnkstls James Wang @@ -335,7 +336,6 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Shan Chenyu Xingwen Zhang Xrtero -YEUNGCHIE Dazhuangw Alterem YH @@ -368,7 +368,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. dayday cxalc Forever121 -Mystic +chaofan zyimm 七朔 孤城落寞 @@ -401,6 +401,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. zodiac zoomdong zuixin369 +Mystic MinsonLee Marnm mwei From e3700384a490b965b0d97df58c658bed2c4f3e96 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 26 Nov 2024 02:20:47 +0000 Subject: [PATCH 1056/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index cc6ddf65f69..3a73c8c7702 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -25,6 +25,7 @@ rgshare loverainye lavaicer +YEUNGCHIE SteveLauC Lnkstls James Wang @@ -45,7 +46,6 @@ Shan Chenyu Xingwen Zhang Xrtero -YEUNGCHIE Dazhuangw Alterem YH @@ -78,7 +78,7 @@ dayday cxalc Forever121 -Mystic +chaofan zyimm 七朔 孤城落寞 @@ -111,6 +111,7 @@ zodiac zoomdong zuixin369 +Mystic MinsonLee Marnm mwei From f5b04886c016cb7dd5b270134ef7ae0837929455 Mon Sep 17 00:00:00 2001 From: githubwxz Date: Fri, 29 Nov 2024 10:23:26 +0800 Subject: [PATCH 1057/1126] doc: Update README.md (#618) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6d5641f5c21..e9fb3880b6c 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ **推荐使用的镜像 web 版本** -[**`srebro.cn`**](https://linux.srebro.cn/),[**`getaifun.com`**](https://getaifun.com/linux),[**`linux.devonline.net`**](http://linux.devonline.net/),[**`man.zch.ooo`**](https://man.zch.ooo/),[**`linux.mmoke.com`**](https://linux.mmoke.com),[**`bqrdh.com`**](https://tools.bqrdh.com/linux-command/),[**`linux.zyimm.com`**](http://linux.zyimm.com/),[**`linux.vovuo.com`**](https://linux.vovuo.com/),[`linux.liguiying.cn`](https://linux.liguiying.cn/), [`renye.net`](https://renye.net/), [`diqi.org`](https://diqi.org/),[`linux.alistnas.xyz`](https://linux.alistnas.xyz/),[`nenufm.com`](https://www.nenufm.com/linux-command/) +[**`linuxsearch.largeinfo.cc`**](http://linuxsearch.largeinfo.cc),[**`srebro.cn`**](https://linux.srebro.cn/),[**`getaifun.com`**](https://getaifun.com/linux),[**`linux.devonline.net`**](http://linux.devonline.net/),[**`man.zch.ooo`**](https://man.zch.ooo/),[**`linux.mmoke.com`**](https://linux.mmoke.com),[**`bqrdh.com`**](https://tools.bqrdh.com/linux-command/),[**`linux.zyimm.com`**](http://linux.zyimm.com/),[**`linux.vovuo.com`**](https://linux.vovuo.com/),[`linux.liguiying.cn`](https://linux.liguiying.cn/), [`renye.net`](https://renye.net/), [`diqi.org`](https://diqi.org/),[`linux.alistnas.xyz`](https://linux.alistnas.xyz/),[`nenufm.com`](https://www.nenufm.com/linux-command/) **其它 web 版本** From 84d686c1f700b5419ae47e6dfd3082756862dbeb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 29 Nov 2024 02:23:58 +0000 Subject: [PATCH 1058/1126] doc: update README.md. --- README.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index e9fb3880b6c..32266489134 100644 --- a/README.md +++ b/README.md @@ -317,7 +317,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. lavaicer YEUNGCHIE SteveLauC -Lnkstls +MioMuse James Wang Qliangw Wang Yujia @@ -333,12 +333,13 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. FunKeen Pan, Wen-Ming RichardLCD -Shan Chenyu -Xingwen Zhang -Xrtero Dazhuangw Alterem YH +Shan Chenyu +Xingwen Zhang +Xrtero +hululu1068 jcdj666 jqz3.tech juemuren4449 @@ -352,11 +353,10 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. dufu miniwater noodles2hg -nsnans -hululu1068 huangyao hotdogc1017 gcluffy +githubwxz ghy gesty gedune @@ -369,6 +369,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. cxalc Forever121 chaofan +nsnans zyimm 七朔 孤城落寞 From b8b93894b9d7609994afdbfdca5a1b155a213975 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 29 Nov 2024 02:23:59 +0000 Subject: [PATCH 1059/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index 3a73c8c7702..a8d7ec9c534 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -27,7 +27,7 @@ lavaicer YEUNGCHIE SteveLauC -Lnkstls +MioMuse James Wang Qliangw Wang Yujia @@ -43,12 +43,13 @@ FunKeen Pan, Wen-Ming RichardLCD -Shan Chenyu -Xingwen Zhang -Xrtero Dazhuangw Alterem YH +Shan Chenyu +Xingwen Zhang +Xrtero +hululu1068 jcdj666 jqz3.tech juemuren4449 @@ -62,11 +63,10 @@ dufu miniwater noodles2hg -nsnans -hululu1068 huangyao hotdogc1017 gcluffy +githubwxz ghy gesty gedune @@ -79,6 +79,7 @@ cxalc Forever121 chaofan +nsnans zyimm 七朔 孤城落寞 From 0775c0d74e6e87f4f6268cff5fde377bbc4cc8bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=B6=E8=8B=8F=E5=A6=82=E6=98=AF?= <57750156+fusurus@users.noreply.github.com> Date: Sat, 21 Dec 2024 18:57:38 +0800 Subject: [PATCH 1060/1126] doc: Update nohup.md (#621) --- command/nohup.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/command/nohup.md b/command/nohup.md index 6a60c8f9a39..8e168243154 100644 --- a/command/nohup.md +++ b/command/nohup.md @@ -47,4 +47,16 @@ nohup wget site.com/file.zip nohup ping -c 10 baidu.com ``` +### 最简单的后台运行 +nohup command & +### 输出默认重定向到当前目录下 nohup.out 文件 +nohup python main.py & +### 自定义输出文件(标准输出和错误输出合并到 main.log) +nohup python main.py >> main.log 2>&1 & +### 与上一个例子相同作用的简写方法 +nohup python main.py &> main.log & +### 不记录输出信息 +nohup python main.py &> /dev/null & +### 不记录输出信息并将程序的进程号写入 pidfile.txt 文件中,方便后续杀死进程 +nohup python main.py &> /dev/null & echo $! > pidfile.txt From a6207d7ab2ccba2e8c10501c7824005688b7dc09 Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Sat, 21 Dec 2024 19:05:55 +0800 Subject: [PATCH 1061/1126] doc: update command/nohup.md --- command/nohup.md | 51 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 37 insertions(+), 14 deletions(-) diff --git a/command/nohup.md b/command/nohup.md index 8e168243154..e0ee09d8efb 100644 --- a/command/nohup.md +++ b/command/nohup.md @@ -9,23 +9,24 @@ nohup 无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到`$HOME/nohup.out`文件中。如果没有文件能创建或打开以用于追加,那么 command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。 -### 语法 +### 语法 +```shell nohup(选项)(参数) +``` -### 选项 +### 选项 ```shell --help:在线帮助; --version:显示版本信息。 ``` -### 参数 +### 参数 程序及选项:要运行的程序及选项。 -### 实例 - +### 实例 使用nohup命令提交作业,如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件: @@ -47,16 +48,38 @@ nohup wget site.com/file.zip nohup ping -c 10 baidu.com ``` -### 最简单的后台运行 +最简单的后台运行 + +```shell nohup command & -### 输出默认重定向到当前目录下 nohup.out 文件 -nohup python main.py & -### 自定义输出文件(标准输出和错误输出合并到 main.log) -nohup python main.py >> main.log 2>&1 & -### 与上一个例子相同作用的简写方法 +``` + +输出默认重定向到当前目录下 nohup.out 文件 + +```shell +nohup python main.py & +``` + +自定义输出文件(标准输出和错误输出合并到 main.log) + +```shell +nohup python main.py >> main.log 2>&1 & +``` + +与上一个例子相同作用的简写方法 + +```shell nohup python main.py &> main.log & -### 不记录输出信息 +``` + +不记录输出信息 + +```shell nohup python main.py &> /dev/null & -### 不记录输出信息并将程序的进程号写入 pidfile.txt 文件中,方便后续杀死进程 -nohup python main.py &> /dev/null & echo $! > pidfile.txt +``` +不记录输出信息并将程序的进程号写入 pidfile.txt 文件中,方便后续杀死进程 + +```shell +nohup python main.py &> /dev/null & echo $! > pidfile.txt +``` \ No newline at end of file From 5b5557f91e2f2d472a1f296fa659c974875e9dc4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 21 Dec 2024 11:06:33 +0000 Subject: [PATCH 1062/1126] doc: update README.md. --- README.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 32266489134..0cc1ae7f14e 100644 --- a/README.md +++ b/README.md @@ -339,7 +339,6 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Shan Chenyu Xingwen Zhang Xrtero -hululu1068 jcdj666 jqz3.tech juemuren4449 @@ -353,6 +352,8 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. dufu miniwater noodles2hg +nsnans +hululu1068 huangyao hotdogc1017 gcluffy @@ -368,14 +369,13 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. dayday cxalc Forever121 -chaofan -nsnans -zyimm +oliver 七朔 孤城落寞 尘埃 Wei Xu Loofra +扶苏如是 ReZero 极简XksA 移动的红烧肉 @@ -386,7 +386,6 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. 远方 Wendy May Yidan Wang -oliver rexlin600 sfwwslm shc @@ -402,6 +401,8 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. zodiac zoomdong zuixin369 +zyimm +chaofan Mystic MinsonLee Marnm From fc723b6dec1ebe066ab181d22c21b74b91be9481 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 21 Dec 2024 11:06:34 +0000 Subject: [PATCH 1063/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index a8d7ec9c534..782e5d82414 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -49,7 +49,6 @@ Shan Chenyu Xingwen Zhang Xrtero -hululu1068 jcdj666 jqz3.tech juemuren4449 @@ -63,6 +62,8 @@ dufu miniwater noodles2hg +nsnans +hululu1068 huangyao hotdogc1017 gcluffy @@ -78,14 +79,13 @@ dayday cxalc Forever121 -chaofan -nsnans -zyimm +oliver 七朔 孤城落寞 尘埃 Wei Xu Loofra +扶苏如是 ReZero 极简XksA 移动的红烧肉 @@ -96,7 +96,6 @@ 远方 Wendy May Yidan Wang -oliver rexlin600 sfwwslm shc @@ -112,6 +111,8 @@ zodiac zoomdong zuixin369 +zyimm +chaofan Mystic MinsonLee Marnm From 1f11d8a430781027f9abca93c7ba3106ffe6c235 Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Sat, 21 Dec 2024 19:08:55 +0800 Subject: [PATCH 1064/1126] doc: update command/as.md --- command/as.md | 46 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 41 insertions(+), 5 deletions(-) diff --git a/command/as.md b/command/as.md index 622f791b0c3..12578067995 100644 --- a/command/as.md +++ b/command/as.md @@ -5,15 +5,15 @@ as ## 补充说明 -**as命令** GNU组织推出的一款汇编语言编译器,它支持多种不同类型的处理器。 +**as命令** 是GNU组织推出的一款汇编语言编译器,它支持多种不同类型的处理器。 -### 语法 +### 语法 ```shell -as(选项)(参数) +as [选项] [参数] ``` -### 选项 +### 选项 ```shell -ac:忽略失败条件; @@ -33,8 +33,44 @@ as(选项)(参数) --statistics:打印汇编所用的最大空间和总时间。 ``` -### 参数 +### 参数 汇编文件:指定要汇编的源文件。 +### 示例 +编译一个汇编文件并生成目标文件 + +```shell +as -o output.o source.s +``` + +忽略调试指令并生成目标文件 + +```shell +as -ad -o output.o source.s +``` + +生成包含调试信息的目标文件 + +```shell +as -g -o output.o source.s +``` + +包括宏扩展并生成目标文件 + +```shell +as -am -o output.o source.s +``` + +打印汇编所用的最大空间和总时间 + +```shell +as --statistics -o output.o source.s +``` + +跳过空白和注释预处理并生成目标文件 + +```shell +as -f -o output.o source.s +``` \ No newline at end of file From 2a181511e989d95e3f0ec9f802298d65e7d10fe6 Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Sat, 21 Dec 2024 19:10:44 +0800 Subject: [PATCH 1065/1126] doc: update command/at.md --- command/at.md | 41 ++++++++++++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/command/at.md b/command/at.md index 5b3ca031569..352063efe3a 100644 --- a/command/at.md +++ b/command/at.md @@ -5,17 +5,17 @@ at ## 补充说明 -**at命令** 用于在指定时间执行命令。at允许使用一套相当复杂的指定时间的方法。它能够接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。当然也能够使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的 词语来指定时间。用户还能够采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。 也能够指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年)。指定的日期必须跟在指定时间的后面。 +**at命令** 用于在指定时间执行命令。at允许使用一套相当复杂的指定时间的方法。它能够接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。当然也能够使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间。用户还能够采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。也能够指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年)。指定的日期必须跟在指定时间的后面。 -上面介绍的都是绝对计时法,其实还能够使用相对计时法,这对于安排不久就要执行的命令是很有好处的。指定格式为:`now + count time-units`,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,究竟是几天,还是几小时,等等。 更有一种计时方法就是直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。 +上面介绍的都是绝对计时法,其实还能够使用相对计时法,这对于安排不久就要执行的命令是很有好处的。指定格式为:`now + count time-units`,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,究竟是几天,还是几小时,等等。更有一种计时方法就是直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。 -### 语法 +### 语法 ```shell at [-V] [-q 队列] [-f 文件] [-mldbv] 时间 at -c 作业 [作业...] ``` -### 选项 +### 选项 ```shell -f:指定包含具体指令的任务文件; @@ -25,13 +25,13 @@ at [-V] [-q 队列] [-f 文件] [-mldbv] 时间 at -c 作业 [作业...] -m:任务执行完成后向用户发送E-mail。 ``` -### 参数 +### 参数 日期时间:指定任务执行的日期时间。 -### 实例 +### 示例 -三天后的下午 5 点锺执行`/bin/ls`: +三天后的下午 5 点钟执行`/bin/ls`: ```shell [root@localhost ~]# at 5pm+3 days @@ -60,10 +60,6 @@ job 8 at 2013-01-06 17:20 删除已经设置的任务: ```shell -[root@localhost ~]# atq -8 2013-01-06 17:20 a root -7 2013-01-08 17:00 a root - [root@localhost ~]# atrm 7 [root@localhost ~]# atq 8 2013-01-06 17:20 a root @@ -80,5 +76,28 @@ umask 22此处省略n个字符 date >/root/2013.log ``` +使用任务文件执行任务: + +```shell +[root@localhost ~]# echo "/bin/ls" > mytask.txt +[root@localhost ~]# at -f mytask.txt 5pm+3 days +job 9 at 2013-01-08 17:00 +``` + +指定任务队列执行任务: +```shell +[root@localhost ~]# at -q b 5pm+3 days +at> /bin/ls +at> +job 10 at 2013-01-08 17:00 +``` +任务执行完成后发送E-mail通知: + +```shell +[root@localhost ~]# at -m 5pm+3 days +at> /bin/ls +at> +job 11 at 2013-01-08 17:00 +``` \ No newline at end of file From d27f05592debd0f09eb43e7011bf9617a1d3db4e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 21 Dec 2024 11:16:46 +0000 Subject: [PATCH 1066/1126] doc: update README.md. --- README.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 0cc1ae7f14e..32266489134 100644 --- a/README.md +++ b/README.md @@ -339,6 +339,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Shan Chenyu Xingwen Zhang Xrtero +hululu1068 jcdj666 jqz3.tech juemuren4449 @@ -352,8 +353,6 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. dufu miniwater noodles2hg -nsnans -hululu1068 huangyao hotdogc1017 gcluffy @@ -369,13 +368,14 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. dayday cxalc Forever121 -oliver +chaofan +nsnans +zyimm 七朔 孤城落寞 尘埃 Wei Xu Loofra -扶苏如是 ReZero 极简XksA 移动的红烧肉 @@ -386,6 +386,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. 远方 Wendy May Yidan Wang +oliver rexlin600 sfwwslm shc @@ -401,8 +402,6 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. zodiac zoomdong zuixin369 -zyimm -chaofan Mystic MinsonLee Marnm From 0ae1a1bc6eee39d0c86b8dda2dbdd0764c7c1bba Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 21 Dec 2024 11:16:47 +0000 Subject: [PATCH 1067/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index 782e5d82414..a8d7ec9c534 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -49,6 +49,7 @@ Shan Chenyu Xingwen Zhang Xrtero +hululu1068 jcdj666 jqz3.tech juemuren4449 @@ -62,8 +63,6 @@ dufu miniwater noodles2hg -nsnans -hululu1068 huangyao hotdogc1017 gcluffy @@ -79,13 +78,14 @@ dayday cxalc Forever121 -oliver +chaofan +nsnans +zyimm 七朔 孤城落寞 尘埃 Wei Xu Loofra -扶苏如是 ReZero 极简XksA 移动的红烧肉 @@ -96,6 +96,7 @@ 远方 Wendy May Yidan Wang +oliver rexlin600 sfwwslm shc @@ -111,8 +112,6 @@ zodiac zoomdong zuixin369 -zyimm -chaofan Mystic MinsonLee Marnm From b1272c9afbdbebabd3714be6ba8d85fa49a7db2a Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Sat, 21 Dec 2024 19:18:27 +0800 Subject: [PATCH 1068/1126] doc: update command/atq.md --- command/atq.md | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/command/atq.md b/command/atq.md index ae1ad20ddd5..5fd86e76812 100644 --- a/command/atq.md +++ b/command/atq.md @@ -7,30 +7,56 @@ atq **atq命令** 显示系统中待执行的任务列表,也就是列出当前用户的at任务列表。 -### 语法 +### 语法 ```shell atq [-V] [-q 队列] [-v] ``` -### 选项 +### 选项 ```shell -V:显示版本号; -q:查询指定队列的任务。 ``` -### 实例 +### 示例 + +创建一个在10分钟后执行的任务,并列出当前用户的任务列表: ```shell -at now + 10 minutes +[root@localhost ~]# at now + 10 minutes at> echo 1111 -at> +at> job 3 at Fri Apr 26 12:56:00 2013 +``` -atq +使用`atq`命令查看当前用户的任务列表: + +```shell +[root@localhost ~]# atq 3 Fri Apr 26 12:56:00 2013 a root ``` +查询指定队列的任务: +```shell +[root@localhost ~]# at -q a now + 10 minutes +at> echo "Task in queue a" +at> +job 4 at Fri Apr 26 13:06:00 2013 +``` +使用`atq`命令查看队列`a`中的任务: + +```shell +[root@localhost ~]# atq -q a +4 Fri Apr 26 13:06:00 2013 a root +``` + +显示`atq`命令的版本号: + +```shell +[root@localhost ~]# atq -V +atq (GNU at) 3.1.20 +``` \ No newline at end of file From 69890bc63e856ae264dd02fafd926a3d3821dac8 Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Sat, 21 Dec 2024 19:20:18 +0800 Subject: [PATCH 1069/1126] doc: update command/atop.md --- command/atop.md | 62 +++++++++++++++++++++++++++++++------------------ 1 file changed, 40 insertions(+), 22 deletions(-) diff --git a/command/atop.md b/command/atop.md index a33cf5ab340..0b5535f1f10 100644 --- a/command/atop.md +++ b/command/atop.md @@ -5,26 +5,32 @@ atop ## 补充说明 -[非内部程序,需要安装]它以一定的频率记录系统的运行状态,所采集的数据包含系统资源(CPU、内存、磁盘和网络)使用情况和进程运行情况,并能以日志文件的方式保存在磁盘中,服务器出现问题后,我们可获取相应的atop日志文件进行分析。atop是一款开源软件,我们可以从这里获得其[源码](https://github.com/Atoptool/atop)和[rpm安装包](https://pkgs.org/download/atop)。 +**atop命令** 是一款开源的系统监控工具,它以一定的频率记录系统的运行状态,采集的数据包含系统资源(CPU、内存、磁盘和网络)使用情况和进程运行情况,并能以日志文件的方式保存在磁盘中。服务器出现问题后,我们可获取相应的atop日志文件进行分析。atop是一款开源软件,我们可以从这里获得其[源码](https://github.com/Atoptool/atop)和[rpm安装包](https://pkgs.org/download/atop)。 ## 语法 ```shell -atop(选项)(参数) +atop [选项] [参数] ``` ## 说明 -**ATOP列**:该列显示了主机名、信息采样日期和时间点 +### ATOP列 -**PRC列**:该列显示进程整体运行情况 +该列显示了主机名、信息采样日期和时间点。 + +### PRC列 + +该列显示进程整体运行情况: - sys、usr字段分别指示进程在内核态和用户态的运行时间 - #proc字段指示进程总数 - #zombie字段指示僵尸进程的数量 - #exit字段指示atop采样周期期间退出的进程数量 -**CPU列**:该列显示CPU整体(即多核CPU作为一个整体CPU资源)的使用情况,我们知道CPU可被用于执行进程、处理中断,也可处于空闲状态(空闲状态分两种,一种是活动进程等待磁盘IO导致CPU空闲,另一种是完全空闲) +### CPU列 + +该列显示CPU整体(即多核CPU作为一个整体CPU资源)的使用情况: - sys、usr字段指示CPU被用于处理进程时,进程在内核态、用户态所占CPU的时间比例 - irq字段指示CPU被用于处理中断的时间比例 @@ -33,15 +39,21 @@ atop(选项)(参数) CPU列各个字段指示值相加结果为N00%,其中N为cpu核数。 -cpu列:该列显示某一核cpu的使用情况,各字段含义可参照CPU列,各字段值相加结果为100% +### cpu列 -**CPL列**:该列显示CPU负载情况 +该列显示某一核cpu的使用情况,各字段含义可参照CPU列,各字段值相加结果为100%。 + +### CPL列 + +该列显示CPU负载情况: - avg1、avg5和avg15字段:过去1分钟、5分钟和15分钟内运行队列中的平均进程数量 - csw字段指示上下文交换次数 - intr字段指示中断发生次数 -**MEM列**:该列指示内存的使用情况 +### MEM列 + +该列指示内存的使用情况: - tot字段指示物理内存总量 - free字段指示空闲内存的大小 @@ -49,43 +61,49 @@ cpu列:该列显示某一核cpu的使用情况,各字段含义可参照CPU - buff字段指示用于文件缓存的内存大小 - slab字段指示系统内核占用的内存大小 -**SWP列**:该列指示交换空间的使用情况 +### SWP列 + +该列指示交换空间的使用情况: - tot字段指示交换区总量 - free字段指示空闲交换空间大小 -**PAG列**:该列指示虚拟内存分页情况 +### PAG列 + +该列指示虚拟内存分页情况: + +- swin、swout字段:换入和换出内存页数 -swin、swout字段:换入和换出内存页数 +### DSK列 -**DSK列**:该列指示磁盘使用情况,每一个磁盘设备对应一列,如果有sdb设备,那么增多一列DSK信息 +该列指示磁盘使用情况,每一个磁盘设备对应一列,如果有sdb设备,那么增多一列DSK信息: - sda字段:磁盘设备标识 - busy字段:磁盘忙时比例 - read、write字段:读、写请求数量 -**NET列**:多列NET展示了网络状况,包括传输层(TCP和UDP)、IP层以及各活动的网口信息 +### NET列 -- XXXi 字段指示各层或活动网口收包数目 -- XXXo 字段指示各层或活动网口发包数目 +多列NET展示了网络状况,包括传输层(TCP和UDP)、IP层以及各活动的网口信息: -## atop日志 +- XXXi字段指示各层或活动网口收包数目 +- XXXo字段指示各层或活动网口发包数目 -每个时间点采样页面组合起来就形成了一个atop日志文件,我们可以使用"atop -r XXX"命令对日志文件进行查看。那以什么形式保存atop日志文件呢? +## atop日志 -对于atop日志文件的保存方式,我们可以这样: +每个时间点采样页面组合起来就形成了一个atop日志文件,我们可以使用`atop -r XXX`命令对日志文件进行查看。日志文件的保存方式如下: - 每天保存一个atop日志文件,该日志文件记录当天信息 -- 日志文件以"atop_YYYYMMDD"的方式命名 +- 日志文件以`atop_YYYYMMDD`的方式命名 - 设定日志失效期限,自动删除一段时间前的日志文件 -其实atop开发者已经提供了以上日志保存方式,相应的atop.daily脚本可以在源码目录下找到。在atop.daily脚本中,我们可以通过修改INTERVAL变量改变atop信息采样周期(默认为10分钟);通过修改以下命令中的数值改变日志保存天数(默认为28天): +atop开发者提供了以上日志保存方式,相应的`atop.daily`脚本可以在源码目录下找到。在`atop.daily`脚本中,我们可以通过修改`INTERVAL`变量改变atop信息采样周期(默认为10分钟);通过修改以下命令中的数值改变日志保存天数(默认为28天): ```shell (sleep 3; find $LOGPATH -name 'atop_*' -mtime +28 -exec rm {} \; )& ``` -最后,我们修改cron文件,每天凌晨执行atop.daily脚本: +最后,我们修改cron文件,每天凌晨执行`atop.daily`脚本: ```shell 0 0 * * * root /etc/cron.daily/atop.daily @@ -93,4 +111,4 @@ swin、swout字段:换入和换出内存页数 ## 相关资料 -- [官方手册](http://www.atoptool.nl/download/man_atop-1.pdf) +- [官方手册](http://www.atoptool.nl/download/man_atop-1.pdf) \ No newline at end of file From cc8725734644d7b54ad55e602bbf10b8c99d6b26 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 21 Dec 2024 11:21:12 +0000 Subject: [PATCH 1070/1126] doc: update README.md. --- README.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 32266489134..0cc1ae7f14e 100644 --- a/README.md +++ b/README.md @@ -339,7 +339,6 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Shan Chenyu Xingwen Zhang Xrtero -hululu1068 jcdj666 jqz3.tech juemuren4449 @@ -353,6 +352,8 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. dufu miniwater noodles2hg +nsnans +hululu1068 huangyao hotdogc1017 gcluffy @@ -368,14 +369,13 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. dayday cxalc Forever121 -chaofan -nsnans -zyimm +oliver 七朔 孤城落寞 尘埃 Wei Xu Loofra +扶苏如是 ReZero 极简XksA 移动的红烧肉 @@ -386,7 +386,6 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. 远方 Wendy May Yidan Wang -oliver rexlin600 sfwwslm shc @@ -402,6 +401,8 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. zodiac zoomdong zuixin369 +zyimm +chaofan Mystic MinsonLee Marnm From 065edf179120c3c494f9c49db6a542e27a6f211f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 21 Dec 2024 11:21:13 +0000 Subject: [PATCH 1071/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index a8d7ec9c534..782e5d82414 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -49,7 +49,6 @@ Shan Chenyu Xingwen Zhang Xrtero -hululu1068 jcdj666 jqz3.tech juemuren4449 @@ -63,6 +62,8 @@ dufu miniwater noodles2hg +nsnans +hululu1068 huangyao hotdogc1017 gcluffy @@ -78,14 +79,13 @@ dayday cxalc Forever121 -chaofan -nsnans -zyimm +oliver 七朔 孤城落寞 尘埃 Wei Xu Loofra +扶苏如是 ReZero 极简XksA 移动的红烧肉 @@ -96,7 +96,6 @@ 远方 Wendy May Yidan Wang -oliver rexlin600 sfwwslm shc @@ -112,6 +111,8 @@ zodiac zoomdong zuixin369 +zyimm +chaofan Mystic MinsonLee Marnm From db88f1b96abf561fb43e6960c2e6b4367f83fdce Mon Sep 17 00:00:00 2001 From: Jeremy2214 <97098763+Jeremy2214@users.noreply.github.com> Date: Thu, 26 Dec 2024 22:09:22 +0800 Subject: [PATCH 1072/1126] doc: update touch.md (#624) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修正拼写错误,把“更该”,改为“更改” --- command/touch.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/command/touch.md b/command/touch.md index 37a1a698718..384efbff5e5 100644 --- a/command/touch.md +++ b/command/touch.md @@ -20,7 +20,7 @@ touch(选项)(参数) -c:或--no-create 不建立任何文件; -d:<时间日期> 使用指定的日期时间,而非现在的时间; -f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题; --m:或--time=mtime或--time=modify 只更该变动时间; +-m:或--time=mtime或--time=modify 只更改变动时间; -r:<参考文件或目录> 把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同; -t:<日期时间> 使用指定的日期时间,而非现在的时间; --help:在线帮助; From 43f5dc092158096541fe43765a21b47c32e71359 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 26 Dec 2024 14:10:10 +0000 Subject: [PATCH 1073/1126] doc: update README.md. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0cc1ae7f14e..7db5d94c9bc 100644 --- a/README.md +++ b/README.md @@ -384,7 +384,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Kyofin 谢民皆 远方 -Wendy May +bycs Yidan Wang rexlin600 sfwwslm From d4998a1000660bae9572328effbd136e6d350d70 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 26 Dec 2024 14:10:11 +0000 Subject: [PATCH 1074/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index 782e5d82414..3cd264242ed 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -94,7 +94,7 @@ Kyofin 谢民皆 远方 -Wendy May +bycs Yidan Wang rexlin600 sfwwslm From 36a4edf169ac064f875621ab381fe6580032a07e Mon Sep 17 00:00:00 2001 From: QinShower Date: Sun, 29 Dec 2024 20:45:56 +0800 Subject: [PATCH 1075/1126] feat: Create getfacl.md (#625) add getfacl --- command/getfacl.md | 49 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 command/getfacl.md diff --git a/command/getfacl.md b/command/getfacl.md new file mode 100644 index 00000000000..fbfb5271ee9 --- /dev/null +++ b/command/getfacl.md @@ -0,0 +1,49 @@ +getfacl +=== + +获取文件访问控制列表(access control lists) + +## 补充说明 + +对于每个文件,`getfacl`都会显示文件名、所有者、组和访问控制列表 (ACL)。如果目录有默认ACL,`getfacl` 也会显示默认ACL。非目录不能有默认ACL。 +如果在不支持 ACL 的文件系统上使用`getfacl`,`getfacl`会显示由传统文件模式权限位定义的访问权限。请参考`setfacl`。 + +### 选项 + +```shell +-a, --access # 显示文件访问控制列表。 +-d, --default # 显示默认访问控制列表。 +-c, --omit-header # 不显示注释头(每个文件输出的前三行)。 +-e, --all-effective # 打印所有有效权限注释,即使与 ACL 条目定义的权限相同。 +-E, --no-effective # 不打印有效权限注释。 +-s, --skip-base # 跳过只有基本 ACL 条目(所有者、组、其他)的文件。 +-R, --recursive # 递归列出所有文件和目录的 ACL。 +-L, --logical # 逻辑路径,跟踪目录的符号链接。默认行为是跟踪符号链接参数,跳过子目录中遇到的符号链接。仅与 -R 结合使用时有效。 +-P, --physical # 物理路径,不跟踪指向目录的符号链接。这也会跳过符号链接参数。 仅与 -R 结合使用时有效。 +-t, --tabular # 使用另一种表格输出格式。同时显示 ACL 和默认 ACL。因 ACL 屏蔽条目而无效的权限会以大写。ACL_USER_OBJ 和 ACL_GROUP_OBJ 条目的条目标签名称也以大写字母显示,这有助于识别这些条目。 +-p, --absolute-names # 不删除前导斜线字符 (`/')。默认行为是去掉前导斜线字符。 +-n, --numeric # 列出数字用户和组 ID。 +-v, --version # 打印 getfacl 的版本并退出。 +-h, --help # 打印命令行选项的帮助说明。 +-- # 命令行选项结束。所有剩余参数都被解释为文件名,即使它们以破折号字符开头。 +- # 如果文件名参数是单破折号字符,getfacl 将从标准输入读取文件列表。 +``` + +### 实例 + +getfacl 命令默认显示文件访问控制列表。打开终端,并输入以下命令: + +```shell +getfacl tmp + +# file: tmp +# owner: zdx +# group: zdx +# flags: -s- +user::rwx +group::rwx +other::r-x +default:user::rwx +default:group::rwx +default:other::r-x +``` From 6603a44cb5e02252ea88a6cb5b44d4d5fa21fede Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 29 Dec 2024 12:46:28 +0000 Subject: [PATCH 1076/1126] doc: update README.md. --- README.md | 66 +++++++++++++++++++++++++++---------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 7db5d94c9bc..3a39ff29e2e 100644 --- a/README.md +++ b/README.md @@ -328,24 +328,25 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. will VVatt gggwvg -BingCoke -Ein Verne -FunKeen -Pan, Wen-Ming -RichardLCD Dazhuangw Alterem YH -Shan Chenyu -Xingwen Zhang Xrtero -jcdj666 -jqz3.tech -juemuren4449 -kassadin -kid1412621 -leo +Xingwen Zhang +Shan Chenyu +RichardLCD +Pan, Wen-Ming +Jeremy2214 +BingCoke +FunKeen +Ein Verne lewis1573 +leo +kid1412621 +kassadin +juemuren4449 +jqz3.tech +Forever121 linuxwd Ricardowang cole @@ -353,23 +354,23 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. miniwater noodles2hg nsnans -hululu1068 -huangyao -hotdogc1017 -gcluffy -githubwxz -ghy -gesty -gedune -gang.yang -ecjtusbs -duzhuoshanwai -dongpohezui -Deny -dayday -cxalc -Forever121 oliver +cxalc +dayday +Deny +dongpohezui +duzhuoshanwai +ecjtusbs +gang.yang +gedune +gesty +ghy +githubwxz +gcluffy +hotdogc1017 +huangyao +hululu1068 +jcdj666 七朔 孤城落寞 尘埃 @@ -402,7 +403,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. zoomdong zuixin369 zyimm -chaofan +Q.Ben Zheng Mystic MinsonLee Marnm @@ -418,7 +419,6 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. LaudOak Karl Horky Nexchard -Jeremy2214 Jack.A.Black Jack Huntout Zhang @@ -434,6 +434,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Azroy Alan 0x_000 +chaofan c2ch brinkqiang bestlaw66 @@ -463,8 +464,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Robigus Rining Wu Ray Yee -QinShower -Q.Ben Zheng +QinShower 贡献者列表,由 [contributors](https://github.com/jaywcjlove/github-action-contributors) 自动生成 From 000517ef32d2b01efb98d58ea9b91f178000c37f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 29 Dec 2024 12:46:28 +0000 Subject: [PATCH 1077/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 66 +++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index 3cd264242ed..77ec8c5d696 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -38,24 +38,25 @@ will VVatt gggwvg -BingCoke -Ein Verne -FunKeen -Pan, Wen-Ming -RichardLCD Dazhuangw Alterem YH -Shan Chenyu -Xingwen Zhang Xrtero -jcdj666 -jqz3.tech -juemuren4449 -kassadin -kid1412621 -leo +Xingwen Zhang +Shan Chenyu +RichardLCD +Pan, Wen-Ming +Jeremy2214 +BingCoke +FunKeen +Ein Verne lewis1573 +leo +kid1412621 +kassadin +juemuren4449 +jqz3.tech +Forever121 linuxwd Ricardowang cole @@ -63,23 +64,23 @@ miniwater noodles2hg nsnans -hululu1068 -huangyao -hotdogc1017 -gcluffy -githubwxz -ghy -gesty -gedune -gang.yang -ecjtusbs -duzhuoshanwai -dongpohezui -Deny -dayday -cxalc -Forever121 oliver +cxalc +dayday +Deny +dongpohezui +duzhuoshanwai +ecjtusbs +gang.yang +gedune +gesty +ghy +githubwxz +gcluffy +hotdogc1017 +huangyao +hululu1068 +jcdj666 七朔 孤城落寞 尘埃 @@ -112,7 +113,7 @@ zoomdong zuixin369 zyimm -chaofan +Q.Ben Zheng Mystic MinsonLee Marnm @@ -128,7 +129,6 @@ LaudOak Karl Horky Nexchard -Jeremy2214 Jack.A.Black Jack Huntout Zhang @@ -144,6 +144,7 @@ Azroy Alan 0x_000 +chaofan c2ch brinkqiang bestlaw66 @@ -173,8 +174,7 @@ Robigus Rining Wu Ray Yee -QinShower -Q.Ben Zheng +QinShower

数据来源于 GitHub Contributors,使用action-contributors创建。 From ec0fe45c48cf973ae69974e7d766029ed4df2f90 Mon Sep 17 00:00:00 2001 From: duzhuoshanwai <65448395+duzhuoshanwai@users.noreply.github.com> Date: Sat, 11 Jan 2025 11:07:52 +0800 Subject: [PATCH 1078/1126] doc: update column.md (#629) * doc: update README.md. * doc: update template/contributors.ejs. * Update column.md * doc: update README.md. * doc: update template/contributors.ejs. --------- Co-authored-by: github-actions[bot] --- README.md | 146 +++++++++++++++++++------------------- command/column.md | 53 ++++++++++++++ template/contributors.ejs | 146 +++++++++++++++++++------------------- 3 files changed, 199 insertions(+), 146 deletions(-) diff --git a/README.md b/README.md index 3a39ff29e2e..79063b9841c 100644 --- a/README.md +++ b/README.md @@ -308,45 +308,46 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Zijing Zhang Fubin Zhang __FresHmaN -dulltackle -ernest 谈笑风生间 +ernest +dulltackle zyy2477 -rgshare -loverainye -lavaicer -YEUNGCHIE SteveLauC +YEUNGCHIE MioMuse James Wang +lavaicer +loverainye +rgshare Qliangw -Wang Yujia -alfred 沙漠之子 +Wang Yujia Shell xhal will VVatt gggwvg -Dazhuangw -Alterem -YH -Xrtero -Xingwen Zhang -Shan Chenyu -RichardLCD -Pan, Wen-Ming -Jeremy2214 +alfred +duzhuoshanwai +Ein Verne BingCoke FunKeen -Ein Verne -lewis1573 -leo -kid1412621 -kassadin -juemuren4449 +Jeremy2214 +Pan, Wen-Ming +QinShower +RichardLCD +Shan Chenyu +Xingwen Zhang +Xrtero +YH +Alterem +Dazhuangw jqz3.tech -Forever121 +juemuren4449 +kassadin +kid1412621 +leo +lewis1573 linuxwd Ricardowang cole @@ -355,55 +356,54 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. noodles2hg nsnans oliver -cxalc -dayday -Deny -dongpohezui -duzhuoshanwai -ecjtusbs -gang.yang -gedune -gesty -ghy -githubwxz -gcluffy -hotdogc1017 -huangyao -hululu1068 jcdj666 -七朔 -孤城落寞 -尘埃 -Wei Xu -Loofra -扶苏如是 -ReZero -极简XksA -移动的红烧肉 -继刚 -老犁 -Kyofin -谢民皆 -远方 -bycs +hululu1068 +huangyao +hotdogc1017 +gcluffy +githubwxz +ghy +gesty +gedune +gang.yang +ecjtusbs +dongpohezui +Deny +dayday +cxalc +Q.Ben Zheng Yidan Wang -rexlin600 -sfwwslm -shc -shuangcui -snovey -tangke -tutianyu101 -UniqueDing -weibk -Lingfeng Wang -yanyx -zjlovezj -zodiac -zoomdong -zuixin369 +bycs +远方 +谢民皆 +Kyofin +老犁 +继刚 +移动的红烧肉 +极简XksA +ReZero +扶苏如是 +Loofra +Wei Xu +尘埃 +孤城落寞 +七朔 zyimm -Q.Ben Zheng +zuixin369 +zoomdong +zodiac +zjlovezj +yanyx +Lingfeng Wang +weibk +UniqueDing +tutianyu101 +tangke +snovey +shuangcui +shc +sfwwslm +rexlin600 Mystic MinsonLee Marnm @@ -431,9 +431,10 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Danny DaYangtuo247 Cui Yang -Azroy +azroy Alan 0x_000 +Forever121 chaofan c2ch brinkqiang @@ -463,8 +464,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Rocher Robigus Rining Wu -Ray Yee -QinShower +Ray Yee 贡献者列表,由 [contributors](https://github.com/jaywcjlove/github-action-contributors) 自动生成 diff --git a/command/column.md b/command/column.md index 62e30329471..c93c184692b 100644 --- a/command/column.md +++ b/command/column.md @@ -26,6 +26,8 @@ file(可选),当没有指定文件时,默认会从标准输入读取, -s, --separator 指定识别表格的分隔符 -o, --output-separator 输出表格的列分隔符,默认为两个空格 -x, --fillrows 在列之前填充行 +-N, --table-columns 添加列名(逗号分隔) +-J --json 格式化为JSON输出(需要配合-N/--table-columns使用) -h, --help 显示此帮助 -V, --version 输出版本信息 ``` @@ -121,3 +123,54 @@ MemReq Metal3 pin 108.215 159.92 RdWrBar Metal3 pin 87.415 159.92 clock Metal3 pin 74.935 159.92 ``` + +- 添加列名并以JSON格式输出 + +```shell +$ column -J -s ":" -N "Username,Password,UID,GID,Gecos,HomeDirectory,Shell" /etc/passwd +{ + "table": [ + { + "username": "root", + "password": "x", + "uid": "0", + "gid": "0", + "gecos": "root", + "homedirectory": "/root", + "shell": "/bin/bash" + },{ + "username": "daemon", + "password": "x", + "uid": "1", + "gid": "1", + "gecos": "daemon", + "homedirectory": "/usr/sbin", + "shell": "/usr/sbin/nologin" + },{ + "username": "bin", + "password": "x", + "uid": "2", + "gid": "2", + "gecos": "bin", + "homedirectory": "/bin", + "shell": "/usr/sbin/nologin" + },{ + "username": "sys", + "password": "x", + "uid": "3", + "gid": "3", + "gecos": "sys", + "homedirectory": "/dev", + "shell": "/usr/sbin/nologin" + },{ + "username": "sync", + "password": "x", + "uid": "4", + "gid": "65534", + "gecos": "sync", + "homedirectory": "/bin", + "shell": "/bin/sync" + } + ] +} +``` diff --git a/template/contributors.ejs b/template/contributors.ejs index 77ec8c5d696..65bfe00654f 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -18,45 +18,46 @@ Zijing Zhang Fubin Zhang __FresHmaN -dulltackle -ernest 谈笑风生间 +ernest +dulltackle zyy2477 -rgshare -loverainye -lavaicer -YEUNGCHIE SteveLauC +YEUNGCHIE MioMuse James Wang +lavaicer +loverainye +rgshare Qliangw -Wang Yujia -alfred 沙漠之子 +Wang Yujia Shell xhal will VVatt gggwvg -Dazhuangw -Alterem -YH -Xrtero -Xingwen Zhang -Shan Chenyu -RichardLCD -Pan, Wen-Ming -Jeremy2214 +alfred +duzhuoshanwai +Ein Verne BingCoke FunKeen -Ein Verne -lewis1573 -leo -kid1412621 -kassadin -juemuren4449 +Jeremy2214 +Pan, Wen-Ming +QinShower +RichardLCD +Shan Chenyu +Xingwen Zhang +Xrtero +YH +Alterem +Dazhuangw jqz3.tech -Forever121 +juemuren4449 +kassadin +kid1412621 +leo +lewis1573 linuxwd Ricardowang cole @@ -65,55 +66,54 @@ noodles2hg nsnans oliver -cxalc -dayday -Deny -dongpohezui -duzhuoshanwai -ecjtusbs -gang.yang -gedune -gesty -ghy -githubwxz -gcluffy -hotdogc1017 -huangyao -hululu1068 jcdj666 -七朔 -孤城落寞 -尘埃 -Wei Xu -Loofra -扶苏如是 -ReZero -极简XksA -移动的红烧肉 -继刚 -老犁 -Kyofin -谢民皆 -远方 -bycs +hululu1068 +huangyao +hotdogc1017 +gcluffy +githubwxz +ghy +gesty +gedune +gang.yang +ecjtusbs +dongpohezui +Deny +dayday +cxalc +Q.Ben Zheng Yidan Wang -rexlin600 -sfwwslm -shc -shuangcui -snovey -tangke -tutianyu101 -UniqueDing -weibk -Lingfeng Wang -yanyx -zjlovezj -zodiac -zoomdong -zuixin369 +bycs +远方 +谢民皆 +Kyofin +老犁 +继刚 +移动的红烧肉 +极简XksA +ReZero +扶苏如是 +Loofra +Wei Xu +尘埃 +孤城落寞 +七朔 zyimm -Q.Ben Zheng +zuixin369 +zoomdong +zodiac +zjlovezj +yanyx +Lingfeng Wang +weibk +UniqueDing +tutianyu101 +tangke +snovey +shuangcui +shc +sfwwslm +rexlin600 Mystic MinsonLee Marnm @@ -141,9 +141,10 @@ Danny DaYangtuo247 Cui Yang -Azroy +azroy Alan 0x_000 +Forever121 chaofan c2ch brinkqiang @@ -173,8 +174,7 @@ Rocher Robigus Rining Wu -Ray Yee -QinShower +Ray Yee

数据来源于 GitHub Contributors,使用action-contributors创建。 From 2507c01aefb7b642ffbd29a2eee99a7d452183d7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 11 Jan 2025 03:08:24 +0000 Subject: [PATCH 1079/1126] doc: update README.md. --- README.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 79063b9841c..fc680067304 100644 --- a/README.md +++ b/README.md @@ -312,24 +312,23 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. ernest dulltackle zyy2477 +rgshare +loverainye SteveLauC YEUNGCHIE +lavaicer MioMuse James Wang -lavaicer -loverainye -rgshare -Qliangw +Ein Verne +gggwvg +VVatt +will +xhal +Shell 沙漠之子 +Qliangw Wang Yujia -Shell -xhal -will -VVatt -gggwvg alfred -duzhuoshanwai -Ein Verne BingCoke FunKeen Jeremy2214 @@ -367,11 +366,11 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. gedune gang.yang ecjtusbs +duzhuoshanwai dongpohezui Deny dayday cxalc -Q.Ben Zheng Yidan Wang bycs 远方 @@ -404,6 +403,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. shc sfwwslm rexlin600 +Q.Ben Zheng Mystic MinsonLee Marnm From b8469913bda874ad4e6565feeb82b03a5123be22 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 11 Jan 2025 03:08:24 +0000 Subject: [PATCH 1080/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index 65bfe00654f..6baa3744322 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -22,24 +22,23 @@ ernest dulltackle zyy2477 +rgshare +loverainye SteveLauC YEUNGCHIE +lavaicer MioMuse James Wang -lavaicer -loverainye -rgshare -Qliangw +Ein Verne +gggwvg +VVatt +will +xhal +Shell 沙漠之子 +Qliangw Wang Yujia -Shell -xhal -will -VVatt -gggwvg alfred -duzhuoshanwai -Ein Verne BingCoke FunKeen Jeremy2214 @@ -77,11 +76,11 @@ gedune gang.yang ecjtusbs +duzhuoshanwai dongpohezui Deny dayday cxalc -Q.Ben Zheng Yidan Wang bycs 远方 @@ -114,6 +113,7 @@ shc sfwwslm rexlin600 +Q.Ben Zheng Mystic MinsonLee Marnm From 025cc0024d82a286a8a23e6f321c54df23f96d48 Mon Sep 17 00:00:00 2001 From: Shan Chenyu <103872353+ischenyu@users.noreply.github.com> Date: Sat, 1 Feb 2025 20:05:37 +0800 Subject: [PATCH 1081/1126] doc: Update README.md (#631) Replaced the expired domain name --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fc680067304..e7e400ce4c2 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ **推荐使用的镜像 web 版本** -[**`linuxsearch.largeinfo.cc`**](http://linuxsearch.largeinfo.cc),[**`srebro.cn`**](https://linux.srebro.cn/),[**`getaifun.com`**](https://getaifun.com/linux),[**`linux.devonline.net`**](http://linux.devonline.net/),[**`man.zch.ooo`**](https://man.zch.ooo/),[**`linux.mmoke.com`**](https://linux.mmoke.com),[**`bqrdh.com`**](https://tools.bqrdh.com/linux-command/),[**`linux.zyimm.com`**](http://linux.zyimm.com/),[**`linux.vovuo.com`**](https://linux.vovuo.com/),[`linux.liguiying.cn`](https://linux.liguiying.cn/), [`renye.net`](https://renye.net/), [`diqi.org`](https://diqi.org/),[`linux.alistnas.xyz`](https://linux.alistnas.xyz/),[`nenufm.com`](https://www.nenufm.com/linux-command/) +[**`linuxsearch.largeinfo.cc`**](http://linuxsearch.largeinfo.cc),[**`srebro.cn`**](https://linux.srebro.cn/),[**`getaifun.com`**](https://getaifun.com/linux),[**`linux.devonline.net`**](http://linux.devonline.net/),[**`man.zch.ooo`**](https://man.zch.ooo/),[**`linux.mmoke.com`**](https://linux.mmoke.com),[**`bqrdh.com`**](https://tools.bqrdh.com/linux-command/),[**`linux.zyimm.com`**](http://linux.zyimm.com/),[**`linux.vovuo.com`**](https://linux.vovuo.com/),[`linux.liguiying.cn`](https://linux.liguiying.cn/), [`renye.net`](https://renye.net/), [`diqi.org`](https://diqi.org/),[`linux.alistnas.top`](https://linux.alistnas.top/),[`nenufm.com`](https://www.nenufm.com/linux-command/) **其它 web 版本** From 5e883e0dd3f2dca3325c0741d2855cc27dcae21b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 1 Feb 2025 12:06:10 +0000 Subject: [PATCH 1082/1126] doc: update README.md. --- README.md | 62 +++++++++++++++++++++++++++---------------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index e7e400ce4c2..9de0b9d1ce2 100644 --- a/README.md +++ b/README.md @@ -312,41 +312,42 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. ernest dulltackle zyy2477 -rgshare -loverainye SteveLauC -YEUNGCHIE -lavaicer MioMuse +Shan Chenyu James Wang -Ein Verne -gggwvg -VVatt -will -xhal -Shell -沙漠之子 +YEUNGCHIE +lavaicer +loverainye +rgshare Qliangw Wang Yujia +沙漠之子 alfred -BingCoke -FunKeen -Jeremy2214 -Pan, Wen-Ming -QinShower -RichardLCD -Shan Chenyu -Xingwen Zhang -Xrtero -YH -Alterem +Shell +xhal +will +VVatt +gggwvg +duzhuoshanwai Dazhuangw -jqz3.tech -juemuren4449 -kassadin -kid1412621 -leo +Alterem +YH +Xrtero +Xingwen Zhang +RichardLCD +QinShower +Pan, Wen-Ming +Jeremy2214 +FunKeen +BingCoke +Ein Verne lewis1573 +leo +kid1412621 +kassadin +juemuren4449 +jqz3.tech linuxwd Ricardowang cole @@ -366,11 +367,11 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. gedune gang.yang ecjtusbs -duzhuoshanwai dongpohezui Deny dayday cxalc +Q.Ben Zheng Yidan Wang bycs 远方 @@ -403,7 +404,6 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. shc sfwwslm rexlin600 -Q.Ben Zheng Mystic MinsonLee Marnm @@ -423,11 +423,11 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Jack Huntout Zhang HighScorePlayer -Herbert8 +重劍無鋒 Guiying Li Frankie Divenire -Derek +Derek Danny DaYangtuo247 Cui Yang From 9585b89cda8f292b898a0d8135dc7aca5d303541 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 1 Feb 2025 12:06:11 +0000 Subject: [PATCH 1083/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 62 +++++++++++++++++++-------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index 6baa3744322..9abf086e703 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -22,41 +22,42 @@ ernest dulltackle zyy2477 -rgshare -loverainye SteveLauC -YEUNGCHIE -lavaicer MioMuse +Shan Chenyu James Wang -Ein Verne -gggwvg -VVatt -will -xhal -Shell -沙漠之子 +YEUNGCHIE +lavaicer +loverainye +rgshare Qliangw Wang Yujia +沙漠之子 alfred -BingCoke -FunKeen -Jeremy2214 -Pan, Wen-Ming -QinShower -RichardLCD -Shan Chenyu -Xingwen Zhang -Xrtero -YH -Alterem +Shell +xhal +will +VVatt +gggwvg +duzhuoshanwai Dazhuangw -jqz3.tech -juemuren4449 -kassadin -kid1412621 -leo +Alterem +YH +Xrtero +Xingwen Zhang +RichardLCD +QinShower +Pan, Wen-Ming +Jeremy2214 +FunKeen +BingCoke +Ein Verne lewis1573 +leo +kid1412621 +kassadin +juemuren4449 +jqz3.tech linuxwd Ricardowang cole @@ -76,11 +77,11 @@ gedune gang.yang ecjtusbs -duzhuoshanwai dongpohezui Deny dayday cxalc +Q.Ben Zheng Yidan Wang bycs 远方 @@ -113,7 +114,6 @@ shc sfwwslm rexlin600 -Q.Ben Zheng Mystic MinsonLee Marnm @@ -133,11 +133,11 @@ Jack Huntout Zhang HighScorePlayer -Herbert8 +重劍無鋒 Guiying Li Frankie Divenire -Derek +Derek Danny DaYangtuo247 Cui Yang From 87a3efdb86e115c0682604b59be0e7d6e3c2659b Mon Sep 17 00:00:00 2001 From: waiwai <131680154+waiwai24@users.noreply.github.com> Date: Mon, 10 Feb 2025 09:09:59 +0800 Subject: [PATCH 1084/1126] Add nstat.md and updata Readme.md (#632) * Update README.md * Update README.md * add nstat.md --- README.md | 2 +- command/nstat.md | 137 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 138 insertions(+), 1 deletion(-) create mode 100644 command/nstat.md diff --git a/README.md b/README.md index 9de0b9d1ce2..c2618a74d4a 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ [![jsdelivr cdn](https://data.jsdelivr.com/v1/package/npm/linux-command/badge)](https://www.jsdelivr.com/package/npm/linux-command) [![Docker Image Size (latest by date)](https://img.shields.io/docker/image-size/wcjiang/linux-command?logo=docker)](https://hub.docker.com/r/wcjiang/linux-command) -当前仓库搜集了 580 多个 Linux 命令,是一个非盈利性的仓库,生成了一个 web 网站方便使用,目前网站没有任何广告,内容包含 Linux 命令手册、详解、学习,内容来自网络和网友的补充,非常值得收藏的 Linux 命令速查手册。版权归属原作者,对任何法律问题及风险不承担任何责任,没有任何商业目的,如果认为侵犯了您的版权,请来信告知。我不能完全保证内容的正确性。通过使用本站内容带来的风险与我无关。当使用本站时,代表您已接受了本站的使用条款和隐私条款。 +当前仓库搜集了 600 多个 Linux 命令,是一个非盈利性的仓库,生成了一个 web 网站方便使用,目前网站没有任何广告,内容包含 Linux 命令手册、详解、学习,内容来自网络和网友的补充,非常值得收藏的 Linux 命令速查手册。版权归属原作者,对任何法律问题及风险不承担任何责任,没有任何商业目的,如果认为侵犯了您的版权,请来信告知。我不能完全保证内容的正确性。通过使用本站内容带来的风险与我无关。当使用本站时,代表您已接受了本站的使用条款和隐私条款。 ## Web 版本 diff --git a/command/nstat.md b/command/nstat.md new file mode 100644 index 00000000000..45d0c42cd7b --- /dev/null +++ b/command/nstat.md @@ -0,0 +1,137 @@ +nstat +=== + +nstat 是一个简单的监视内核的 SNMP 计数器和网络接口状态的实用工具。 + +## 补充说明 + +大多数命令行用户都熟悉 netstat ,这是 net-tools 软件包中的命令。目前新版本中 net-tools 软件包几乎完全被弃用,取而代之的是 ip 命令套件,而 nstat 属于新软件包。 + +### 语法 + +```s +nstat [OPTION] [ PATTERN [ PATTERN ] ] +``` + +### 选项 + +```shell +-h:显示帮助信息; +-V:显示指令版本信息; +-z:转储零计数器。默认情况下不显示它们; +-r:清零历史统计; +-n:不显示任何内容,仅更新历史; +-a:显示计数器的绝对值; +-d:以守护进程模式运行并收集统计数据 +-s:不更新历史; +-j:JSON格式输出。 +``` + +### 实例 + +直接输入以查询网络接口状态,以下展示了 IPv4,IPv6,TCP,UDP,ICMP 的统计数据: + +```shell +nstat +#kernel +IpInReceives 769152 0.0 +IpInAddrErrors 1 0.0 +IpInDelivers 769146 0.0 +IpOutRequests 764236 0.0 +IpOutDiscards 20 0.0 +IpOutNoRoutes 1 0.0 +IcmpInMsgs 92 0.0 +IcmpInDestUnreachs 92 0.0 +IcmpOutMsgs 94 0.0 +IcmpOutDestUnreachs 94 0.0 +IcmpMsgInType3 92 0.0 +IcmpMsgOutType3 94 0.0 +TcpActiveOpens 1786 0.0 +TcpPassiveOpens 142 0.0 +TcpAttemptFails 11 0.0 +TcpEstabResets 72 0.0 +TcpInSegs 756827 0.0 +TcpOutSegs 802908 0.0 +TcpRetransSegs 767 0.0 +TcpOutRsts 702 0.0 +UdpInDatagrams 12075 0.0 +UdpNoPorts 82 0.0 +UdpOutDatagrams 7045 0.0 +UdpIgnoredMulti 70 0.0 +Ip6InReceives 5005 0.0 +Ip6InDelivers 5005 0.0 +Ip6OutRequests 131 0.0 +Ip6OutDiscards 2 0.0 +Ip6OutNoRoutes 959 0.0 +Ip6InMcastPkts 4999 0.0 +Ip6OutMcastPkts 125 0.0 +Ip6InOctets 797462 0.0 +Ip6OutOctets 16421 0.0 +Ip6InMcastOctets 797030 0.0 +Ip6OutMcastOctets 15949 0.0 +Ip6InNoECTPkts 5005 0.0 +Icmp6InMsgs 3 0.0 +Icmp6OutMsgs 51 0.0 +Icmp6InNeighborAdvertisements 1 0.0 +Icmp6InMLDv2Reports 2 0.0 +Icmp6OutRouterSolicits 11 0.0 +Icmp6OutNeighborSolicits 4 0.0 +Icmp6OutMLDv2Reports 36 0.0 +Icmp6InType136 1 0.0 +Icmp6InType143 2 0.0 +Icmp6OutType133 11 0.0 +Icmp6OutType135 4 0.0 +Icmp6OutType143 36 0.0 +Udp6InDatagrams 4998 0.0 +Udp6OutDatagrams 76 0.0 +TcpExtTW 385 0.0 +TcpExtPAWSEstab 1 0.0 +TcpExtDelayedACKs 37133 0.0 +TcpExtDelayedACKLocked 57 0.0 +TcpExtDelayedACKLost 456 0.0 +TcpExtTCPHPHits 417717 0.0 +TcpExtTCPPureAcks 34186 0.0 +TcpExtTCPHPAcks 222980 0.0 +TcpExtTCPSACKReorder 1 0.0 +TcpExtTCPLossUndo 194 0.0 +TcpExtTCPLostRetransmit 169 0.0 +TcpExtTCPSlowStartRetrans 1 0.0 +TcpExtTCPTimeouts 494 0.0 +TcpExtTCPLossProbes 309 0.0 +TcpExtTCPBacklogCoalesce 571 0.0 +TcpExtTCPDSACKOldSent 281 0.0 +TcpExtTCPDSACKRecv 281 0.0 +TcpExtTCPAbortOnData 13 0.0 +TcpExtTCPAbortOnClose 30 0.0 +TcpExtTCPDSACKIgnoredOld 1 0.0 +TcpExtTCPDSACKIgnoredNoUndo 258 0.0 +TcpExtTCPSackShiftFallback 1 0.0 +TcpExtTCPRcvCoalesce 18314 0.0 +TcpExtTCPFastOpenActiveFail 2 0.0 +TcpExtTCPSpuriousRtxHostQueues 11 0.0 +TcpExtTCPAutoCorking 1684 0.0 +TcpExtTCPFromZeroWindowAdv 2 0.0 +TcpExtTCPToZeroWindowAdv 2 0.0 +TcpExtTCPSynRetrans 479 0.0 +TcpExtTCPOrigDataSent 359814 0.0 +TcpExtTCPHystartTrainDetect 13 0.0 +TcpExtTCPHystartTrainCwnd 550 0.0 +TcpExtTCPKeepAlive 18 0.0 +TcpExtTCPDelivered 361695 0.0 +TcpExtTCPZeroWindowDrop 1 0.0 +TcpExtTcpTimeoutRehash 494 0.0 +TcpExtTcpDuplicateDataRehash 2 0.0 +TcpExtTCPDSACKRecvSegs 281 0.0 +IpExtInNoRoutes 3 0.0 +IpExtInMcastPkts 5392 0.0 +IpExtOutMcastPkts 221 0.0 +IpExtInBcastPkts 70 0.0 +IpExtOutBcastPkts 10 0.0 +IpExtInOctets 2100280442 0.0 +IpExtOutOctets 226760631 0.0 +IpExtInMcastOctets 746608 0.0 +IpExtOutMcastOctets 27565 0.0 +IpExtInBcastOctets 5674 0.0 +IpExtOutBcastOctets 778 0.0 +IpExtInNoECTPkts 1885871 0.0 +``` \ No newline at end of file From b066d7a2dad799696c7c2125a9998c23d094be4e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 10 Feb 2025 01:10:31 +0000 Subject: [PATCH 1085/1126] doc: update README.md. --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index c2618a74d4a..8910741d6c7 100644 --- a/README.md +++ b/README.md @@ -342,13 +342,12 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. FunKeen BingCoke Ein Verne +linuxwd lewis1573 leo kid1412621 kassadin juemuren4449 -jqz3.tech -linuxwd Ricardowang cole dufu @@ -356,6 +355,8 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. noodles2hg nsnans oliver +rexlin600 +jqz3.tech jcdj666 hululu1068 huangyao @@ -371,7 +372,6 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Deny dayday cxalc -Q.Ben Zheng Yidan Wang bycs 远方 @@ -396,6 +396,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. yanyx Lingfeng Wang weibk +waiwai UniqueDing tutianyu101 tangke @@ -403,7 +404,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. shuangcui shc sfwwslm -rexlin600 +Q.Ben Zheng Mystic MinsonLee Marnm From d0a57388a37a87afc719ed9cedcc58fd3a1625f1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 10 Feb 2025 01:10:31 +0000 Subject: [PATCH 1086/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index 9abf086e703..df27ac528f9 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -52,13 +52,12 @@ FunKeen BingCoke Ein Verne +linuxwd lewis1573 leo kid1412621 kassadin juemuren4449 -jqz3.tech -linuxwd Ricardowang cole dufu @@ -66,6 +65,8 @@ noodles2hg nsnans oliver +rexlin600 +jqz3.tech jcdj666 hululu1068 huangyao @@ -81,7 +82,6 @@ Deny dayday cxalc -Q.Ben Zheng Yidan Wang bycs 远方 @@ -106,6 +106,7 @@ yanyx Lingfeng Wang weibk +waiwai UniqueDing tutianyu101 tangke @@ -113,7 +114,7 @@ shuangcui shc sfwwslm -rexlin600 +Q.Ben Zheng Mystic MinsonLee Marnm From 4ce13f3cd8284ee782f0467fbd1491aeb34c8593 Mon Sep 17 00:00:00 2001 From: Jelly <141554249+JellyObjeck@users.noreply.github.com> Date: Mon, 10 Feb 2025 18:31:43 +0800 Subject: [PATCH 1087/1126] doc: Update vi.md (#633) --- command/vi.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/command/vi.md b/command/vi.md index 63ce4a16539..7536619c178 100644 --- a/command/vi.md +++ b/command/vi.md @@ -99,6 +99,9 @@ vi和ex编辑器的功能是相同的,二者的主要区别是用户界面。 则从文件第一行至文件末尾($)将大写I全部替换成小写i。vi编辑器的三种工作方式之间的转换如图所示。 !vi +【查看行号】 +在 vi 或 vim 编辑器中,按 Esc,然后输入: +:set number From 60d460c5b30284749424d968c078fb9d97494188 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 10 Feb 2025 10:32:09 +0000 Subject: [PATCH 1088/1126] doc: update README.md. --- README.md | 97 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 49 insertions(+), 48 deletions(-) diff --git a/README.md b/README.md index 8910741d6c7..67ab431e46e 100644 --- a/README.md +++ b/README.md @@ -348,6 +348,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. kid1412621 kassadin juemuren4449 +Forever121 Ricardowang cole dufu @@ -356,55 +357,54 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. nsnans oliver rexlin600 -jqz3.tech -jcdj666 -hululu1068 -huangyao -hotdogc1017 -gcluffy -githubwxz -ghy -gesty -gedune -gang.yang -ecjtusbs -dongpohezui -Deny -dayday cxalc -Yidan Wang -bycs -远方 -谢民皆 -Kyofin -老犁 -继刚 -移动的红烧肉 -极简XksA -ReZero -扶苏如是 -Loofra -Wei Xu -尘埃 -孤城落寞 +dayday +Deny +dongpohezui +ecjtusbs +gang.yang +gedune +gesty +ghy +githubwxz +gcluffy +hotdogc1017 +huangyao +hululu1068 +jcdj666 +jqz3.tech 七朔 -zyimm -zuixin369 -zoomdong -zodiac -zjlovezj -yanyx -Lingfeng Wang -weibk -waiwai -UniqueDing -tutianyu101 -tangke -snovey -shuangcui -shc +孤城落寞 +尘埃 +Wei Xu +Loofra +扶苏如是 +ReZero +极简XksA +移动的红烧肉 +继刚 +老犁 +Kyofin +谢民皆 +远方 +bycs +Yidan Wang sfwwslm -Q.Ben Zheng +shc +shuangcui +snovey +tangke +tutianyu101 +UniqueDing +waiwai +weibk +Lingfeng Wang +yanyx +zjlovezj +zodiac +zoomdong +zuixin369 +zyimm Mystic MinsonLee Marnm @@ -420,6 +420,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. LaudOak Karl Horky Nexchard +Jelly Jack.A.Black Jack Huntout Zhang @@ -435,7 +436,6 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. azroy Alan 0x_000 -Forever121 chaofan c2ch brinkqiang @@ -465,7 +465,8 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Rocher Robigus Rining Wu -Ray Yee +Ray Yee +Q.Ben Zheng 贡献者列表,由 [contributors](https://github.com/jaywcjlove/github-action-contributors) 自动生成 From 5ff4e61c6d33846c8e0939ed7d65bc07937c6e05 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 10 Feb 2025 10:32:10 +0000 Subject: [PATCH 1089/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 97 ++++++++++++++++++++------------------- 1 file changed, 49 insertions(+), 48 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index df27ac528f9..dab9e0bdc01 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -58,6 +58,7 @@ kid1412621 kassadin juemuren4449 +Forever121 Ricardowang cole dufu @@ -66,55 +67,54 @@ nsnans oliver rexlin600 -jqz3.tech -jcdj666 -hululu1068 -huangyao -hotdogc1017 -gcluffy -githubwxz -ghy -gesty -gedune -gang.yang -ecjtusbs -dongpohezui -Deny -dayday cxalc -Yidan Wang -bycs -远方 -谢民皆 -Kyofin -老犁 -继刚 -移动的红烧肉 -极简XksA -ReZero -扶苏如是 -Loofra -Wei Xu -尘埃 -孤城落寞 +dayday +Deny +dongpohezui +ecjtusbs +gang.yang +gedune +gesty +ghy +githubwxz +gcluffy +hotdogc1017 +huangyao +hululu1068 +jcdj666 +jqz3.tech 七朔 -zyimm -zuixin369 -zoomdong -zodiac -zjlovezj -yanyx -Lingfeng Wang -weibk -waiwai -UniqueDing -tutianyu101 -tangke -snovey -shuangcui -shc +孤城落寞 +尘埃 +Wei Xu +Loofra +扶苏如是 +ReZero +极简XksA +移动的红烧肉 +继刚 +老犁 +Kyofin +谢民皆 +远方 +bycs +Yidan Wang sfwwslm -Q.Ben Zheng +shc +shuangcui +snovey +tangke +tutianyu101 +UniqueDing +waiwai +weibk +Lingfeng Wang +yanyx +zjlovezj +zodiac +zoomdong +zuixin369 +zyimm Mystic MinsonLee Marnm @@ -130,6 +130,7 @@ LaudOak Karl Horky Nexchard +Jelly Jack.A.Black Jack Huntout Zhang @@ -145,7 +146,6 @@ azroy Alan 0x_000 -Forever121 chaofan c2ch brinkqiang @@ -175,7 +175,8 @@ Rocher Robigus Rining Wu -Ray Yee +Ray Yee +Q.Ben Zheng

数据来源于 GitHub Contributors,使用action-contributors创建。 From a4a9cdaf17a21cb403eba356230ed4b11283d379 Mon Sep 17 00:00:00 2001 From: Xrtero <55886907+Xrtero@users.noreply.github.com> Date: Tue, 18 Feb 2025 13:39:39 +0800 Subject: [PATCH 1090/1126] doc: Update pacman.md (#634) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit update(doc):添加pacman的一些示例 --- command/pacman.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/command/pacman.md b/command/pacman.md index 83b953f2954..60ce0307a04 100644 --- a/command/pacman.md +++ b/command/pacman.md @@ -10,15 +10,20 @@ Arch Linux 系统及其衍生系统中默认使用的包管理器 ## 实例 ### 安装软件包 - +官方软件包 ```bash pacman -S p7zip ``` -也可以安装一个软件包组 +非官方软件包(用户制作) +```bash +yay -S package_name1 package_name2 ... +``` + +### 查询软件包 ```bash -pacman -S gnome +pacman -Ss package_name1 package_name2 ... ``` ### 列出所有软件包 From e5c4b39384a16448fe358d658ed63e2129f7e055 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 18 Feb 2025 05:40:28 +0000 Subject: [PATCH 1091/1126] doc: update README.md. --- README.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 67ab431e46e..cb037d1d429 100644 --- a/README.md +++ b/README.md @@ -312,28 +312,28 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. ernest dulltackle zyy2477 +rgshare +loverainye +lavaicer +YEUNGCHIE SteveLauC MioMuse -Shan Chenyu +Xrtero James Wang -YEUNGCHIE -lavaicer -loverainye -rgshare +Shan Chenyu +duzhuoshanwai +gggwvg +VVatt +will +xhal +Shell +沙漠之子 Qliangw Wang Yujia -沙漠之子 alfred -Shell -xhal -will -VVatt -gggwvg -duzhuoshanwai Dazhuangw Alterem YH -Xrtero Xingwen Zhang RichardLCD QinShower From 86cb964667a680019c456c71a45eed09889115e2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 18 Feb 2025 05:40:29 +0000 Subject: [PATCH 1092/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index dab9e0bdc01..61f29d0860f 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -22,28 +22,28 @@ ernest dulltackle zyy2477 +rgshare +loverainye +lavaicer +YEUNGCHIE SteveLauC MioMuse -Shan Chenyu +Xrtero James Wang -YEUNGCHIE -lavaicer -loverainye -rgshare +Shan Chenyu +duzhuoshanwai +gggwvg +VVatt +will +xhal +Shell +沙漠之子 Qliangw Wang Yujia -沙漠之子 alfred -Shell -xhal -will -VVatt -gggwvg -duzhuoshanwai Dazhuangw Alterem YH -Xrtero Xingwen Zhang RichardLCD QinShower From 6fcaf53f18960d4138c3d4173b0a79d81fab07fb Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Fri, 21 Feb 2025 08:44:04 +0800 Subject: [PATCH 1093/1126] released v1.20.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8bba58fe3ac..a5b637f755c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "linux-command", - "version": "1.19.1", + "version": "1.20.0", "description": "Linux Command", "homepage": "https://jaywcjlove.github.io/linux-command/", "main": "dist/data.json", From 4ce1d2da7ad35afac5aefe2b0a072a89979536c5 Mon Sep 17 00:00:00 2001 From: Github1977 <68886053+li7355608@users.noreply.github.com> Date: Mon, 24 Feb 2025 11:58:57 +0800 Subject: [PATCH 1094/1126] faet: add ufw.md (#636) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Create ufw.md 新增ufw命令 * Update ufw.md 修改标题获取 * Update ufw.md 规范格式 --- command/ufw.md | 104 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 command/ufw.md diff --git a/command/ufw.md b/command/ufw.md new file mode 100644 index 00000000000..43ce91a1289 --- /dev/null +++ b/command/ufw.md @@ -0,0 +1,104 @@ +ufw +=== + +ubuntu防火墙管理工具 + +## 概要 + +```shell +sudo ufw [选项] [规则/命令] +``` + +## 用途 + +- 管理Ubuntu系统防火墙规则,简化`iptables`操作。 +- 启用或禁用防火墙,查看当前防火墙状态。 +- 快速配置允许/拒绝端口、服务或特定IP的访问。 + +## 参数 + +### 常用操作命令 + +- `enable`: 启用防火墙并设置开机自启。 +- `disable`: 关闭防火墙。 +- `reload`: 重新加载防火墙规则(不中断现有连接)。 +- `reset`: 重置所有规则到初始状态。 +- `allow `: 允许指定规则(如端口、服务)。 +- `deny `: 拒绝指定规则。 +- `status`: 显示防火墙状态和规则列表。 + +### 规则格式 + +- ``: 端口号(如 `22`、`80/tcp`)。 +- ``: 协议类型(`tcp` 或 `udp`)。 +- `comment `: 为规则添加注释(需配合 `allow`/`deny` 使用)。 + +### 选项 + +- `--dry-run`: 仅显示规则变更,不实际应用。 + +------ + +## 返回值 + +- 成功执行返回 `0`。 +- 错误或无效参数返回非零值。 + +------ + +## 示例 + +### 基础操作 + +``` +# 启用防火墙 +sudo ufw enable + +# 关闭防火墙 +sudo ufw disable + +# 查看防火墙状态 +sudo ufw status +``` + +### 规则配置 + +``` +# 允许SSH默认端口(22/tcp) +sudo ufw allow ssh + +# 允许TCP协议的8080端口并添加注释 +sudo ufw allow 8080/tcp comment "Web Server" + +# 拒绝来自192.168.1.5的访问 +sudo ufw deny from 192.168.1.5 + +# 拒绝UDP协议的53端口 +sudo ufw deny 53/udp +``` + +### 高级操作 + +``` +# 显示带编号的规则列表(便于删除) +sudo ufw status numbered + +# 删除第3条规则 +sudo ufw delete 3 + +# 重置所有规则 +sudo ufw reset +``` + +------ + +## 注意 + +1. **权限要求**:需使用 `sudo` 执行命令。 +2. **默认策略**:首次启用时默认阻止所有入站流量,允许所有出站流量。 +3. **规则优先级**: + 规则按顺序匹配,先拒绝后允许可能导致冲突 +4. **日志记录**: + 可通过 `sudo ufw logging on` 启用日志,日志路径为 `/var/log/ufw.log` +5. **服务名称支持**: + 支持 `/etc/services` 中定义的服务名(如 `http`、`ssh`) From 8cf952e395224f60a4015b11993675191891736f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 24 Feb 2025 03:59:41 +0000 Subject: [PATCH 1095/1126] doc: update README.md. --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index cb037d1d429..27d623d80a7 100644 --- a/README.md +++ b/README.md @@ -345,7 +345,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. linuxwd lewis1573 leo -kid1412621 +NanoNova kassadin juemuren4449 Forever121 @@ -405,7 +405,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. zoomdong zuixin369 zyimm -Mystic +chaofan MinsonLee Marnm mwei @@ -427,6 +427,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. HighScorePlayer 重劍無鋒 Guiying Li +Github1977 Frankie Divenire Derek @@ -436,7 +437,6 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. azroy Alan 0x_000 -chaofan c2ch brinkqiang bestlaw66 @@ -466,7 +466,8 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Robigus Rining Wu Ray Yee -Q.Ben Zheng +Q.Ben Zheng +Mystic 贡献者列表,由 [contributors](https://github.com/jaywcjlove/github-action-contributors) 自动生成 From 4d8d6c86913c43f6469a2fae55f3b20a14b3799d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 24 Feb 2025 03:59:42 +0000 Subject: [PATCH 1096/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index 61f29d0860f..220d95ff8ef 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -55,7 +55,7 @@ linuxwd lewis1573 leo -kid1412621 +NanoNova kassadin juemuren4449 Forever121 @@ -115,7 +115,7 @@ zoomdong zuixin369 zyimm -Mystic +chaofan MinsonLee Marnm mwei @@ -137,6 +137,7 @@ HighScorePlayer 重劍無鋒 Guiying Li +Github1977 Frankie Divenire Derek @@ -146,7 +147,6 @@ azroy Alan 0x_000 -chaofan c2ch brinkqiang bestlaw66 @@ -176,7 +176,8 @@ Robigus Rining Wu Ray Yee -Q.Ben Zheng +Q.Ben Zheng +Mystic

数据来源于 GitHub Contributors,使用action-contributors创建。 From 74e3582ea24f489605f3dbd066b3ecfdd78cd1e6 Mon Sep 17 00:00:00 2001 From: hanwei Date: Tue, 25 Feb 2025 12:06:53 +0800 Subject: [PATCH 1097/1126] doc: Update vi.md (#637) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 有些符号是全角中文,应该改为半角英文 --- command/vi.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/command/vi.md b/command/vi.md index 7536619c178..6f78d225eab 100644 --- a/command/vi.md +++ b/command/vi.md @@ -28,7 +28,7 @@ nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为 p:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的下方; P:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的上方; /字符串:文本查找操作,用于从当前光标所在位置开始向文件尾部查找指定字符串的内容,查找的字符串会被加亮显示; -?字符串:文本查找操作,用于从当前光标所在位置开始向文件头部查找指定字符串的内容,查找的字符串会被加亮显示; +?字符串:文本查找操作,用于从当前光标所在位置开始向文件头部查找指定字符串的内容,查找的字符串会被加亮显示; a,bs/F/T:替换文本操作,用于在第a行到第b行之间,将F字符串换成T字符串。其中,“s/”表示进行替换操作; a:在当前字符后添加文本; A:在行末添加文本; @@ -38,9 +38,9 @@ o:在当前行后面插入一空行; O:在当前行前面插入一空行; :wq:在命令模式下,执行存盘退出操作; :w:在命令模式下,执行存盘操作; -:w!:在命令模式下,执行强制存盘操作; +:w!:在命令模式下,执行强制存盘操作; :q:在命令模式下,执行退出vi操作; -:q!:在命令模式下,执行强制退出vi操作; +:q!:在命令模式下,执行强制退出vi操作; :e文件名:在命令模式下,打开并编辑指定名称的文件; :n:在命令模式下,如果同时打开多个文件,则继续编辑下一个文件; :f:在命令模式下,用于显示当前的文件名、光标所在行的行号以及显示比例; From 9b2c3111d23d799b8007f09b5d5df659429aaa5e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 25 Feb 2025 04:07:19 +0000 Subject: [PATCH 1098/1126] doc: update README.md. --- README.md | 66 +++++++++++++++++++++++++++---------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 27d623d80a7..0e221593088 100644 --- a/README.md +++ b/README.md @@ -321,34 +321,34 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Xrtero James Wang Shan Chenyu -duzhuoshanwai +BingCoke gggwvg VVatt will xhal Shell 沙漠之子 -Qliangw -Wang Yujia alfred +Wang Yujia +Qliangw +Ein Verne +FunKeen +Jeremy2214 +Pan, Wen-Ming +QinShower +duzhuoshanwai Dazhuangw Alterem -YH -Xingwen Zhang RichardLCD -QinShower -Pan, Wen-Ming -Jeremy2214 -FunKeen -BingCoke -Ein Verne -linuxwd -lewis1573 -leo -NanoNova -kassadin +Xingwen Zhang +YH +jqz3.tech juemuren4449 -Forever121 +kassadin +NanoNova +leo +lewis1573 +linuxwd Ricardowang cole dufu @@ -356,23 +356,23 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. noodles2hg nsnans oliver -rexlin600 -cxalc -dayday -Deny -dongpohezui -ecjtusbs -gang.yang -gedune -gesty -ghy -githubwxz -gcluffy -hotdogc1017 -huangyao -hululu1068 jcdj666 -jqz3.tech +hululu1068 +huangyao +hotdogc1017 +gcluffy +githubwxz +ghy +gesty +gedune +gang.yang +ecjtusbs +dongpohezui +Deny +dayday +cxalc +Forever121 +rexlin600 七朔 孤城落寞 尘埃 From b15713b8677cdb7ef12c0fc809bb9283c9776d4d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 25 Feb 2025 04:07:20 +0000 Subject: [PATCH 1099/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 66 +++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index 220d95ff8ef..45f19124345 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -31,34 +31,34 @@ Xrtero James Wang Shan Chenyu -duzhuoshanwai +BingCoke gggwvg VVatt will xhal Shell 沙漠之子 -Qliangw -Wang Yujia alfred +Wang Yujia +Qliangw +Ein Verne +FunKeen +Jeremy2214 +Pan, Wen-Ming +QinShower +duzhuoshanwai Dazhuangw Alterem -YH -Xingwen Zhang RichardLCD -QinShower -Pan, Wen-Ming -Jeremy2214 -FunKeen -BingCoke -Ein Verne -linuxwd -lewis1573 -leo -NanoNova -kassadin +Xingwen Zhang +YH +jqz3.tech juemuren4449 -Forever121 +kassadin +NanoNova +leo +lewis1573 +linuxwd Ricardowang cole dufu @@ -66,23 +66,23 @@ noodles2hg nsnans oliver -rexlin600 -cxalc -dayday -Deny -dongpohezui -ecjtusbs -gang.yang -gedune -gesty -ghy -githubwxz -gcluffy -hotdogc1017 -huangyao -hululu1068 jcdj666 -jqz3.tech +hululu1068 +huangyao +hotdogc1017 +gcluffy +githubwxz +ghy +gesty +gedune +gang.yang +ecjtusbs +dongpohezui +Deny +dayday +cxalc +Forever121 +rexlin600 七朔 孤城落寞 尘埃 From 984f1fa82f797c86b05443cc104b23516c8f59bd Mon Sep 17 00:00:00 2001 From: illmons Date: Mon, 3 Mar 2025 22:27:45 +0800 Subject: [PATCH 1100/1126] doc: update command/losetup.md (#639) --- command/losetup.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/command/losetup.md b/command/losetup.md index 237436c97df..bedaea698b2 100644 --- a/command/losetup.md +++ b/command/losetup.md @@ -45,7 +45,7 @@ losetup [ -d ] loop_device dd if=/dev/zero of=floppy.img bs=512 count=2880 ``` -使用 losetup将磁盘镜像文件虚拟成快设备: +使用 losetup 将磁盘镜像文件虚拟成块设备: ```shell losetup /dev/loop1 floppy.img @@ -57,7 +57,7 @@ losetup /dev/loop1 floppy.img mount /dev/loop0 /tmp ``` -经过上面的三步之后,我们就可以通过/tmp目录,像访问真实快设备一样来访问磁盘镜像文件floppy.img。 +经过上面的三步之后,我们就可以通过/tmp目录,像访问真实块设备一样来访问磁盘镜像文件floppy.img。 卸载loop设备: From 6494d44c0666e69c8da911e87ef3e989b49a92c2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 3 Mar 2025 14:28:21 +0000 Subject: [PATCH 1101/1126] doc: update README.md. --- README.md | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 0e221593088..1188d762b50 100644 --- a/README.md +++ b/README.md @@ -340,8 +340,9 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Dazhuangw Alterem RichardLCD -Xingwen Zhang YH +Xingwen Zhang +Mystic jqz3.tech juemuren4449 kassadin @@ -356,22 +357,22 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. noodles2hg nsnans oliver -jcdj666 -hululu1068 -huangyao -hotdogc1017 -gcluffy -githubwxz -ghy -gesty -gedune -gang.yang -ecjtusbs -dongpohezui -Deny -dayday cxalc -Forever121 +dayday +Deny +dongpohezui +ecjtusbs +gang.yang +gedune +gesty +ghy +githubwxz +hanwei +gcluffy +hotdogc1017 +huangyao +hululu1068 +jcdj666 rexlin600 七朔 孤城落寞 @@ -405,7 +406,6 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. zoomdong zuixin369 zyimm -chaofan MinsonLee Marnm mwei @@ -437,6 +437,8 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. azroy Alan 0x_000 +Forever121 +chaofan c2ch brinkqiang bestlaw66 @@ -466,8 +468,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Robigus Rining Wu Ray Yee -Q.Ben Zheng -Mystic +Q.Ben Zheng 贡献者列表,由 [contributors](https://github.com/jaywcjlove/github-action-contributors) 自动生成 From cea25ecad65a25e368fa359e4e15c8980ebe33d4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 3 Mar 2025 14:28:22 +0000 Subject: [PATCH 1102/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index 45f19124345..0472d7c490c 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -50,8 +50,9 @@ Dazhuangw Alterem RichardLCD -Xingwen Zhang YH +Xingwen Zhang +Mystic jqz3.tech juemuren4449 kassadin @@ -66,22 +67,22 @@ noodles2hg nsnans oliver -jcdj666 -hululu1068 -huangyao -hotdogc1017 -gcluffy -githubwxz -ghy -gesty -gedune -gang.yang -ecjtusbs -dongpohezui -Deny -dayday cxalc -Forever121 +dayday +Deny +dongpohezui +ecjtusbs +gang.yang +gedune +gesty +ghy +githubwxz +hanwei +gcluffy +hotdogc1017 +huangyao +hululu1068 +jcdj666 rexlin600 七朔 孤城落寞 @@ -115,7 +116,6 @@ zoomdong zuixin369 zyimm -chaofan MinsonLee Marnm mwei @@ -147,6 +147,8 @@ azroy Alan 0x_000 +Forever121 +chaofan c2ch brinkqiang bestlaw66 @@ -176,8 +178,7 @@ Robigus Rining Wu Ray Yee -Q.Ben Zheng -Mystic +Q.Ben Zheng

数据来源于 GitHub Contributors,使用action-contributors创建。 From 184faaaac8b4f58fa586d994cc480d40c2a596f3 Mon Sep 17 00:00:00 2001 From: geekeryy Date: Tue, 8 Apr 2025 11:16:41 +0800 Subject: [PATCH 1103/1126] doc: Update README.md (#641) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1188d762b50..d679ce3eae6 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ **推荐使用的镜像 web 版本** -[**`linuxsearch.largeinfo.cc`**](http://linuxsearch.largeinfo.cc),[**`srebro.cn`**](https://linux.srebro.cn/),[**`getaifun.com`**](https://getaifun.com/linux),[**`linux.devonline.net`**](http://linux.devonline.net/),[**`man.zch.ooo`**](https://man.zch.ooo/),[**`linux.mmoke.com`**](https://linux.mmoke.com),[**`bqrdh.com`**](https://tools.bqrdh.com/linux-command/),[**`linux.zyimm.com`**](http://linux.zyimm.com/),[**`linux.vovuo.com`**](https://linux.vovuo.com/),[`linux.liguiying.cn`](https://linux.liguiying.cn/), [`renye.net`](https://renye.net/), [`diqi.org`](https://diqi.org/),[`linux.alistnas.top`](https://linux.alistnas.top/),[`nenufm.com`](https://www.nenufm.com/linux-command/) +[**`linuxsearch.largeinfo.cc`**](http://linuxsearch.largeinfo.cc),[**`srebro.cn`**](https://linux.srebro.cn/),[**`getaifun.com`**](https://getaifun.com/linux),[**`linux.devonline.net`**](http://linux.devonline.net/),[**`man.zch.ooo`**](https://man.zch.ooo/),[**`linux.mmoke.com`**](https://linux.mmoke.com),[**`bqrdh.com`**](https://tools.bqrdh.com/linux-command/),[**`linux.zyimm.com`**](http://linux.zyimm.com/),[**`linux.vovuo.com`**](https://linux.vovuo.com/),[`linux.liguiying.cn`](https://linux.liguiying.cn/), [`renye.net`](https://renye.net/), [`diqi.org`](https://diqi.org/),[`linux.alistnas.top`](https://linux.alistnas.top/),[`nenufm.com`](https://www.nenufm.com/linux-command/), [`linux.jiangyang.online`](https://linux.jiangyang.online/) **其它 web 版本** From 08b80e8206507ba811bda67215f4c01a48a08e36 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 8 Apr 2025 03:17:16 +0000 Subject: [PATCH 1104/1126] doc: update README.md. --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d679ce3eae6..b4e7b0e0605 100644 --- a/README.md +++ b/README.md @@ -342,7 +342,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. RichardLCD YH Xingwen Zhang -Mystic +cxalc jqz3.tech juemuren4449 kassadin @@ -357,7 +357,6 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. noodles2hg nsnans oliver -cxalc dayday Deny dongpohezui @@ -372,6 +371,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. hotdogc1017 huangyao hululu1068 +illmons jcdj666 rexlin600 七朔 @@ -406,6 +406,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. zoomdong zuixin369 zyimm +Mystic MinsonLee Marnm mwei From e4a5781542bc6fd0bb72db5e017b6090ac4efadb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 8 Apr 2025 03:17:17 +0000 Subject: [PATCH 1105/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index 0472d7c490c..2af191f255a 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -52,7 +52,7 @@ RichardLCD YH Xingwen Zhang -Mystic +cxalc jqz3.tech juemuren4449 kassadin @@ -67,7 +67,6 @@ noodles2hg nsnans oliver -cxalc dayday Deny dongpohezui @@ -82,6 +81,7 @@ hotdogc1017 huangyao hululu1068 +illmons jcdj666 rexlin600 七朔 @@ -116,6 +116,7 @@ zoomdong zuixin369 zyimm +Mystic MinsonLee Marnm mwei From 3c1b8ca90cb8432afee0b77601632c69b68197b3 Mon Sep 17 00:00:00 2001 From: focksor Date: Wed, 9 Apr 2025 12:58:33 +0800 Subject: [PATCH 1106/1126] doc: atop.md, git.md (#642) --- command/atop.md | 8 ++--- command/git.md | 80 ++++++++++++++++++++++++++++++++++--------------- 2 files changed, 60 insertions(+), 28 deletions(-) diff --git a/command/atop.md b/command/atop.md index 0b5535f1f10..ca04cc49b93 100644 --- a/command/atop.md +++ b/command/atop.md @@ -24,9 +24,9 @@ atop [选项] [参数] 该列显示进程整体运行情况: - sys、usr字段分别指示进程在内核态和用户态的运行时间 -- #proc字段指示进程总数 -- #zombie字段指示僵尸进程的数量 -- #exit字段指示atop采样周期期间退出的进程数量 +- `#proc` 字段指示进程总数 +- `#zombie` 字段指示僵尸进程的数量 +- `#exit` 字段指示atop采样周期期间退出的进程数量 ### CPU列 @@ -111,4 +111,4 @@ atop开发者提供了以上日志保存方式,相应的`atop.daily`脚本可 ## 相关资料 -- [官方手册](http://www.atoptool.nl/download/man_atop-1.pdf) \ No newline at end of file +- [官方手册](http://www.atoptool.nl/download/man_atop-1.pdf) diff --git a/command/git.md b/command/git.md index 2c7ea45b20a..7295ee20e29 100644 --- a/command/git.md +++ b/command/git.md @@ -63,25 +63,35 @@ tag 创建,列出,删除或验证使用GPG签名的标签对象 init -`git init` #初始化 +```shell +git init # 初始化 +``` status -`git status` #获取状态 +```shell +git status # 获取状态 +``` add -`git add file` # .或*代表全部添加 -`git rm --cached ` # 在commit之前撤销git add操作 -`git reset head` # 好像比上面`git rm --cached`更方便 +```shell +git add file # .或*代表全部添加 +git rm --cached # 在commit之前撤销git add操作 +git reset head # 好像比上面`git rm --cached`更方便 +``` commit -`git commit -m "message"` #此处注意乱码 +```shell +git commit -m "message" # 此处注意乱码 +``` remote -`git remote add origin git@github.com:JSLite/test.git` #添加源 +```shell +git remote add origin git@github.com:JSLite/test.git # 添加源 +``` push @@ -93,9 +103,11 @@ git push -f origin master # 强制推送文件,缩写 -f(全写--force) clone -`git clone git://github.com/JSLite/JSLite.js.git` -`git clone git://github.com/JSLite/JSLite.js.git mypro` #克隆到自定义文件夹 -`git clone [user@]example.com:path/to/repo.git/` #SSH协议还有另一种写法。 +```shell +git clone git://github.com/JSLite/JSLite.js.git +git clone git://github.com/JSLite/JSLite.js.git mypro # 克隆到自定义文件夹 +git clone [user@]example.com:path/to/repo.git/ # SSH协议还有另一种写法。 +``` git clone支持多种协议,除了HTTP(s)以外,还支持SSH、Git、本地文件协议等,下面是一些例子。`git clone <版本库的网址> <本地目录名>` @@ -156,7 +168,9 @@ ssh -T git@github.com # 测试是否成功 **3.修改config文件** -`vim ~/.ssh/config` #修改config文件,如果没有创建 `config` +```shell +vim ~/.ssh/config # 修改config文件,如果没有创建 `config` +``` ```shell Host jslite.github.com @@ -269,7 +283,9 @@ usage: git remote set-url [--push] [] or: git remote set-url --delete ``` -`git remote set-url --delete origin https://oschina.net/wang/JSLite.js.git` +```shell +git remote set-url --delete origin https://oschina.net/wang/JSLite.js.git +``` **3.推送代码** @@ -634,25 +650,35 @@ git config --global core.quotepath false ### init -`git init` #初始化 +```shell +git init # 初始化 +``` ### status -`git status` #获取状态 +```shell +git status # 获取状态 +``` ### add -`git add file` # .或*代表全部添加 -`git rm --cached ` # 在commit之前撤销git add操作 -`git reset head` # 好像比上面`git rm --cached`更方便 +```shell +git add file # .或*代表全部添加 +git rm --cached # 在commit之前撤销git add操作 +git reset head # 好像比上面`git rm --cached`更方便 +``` ### commit -`git commit -m "message"` #此处注意乱码 +```shell +git commit -m "message" # 此处注意乱码 +``` ### remote -`git remote add origin git@github.com:JSLite/test.git` #添加源 +```shell +git remote add origin git@github.com:JSLite/test.git # 添加源 +``` ### push @@ -664,9 +690,11 @@ git push -f origin master # 强制推送文件,缩写 -f(全写--force) ## clone -`git clone git://github.com/JSLite/JSLite.js.git` -`git clone git://github.com/JSLite/JSLite.js.git mypro` #克隆到自定义文件夹 -`git clone [user@]example.com:path/to/repo.git/` #SSH协议还有另一种写法。 +```shell +git clone git://github.com/JSLite/JSLite.js.git +git clone git://github.com/JSLite/JSLite.js.git mypro # 克隆到自定义文件夹 +git clone [user@]example.com:path/to/repo.git/ # SSH协议还有另一种写法。 +``` git clone支持多种协议,除了HTTP(s)以外,还支持SSH、Git、本地文件协议等,下面是一些例子。`git clone <版本库的网址> <本地目录名>` @@ -817,7 +845,9 @@ git push -u origin branchName # 提交分支到远程origin主机中 ### 拉取 -`git fetch -p` #拉取远程分支时,自动清理 远程分支已删除,本地还存在的对应同名分支。 +```shell +git fetch -p # 拉取远程分支时,自动清理 远程分支已删除,本地还存在的对应同名分支。 +``` ### 分支合并 @@ -830,7 +860,9 @@ git merge test # 将test分支合并到当前分支 ### 重命名 -`git branch -m old new` #重命名分支 +```shell +git branch -m old new # 重命名分支 +``` ### 查看 From edbe93191b66433cdbed7d1492a1a8b259c20113 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 9 Apr 2025 04:58:59 +0000 Subject: [PATCH 1107/1126] doc: update README.md. --- README.md | 165 +++++++++++++++++++++++++++--------------------------- 1 file changed, 83 insertions(+), 82 deletions(-) diff --git a/README.md b/README.md index b4e7b0e0605..3af46b03dee 100644 --- a/README.md +++ b/README.md @@ -308,20 +308,20 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Zijing Zhang Fubin Zhang __FresHmaN -谈笑风生间 -ernest dulltackle +ernest +谈笑风生间 zyy2477 rgshare loverainye lavaicer YEUNGCHIE -SteveLauC +James Wang MioMuse Xrtero -James Wang Shan Chenyu -BingCoke +SteveLauC +duzhuoshanwai gggwvg VVatt will @@ -331,24 +331,24 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. alfred Wang Yujia Qliangw -Ein Verne -FunKeen -Jeremy2214 -Pan, Wen-Ming -QinShower -duzhuoshanwai Dazhuangw Alterem -RichardLCD YH Xingwen Zhang -cxalc -jqz3.tech -juemuren4449 -kassadin -NanoNova -leo +RichardLCD +QinShower +Pan, Wen-Ming +Jeremy2214 +BingCoke +FunKeen +Ein Verne lewis1573 +leo +NanoNova +kassadin +juemuren4449 +jqz3.tech +jcdj666 linuxwd Ricardowang cole @@ -356,13 +356,15 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. miniwater noodles2hg nsnans -oliver +zyimm +0x_000 dayday Deny dongpohezui ecjtusbs gang.yang gedune +geekeryy gesty ghy githubwxz @@ -372,8 +374,6 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. huangyao hululu1068 illmons -jcdj666 -rexlin600 七朔 孤城落寞 尘埃 @@ -390,6 +390,8 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. 远方 bycs Yidan Wang +oliver +rexlin600 sfwwslm shc shuangcui @@ -405,71 +407,70 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. zodiac zoomdong zuixin369 -zyimm -Mystic -MinsonLee -Marnm -mwei -Wang -Lucien -Lix -LinuxZilong -Lin Wuxian -孟思行 -LexsionLee -Legend -LaudOak -Karl Horky Nexchard -Jelly -Jack.A.Black -Jack -Huntout Zhang -HighScorePlayer -重劍無鋒 -Guiying Li -Github1977 -Frankie -Divenire -Derek -Danny -DaYangtuo247 -Cui Yang -azroy +Karl Horky +LaudOak +Legend +LexsionLee +孟思行 +Lin Wuxian +LinuxZilong +Lix +Lucien +Wang +mwei +Marnm +MinsonLee +Mystic +Q.Ben Zheng Alan -0x_000 -Forever121 -chaofan -c2ch -brinkqiang -bestlaw66 -bell -azureology -Ashine -amit794 -One Person’s Revelry -0Knot (0KN) -Yunbin Liu -Yan Sheng -Xu Chunyang +azroy +Cui Yang +DaYangtuo247 +Danny +Derek +Divenire +Frankie +Github1977 +Guiying Li +重劍無鋒 +HighScorePlayer +Huntout Zhang +Jack +Jack.A.Black +Jelly Xonline-Tech -Xiaodong DENG -XBG -Wingrez -Na Meng -T-TRz879 -SunX -Spaghetti-C -RoachZhao -Azolla -SevenSteven -SMVirus -殇 -Rocher -Robigus -Rining Wu +Xu Chunyang +Yan Sheng +Yunbin Liu +0Knot (0KN) +One Person’s Revelry +amit794 +Ashine +azureology +bell +bestlaw66 +brinkqiang +c2ch +chaofan +Forever121 +cxalc Ray Yee -Q.Ben Zheng +Rining Wu +Robigus +Rocher +殇 +SMVirus +SevenSteven +Azolla +RoachZhao +Spaghetti-C +SunX +T-TRz879 +Na Meng +Wingrez +XBG +Xiaodong DENG 贡献者列表,由 [contributors](https://github.com/jaywcjlove/github-action-contributors) 自动生成 From 87a3114a84f601c730e7c3f85b9f6dba3463f744 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 9 Apr 2025 04:59:00 +0000 Subject: [PATCH 1108/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 165 +++++++++++++++++++------------------- 1 file changed, 83 insertions(+), 82 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index 2af191f255a..a17485db3d2 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -18,20 +18,20 @@ Zijing Zhang Fubin Zhang __FresHmaN -谈笑风生间 -ernest dulltackle +ernest +谈笑风生间 zyy2477 rgshare loverainye lavaicer YEUNGCHIE -SteveLauC +James Wang MioMuse Xrtero -James Wang Shan Chenyu -BingCoke +SteveLauC +duzhuoshanwai gggwvg VVatt will @@ -41,24 +41,24 @@ alfred Wang Yujia Qliangw -Ein Verne -FunKeen -Jeremy2214 -Pan, Wen-Ming -QinShower -duzhuoshanwai Dazhuangw Alterem -RichardLCD YH Xingwen Zhang -cxalc -jqz3.tech -juemuren4449 -kassadin -NanoNova -leo +RichardLCD +QinShower +Pan, Wen-Ming +Jeremy2214 +BingCoke +FunKeen +Ein Verne lewis1573 +leo +NanoNova +kassadin +juemuren4449 +jqz3.tech +jcdj666 linuxwd Ricardowang cole @@ -66,13 +66,15 @@ miniwater noodles2hg nsnans -oliver +zyimm +0x_000 dayday Deny dongpohezui ecjtusbs gang.yang gedune +geekeryy gesty ghy githubwxz @@ -82,8 +84,6 @@ huangyao hululu1068 illmons -jcdj666 -rexlin600 七朔 孤城落寞 尘埃 @@ -100,6 +100,8 @@ 远方 bycs Yidan Wang +oliver +rexlin600 sfwwslm shc shuangcui @@ -115,71 +117,70 @@ zodiac zoomdong zuixin369 -zyimm -Mystic -MinsonLee -Marnm -mwei -Wang -Lucien -Lix -LinuxZilong -Lin Wuxian -孟思行 -LexsionLee -Legend -LaudOak -Karl Horky Nexchard -Jelly -Jack.A.Black -Jack -Huntout Zhang -HighScorePlayer -重劍無鋒 -Guiying Li -Github1977 -Frankie -Divenire -Derek -Danny -DaYangtuo247 -Cui Yang -azroy +Karl Horky +LaudOak +Legend +LexsionLee +孟思行 +Lin Wuxian +LinuxZilong +Lix +Lucien +Wang +mwei +Marnm +MinsonLee +Mystic +Q.Ben Zheng Alan -0x_000 -Forever121 -chaofan -c2ch -brinkqiang -bestlaw66 -bell -azureology -Ashine -amit794 -One Person’s Revelry -0Knot (0KN) -Yunbin Liu -Yan Sheng -Xu Chunyang +azroy +Cui Yang +DaYangtuo247 +Danny +Derek +Divenire +Frankie +Github1977 +Guiying Li +重劍無鋒 +HighScorePlayer +Huntout Zhang +Jack +Jack.A.Black +Jelly Xonline-Tech -Xiaodong DENG -XBG -Wingrez -Na Meng -T-TRz879 -SunX -Spaghetti-C -RoachZhao -Azolla -SevenSteven -SMVirus -殇 -Rocher -Robigus -Rining Wu +Xu Chunyang +Yan Sheng +Yunbin Liu +0Knot (0KN) +One Person’s Revelry +amit794 +Ashine +azureology +bell +bestlaw66 +brinkqiang +c2ch +chaofan +Forever121 +cxalc Ray Yee -Q.Ben Zheng +Rining Wu +Robigus +Rocher +殇 +SMVirus +SevenSteven +Azolla +RoachZhao +Spaghetti-C +SunX +T-TRz879 +Na Meng +Wingrez +XBG +Xiaodong DENG

数据来源于 GitHub Contributors,使用action-contributors创建。 From 6f32e1e9ee44886a06198fda0ac5f44445bb9c66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83?= <398188662@qq.com> Date: Sun, 27 Apr 2025 17:18:20 +0800 Subject: [PATCH 1109/1126] feat: add getcap. fix #644 --- command/getcap.md | 49 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 command/getcap.md diff --git a/command/getcap.md b/command/getcap.md new file mode 100644 index 00000000000..1f57f464b57 --- /dev/null +++ b/command/getcap.md @@ -0,0 +1,49 @@ +getcap +=== + +显示文件的能力(capabilities) + +## 补充说明 + +**getcap命令** 用于查看文件的能力(capabilities)。在 Linux 中,文件的能力是一种权限控制机制,可以赋予普通文件特定的特权操作,而无需完全的 root 权限。 + +### 语法 + +```shell +getcap [选项] [文件名...] +``` + +### 选项 + +```shell +-v # 显示详细信息,通常与其他选项一起使用。 +-p # 显示进程的能力。 +``` + +### 参数 + +文件名:指定要查看能力的文件路径。 + +### 实例 + +查看一个可执行文件的能力: + +```shell +$ getcap /usr/bin/ping +/usr/bin/ping = cap_net_raw+ep +``` + +查看当前目录下所有文件的能力: + +```shell +$ getcap * +/usr/bin/ping = cap_net_raw+ep +``` + +如果文件没有设置任何能力,getcap 不会返回任何输出。 + +查看进程的能力(以 PID 为例): + +```shell +$ getcap -p 1234 +``` \ No newline at end of file From 7fb73de0106266a8c64a8b9499791641a0e1c919 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 27 Apr 2025 09:19:08 +0000 Subject: [PATCH 1110/1126] doc: update README.md. --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3af46b03dee..932a97c0417 100644 --- a/README.md +++ b/README.md @@ -357,11 +357,11 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. noodles2hg nsnans zyimm -0x_000 dayday Deny dongpohezui ecjtusbs +focksor gang.yang gedune geekeryy @@ -407,6 +407,7 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. zodiac zoomdong zuixin369 +0x_000 Nexchard Karl Horky LaudOak From 3bf5e616dc0119b8ec1ddc57ce207b7331d582a4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 27 Apr 2025 09:19:10 +0000 Subject: [PATCH 1111/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index a17485db3d2..2b4e642496a 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -67,11 +67,11 @@ noodles2hg nsnans zyimm -0x_000 dayday Deny dongpohezui ecjtusbs +focksor gang.yang gedune geekeryy @@ -117,6 +117,7 @@ zodiac zoomdong zuixin369 +0x_000 Nexchard Karl Horky LaudOak From fbf2cdd86d1f0e624fb85a32c77adbec2939993d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83?= <398188662@qq.com> Date: Sun, 27 Apr 2025 17:23:47 +0800 Subject: [PATCH 1112/1126] ci: remove .github/workflows/sync.yml #554 --- .github/workflows/sync.yml | 40 -------------------------------------- 1 file changed, 40 deletions(-) delete mode 100644 .github/workflows/sync.yml diff --git a/.github/workflows/sync.yml b/.github/workflows/sync.yml deleted file mode 100644 index df5a9fa39eb..00000000000 --- a/.github/workflows/sync.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: Upstream Sync - -permissions: - contents: write - -on: - schedule: - - cron: "0 0 * * *" # every day - workflow_dispatch: - -jobs: - sync_latest_from_upstream: - name: Sync latest commits from upstream repo - runs-on: ubuntu-latest - if: ${{ github.event.repository.fork }} - - steps: - # Step 1: run a standard checkout action - - name: Checkout target repo - uses: actions/checkout@v4 - - # Step 2: run the sync action - - name: Sync upstream changes - id: sync - uses: aormsby/Fork-Sync-With-Upstream-action@v3.4 - with: - upstream_sync_repo: jaywcjlove/linux-command - upstream_sync_branch: master - target_sync_branch: master - target_repo_token: ${{ secrets.GITHUB_TOKEN }} # automatically generated, no need to set - - # Set test_mode true to run tests instead of the true action!! - test_mode: false - - - name: Sync check - if: failure() - run: | - echo "[Error] 由于上游仓库的 workflow 文件变更,导致 GitHub 自动暂停了本次自动更新,你需要手动 Sync Fork 一次。" - echo "[Error] Due to a change in the workflow file of the upstream repository, GitHub has automatically suspended the scheduled automatic update. You need to manually sync your fork." - exit 1 From 81f8eef8bfcc0e431e52fd6597b9f581bd240810 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83?= <398188662@qq.com> Date: Mon, 12 May 2025 18:36:38 +0800 Subject: [PATCH 1113/1126] doc: update README.md --- README.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/README.md b/README.md index 932a97c0417..44d59e327b7 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,36 @@ 当前仓库搜集了 600 多个 Linux 命令,是一个非盈利性的仓库,生成了一个 web 网站方便使用,目前网站没有任何广告,内容包含 Linux 命令手册、详解、学习,内容来自网络和网友的补充,非常值得收藏的 Linux 命令速查手册。版权归属原作者,对任何法律问题及风险不承担任何责任,没有任何商业目的,如果认为侵犯了您的版权,请来信告知。我不能完全保证内容的正确性。通过使用本站内容带来的风险与我无关。当使用本站时,代表您已接受了本站的使用条款和隐私条款。 +## 赞助支持 + +非常感谢一直以来支持我开源项目的朋友们!如果您认可我的工作,欢迎通过 [赞助](https://wangchujiang.com/#/sponsor) 我或下载并使用我开发的 [macOS 应用](https://wangchujiang.com/#/app) 来支持我。以下是我个人独立开发的 macOS 应用列表: + +

+ Musicer + Audioer + FileSentinel + FocusCursor + Videoer + KeyClicker + DayBar + Iconed + RightMenu Master + Paste Quick + Quick RSS + Web Serve + Copybook Generator + DevTutor for SwiftUI + RegexMate + Time Passage + Iconize Folder + Textsound Saver + Create Custom Symbols + DevHub + Resume Revise + Palette Genius + Symbol Scribe +

+ ## Web 版本 [Github Web](http://jaywcjlove.github.io/linux-command/) | [Gitee Web](http://jaywcjlove.gitee.io/linux-command/) | [Githack](https://raw.githack.com/jaywcjlove/linux-command/gh-pages/index.html) | [Statically](https://cdn.statically.io/gh/jaywcjlove/linux-command/gh-pages/index.html) From e8a04497f65e328a8b7fee8b496a99f35d73d18a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83?= <398188662@qq.com> Date: Mon, 12 May 2025 18:37:21 +0800 Subject: [PATCH 1114/1126] doc: update README.md --- README.md | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 44d59e327b7..4570c99799f 100644 --- a/README.md +++ b/README.md @@ -20,29 +20,29 @@ 非常感谢一直以来支持我开源项目的朋友们!如果您认可我的工作,欢迎通过 [赞助](https://wangchujiang.com/#/sponsor) 我或下载并使用我开发的 [macOS 应用](https://wangchujiang.com/#/app) 来支持我。以下是我个人独立开发的 macOS 应用列表:

- Musicer - Audioer - FileSentinel - FocusCursor - Videoer - KeyClicker - DayBar - Iconed - RightMenu Master - Paste Quick - Quick RSS - Web Serve - Copybook Generator - DevTutor for SwiftUI - RegexMate - Time Passage - Iconize Folder - Textsound Saver - Create Custom Symbols - DevHub - Resume Revise - Palette Genius - Symbol Scribe + Musicer + Audioer + FileSentinel + FocusCursor + Videoer + KeyClicker + DayBar + Iconed + RightMenu Master + Quick RSS + Quick RSS + Web Serve + Copybook Generator + DevTutor for SwiftUI + RegexMate + Time Passage + Iconize Folder + Textsound Saver + Create Custom Symbols + DevHub + Resume Revise + Palette Genius + Symbol Scribe

## Web 版本 From 35bfec9b1a00385ae0a3a6fec0db4e7d8234d31a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83?= <398188662@qq.com> Date: Tue, 13 May 2025 01:22:41 +0800 Subject: [PATCH 1115/1126] ci: update workflows config. --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7091845dbb4..c8dcecc907c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,6 +28,7 @@ jobs: uses: jaywcjlove/github-action-modify-file-content@main with: path: README.md + trim_whitespace: false openDelimiter: '' closeDelimiter: '' body: | @@ -37,6 +38,7 @@ jobs: uses: jaywcjlove/github-action-modify-file-content@main with: path: template/contributors.ejs + trim_whitespace: false openDelimiter: '' closeDelimiter: '' body: | From 02dbba48985bf6a4a0b6b4b89ffea78c127c9dfd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 12 May 2025 17:23:20 +0000 Subject: [PATCH 1116/1126] doc: update README.md. --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4570c99799f..d47a2a8ec75 100644 --- a/README.md +++ b/README.md @@ -323,7 +323,8 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. 一如既往,感谢我们出色的贡献者! -小弟调调 + +小弟调调 ZhuangZhu-74 Mend Renovate Huck Huang @@ -501,7 +502,10 @@ Adobe软件的最佳替代品 [原文在这里](https://linux.cn/article-8928-1. Na Meng Wingrez XBG -Xiaodong DENG +Xiaodong DENG + + + 贡献者列表,由 [contributors](https://github.com/jaywcjlove/github-action-contributors) 自动生成 From bcea27fe4059ecdb78e8e43f2100572bfe9f7a9f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 12 May 2025 17:23:21 +0000 Subject: [PATCH 1117/1126] doc: update template/contributors.ejs. --- template/contributors.ejs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index 2b4e642496a..81cce14e78f 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -3,7 +3,8 @@

贡献者列表

- 小弟调调 + +小弟调调 ZhuangZhu-74 Mend Renovate Huck Huang @@ -181,7 +182,10 @@ Na Meng Wingrez XBG -Xiaodong DENG +Xiaodong DENG + + +

数据来源于 GitHub Contributors,使用action-contributors创建。 From b86b82ed615beb92b14a635fc5e0848fa72cffd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83?= Date: Wed, 4 Jun 2025 19:04:33 +0800 Subject: [PATCH 1118/1126] doc: Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d47a2a8ec75..eccb6b37e1b 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ 非常感谢一直以来支持我开源项目的朋友们!如果您认可我的工作,欢迎通过 [赞助](https://wangchujiang.com/#/sponsor) 我或下载并使用我开发的 [macOS 应用](https://wangchujiang.com/#/app) 来支持我。以下是我个人独立开发的 macOS 应用列表:

+ Mousio Musicer Audioer FileSentinel From 6197d862da03dcefcd4776977d8d74ff4f3bbf14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83?= Date: Fri, 13 Jun 2025 08:53:46 +0800 Subject: [PATCH 1119/1126] doc: Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index eccb6b37e1b..2f19376201c 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ 非常感谢一直以来支持我开源项目的朋友们!如果您认可我的工作,欢迎通过 [赞助](https://wangchujiang.com/#/sponsor) 我或下载并使用我开发的 [macOS 应用](https://wangchujiang.com/#/app) 来支持我。以下是我个人独立开发的 macOS 应用列表:

+ Mousio Hint Mousio Musicer Audioer From 22f1caf16d8b2f65569271ec4e28c5783eebccb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83?= <398188662@qq.com> Date: Fri, 13 Jun 2025 09:20:59 +0800 Subject: [PATCH 1120/1126] website: update contributors. --- README.md | 4 ++-- dist/data.json | 22 +++++++++++++++++++++- dist/data.min.json | 2 +- template/contributors.ejs | 34 +++++++++++++++++++++++++++++++++- template/styl/index.styl | 11 +++++++++++ template/widget/footer.ejs | 3 +++ 6 files changed, 71 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 2f19376201c..cd890c74514 100644 --- a/README.md +++ b/README.md @@ -67,11 +67,11 @@ **推荐使用的镜像 web 版本** -[**`linuxsearch.largeinfo.cc`**](http://linuxsearch.largeinfo.cc),[**`srebro.cn`**](https://linux.srebro.cn/),[**`getaifun.com`**](https://getaifun.com/linux),[**`linux.devonline.net`**](http://linux.devonline.net/),[**`man.zch.ooo`**](https://man.zch.ooo/),[**`linux.mmoke.com`**](https://linux.mmoke.com),[**`bqrdh.com`**](https://tools.bqrdh.com/linux-command/),[**`linux.zyimm.com`**](http://linux.zyimm.com/),[**`linux.vovuo.com`**](https://linux.vovuo.com/),[`linux.liguiying.cn`](https://linux.liguiying.cn/), [`renye.net`](https://renye.net/), [`diqi.org`](https://diqi.org/),[`linux.alistnas.top`](https://linux.alistnas.top/),[`nenufm.com`](https://www.nenufm.com/linux-command/), [`linux.jiangyang.online`](https://linux.jiangyang.online/) +[**`linuxsearch.largeinfo.cc`**](http://linuxsearch.largeinfo.cc),[**`srebro.cn`**](https://linux.srebro.cn/),[**`getaifun.com`**](https://getaifun.com/linux),[**`linux.devonline.net`**](http://linux.devonline.net/),[**`man.zch.ooo`**](https://man.zch.ooo/),[**`linux.mmoke.com`**](https://linux.mmoke.com),[**`bqrdh.com`**](https://tools.bqrdh.com/linux-command/),[**`linux.zyimm.com`**](http://linux.zyimm.com/),[**`linux.vovuo.com`**](https://linux.vovuo.com/),[`linux.liguiying.cn`](https://linux.liguiying.cn/),[`renye.net`](https://renye.net/),[`diqi.org`](https://diqi.org/),[`linux.alistnas.top`](https://linux.alistnas.top/),[`nenufm.com`](https://www.nenufm.com/linux-command/),[`linux.jiangyang.online`](https://linux.jiangyang.online/) **其它 web 版本** -[`linux.ftqq.com`](https://linux.ftqq.com/),[`linux.gaomeluo.com`](https://linux.gaomeluo.com),[`atoolbox.net`](http://www.atoolbox.net/Tool.php?Id=826),[`xiaoshanseo.com`](https://tools.xiaoshanseo.com/Tools/linux-command/),[`262235.xyz`](https://262235.xyz/linux-command/),[`cmsblogs.cn`](https://linux.cmsblogs.cn/),[`loquy.cn`](https://www.loquy.cn/linux-command/),[`buyao.vip`](https://demo.buyao.vip/linux/),[`hezhiqiang.gitbook.io`](https://hezhiqiang.gitbook.io/linux/),[`utils.fun`](https://linux.utils.fun/), [`51tools.info`](https://51tools.info/linux/) +[`linux.ftqq.com`](https://linux.ftqq.com/),[`linux.gaomeluo.com`](https://linux.gaomeluo.com),[`atoolbox.net`](http://www.atoolbox.net/Tool.php?Id=826),[`xiaoshanseo.com`](https://tools.xiaoshanseo.com/Tools/linux-command/),[`262235.xyz`](https://262235.xyz/linux-command/),[`cmsblogs.cn`](https://linux.cmsblogs.cn/),[`loquy.cn`](https://www.loquy.cn/linux-command/),[`buyao.vip`](https://demo.buyao.vip/linux/),[`hezhiqiang.gitbook.io`](https://hezhiqiang.gitbook.io/linux/),[`utils.fun`](https://linux.utils.fun/),[`51tools.info`](https://51tools.info/linux/) ## 其它版本 diff --git a/dist/data.json b/dist/data.json index 75eae0c05a3..ace6fad37f7 100644 --- a/dist/data.json +++ b/dist/data.json @@ -869,6 +869,11 @@ "p": "/get_module", "d": "获取Linux内核模块的详细信息" }, + "getcap": { + "n": "getcap", + "p": "/getcap", + "d": "显示文件的能力(capabilities)" + }, "getenforce": { "n": "getenforce", "p": "/getenforce", @@ -879,6 +884,11 @@ "p": "/getent", "d": "查询 DNS 名称服务器中的命名空间" }, + "getfacl": { + "n": "getfacl", + "p": "/getfacl", + "d": "获取文件访问控制列表(access control lists)" + }, "getsebool": { "n": "getsebool", "p": "/getsebool", @@ -1132,7 +1142,7 @@ "iostat": { "n": "iostat", "p": "/iostat", - "d": "iostat命令被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。iowait 指在一个采样周期内有百分之几的时间是属于以下情况:CPU处于空闲状态并且至少有一个未完成的磁盘IO请求。" + "d": "监视系统输入输出设备和CPU的使用情况" }, "iotop": { "n": "iotop", @@ -1779,6 +1789,11 @@ "p": "/nslookup", "d": "查询域名DNS信息的工具" }, + "nstat": { + "n": "nstat", + "p": "/nstat", + "d": "nstat 是一个简单的监视内核的 SNMP 计数器和网络接口状态的实用工具。" + }, "ntpdate": { "n": "ntpdate", "p": "/ntpdate", @@ -2689,6 +2704,11 @@ "p": "/type", "d": "显示指定命令的类型。" }, + "ufw": { + "n": "ufw", + "p": "/ufw", + "d": " ubuntu防火墙管理工具" + }, "ulimit": { "n": "ulimit", "p": "/ulimit", diff --git a/dist/data.min.json b/dist/data.min.json index cb420adfeff..c184790cee2 100644 --- a/dist/data.min.json +++ b/dist/data.min.json @@ -1 +1 @@ -{"7z":{"n":"7z","p":"/7z","d":"拥有极高压缩比的开源压缩软件。"},"ab":{"n":"ab","p":"/ab","d":"Apache服务器的性能测试工具"},"accept":{"n":"accept","p":"/accept","d":"指示打印系统接受发往指定目标打印机的打印任务"},"ack":{"n":"ack","p":"/ack","d":"比grep好用的文本搜索工具"},"ag":{"n":"ag","p":"/ag","d":"ack 的升级版,C语言编写,更快更人性化"},"alias":{"n":"alias","p":"/alias","d":"定义或显示别名。"},"apachectl":{"n":"apachectl","p":"/apachectl","d":"Apache服务器前端控制工具"},"apk":{"n":"apk","p":"/apk","d":"Alpine Linux 下的包管理工具"},"apropos":{"n":"apropos","p":"/apropos","d":"在 whatis 数据库中查找字符串"},"apt-get":{"n":"apt-get","p":"/apt-get","d":"Debian Linux发行版中的APT软件包管理工具"},"apt-key":{"n":"apt-key","p":"/apt-key","d":"管理Debian Linux系统中的软件包密钥"},"apt-sortpkgs":{"n":"apt-sortpkgs","p":"/apt-sortpkgs","d":"Debian Linux下对软件包索引文件进行排序的工具"},"aptitude":{"n":"aptitude","p":"/aptitude","d":"Debian Linux系统中软件包管理工具"},"ar":{"n":"ar","p":"/ar","d":"建立或修改备存文件,或是从备存文件中抽取文件"},"arch":{"n":"arch","p":"/arch","d":"显示当前主机的硬件架构类型"},"arj":{"n":"arj","p":"/arj","d":"用于创建和管理.arj压缩包"},"arp":{"n":"arp","p":"/arp","d":"arp 命令用于显示和修改 IP 到 MAC 转换表"},"arpd":{"n":"arpd","p":"/arpd","d":"收集免费ARP信息"},"arping":{"n":"arping","p":"/arping","d":"通过发送ARP协议报文测试网络"},"arptables":{"n":"arptables","p":"/arptables","d":"管理ARP包过滤规则表"},"arpwatch":{"n":"arpwatch","p":"/arpwatch","d":"监听网络上ARP的记录"},"as":{"n":"as","p":"/as","d":"汇编语言编译器"},"at":{"n":"at","p":"/at","d":"在指定时间执行一个任务"},"atop":{"n":"atop","p":"/atop","d":"监控Linux系统资源与进程的工具"},"atq":{"n":"atq","p":"/atq","d":"列出当前用户的at任务列表"},"atrm":{"n":"atrm","p":"/atrm","d":"删除待执行任务队列中的指定任务"},"awk":{"n":"awk","p":"/awk","d":"文本和数据进行处理的编程语言"},"axel":{"n":"axel","p":"/axel","d":"多线程下载工具"},"badblocks":{"n":"badblocks","p":"/badblocks","d":"查找磁盘中损坏的区块"},"base64":{"n":"base64","p":"/base64","d":"base64 编码/解码文件或标准输入输出"},"basename":{"n":"basename","p":"/basename","d":"打印目录或者文件的基本名称"},"batch":{"n":"batch","p":"/batch","d":"在系统不繁忙的时候执行定时任务"},"bc":{"n":"bc","p":"/bc","d":"算术操作精密运算工具"},"bg":{"n":"bg","p":"/bg","d":"将前台终端作业移动到后台运行"},"bind":{"n":"bind","p":"/bind","d":"显示或设置键盘按键与其相关的功能"},"blkid":{"n":"blkid","p":"/blkid","d":"查看块设备的文件系统类型、LABEL、UUID等信息"},"blockdev":{"n":"blockdev","p":"/blockdev","d":"从命令行调用区块设备控制程序"},"bmodinfo":{"n":"bmodinfo","p":"/bmodinfo","d":"显示给定模块的详细信息"},"break":{"n":"break","p":"/break","d":"结束for,while或until循环。"},"builtin":{"n":"builtin","p":"/builtin","d":"执行bash内建命令。"},"bunzip2":{"n":"bunzip2","p":"/bunzip2","d":"可解压缩.bz2格式的压缩文件。 "},"bye":{"n":"bye","p":"/bye","d":"命令用于中断FTP连线并结束程序"},"bzcat":{"n":"bzcat","p":"/bzcat","d":"不解压,直接查看指定的.bz2文件"},"bzcmp":{"n":"bzcmp","p":"/bzcmp","d":"比较两个压缩包中的文件"},"bzdiff":{"n":"bzdiff","p":"/bzdiff","d":"直接比较两个.bz2压缩包中文件的不同"},"bzgrep":{"n":"bzgrep","p":"/bzgrep","d":"使用正则表达式搜索.bz2压缩包中文件"},"bzip2":{"n":"bzip2","p":"/bzip2","d":"将文件压缩成bz2格式"},"bzip2recover":{"n":"bzip2recover","p":"/bzip2recover","d":"恢复被破坏的.bz2压缩包中的文件"},"bzless":{"n":"bzless","p":"/bzless","d":"增强.bz2压缩包查看器"},"bzmore":{"n":"bzmore","p":"/bzmore","d":"查看bzip2压缩过的文本文件的内容"},"cal":{"n":"cal","p":"/cal","d":"显示当前日历或指定日期的日历"},"cancel":{"n":"cancel","p":"/cancel","d":"取消已存在的打印任务"},"cat":{"n":"cat","p":"/cat","d":"连接多个文件并打印到标准输出。"},"cd":{"n":"cd","p":"/cd","d":"切换用户当前工作目录。"},"cdrecord":{"n":"cdrecord","p":"/cdrecord","d":"Linux系统下光盘刻录功能命令"},"chage":{"n":"chage","p":"/chage","d":"修改帐号和密码的有效期限"},"chattr":{"n":"chattr","p":"/chattr","d":"用来改变文件属性"},"chcon":{"n":"chcon","p":"/chcon","d":"修改对象(文件)的安全上下文"},"chfn":{"n":"chfn","p":"/chfn","d":"用来改变finger命令显示的信息"},"chgrp":{"n":"chgrp","p":"/chgrp","d":"用来变更文件或目录的所属群组"},"chkconfig":{"n":"chkconfig","p":"/chkconfig","d":"检查或设置系统的各种服务"},"chmod":{"n":"chmod","p":"/chmod","d":"用来变更文件或目录的权限"},"chown":{"n":"chown","p":"/chown","d":"用来变更文件或目录的拥有者或所属群组"},"chpasswd":{"n":"chpasswd","p":"/chpasswd","d":"批量更新用户口令的工具"},"chroot":{"n":"chroot","p":"/chroot","d":"把根目录换成指定的目的目录"},"chsh":{"n":"chsh","p":"/chsh","d":"用来更换登录系统时使用的shell"},"cksum":{"n":"cksum","p":"/cksum","d":"检查文件的CRC是否正确"},"clear":{"n":"clear","p":"/clear","d":"清除当前屏幕终端上的任何信息"},"clock":{"n":"clock","p":"/clock","d":"用于调整 RTC 时间"},"clockdiff":{"n":"clockdiff","p":"/clockdiff","d":"检测两台linux主机的时间差"},"cmp":{"n":"cmp","p":"/cmp","d":"比较两个文件是否有差异"},"col":{"n":"col","p":"/col","d":"过滤控制字符"},"colrm":{"n":"colrm","p":"/colrm","d":"删除文件中的指定列"},"column":{"n":"column","p":"/column","d":"按列格式化输出文件"},"comm":{"n":"comm","p":"/comm","d":"按行比较两个已排序的文件。"},"command":{"n":"command","p":"/command","d":"调用并执行指定的命令"},"compress":{"n":"compress","p":"/compress","d":"使用Lempress-Ziv编码压缩数据文件"},"consoletype":{"n":"consoletype","p":"/consoletype","d":"输出已连接的终端类型"},"continue":{"n":"continue","p":"/continue","d":"结束本次循环,继续执行下一个for,while或until循环。"},"convertquota":{"n":"convertquota","p":"/convertquota","d":"把老的配额文件转换为新的格式"},"cp":{"n":"cp","p":"/cp","d":"将源文件或目录复制到目标文件或目录中"},"cpio":{"n":"cpio","p":"/cpio","d":"用来建立、还原备份档的工具程序"},"createrepo":{"n":"createrepo","p":"/createrepo","d":"创建YUM仓库"},"crontab":{"n":"crontab","p":"/crontab","d":"提交和管理用户的需要周期性执行的任务"},"csplit":{"n":"csplit","p":"/csplit","d":"将一个大文件分割成小的碎片文件"},"cu":{"n":"cu","p":"/cu","d":"用于连接另一个系统主机"},"cupsdisable":{"n":"cupsdisable","p":"/cupsdisable","d":"停止指定的打印机"},"cupsenable":{"n":"cupsenable","p":"/cupsenable","d":"启动指定的打印机"},"curl":{"n":"curl","p":"/curl","d":"利用URL规则在命令行下工作的文件传输工具"},"cut":{"n":"cut","p":"/cut","d":"连接文件并打印到标准输出设备上"},"date":{"n":"date","p":"/date","d":"显示或设置系统时间与日期"},"dc":{"n":"dc","p":"/dc","d":"任意精度计算器"},"dd":{"n":"dd","p":"/dd","d":"复制文件并对原文件的内容进行转换和格式化处理"},"declare":{"n":"declare","p":"/declare","d":"声明变量,设置或显示变量的值和属性。"},"depmod":{"n":"depmod","p":"/depmod","d":"分析可载入模块的相依性"},"df":{"n":"df","p":"/df","d":"显示磁盘的相关信息"},"dhclient":{"n":"dhclient","p":"/dhclient","d":"动态获取或释放IP地址"},"dhcpd":{"n":"dhcpd","p":"/dhcpd","d":"运行DHCP服务器"},"dhcrelay":{"n":"dhcrelay","p":"/dhcrelay","d":"使用dhcrelay命令可以提供中继DHCP和BOOTP请求"},"diff":{"n":"diff","p":"/diff","d":"比较给定的两个文件的不同"},"diff3":{"n":"diff3","p":"/diff3","d":"比较3个文件不同的地方"},"diffstat":{"n":"diffstat","p":"/diffstat","d":"显示diff命令输出信息的柱状图"},"dig":{"n":"dig","p":"/dig","d":"域名查询工具"},"dircolors":{"n":"dircolors","p":"/dircolors","d":"置ls命令在显示目录或文件时所用的色彩"},"dirname":{"n":"dirname","p":"/dirname","d":"去除文件名中的非目录部分"},"dirs":{"n":"dirs","p":"/dirs","d":"显示目录堆栈。"},"disown":{"n":"disown","p":"/disown","d":"从当前的shell中移除作业。"},"dmesg":{"n":"dmesg","p":"/dmesg","d":"显示Linux系统启动信息"},"dmidecode":{"n":"dmidecode","p":"/dmidecode","d":"在Linux系统下获取有关硬件方面的信息"},"dnf":{"n":"dnf","p":"/dnf","d":"新一代的RPM软件包管理器"},"dnsdomainname":{"n":"dnsdomainname","p":"/dnsdomainname","d":"定义DNS系统中FQDN名称的域名"},"docker":{"n":"docker","p":"/docker","d":"容器化技术,可以将应用程序及其依赖项打包到一个可移植的容器中,使其可以在不同的环境中运行"},"domainname":{"n":"domainname","p":"/domainname","d":"显示和设置系统的NIS域名"},"dos2unix":{"n":"dos2unix","p":"/dos2unix","d":"将DOS格式文本文件转换成Unix格式"},"dpkg-deb":{"n":"dpkg-deb","p":"/dpkg-deb","d":"Debian Linux下的软件包管理工具"},"dpkg-divert":{"n":"dpkg-divert","p":"/dpkg-divert","d":"Debian Linux中创建并管理一个转向列表"},"dpkg-preconfigure":{"n":"dpkg-preconfigure","p":"/dpkg-preconfigure","d":"Debian Linux中软件包安装之前询问问题"},"dpkg-query":{"n":"dpkg-query","p":"/dpkg-query","d":"Debian Linux中软件包的查询工具"},"dpkg-reconfigure":{"n":"dpkg-reconfigure","p":"/dpkg-reconfigure","d":"Debian Linux中重新配制一个已经安装的软件包"},"dpkg-split":{"n":"dpkg-split","p":"/dpkg-split","d":"Debian Linux中将大软件包分割成小包"},"dpkg-statoverride":{"n":"dpkg-statoverride","p":"/dpkg-statoverride","d":"Debian Linux中覆盖文件的所有权和模式"},"dpkg-trigger":{"n":"dpkg-trigger","p":"/dpkg-trigger","d":"Debian Linux下的软件包触发器"},"dpkg":{"n":"dpkg","p":"/dpkg","d":"Debian Linux系统上安装、创建和管理软件包"},"dris":{"n":"dris","p":"/dris","d":"显示和清空目录堆栈中的内容"},"dstat":{"n":"dstat","p":"/dstat","d":"通用的系统资源统计工具"},"du":{"n":"du","p":"/du","d":"显示每个文件和目录的磁盘使用空间"},"dump":{"n":"dump","p":"/dump","d":"用于备份ext2或者ext3文件系统"},"e2fsck":{"n":"e2fsck","p":"/e2fsck","d":"用于检查第二扩展文件系统的完整性"},"e2label":{"n":"e2label","p":"/e2label","d":"设置第二扩展文件系统的卷标"},"echo":{"n":"echo","p":"/echo","d":"输出指定的字符串或者变量"},"ed":{"n":"ed","p":"/ed","d":"单行纯文本编辑器"},"edquota":{"n":"edquota","p":"/edquota","d":"用于编辑指定用户或工作组磁盘配额"},"egrep":{"n":"egrep","p":"/egrep","d":"在文件内查找指定的字符串"},"eject":{"n":"eject","p":"/eject","d":"用来退出抽取式设备"},"elinks":{"n":"elinks","p":"/elinks","d":"纯文本界面的WWW浏览器"},"elm":{"n":"elm","p":"/elm","d":"纯文本邮件客户端程序"},"emacs":{"n":"emacs","p":"/emacs","d":"功能强大的全屏文本编辑器"},"enable":{"n":"enable","p":"/enable","d":"启动或禁用shell内建命令"},"env":{"n":"env","p":"/env","d":"显示系统中已存在的环境变量"},"ethtool":{"n":"ethtool","p":"/ethtool","d":"显示或修改以太网卡的配置信息"},"ex":{"n":"ex","p":"/ex","d":"启动vim编辑器的ex编辑模式"},"exec":{"n":"exec","p":"/exec","d":"调用并执行指定的命令"},"exit":{"n":"exit","p":"/exit","d":"退出当前的shell。"},"expand":{"n":"expand","p":"/expand","d":"将文件的制表符转换为空白字符"},"export":{"n":"export","p":"/export","d":"为shell变量或函数设置导出属性。"},"exportfs":{"n":"exportfs","p":"/exportfs","d":"管理NFS共享文件系统列表"},"expr":{"n":"expr","p":"/expr","d":"一款表达式计算工具"},"false":{"n":"false","p":"/false","d":"返回状态为失败。"},"fc":{"n":"fc","p":"/fc","d":"显示历史列表中的命令或修改指定的历史命令并执行。"},"fdisk":{"n":"fdisk","p":"/fdisk","d":"查看磁盘使用情况和磁盘分区"},"fg":{"n":"fg","p":"/fg","d":"将后台作业移动到前台终端运行"},"fgrep":{"n":"fgrep","p":"/fgrep","d":"为文件搜索文字字符串"},"figlet":{"n":"figlet","p":"/figlet","d":"字符串转为 “字画符”。"},"file":{"n":"file","p":"/file","d":"用来探测给定文件的类型"},"find":{"n":"find","p":"/find","d":"在指定目录下查找文件"},"findfs":{"n":"findfs","p":"/findfs","d":"标签或UUID查找文件系统"},"finger":{"n":"finger","p":"/finger","d":"用于查找并显示用户信息"},"firewall-cmd":{"n":"firewall-cmd","p":"/firewall-cmd","d":"Linux上新用的防火墙软件,跟iptables差不多的工具"},"fishshell":{"n":"fishshell","p":"/fishshell","d":"比 bash 更好用的 shell"},"fmt":{"n":"fmt","p":"/fmt","d":"读取文件后优化处理并输出"},"fold":{"n":"fold","p":"/fold","d":"控制文件内容输出时所占用的屏幕宽度"},"fping":{"n":"fping","p":"/fping","d":"fping检测主机是否存在"},"free":{"n":"free","p":"/free","d":"显示内存的使用情况"},"fsck":{"n":"fsck","p":"/fsck","d":"fsck(英文全拼:file system check)命令检查并且试图修复文件系统中的错误"},"ftp":{"n":"ftp","p":"/ftp","d":"用来设置文件系统相关功能"},"ftpcount":{"n":"ftpcount","p":"/ftpcount","d":"显示目前已FTP登入的用户人数"},"ftpshut":{"n":"ftpshut","p":"/ftpshut","d":"在指定的时间关闭FTP服务器"},"ftptop":{"n":"ftptop","p":"/ftptop","d":"proftpd服务器的连接状态"},"ftpwho":{"n":"ftpwho","p":"/ftpwho","d":"显示当前每个ftp会话信息"},"fuser":{"n":"fuser","p":"/fuser","d":"使用文件或文件结构识别进程"},"gcc":{"n":"gcc","p":"/gcc","d":"基于C/C++的编译器"},"gcov":{"n":"gcov","p":"/gcov","d":"测试程序的代码覆盖率的工具"},"gdb":{"n":"gdb","p":"/gdb","d":"功能强大的程序调试器"},"get_module":{"n":"get_module","p":"/get_module","d":"获取Linux内核模块的详细信息"},"getenforce":{"n":"getenforce","p":"/getenforce","d":"显示当前SELinux的应用模式,是强制、执行还是停用"},"getent":{"n":"getent","p":"/getent","d":"查询 DNS 名称服务器中的命名空间"},"getsebool":{"n":"getsebool","p":"/getsebool","d":"查询SElinux策略内各项规则的布尔值"},"git":{"n":"git","p":"/git","d":"是目前世界上最先进的分布式版本控制系统"},"gpasswd":{"n":"gpasswd","p":"/gpasswd","d":"Linux下工作组文件的管理工具"},"gpg":{"n":"gpg","p":"/gpg","d":"可用于签名、检查、加密或解密的工具"},"gpm":{"n":"gpm","p":"/gpm","d":"提供文字模式下的滑鼠事件处理"},"grep":{"n":"grep","p":"/grep","d":"强大的文本搜索工具"},"groupadd":{"n":"groupadd","p":"/groupadd","d":"用于创建一个新的工作组"},"groupdel":{"n":"groupdel","p":"/groupdel","d":"用于删除指定的工作组"},"groupmems":{"n":"groupmems","p":"/groupmems","d":"管理用户主要组的成员"},"groupmod":{"n":"groupmod","p":"/groupmod","d":"更改群组识别码或名称"},"groups":{"n":"groups","p":"/groups","d":"打印指定用户所在组的名称。"},"grpck":{"n":"grpck","p":"/grpck","d":"用于验证组文件的完整性"},"grpconv":{"n":"grpconv","p":"/grpconv","d":"用来开启群组的投影密码"},"grpunconv":{"n":"grpunconv","p":"/grpunconv","d":"用来关闭群组的投影密码"},"grub":{"n":"grub","p":"/grub","d":"多重引导程序grub的命令行shell工具"},"grub2-mkconfig":{"n":"grub2-mkconfig","p":"/grub2-mkconfig","d":"生成 grub.cfg 配置文件。"},"grub2-set-default":{"n":"grub2-set-default","p":"/grub2-set-default","d":"设置系统默认的启动内核"},"gunzip":{"n":"gunzip","p":"/gunzip","d":"用来解压缩文件"},"gzexe":{"n":"gzexe","p":"/gzexe","d":"用来压缩可执行文件"},"gzip":{"n":"gzip","p":"/gzip","d":"用来压缩文件"},"halt":{"n":"halt","p":"/halt","d":"关闭正在运行的Linux操作系统"},"hcitool":{"n":"hcitool","p":"/hcitool","d":"hcitool是一个Linux命令行工具,用于管理和调试蓝牙设备。它可以用于扫描周围的蓝牙设备、连接到蓝牙设备发送命令和数据包等。"},"hdparm":{"n":"hdparm","p":"/hdparm","d":"显示与设定硬盘的参数"},"head":{"n":"head","p":"/head","d":"显示文件的开头部分。"},"help":{"n":"help","p":"/help","d":"该命令是bash内建命令,用于显示bash内建命令的帮助信息。"},"hexdump":{"n":"hexdump","p":"/hexdump","d":"显示文件十六进制格式"},"history":{"n":"history","p":"/history","d":"显示或操作历史列表。"},"host":{"n":"host","p":"/host","d":"常用的分析域名查询工具"},"hostid":{"n":"hostid","p":"/hostid","d":"显示当前主机的十六进制数字标识。"},"hostname":{"n":"hostname","p":"/hostname","d":"显示和设置系统的主机名"},"hostnamectl":{"n":"hostnamectl","p":"/hostnamectl","d":"查询或更改系统主机名"},"hping3":{"n":"hping3","p":"/hping3","d":"测试网络及主机的安全"},"htdigest":{"n":"htdigest","p":"/htdigest","d":"Apache服务器内置工具"},"htop":{"n":"htop","p":"/htop","d":"[非内部命令]一个互动的进程查看器,可以动态观察系统进程状况"},"htpasswd":{"n":"htpasswd","p":"/htpasswd","d":"apache服务器创建密码认证文件"},"hwclock":{"n":"hwclock","p":"/hwclock","d":"显示与设定硬件时钟"},"iconv":{"n":"iconv","p":"/iconv","d":"转换文件的编码方式"},"id":{"n":"id","p":"/id","d":"打印真实以及有效的用户和所在组的信息"},"ifcfg":{"n":"ifcfg","p":"/ifcfg","d":"置Linux中的网络接口参数"},"ifconfig":{"n":"ifconfig","p":"/ifconfig","d":"配置和显示Linux系统网卡的网络参数"},"ifdown":{"n":"ifdown","p":"/ifdown","d":"禁用指定的网络接口"},"ifstat":{"n":"ifstat","p":"/ifstat","d":"统计网络接口流量状态"},"iftop":{"n":"iftop","p":"/iftop","d":"一款实时流量监控工具"},"ifup":{"n":"ifup","p":"/ifup","d":"激活指定的网络接口"},"indent":{"n":"indent","p":"/indent","d":"格式化C语言的源文件"},"info":{"n":"info","p":"/info","d":"Linux下info格式的帮助指令"},"init":{"n":"init","p":"/init","d":"init进程是所有Linux进程的父进程"},"inotifywait":{"n":"inotifywait","p":"/inotifywait","d":"异步文件系统监控机制"},"insmod":{"n":"insmod","p":"/insmod","d":"将给定的模块加载到内核中"},"install":{"n":"install","p":"/install","d":"安装或升级软件或备份数据"},"iostat":{"n":"iostat","p":"/iostat","d":"iostat命令被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。iowait 指在一个采样周期内有百分之几的时间是属于以下情况:CPU处于空闲状态并且至少有一个未完成的磁盘IO请求。"},"iotop":{"n":"iotop","p":"/iotop","d":"用来监视磁盘I/O使用状况的工具"},"ip":{"n":"ip","p":"/ip","d":"网络配置工具"},"ip6tables-restore":{"n":"ip6tables-restore","p":"/ip6tables-restore","d":"还原ip6tables表"},"ip6tables-save":{"n":"ip6tables-save","p":"/ip6tables-save","d":"保存ip6tables表配置"},"ip6tables":{"n":"ip6tables","p":"/ip6tables","d":"linux中防火墙软件"},"ipcalc":{"n":"ipcalc","p":"/ipcalc","d":"简单的IP地址计算器"},"ipcrm":{"n":"ipcrm","p":"/ipcrm","d":"删除消息队列、信号集、或者共享内存标识"},"ipcs":{"n":"ipcs","p":"/ipcs","d":"分析消息队列共享内存和信号量"},"iperf":{"n":"iperf","p":"/iperf","d":"网络性能测试工具"},"iptables-restore":{"n":"iptables-restore","p":"/iptables-restore","d":"还原iptables表的配置"},"iptables-save":{"n":"iptables-save","p":"/iptables-save","d":"备份iptables的表配置"},"iptables":{"n":"iptables","p":"/iptables","d":"Linux上常用的防火墙软件"},"iptraf":{"n":"iptraf","p":"/iptraf","d":"实时地监视网卡流量"},"iptstate":{"n":"iptstate","p":"/iptstate","d":"显示iptables的工作状态"},"iscsiadm":{"n":"iscsiadm","p":"/iscsiadm","d":"管理iSCSI连接"},"ispell":{"n":"ispell","p":"/ispell","d":"检查文件中出现的拼写错误"},"jed":{"n":"jed","p":"/jed","d":"主要用于编辑代码的编辑器"},"jobs":{"n":"jobs","p":"/jobs","d":"显示作业的状态。"},"joe":{"n":"joe","p":"/joe","d":"强大的纯文本编辑器"},"join":{"n":"join","p":"/join","d":"两个文件中指定栏位内容相同的行连接起来"},"journalctl":{"n":"journalctl","p":"/journalctl","d":"检索 systemd 日志,是 CentOS 7 才有的工具。"},"jq":{"n":"jq","p":"/jq","d":"一个灵活的轻量级命令行JSON处理器"},"jwhois":{"n":"jwhois","p":"/jwhois","d":"whois 客户端服务"},"kernelversion":{"n":"kernelversion","p":"/kernelversion","d":"打印当前内核的主版本号"},"kexec":{"n":"kexec","p":"/kexec","d":"从当前正在运行的内核引导到一个新内核"},"kill":{"n":"kill","p":"/kill","d":"发送信号到进程。"},"killall":{"n":"killall","p":"/killall","d":"使用进程的名称来杀死一组进程"},"last":{"n":"last","p":"/last","d":"列出目前与过去登入系统的用户相关信息"},"lastb":{"n":"lastb","p":"/lastb","d":"列出登入系统失败的用户相关信息"},"lastlog":{"n":"lastlog","p":"/lastlog","d":"显示系统中所有用户最近一次登录信息"},"ld":{"n":"ld","p":"/ld","d":"将目标文件连接为可执行程序"},"ldconfig":{"n":"ldconfig","p":"/ldconfig","d":"动态链接库管理命令"},"ldd":{"n":"ldd","p":"/ldd","d":"打印程序或者库文件所依赖的共享库列表"},"less":{"n":"less","p":"/less","d":"分屏上下翻页浏览文件内容"},"let":{"n":"let","p":"/let","d":"简单的计算器,执行算术表达式。"},"lftp":{"n":"lftp","p":"/lftp","d":"优秀的文件客户端程序"},"lftpget":{"n":"lftpget","p":"/lftpget","d":"调用lftp指令下载指定的文件"},"lha":{"n":"lha","p":"/lha","d":"压缩或解压缩lzh格式文件"},"lilo":{"n":"lilo","p":"/lilo","d":"安装核心载入开机管理程序"},"ln":{"n":"ln","p":"/ln","d":"用来为文件创建链接"},"lnstat":{"n":"lnstat","p":"/lnstat","d":"显示Linux系统的网路状态"},"local":{"n":"local","p":"/local","d":"在函数内定义局部变量。"},"locate":{"n":"locate","p":"/locate","d":"比 find 好用的文件查找工具"},"logger":{"n":"logger","p":"/logger","d":"在系统日志中记录相应条目"},"login":{"n":"login","p":"/login","d":"登录系统或切换用户身份"},"logname":{"n":"logname","p":"/logname","d":"打印当前终端登录用户的名称。"},"logout":{"n":"logout","p":"/logout","d":"退出当前登录的Shell"},"logrotate":{"n":"logrotate","p":"/logrotate","d":"系统日志进行轮转、压缩和删除"},"logsave":{"n":"logsave","p":"/logsave","d":"将命令的输出信息保存到指定的日志文件"},"logwatch":{"n":"logwatch","p":"/logwatch","d":"可定制和可插入式的日志监视系统"},"look":{"n":"look","p":"/look","d":"显示文件中以指定字符串开头的任意行"},"losetup":{"n":"losetup","p":"/losetup","d":"设定与控制循环(loop)设备"},"lp":{"n":"lp","p":"/lp","d":"打印文件或修改排队的打印任务"},"lpadmin":{"n":"lpadmin","p":"/lpadmin","d":"配置CUPS套件中的打印机和类"},"lpc":{"n":"lpc","p":"/lpc","d":"命令行方式打印机控制程序"},"lpq":{"n":"lpq","p":"/lpq","d":"显示打印队列中的打印任务的状态信息"},"lpr":{"n":"lpr","p":"/lpr","d":"将文件发送给指定打印机进行打印"},"lprm":{"n":"lprm","p":"/lprm","d":"删除打印队列中的打印任务"},"lpstat":{"n":"lpstat","p":"/lpstat","d":"显示CUPS中打印机的状态信息"},"ls":{"n":"ls","p":"/ls","d":"显示目录内容列表"},"lsattr":{"n":"lsattr","p":"/lsattr","d":"查看文件的第二扩展文件系统属性"},"lsb_release":{"n":"lsb_release","p":"/lsb_release","d":"显示发行版本信息"},"lsblk":{"n":"lsblk","p":"/lsblk","d":"列出块设备信息"},"lscpu":{"n":"lscpu","p":"/lscpu","d":"显示有关CPU架构的信息"},"lsmod":{"n":"lsmod","p":"/lsmod","d":"显示已载入系统的模块"},"lsof":{"n":"lsof","p":"/lsof","d":"显示Linux系统当前已打开的所有文件列表 `lsof -p pid`"},"lspci":{"n":"lspci","p":"/lspci","d":"显示当前主机的所有PCI总线信息"},"lsusb":{"n":"lsusb","p":"/lsusb","d":"显示本机的USB设备列表信息"},"ltrace":{"n":"ltrace","p":"/ltrace","d":"用来跟踪进程调用库函数的情况"},"lvcreate":{"n":"lvcreate","p":"/lvcreate","d":"用于创建LVM的逻辑卷"},"lvdisplay":{"n":"lvdisplay","p":"/lvdisplay","d":"显示逻辑卷属性"},"lvextend":{"n":"lvextend","p":"/lvextend","d":"扩展逻辑卷空间"},"lvreduce":{"n":"lvreduce","p":"/lvreduce","d":"收缩逻辑卷空间"},"lvremove":{"n":"lvremove","p":"/lvremove","d":"删除指定LVM逻辑卷"},"lvresize":{"n":"lvresize","p":"/lvresize","d":"调整逻辑卷空间大小"},"lvscan":{"n":"lvscan","p":"/lvscan","d":"扫描逻辑卷"},"lynx":{"n":"lynx","p":"/lynx","d":"纯文本模式的网页浏览器"},"mail":{"n":"mail","p":"/mail","d":"命令行下发送和接收电子邮件"},"mailq":{"n":"mailq","p":"/mailq","d":"显示待发送的邮件队列"},"mailstat":{"n":"mailstat","p":"/mailstat","d":"显示到达的邮件状态"},"make":{"n":"make","p":"/make","d":"GNU的工程化编译工具"},"man":{"n":"man","p":"/man","d":"查看Linux中的指令帮助"},"mapfile":{"n":"mapfile","p":"/mapfile","d":"从标准输入读取行并赋值到数组。"},"md5sum":{"n":"md5sum","p":"/md5sum","d":"计算和校验文件报文摘要的工具程序"},"mesg":{"n":"mesg","p":"/mesg","d":"设置当前终端的写权限"},"mii-tool":{"n":"mii-tool","p":"/mii-tool","d":"配置网络设备协商方式的工具"},"mkbootdisk":{"n":"mkbootdisk","p":"/mkbootdisk","d":"可建立目前系统的启动盘"},"mkcert":{"n":"mkcert","p":"/mkcert","d":"用来生成自签证书的工具"},"mkdir":{"n":"mkdir","p":"/mkdir","d":"用来创建目录"},"mke2fs":{"n":"mke2fs","p":"/mke2fs","d":"创建磁盘分区上的“etc2/etc3”文件系统"},"mkfs":{"n":"mkfs","p":"/mkfs","d":"用于在设备上创建Linux文件系统"},"mkinitrd":{"n":"mkinitrd","p":"/mkinitrd","d":"建立要载入ramdisk的映像文件"},"mkisofs":{"n":"mkisofs","p":"/mkisofs","d":"建立ISO 9660映像文件"},"mknod":{"n":"mknod","p":"/mknod","d":"创建字符设备文件和块设备文件"},"mkswap":{"n":"mkswap","p":"/mkswap","d":"建立和设置SWAP交换分区"},"mktemp":{"n":"mktemp","p":"/mktemp","d":"创建临时文件供shell脚本使用"},"modetest":{"n":"modetest","p":"/modetest","d":"DRM/KMS驱动程序libdrm中的模式测试工具"},"modprobe":{"n":"modprobe","p":"/modprobe","d":"自动处理可载入模块"},"more":{"n":"more","p":"/more","d":"显示文件内容,每次显示一屏"},"mount":{"n":"mount","p":"/mount","d":"用于挂载Linux系统外的文件"},"mpstat":{"n":"mpstat","p":"/mpstat","d":"显示各个可用CPU的状态"},"mtools":{"n":"mtools","p":"/mtools","d":"显示mtools支持的指令"},"mtr":{"n":"mtr","p":"/mtr","d":"`mtr` 结合了 `traceroute` 和 `ping` 程序的功能,是一款简单的网络诊断工具"},"mv":{"n":"mv","p":"/mv","d":"用来对文件或目录重新命名"},"mysql":{"n":"mysql","p":"/mysql","d":"MySQL服务器客户端工具"},"mysqladmin":{"n":"mysqladmin","p":"/mysqladmin","d":"MySQL服务器管理客户端"},"mysqldump":{"n":"mysqldump","p":"/mysqldump","d":"MySQL数据库中备份工具"},"mysqlimport":{"n":"mysqlimport","p":"/mysqlimport","d":"为MySQL服务器用命令行方式导入数据"},"mysqlshow":{"n":"mysqlshow","p":"/mysqlshow","d":"显示MySQL中数据库相关信息"},"named-checkzone":{"n":"named-checkzone","p":"/named-checkzone","d":"使用named-checkzone命令可以进行区域文件有效性检查和转换,必须指定区域名称和区域文件名称"},"nano":{"n":"nano","p":"/nano","d":"字符终端文本编辑器"},"nc":{"n":"nc","p":"/nc","d":"nc是网络工具中的瑞士军刀"},"ncftp":{"n":"ncftp","p":"/ncftp","d":"是增强的的FTP工具"},"neofetch":{"n":"neofetch","p":"/neofetch","d":"显示带有发行徽标的系统信息的工具"},"nethogs":{"n":"nethogs","p":"/nethogs","d":"终端下的网络流量监控工具"},"netstat":{"n":"netstat","p":"/netstat","d":"查看Linux中网络系统状态信息"},"newusers":{"n":"newusers","p":"/newusers","d":"用于批处理的方式一次创建多个命令"},"nfsstat":{"n":"nfsstat","p":"/nfsstat","d":"列出NFS客户端和服务器的工作状态"},"ngrep":{"n":"ngrep","p":"/ngrep","d":"方便的数据包匹配和显示工具"},"nice":{"n":"nice","p":"/nice","d":"调整程序执行的优先权等级"},"nisdomainname":{"n":"nisdomainname","p":"/nisdomainname","d":"显示主机NIS的域名"},"nl":{"n":"nl","p":"/nl","d":"为每一个文件添加行号。"},"nm":{"n":"nm","p":"/nm","d":"显示二进制目标文件的符号表"},"nmap":{"n":"nmap","p":"/nmap","d":"网络探测和安全审核"},"nmcli":{"n":"nmcli","p":"/nmcli","d":"地址配置工具"},"nohup":{"n":"nohup","p":"/nohup","d":"将程序以忽略挂起信号的方式运行起来"},"nologin":{"n":"nologin","p":"/nologin","d":"拒绝用户登录系统"},"nproc":{"n":"nproc","p":"/nproc","d":"打印可用的处理器单元数量。"},"nslookup":{"n":"nslookup","p":"/nslookup","d":"查询域名DNS信息的工具"},"ntpdate":{"n":"ntpdate","p":"/ntpdate","d":"使用网络计时协议(NTP)设置日期和时间"},"ntsysv":{"n":"ntsysv","p":"/ntsysv","d":"集中管理系统的各种服务"},"objdump":{"n":"objdump","p":"/objdump","d":"显示二进制文件信息"},"od":{"n":"od","p":"/od","d":"输出文件的八进制、十六进制等格式编码的字节"},"openssl":{"n":"openssl","p":"/openssl","d":"强大的安全套接字层密码库"},"pacman":{"n":"pacman","p":"/pacman","d":"Arch Linux 系统及其衍生系统中默认使用的包管理器"},"parted":{"n":"parted","p":"/parted","d":"磁盘分区和分区大小调整工具"},"partprobe":{"n":"partprobe","p":"/partprobe","d":"不重启的情况下重读分区"},"passwd":{"n":"passwd","p":"/passwd","d":"用于让用户可以更改自己的密码"},"paste":{"n":"paste","p":"/paste","d":"将多个文件按列队列合并"},"patch":{"n":"patch","p":"/patch","d":"为开放源代码软件安装补丁程序"},"pathchk":{"n":"pathchk","p":"/pathchk","d":"检查文件中不可移植的部分"},"perl":{"n":"perl","p":"/perl","d":"perl语言解释器"},"pfctl":{"n":"pfctl","p":"/pfctl","d":"PF防火墙的配置命令"},"pgrep":{"n":"pgrep","p":"/pgrep","d":"根据用户给出的信息在当前运行进程中查找并列出符合条件的进程ID(PID)"},"php":{"n":"php","p":"/php","d":"PHP语言的命令行接口"},"pico":{"n":"pico","p":"/pico","d":"功能强大全屏幕的文本编辑器"},"pidof":{"n":"pidof","p":"/pidof","d":"查找指定名称的进程的进程号ID号"},"pidstat":{"n":"pidstat","p":"/pidstat","d":"监控进程的系统资源占用情况"},"pigz":{"n":"pigz","p":"/pigz","d":"可以用来解压缩文件,gzip的并行实现升级版"},"ping":{"n":"ping","p":"/ping","d":"测试主机之间网络的连通性(ipv4)"},"ping6":{"n":"ping6","p":"/ping6","d":"测试主机之间网络的连通性(ipv6)"},"pip":{"n":"pip","p":"/pip","d":"Python 编程语言中的包管理器,用于安装和管理第三方 Python 模块"},"pkexec":{"n":"pkexec","p":"/pkexec","d":"以其他用户身份执行命令"},"pkill":{"n":"pkill","p":"/pkill","d":"可以按照进程名杀死进程"},"pmap":{"n":"pmap","p":"/pmap","d":"报告进程的内存映射关系"},"popd":{"n":"popd","p":"/popd","d":"从目录堆栈中删除目录。"},"poweroff":{"n":"poweroff","p":"/poweroff","d":"关闭Linux系统,关闭记录会被写入到/var/log/wtmp日志文件中"},"ppp-off":{"n":"ppp-off","p":"/ppp-off","d":"关闭ppp连线"},"pr":{"n":"pr","p":"/pr","d":"将文本文件转换成适合打印的格式"},"printf":{"n":"printf","p":"/printf","d":"格式化并输出结果。"},"protoize":{"n":"protoize","p":"/protoize","d":"GNU-C代码转换为ANSI-C代码"},"prtstat":{"n":"prtstat","p":"/prtstat","d":"显示进程信息"},"ps":{"n":"ps","p":"/ps","d":"报告当前系统的进程状态"},"pssh":{"n":"pssh","p":"/pssh","d":"批量管理执行"},"pstack":{"n":"pstack","p":"/pstack","d":"显示每个进程的栈跟踪"},"pstree":{"n":"pstree","p":"/pstree","d":"以树状图的方式展现进程之间的派生关系"},"pushd":{"n":"pushd","p":"/pushd","d":"将目录添加到目录堆栈顶部。"},"pv":{"n":"pv","p":"/pv","d":"显示当前在命令行执行的命令的进度信息,管道查看器"},"pvchange":{"n":"pvchange","p":"/pvchange","d":"修改物理卷属性"},"pvck":{"n":"pvck","p":"/pvck","d":"检测物理卷的LVM元数据的一致性"},"pvcreate":{"n":"pvcreate","p":"/pvcreate","d":"将物理硬盘分区初始化为物理卷"},"pvdisplay":{"n":"pvdisplay","p":"/pvdisplay","d":"显示物理卷的属性"},"pvremove":{"n":"pvremove","p":"/pvremove","d":"删除一个存在的物理卷"},"pvs":{"n":"pvs","p":"/pvs","d":"输出物理卷信息报表"},"pvscan":{"n":"pvscan","p":"/pvscan","d":"扫描系统中所有硬盘的物理卷列表"},"pwck":{"n":"pwck","p":"/pwck","d":"用来验证系统认证文件内容和格式的完整性"},"pwconv":{"n":"pwconv","p":"/pwconv","d":"用来开启用户的投影密码"},"pwd":{"n":"pwd","p":"/pwd","d":"显示当前工作目录的绝对路径。"},"pwdx":{"n":"pwdx","p":"/pwdx","d":"用于显示指定进程的当前工作目录"},"pwunconv":{"n":"pwunconv","p":"/pwunconv","d":"用来关闭用户的投影密码"},"quota":{"n":"quota","p":"/quota","d":"显示磁盘已使用的空间与限制"},"quotacheck":{"n":"quotacheck","p":"/quotacheck","d":"检查磁盘的使用空间与限制"},"quotaoff":{"n":"quotaoff","p":"/quotaoff","d":"关闭Linux内核中指定文件系统的磁盘配额功能"},"quotaon":{"n":"quotaon","p":"/quotaon","d":"激活Linux内核中指定文件系统的磁盘配额功能"},"rcconf":{"n":"rcconf","p":"/rcconf","d":"Debian Linux下的运行等级服务配置工具"},"rcp":{"n":"rcp","p":"/rcp","d":"使在两台Linux主机之间的文件复制操作更简单"},"read":{"n":"read","p":"/read","d":"从键盘读取变量值"},"readelf":{"n":"readelf","p":"/readelf","d":"用于显示elf格式文件的信息"},"readonly":{"n":"readonly","p":"/readonly","d":"标记shell变量或函数为只读"},"reboot":{"n":"reboot","p":"/reboot","d":"重新启动正在运行的Linux操作系统"},"reject":{"n":"reject","p":"/reject","d":"指示打印系统拒绝发往指定目标打印机的打印任务"},"rename":{"n":"rename","p":"/rename","d":"用字符串替换的方式批量改变文件名"},"renice":{"n":"renice","p":"/renice","d":"修改正在运行的进程的调度优先级"},"reposync":{"n":"reposync","p":"/reposync","d":"同步yum存储库到本地目录"},"repquota":{"n":"repquota","p":"/repquota","d":"报表的格式输出磁盘空间限制的状态"},"resize":{"n":"resize","p":"/resize","d":"命令设置终端机视窗的大小"},"restore":{"n":"restore","p":"/restore","d":"所进行的操作和dump指令相反"},"restorecon":{"n":"restorecon","p":"/restorecon","d":"恢复文件的安全上下文"},"return":{"n":"return","p":"/return","d":"从函数中退出并返回数值。"},"rev":{"n":"rev","p":"/rev","d":"将文件内容以字符为单位反序输出"},"rexec":{"n":"rexec","p":"/rexec","d":"远程执行Linux系统下命令"},"rlogin":{"n":"rlogin","p":"/rlogin","d":"从当前终端登录到远程Linux主机"},"rm":{"n":"rm","p":"/rm","d":"用于删除给定的文件和目录"},"rmdir":{"n":"rmdir","p":"/rmdir","d":"用来删除空目录"},"rmmod":{"n":"rmmod","p":"/rmmod","d":"从运行的内核中移除指定的内核模块"},"route":{"n":"route","p":"/route","d":"显示并设置Linux中静态路由表"},"rpm":{"n":"rpm","p":"/rpm","d":"RPM软件包的管理工具"},"rpm2cpio":{"n":"rpm2cpio","p":"/rpm2cpio","d":"将RPM软件包转换为cpio格式的文件"},"rpmbuild":{"n":"rpmbuild","p":"/rpmbuild","d":"创建RPM的二进制软件包和源码软件包"},"rpmdb":{"n":"rpmdb","p":"/rpmdb","d":"初始化和重建RPM数据库"},"rpmquery":{"n":"rpmquery","p":"/rpmquery","d":"从RPM数据库中查询软件包信息"},"rpmsign":{"n":"rpmsign","p":"/rpmsign","d":"使用RPM软件包的签名管理工具"},"rpmverify":{"n":"rpmverify","p":"/rpmverify","d":"验证已安装的RPM软件包的正确性"},"rsh":{"n":"rsh","p":"/rsh","d":"连接远程主机并执行命令"},"rsync":{"n":"rsync","p":"/rsync","d":"远程数据同步工具"},"runlevel":{"n":"runlevel","p":"/runlevel","d":"打印当前Linux系统的运行等级"},"sar":{"n":"sar","p":"/sar","d":"系统运行状态统计工具"},"scp":{"n":"scp","p":"/scp","d":"加密的方式在本地主机和远程主机之间复制文件"},"screen":{"n":"screen","p":"/screen","d":"用于命令行终端切换"},"script":{"n":"script","p":"/script","d":"记录终端会话的所有操作"},"scriptreplay":{"n":"scriptreplay","p":"/scriptreplay","d":"重新播放终端会话的所有操作"},"sed":{"n":"sed","p":"/sed","d":"功能强大的流式文本编辑器"},"seinfo":{"n":"seinfo","p":"/seinfo","d":"查询SELinux的策略提供多少相关规则"},"semanage":{"n":"semanage","p":"/semanage","d":"默认目录的安全上下文查询与修改"},"sendmail":{"n":"sendmail","p":"/sendmail","d":"著名电子邮件服务器"},"seq":{"n":"seq","p":"/seq","d":"以指定增量从首数开始打印数字到尾数"},"service":{"n":"service","p":"/service","d":"控制系统服务的实用工具"},"sesearch":{"n":"sesearch","p":"/sesearch","d":"查询SELinux策略的规则详情"},"set":{"n":"set","p":"/set","d":"显示或设置shell特性及shell变量"},"setfacl":{"n":"setfacl","p":"/setfacl","d":"设置文件访问控制列表"},"setpci":{"n":"setpci","p":"/setpci","d":"查询和配置PCI设备的使用工具"},"setsebool":{"n":"setsebool","p":"/setsebool","d":"修改SElinux策略内各项规则的布尔值"},"setsid":{"n":"setsid","p":"/setsid","d":"在新的会话中运行程序"},"sftp-server":{"n":"sftp-server","p":"/sftp-server","d":"sftp协议的服务器端程序"},"sftp":{"n":"sftp","p":"/sftp","d":"交互式的文件传输程序"},"sh":{"n":"sh","p":"/sh","d":"shell命令解释器"},"sha256sum":{"n":"sha256sum","p":"/sha256sum","d":"用于计算文件的 SHA-256 哈希值"},"shift":{"n":"shift","p":"/shift","d":"移动位置参数。"},"shopt":{"n":"shopt","p":"/shopt","d":"显示和设置shell操作选项"},"showmount":{"n":"showmount","p":"/showmount","d":"显示NFS服务器加载的信息"},"shuf":{"n":"shuf","p":"/shuf","d":"产生随机的排列。"},"shutdown":{"n":"shutdown","p":"/shutdown","d":"用来执行系统关机的命令"},"skill":{"n":"skill","p":"/skill","d":"向选定的进程发送信号冻结进程"},"slabtop":{"n":"slabtop","p":"/slabtop","d":"实时显示内核slab内存缓存信息"},"sleep":{"n":"sleep","p":"/sleep","d":"将目前动作延迟一段时间"},"slocate":{"n":"slocate","p":"/slocate","d":"命令查找文件或目录"},"smartmontools":{"n":"smartmontools","p":"/smartmontools","d":"Smartmontools 是一种硬盘检测工具,通过控制和管理硬盘的SMART(Self Monitoring Analysis and Reporting Technology,自动检测分析及报告技术)技术来实现的"},"smbclient":{"n":"smbclient","p":"/smbclient","d":"交互方式访问samba服务器"},"smbpasswd":{"n":"smbpasswd","p":"/smbpasswd","d":"samba用户和密码管理工具"},"sort":{"n":"sort","p":"/sort","d":"对文本文件中所有行进行排序。"},"source":{"n":"source","p":"/source","d":"在当前Shell环境中从指定文件读取和执行命令。"},"speedtest-cli":{"n":"speedtest-cli","p":"/speedtest-cli","d":"命令行下测试服务器外网速度"},"spell":{"n":"spell","p":"/spell","d":"对文件进行拼写检查"},"split":{"n":"split","p":"/split","d":"分割任意大小的文件"},"squid":{"n":"squid","p":"/squid","d":"squid服务器守护进程"},"squidclient":{"n":"squidclient","p":"/squidclient","d":"squid服务器的客户端管理工具"},"ss":{"n":"ss","p":"/ss","d":"比 netstat 好用的socket统计信息,iproute2 包附带的另一个工具,允许你查询 socket 的有关统计信息"},"ssh-add":{"n":"ssh-add","p":"/ssh-add","d":"把专用密钥添加到ssh-agent的高速缓存中"},"ssh-agent":{"n":"ssh-agent","p":"/ssh-agent","d":"ssh密钥管理器"},"ssh-copy-id":{"n":"ssh-copy-id","p":"/ssh-copy-id","d":"把本地的ssh公钥文件安装到远程主机对应的账户下"},"ssh-keygen":{"n":"ssh-keygen","p":"/ssh-keygen","d":"为ssh生成、管理和转换认证密钥"},"ssh-keyscan":{"n":"ssh-keyscan","p":"/ssh-keyscan","d":"收集主机公钥的使用工具"},"ssh":{"n":"ssh","p":"/ssh","d":"openssh套件中的客户端连接工具"},"sshd":{"n":"sshd","p":"/sshd","d":"openssh软件套件中的服务器守护进程"},"sshpass":{"n":"sshpass","p":"/sshpass","d":"免交互 SSH 登录工具。"},"startx":{"n":"startx","p":"/startx","d":"用来启动X Window"},"stat":{"n":"stat","p":"/stat","d":"用于显示文件的状态信息"},"strace":{"n":"strace","p":"/strace","d":"跟踪系统调用和信号"},"strings":{"n":"strings","p":"/strings","d":"在对象文件或二进制文件中查找可打印的字符串"},"stty":{"n":"stty","p":"/stty","d":"修改终端命令行的相关设置"},"su":{"n":"su","p":"/su","d":"用于切换当前用户身份到其他用户身份"},"sudo":{"n":"sudo","p":"/sudo","d":"以其他身份来执行命令"},"sum":{"n":"sum","p":"/sum","d":"计算文件的校验码和显示块数"},"supervisord":{"n":"supervisord","p":"/supervisord","d":"配置后台服务/常驻进程的进程管家工具"},"suspend":{"n":"suspend","p":"/suspend","d":"挂起shell的执行。"},"swapoff":{"n":"swapoff","p":"/swapoff","d":"关闭指定的交换空间"},"swapon":{"n":"swapon","p":"/swapon","d":"激活Linux系统中交换空间"},"sync":{"n":"sync","p":"/sync","d":"用于强制被改变的内容立刻写入磁盘"},"sysctl":{"n":"sysctl","p":"/sysctl","d":"时动态地修改内核的运行参数"},"syslog":{"n":"syslog","p":"/syslog","d":"系统默认的日志守护进程"},"systemctl":{"n":"systemctl","p":"/systemctl","d":"系统服务管理器指令"},"systool":{"n":"systool","p":"/systool","d":"显示基于总线、类和拓扑显示系统中设备的信息"},"tac":{"n":"tac","p":"/tac","d":"连接多个文件并以行为单位反向打印到标准输出。"},"tail":{"n":"tail","p":"/tail","d":"在屏幕上显示指定文件的末尾若干行"},"tailf":{"n":"tailf","p":"/tailf","d":"在屏幕上显示指定文件的末尾若干行内容,通常用于日志文件的跟踪输出"},"talk":{"n":"talk","p":"/talk","d":"让用户和其他用户聊天"},"tar":{"n":"tar","p":"/tar","d":"将许多文件一起保存至一个单独的磁带或磁盘归档,并能从归档中单独还原所需文件。"},"tcpdump":{"n":"tcpdump","p":"/tcpdump","d":"一款sniffer工具,是Linux上的抓包工具,嗅探器"},"tcpreplay":{"n":"tcpreplay","p":"/tcpreplay","d":"将保存在 PCAP 文件包重新发送,用于性能或者功能测试"},"tee":{"n":"tee","p":"/tee","d":"从标准输入读取数据并重定向到标准输出和文件。"},"telinit":{"n":"telinit","p":"/telinit","d":"切换当前正在运行系统的运行等级"},"telnet":{"n":"telnet","p":"/telnet","d":"登录远程主机和管理(测试ip端口是否连通)"},"tempfile":{"n":"tempfile","p":"/tempfile","d":"shell中给临时文件命名"},"test":{"n":"test","p":"/test","d":"执行条件表达式。"},"tftp":{"n":"tftp","p":"/tftp","d":"在本机和tftp服务器之间使用TFTP协议传输文件"},"time":{"n":"time","p":"/time","d":"统计给定命令所花费的总时间"},"timedatectl":{"n":"timedatectl","p":"/timedatectl","d":"用于在 Linux 中设置或查询系统时间、日期和时区等配置。"},"times":{"n":"times","p":"/times","d":"显示进程累计时间。"},"tload":{"n":"tload","p":"/tload","d":"显示系统负载状况"},"tmux":{"n":"tmux","p":"/tmux","d":"Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权"},"top":{"n":"top","p":"/top","d":"显示或管理执行中的程序"},"touch":{"n":"touch","p":"/touch","d":"创建新的空文件"},"tput":{"n":"tput","p":"/tput","d":"通过terminfo数据库对终端会话进行初始化和操作"},"tr":{"n":"tr","p":"/tr","d":"将字符进行替换压缩和删除"},"tracepath":{"n":"tracepath","p":"/tracepath","d":"追踪目的主机经过的路由信息"},"traceroute":{"n":"traceroute","p":"/traceroute","d":"显示数据包到主机间的路径"},"trap":{"n":"trap","p":"/trap","d":"捕捉信号和其他事件并执行命令。"},"tree":{"n":"tree","p":"/tree","d":"树状图列出目录的内容"},"true":{"n":"true","p":"/true","d":"返回状态为成功。"},"tty":{"n":"tty","p":"/tty","d":"显示连接到当前标准输入的终端设备文件名"},"type":{"n":"type","p":"/type","d":"显示指定命令的类型。"},"ulimit":{"n":"ulimit","p":"/ulimit","d":"控制shell程序的资源"},"umask":{"n":"umask","p":"/umask","d":"显示或设置创建文件的权限掩码。"},"umount":{"n":"umount","p":"/umount","d":"用于卸载已经加载的文件系统"},"unalias":{"n":"unalias","p":"/unalias","d":"删除由alias设置的别名"},"uname":{"n":"uname","p":"/uname","d":"打印系统信息。"},"unarj":{"n":"unarj","p":"/unarj","d":"解压缩由arj命令创建的压缩包"},"uncompress":{"n":"uncompress","p":"/uncompress","d":"用来解压.Z文件"},"unexpand":{"n":"unexpand","p":"/unexpand","d":"将文件的空白字符转换为制表符"},"uniq":{"n":"uniq","p":"/uniq","d":"显示或忽略重复的行。"},"unlink":{"n":"unlink","p":"/unlink","d":"系统调用函数unlink去删除指定的文件"},"unprotoize":{"n":"unprotoize","p":"/unprotoize","d":"删除C语言源代码文件中的函数原型"},"unrar":{"n":"unrar","p":"/unrar","d":"解压rar文件命令,从 rar 压缩包中提取文件"},"unset":{"n":"unset","p":"/unset","d":"删除指定的shell变量或函数。"},"unzip":{"n":"unzip","p":"/unzip","d":"用于解压缩由zip命令压缩的压缩包"},"updatedb":{"n":"updatedb","p":"/updatedb","d":"创建或更新slocate命令所必需的数据库文件"},"uptime":{"n":"uptime","p":"/uptime","d":"查看Linux系统负载信息"},"useradd":{"n":"useradd","p":"/useradd","d":"创建的新的系统用户"},"userdel":{"n":"userdel","p":"/userdel","d":"用于删除给定的用户以及与用户相关的文件"},"usermod":{"n":"usermod","p":"/usermod","d":"用于修改用户的基本信息"},"usernetctl":{"n":"usernetctl","p":"/usernetctl","d":"被允许时操作指定的网络接口"},"users":{"n":"users","p":"/users","d":"打印当前主机所有登陆用户的名称。"},"uucico":{"n":"uucico","p":"/uucico","d":"UUCP文件传输服务程序"},"uupick":{"n":"uupick","p":"/uupick","d":"命令处理传送进来的文件"},"uuto":{"n":"uuto","p":"/uuto","d":"将文件传送到远端的UUCP主机"},"vdfuse":{"n":"vdfuse","p":"/vdfuse","d":"VirtualBox软件挂载VDI分区文件工具"},"vgchange":{"n":"vgchange","p":"/vgchange","d":"修改卷组属性"},"vgconvert":{"n":"vgconvert","p":"/vgconvert","d":"转换卷组元数据格式"},"vgcreate":{"n":"vgcreate","p":"/vgcreate","d":"用于创建LVM卷组"},"vgdisplay":{"n":"vgdisplay","p":"/vgdisplay","d":"显示LVM卷组的信息"},"vgextend":{"n":"vgextend","p":"/vgextend","d":"向卷组中添加物理卷"},"vgreduce":{"n":"vgreduce","p":"/vgreduce","d":"从卷组中删除物理卷"},"vgremove":{"n":"vgremove","p":"/vgremove","d":"用于用户删除LVM卷组"},"vgrename":{"n":"vgrename","p":"/vgrename","d":"使用vgrename命令可以重命名卷组的名称"},"vgscan":{"n":"vgscan","p":"/vgscan","d":"扫描并显示系统中的卷组"},"vi":{"n":"vi","p":"/vi","d":"功能强大的纯文本编辑器"},"vmstat":{"n":"vmstat","p":"/vmstat","d":"显示虚拟内存状态"},"volname":{"n":"volname","p":"/volname","d":"显示指定的ISO-9660格式的设备的卷名称"},"w":{"n":"w","p":"/w","d":"显示目前登入系统的用户信息"},"wait":{"n":"wait","p":"/wait","d":"等待进程执行完后返回"},"wall":{"n":"wall","p":"/wall","d":"向系统当前所有打开的终端上输出信息"},"watch":{"n":"watch","p":"/watch","d":"可以将命令的输出结果输出到标准输出设备,多用于周期性执行命令/定时执行命令"},"wc":{"n":"wc","p":"/wc","d":"统计文件的字节数、字数、行数"},"wget":{"n":"wget","p":"/wget","d":"Linux系统下载文件工具"},"whatis":{"n":"whatis","p":"/whatis","d":"查询一个命令执行什么功能"},"whereis":{"n":"whereis","p":"/whereis","d":"查找二进制程序、代码等相关文件路径"},"which":{"n":"which","p":"/which","d":"查找并显示给定命令的绝对路径"},"who":{"n":"who","p":"/who","d":"显示当前所有登陆用户的信息。"},"whoami":{"n":"whoami","p":"/whoami","d":"打印当前有效的用户ID对应的名称"},"write":{"n":"write","p":"/write","d":"向指定登录用户终端上发送信息"},"xargs":{"n":"xargs","p":"/xargs","d":"给其他命令传递参数的一个过滤器"},"xauth":{"n":"xauth","p":"/xauth","d":"显示和编辑被用于连接X服务器的认证信息"},"xclip":{"n":"xclip","p":"/xclip","d":"管理 X 粘贴板"},"xhost":{"n":"xhost","p":"/xhost","d":"制哪些X客户端能够在X服务器上显示"},"xinit":{"n":"xinit","p":"/xinit","d":"是Linux下X-Window系统的初始化程序"},"xlsatoms":{"n":"xlsatoms","p":"/xlsatoms","d":"列出X服务器内部所有定义的原子成分"},"xlsclients":{"n":"xlsclients","p":"/xlsclients","d":"列出显示器中的客户端应用程序"},"xlsfonts":{"n":"xlsfonts","p":"/xlsfonts","d":"列出X Server使用的字体"},"xrandr":{"n":"xrandr","p":"/xrandr","d":"X 窗口系统配置管理工具"},"xset":{"n":"xset","p":"/xset","d":"设置X-Window系统中的用户爱好的实用工具"},"xz":{"n":"xz","p":"/xz","d":"POSIX 平台开发具有高压缩率的工具"},"yes":{"n":"yes","p":"/yes","d":"重复打印指定字符串"},"ypdomainname":{"n":"ypdomainname","p":"/ypdomainname","d":"显示主机的NIS的域名"},"yum":{"n":"yum","p":"/yum","d":"基于RPM的软件包管理器"},"zcat":{"n":"zcat","p":"/zcat","d":"显示压缩包中文件的内容"},"zfore":{"n":"zfore","p":"/zfore","d":"强制为gzip格式的压缩文件添加.gz后缀"},"zip":{"n":"zip","p":"/zip","d":"可以用来解压缩文件"},"zipinfo":{"n":"zipinfo","p":"/zipinfo","d":"用来列出压缩文件信息"},"zipsplit":{"n":"zipsplit","p":"/zipsplit","d":"将较大的zip压缩包分割成各个较小的压缩包"},"znew":{"n":"znew","p":"/znew","d":"将.Z压缩包重新转化为gzip命令压缩的.gz压缩包"}} \ No newline at end of file +{"7z":{"n":"7z","p":"/7z","d":"拥有极高压缩比的开源压缩软件。"},"ab":{"n":"ab","p":"/ab","d":"Apache服务器的性能测试工具"},"accept":{"n":"accept","p":"/accept","d":"指示打印系统接受发往指定目标打印机的打印任务"},"ack":{"n":"ack","p":"/ack","d":"比grep好用的文本搜索工具"},"ag":{"n":"ag","p":"/ag","d":"ack 的升级版,C语言编写,更快更人性化"},"alias":{"n":"alias","p":"/alias","d":"定义或显示别名。"},"apachectl":{"n":"apachectl","p":"/apachectl","d":"Apache服务器前端控制工具"},"apk":{"n":"apk","p":"/apk","d":"Alpine Linux 下的包管理工具"},"apropos":{"n":"apropos","p":"/apropos","d":"在 whatis 数据库中查找字符串"},"apt-get":{"n":"apt-get","p":"/apt-get","d":"Debian Linux发行版中的APT软件包管理工具"},"apt-key":{"n":"apt-key","p":"/apt-key","d":"管理Debian Linux系统中的软件包密钥"},"apt-sortpkgs":{"n":"apt-sortpkgs","p":"/apt-sortpkgs","d":"Debian Linux下对软件包索引文件进行排序的工具"},"aptitude":{"n":"aptitude","p":"/aptitude","d":"Debian Linux系统中软件包管理工具"},"ar":{"n":"ar","p":"/ar","d":"建立或修改备存文件,或是从备存文件中抽取文件"},"arch":{"n":"arch","p":"/arch","d":"显示当前主机的硬件架构类型"},"arj":{"n":"arj","p":"/arj","d":"用于创建和管理.arj压缩包"},"arp":{"n":"arp","p":"/arp","d":"arp 命令用于显示和修改 IP 到 MAC 转换表"},"arpd":{"n":"arpd","p":"/arpd","d":"收集免费ARP信息"},"arping":{"n":"arping","p":"/arping","d":"通过发送ARP协议报文测试网络"},"arptables":{"n":"arptables","p":"/arptables","d":"管理ARP包过滤规则表"},"arpwatch":{"n":"arpwatch","p":"/arpwatch","d":"监听网络上ARP的记录"},"as":{"n":"as","p":"/as","d":"汇编语言编译器"},"at":{"n":"at","p":"/at","d":"在指定时间执行一个任务"},"atop":{"n":"atop","p":"/atop","d":"监控Linux系统资源与进程的工具"},"atq":{"n":"atq","p":"/atq","d":"列出当前用户的at任务列表"},"atrm":{"n":"atrm","p":"/atrm","d":"删除待执行任务队列中的指定任务"},"awk":{"n":"awk","p":"/awk","d":"文本和数据进行处理的编程语言"},"axel":{"n":"axel","p":"/axel","d":"多线程下载工具"},"badblocks":{"n":"badblocks","p":"/badblocks","d":"查找磁盘中损坏的区块"},"base64":{"n":"base64","p":"/base64","d":"base64 编码/解码文件或标准输入输出"},"basename":{"n":"basename","p":"/basename","d":"打印目录或者文件的基本名称"},"batch":{"n":"batch","p":"/batch","d":"在系统不繁忙的时候执行定时任务"},"bc":{"n":"bc","p":"/bc","d":"算术操作精密运算工具"},"bg":{"n":"bg","p":"/bg","d":"将前台终端作业移动到后台运行"},"bind":{"n":"bind","p":"/bind","d":"显示或设置键盘按键与其相关的功能"},"blkid":{"n":"blkid","p":"/blkid","d":"查看块设备的文件系统类型、LABEL、UUID等信息"},"blockdev":{"n":"blockdev","p":"/blockdev","d":"从命令行调用区块设备控制程序"},"bmodinfo":{"n":"bmodinfo","p":"/bmodinfo","d":"显示给定模块的详细信息"},"break":{"n":"break","p":"/break","d":"结束for,while或until循环。"},"builtin":{"n":"builtin","p":"/builtin","d":"执行bash内建命令。"},"bunzip2":{"n":"bunzip2","p":"/bunzip2","d":"可解压缩.bz2格式的压缩文件。 "},"bye":{"n":"bye","p":"/bye","d":"命令用于中断FTP连线并结束程序"},"bzcat":{"n":"bzcat","p":"/bzcat","d":"不解压,直接查看指定的.bz2文件"},"bzcmp":{"n":"bzcmp","p":"/bzcmp","d":"比较两个压缩包中的文件"},"bzdiff":{"n":"bzdiff","p":"/bzdiff","d":"直接比较两个.bz2压缩包中文件的不同"},"bzgrep":{"n":"bzgrep","p":"/bzgrep","d":"使用正则表达式搜索.bz2压缩包中文件"},"bzip2":{"n":"bzip2","p":"/bzip2","d":"将文件压缩成bz2格式"},"bzip2recover":{"n":"bzip2recover","p":"/bzip2recover","d":"恢复被破坏的.bz2压缩包中的文件"},"bzless":{"n":"bzless","p":"/bzless","d":"增强.bz2压缩包查看器"},"bzmore":{"n":"bzmore","p":"/bzmore","d":"查看bzip2压缩过的文本文件的内容"},"cal":{"n":"cal","p":"/cal","d":"显示当前日历或指定日期的日历"},"cancel":{"n":"cancel","p":"/cancel","d":"取消已存在的打印任务"},"cat":{"n":"cat","p":"/cat","d":"连接多个文件并打印到标准输出。"},"cd":{"n":"cd","p":"/cd","d":"切换用户当前工作目录。"},"cdrecord":{"n":"cdrecord","p":"/cdrecord","d":"Linux系统下光盘刻录功能命令"},"chage":{"n":"chage","p":"/chage","d":"修改帐号和密码的有效期限"},"chattr":{"n":"chattr","p":"/chattr","d":"用来改变文件属性"},"chcon":{"n":"chcon","p":"/chcon","d":"修改对象(文件)的安全上下文"},"chfn":{"n":"chfn","p":"/chfn","d":"用来改变finger命令显示的信息"},"chgrp":{"n":"chgrp","p":"/chgrp","d":"用来变更文件或目录的所属群组"},"chkconfig":{"n":"chkconfig","p":"/chkconfig","d":"检查或设置系统的各种服务"},"chmod":{"n":"chmod","p":"/chmod","d":"用来变更文件或目录的权限"},"chown":{"n":"chown","p":"/chown","d":"用来变更文件或目录的拥有者或所属群组"},"chpasswd":{"n":"chpasswd","p":"/chpasswd","d":"批量更新用户口令的工具"},"chroot":{"n":"chroot","p":"/chroot","d":"把根目录换成指定的目的目录"},"chsh":{"n":"chsh","p":"/chsh","d":"用来更换登录系统时使用的shell"},"cksum":{"n":"cksum","p":"/cksum","d":"检查文件的CRC是否正确"},"clear":{"n":"clear","p":"/clear","d":"清除当前屏幕终端上的任何信息"},"clock":{"n":"clock","p":"/clock","d":"用于调整 RTC 时间"},"clockdiff":{"n":"clockdiff","p":"/clockdiff","d":"检测两台linux主机的时间差"},"cmp":{"n":"cmp","p":"/cmp","d":"比较两个文件是否有差异"},"col":{"n":"col","p":"/col","d":"过滤控制字符"},"colrm":{"n":"colrm","p":"/colrm","d":"删除文件中的指定列"},"column":{"n":"column","p":"/column","d":"按列格式化输出文件"},"comm":{"n":"comm","p":"/comm","d":"按行比较两个已排序的文件。"},"command":{"n":"command","p":"/command","d":"调用并执行指定的命令"},"compress":{"n":"compress","p":"/compress","d":"使用Lempress-Ziv编码压缩数据文件"},"consoletype":{"n":"consoletype","p":"/consoletype","d":"输出已连接的终端类型"},"continue":{"n":"continue","p":"/continue","d":"结束本次循环,继续执行下一个for,while或until循环。"},"convertquota":{"n":"convertquota","p":"/convertquota","d":"把老的配额文件转换为新的格式"},"cp":{"n":"cp","p":"/cp","d":"将源文件或目录复制到目标文件或目录中"},"cpio":{"n":"cpio","p":"/cpio","d":"用来建立、还原备份档的工具程序"},"createrepo":{"n":"createrepo","p":"/createrepo","d":"创建YUM仓库"},"crontab":{"n":"crontab","p":"/crontab","d":"提交和管理用户的需要周期性执行的任务"},"csplit":{"n":"csplit","p":"/csplit","d":"将一个大文件分割成小的碎片文件"},"cu":{"n":"cu","p":"/cu","d":"用于连接另一个系统主机"},"cupsdisable":{"n":"cupsdisable","p":"/cupsdisable","d":"停止指定的打印机"},"cupsenable":{"n":"cupsenable","p":"/cupsenable","d":"启动指定的打印机"},"curl":{"n":"curl","p":"/curl","d":"利用URL规则在命令行下工作的文件传输工具"},"cut":{"n":"cut","p":"/cut","d":"连接文件并打印到标准输出设备上"},"date":{"n":"date","p":"/date","d":"显示或设置系统时间与日期"},"dc":{"n":"dc","p":"/dc","d":"任意精度计算器"},"dd":{"n":"dd","p":"/dd","d":"复制文件并对原文件的内容进行转换和格式化处理"},"declare":{"n":"declare","p":"/declare","d":"声明变量,设置或显示变量的值和属性。"},"depmod":{"n":"depmod","p":"/depmod","d":"分析可载入模块的相依性"},"df":{"n":"df","p":"/df","d":"显示磁盘的相关信息"},"dhclient":{"n":"dhclient","p":"/dhclient","d":"动态获取或释放IP地址"},"dhcpd":{"n":"dhcpd","p":"/dhcpd","d":"运行DHCP服务器"},"dhcrelay":{"n":"dhcrelay","p":"/dhcrelay","d":"使用dhcrelay命令可以提供中继DHCP和BOOTP请求"},"diff":{"n":"diff","p":"/diff","d":"比较给定的两个文件的不同"},"diff3":{"n":"diff3","p":"/diff3","d":"比较3个文件不同的地方"},"diffstat":{"n":"diffstat","p":"/diffstat","d":"显示diff命令输出信息的柱状图"},"dig":{"n":"dig","p":"/dig","d":"域名查询工具"},"dircolors":{"n":"dircolors","p":"/dircolors","d":"置ls命令在显示目录或文件时所用的色彩"},"dirname":{"n":"dirname","p":"/dirname","d":"去除文件名中的非目录部分"},"dirs":{"n":"dirs","p":"/dirs","d":"显示目录堆栈。"},"disown":{"n":"disown","p":"/disown","d":"从当前的shell中移除作业。"},"dmesg":{"n":"dmesg","p":"/dmesg","d":"显示Linux系统启动信息"},"dmidecode":{"n":"dmidecode","p":"/dmidecode","d":"在Linux系统下获取有关硬件方面的信息"},"dnf":{"n":"dnf","p":"/dnf","d":"新一代的RPM软件包管理器"},"dnsdomainname":{"n":"dnsdomainname","p":"/dnsdomainname","d":"定义DNS系统中FQDN名称的域名"},"docker":{"n":"docker","p":"/docker","d":"容器化技术,可以将应用程序及其依赖项打包到一个可移植的容器中,使其可以在不同的环境中运行"},"domainname":{"n":"domainname","p":"/domainname","d":"显示和设置系统的NIS域名"},"dos2unix":{"n":"dos2unix","p":"/dos2unix","d":"将DOS格式文本文件转换成Unix格式"},"dpkg-deb":{"n":"dpkg-deb","p":"/dpkg-deb","d":"Debian Linux下的软件包管理工具"},"dpkg-divert":{"n":"dpkg-divert","p":"/dpkg-divert","d":"Debian Linux中创建并管理一个转向列表"},"dpkg-preconfigure":{"n":"dpkg-preconfigure","p":"/dpkg-preconfigure","d":"Debian Linux中软件包安装之前询问问题"},"dpkg-query":{"n":"dpkg-query","p":"/dpkg-query","d":"Debian Linux中软件包的查询工具"},"dpkg-reconfigure":{"n":"dpkg-reconfigure","p":"/dpkg-reconfigure","d":"Debian Linux中重新配制一个已经安装的软件包"},"dpkg-split":{"n":"dpkg-split","p":"/dpkg-split","d":"Debian Linux中将大软件包分割成小包"},"dpkg-statoverride":{"n":"dpkg-statoverride","p":"/dpkg-statoverride","d":"Debian Linux中覆盖文件的所有权和模式"},"dpkg-trigger":{"n":"dpkg-trigger","p":"/dpkg-trigger","d":"Debian Linux下的软件包触发器"},"dpkg":{"n":"dpkg","p":"/dpkg","d":"Debian Linux系统上安装、创建和管理软件包"},"dris":{"n":"dris","p":"/dris","d":"显示和清空目录堆栈中的内容"},"dstat":{"n":"dstat","p":"/dstat","d":"通用的系统资源统计工具"},"du":{"n":"du","p":"/du","d":"显示每个文件和目录的磁盘使用空间"},"dump":{"n":"dump","p":"/dump","d":"用于备份ext2或者ext3文件系统"},"e2fsck":{"n":"e2fsck","p":"/e2fsck","d":"用于检查第二扩展文件系统的完整性"},"e2label":{"n":"e2label","p":"/e2label","d":"设置第二扩展文件系统的卷标"},"echo":{"n":"echo","p":"/echo","d":"输出指定的字符串或者变量"},"ed":{"n":"ed","p":"/ed","d":"单行纯文本编辑器"},"edquota":{"n":"edquota","p":"/edquota","d":"用于编辑指定用户或工作组磁盘配额"},"egrep":{"n":"egrep","p":"/egrep","d":"在文件内查找指定的字符串"},"eject":{"n":"eject","p":"/eject","d":"用来退出抽取式设备"},"elinks":{"n":"elinks","p":"/elinks","d":"纯文本界面的WWW浏览器"},"elm":{"n":"elm","p":"/elm","d":"纯文本邮件客户端程序"},"emacs":{"n":"emacs","p":"/emacs","d":"功能强大的全屏文本编辑器"},"enable":{"n":"enable","p":"/enable","d":"启动或禁用shell内建命令"},"env":{"n":"env","p":"/env","d":"显示系统中已存在的环境变量"},"ethtool":{"n":"ethtool","p":"/ethtool","d":"显示或修改以太网卡的配置信息"},"ex":{"n":"ex","p":"/ex","d":"启动vim编辑器的ex编辑模式"},"exec":{"n":"exec","p":"/exec","d":"调用并执行指定的命令"},"exit":{"n":"exit","p":"/exit","d":"退出当前的shell。"},"expand":{"n":"expand","p":"/expand","d":"将文件的制表符转换为空白字符"},"export":{"n":"export","p":"/export","d":"为shell变量或函数设置导出属性。"},"exportfs":{"n":"exportfs","p":"/exportfs","d":"管理NFS共享文件系统列表"},"expr":{"n":"expr","p":"/expr","d":"一款表达式计算工具"},"false":{"n":"false","p":"/false","d":"返回状态为失败。"},"fc":{"n":"fc","p":"/fc","d":"显示历史列表中的命令或修改指定的历史命令并执行。"},"fdisk":{"n":"fdisk","p":"/fdisk","d":"查看磁盘使用情况和磁盘分区"},"fg":{"n":"fg","p":"/fg","d":"将后台作业移动到前台终端运行"},"fgrep":{"n":"fgrep","p":"/fgrep","d":"为文件搜索文字字符串"},"figlet":{"n":"figlet","p":"/figlet","d":"字符串转为 “字画符”。"},"file":{"n":"file","p":"/file","d":"用来探测给定文件的类型"},"find":{"n":"find","p":"/find","d":"在指定目录下查找文件"},"findfs":{"n":"findfs","p":"/findfs","d":"标签或UUID查找文件系统"},"finger":{"n":"finger","p":"/finger","d":"用于查找并显示用户信息"},"firewall-cmd":{"n":"firewall-cmd","p":"/firewall-cmd","d":"Linux上新用的防火墙软件,跟iptables差不多的工具"},"fishshell":{"n":"fishshell","p":"/fishshell","d":"比 bash 更好用的 shell"},"fmt":{"n":"fmt","p":"/fmt","d":"读取文件后优化处理并输出"},"fold":{"n":"fold","p":"/fold","d":"控制文件内容输出时所占用的屏幕宽度"},"fping":{"n":"fping","p":"/fping","d":"fping检测主机是否存在"},"free":{"n":"free","p":"/free","d":"显示内存的使用情况"},"fsck":{"n":"fsck","p":"/fsck","d":"fsck(英文全拼:file system check)命令检查并且试图修复文件系统中的错误"},"ftp":{"n":"ftp","p":"/ftp","d":"用来设置文件系统相关功能"},"ftpcount":{"n":"ftpcount","p":"/ftpcount","d":"显示目前已FTP登入的用户人数"},"ftpshut":{"n":"ftpshut","p":"/ftpshut","d":"在指定的时间关闭FTP服务器"},"ftptop":{"n":"ftptop","p":"/ftptop","d":"proftpd服务器的连接状态"},"ftpwho":{"n":"ftpwho","p":"/ftpwho","d":"显示当前每个ftp会话信息"},"fuser":{"n":"fuser","p":"/fuser","d":"使用文件或文件结构识别进程"},"gcc":{"n":"gcc","p":"/gcc","d":"基于C/C++的编译器"},"gcov":{"n":"gcov","p":"/gcov","d":"测试程序的代码覆盖率的工具"},"gdb":{"n":"gdb","p":"/gdb","d":"功能强大的程序调试器"},"get_module":{"n":"get_module","p":"/get_module","d":"获取Linux内核模块的详细信息"},"getcap":{"n":"getcap","p":"/getcap","d":"显示文件的能力(capabilities)"},"getenforce":{"n":"getenforce","p":"/getenforce","d":"显示当前SELinux的应用模式,是强制、执行还是停用"},"getent":{"n":"getent","p":"/getent","d":"查询 DNS 名称服务器中的命名空间"},"getfacl":{"n":"getfacl","p":"/getfacl","d":"获取文件访问控制列表(access control lists)"},"getsebool":{"n":"getsebool","p":"/getsebool","d":"查询SElinux策略内各项规则的布尔值"},"git":{"n":"git","p":"/git","d":"是目前世界上最先进的分布式版本控制系统"},"gpasswd":{"n":"gpasswd","p":"/gpasswd","d":"Linux下工作组文件的管理工具"},"gpg":{"n":"gpg","p":"/gpg","d":"可用于签名、检查、加密或解密的工具"},"gpm":{"n":"gpm","p":"/gpm","d":"提供文字模式下的滑鼠事件处理"},"grep":{"n":"grep","p":"/grep","d":"强大的文本搜索工具"},"groupadd":{"n":"groupadd","p":"/groupadd","d":"用于创建一个新的工作组"},"groupdel":{"n":"groupdel","p":"/groupdel","d":"用于删除指定的工作组"},"groupmems":{"n":"groupmems","p":"/groupmems","d":"管理用户主要组的成员"},"groupmod":{"n":"groupmod","p":"/groupmod","d":"更改群组识别码或名称"},"groups":{"n":"groups","p":"/groups","d":"打印指定用户所在组的名称。"},"grpck":{"n":"grpck","p":"/grpck","d":"用于验证组文件的完整性"},"grpconv":{"n":"grpconv","p":"/grpconv","d":"用来开启群组的投影密码"},"grpunconv":{"n":"grpunconv","p":"/grpunconv","d":"用来关闭群组的投影密码"},"grub":{"n":"grub","p":"/grub","d":"多重引导程序grub的命令行shell工具"},"grub2-mkconfig":{"n":"grub2-mkconfig","p":"/grub2-mkconfig","d":"生成 grub.cfg 配置文件。"},"grub2-set-default":{"n":"grub2-set-default","p":"/grub2-set-default","d":"设置系统默认的启动内核"},"gunzip":{"n":"gunzip","p":"/gunzip","d":"用来解压缩文件"},"gzexe":{"n":"gzexe","p":"/gzexe","d":"用来压缩可执行文件"},"gzip":{"n":"gzip","p":"/gzip","d":"用来压缩文件"},"halt":{"n":"halt","p":"/halt","d":"关闭正在运行的Linux操作系统"},"hcitool":{"n":"hcitool","p":"/hcitool","d":"hcitool是一个Linux命令行工具,用于管理和调试蓝牙设备。它可以用于扫描周围的蓝牙设备、连接到蓝牙设备发送命令和数据包等。"},"hdparm":{"n":"hdparm","p":"/hdparm","d":"显示与设定硬盘的参数"},"head":{"n":"head","p":"/head","d":"显示文件的开头部分。"},"help":{"n":"help","p":"/help","d":"该命令是bash内建命令,用于显示bash内建命令的帮助信息。"},"hexdump":{"n":"hexdump","p":"/hexdump","d":"显示文件十六进制格式"},"history":{"n":"history","p":"/history","d":"显示或操作历史列表。"},"host":{"n":"host","p":"/host","d":"常用的分析域名查询工具"},"hostid":{"n":"hostid","p":"/hostid","d":"显示当前主机的十六进制数字标识。"},"hostname":{"n":"hostname","p":"/hostname","d":"显示和设置系统的主机名"},"hostnamectl":{"n":"hostnamectl","p":"/hostnamectl","d":"查询或更改系统主机名"},"hping3":{"n":"hping3","p":"/hping3","d":"测试网络及主机的安全"},"htdigest":{"n":"htdigest","p":"/htdigest","d":"Apache服务器内置工具"},"htop":{"n":"htop","p":"/htop","d":"[非内部命令]一个互动的进程查看器,可以动态观察系统进程状况"},"htpasswd":{"n":"htpasswd","p":"/htpasswd","d":"apache服务器创建密码认证文件"},"hwclock":{"n":"hwclock","p":"/hwclock","d":"显示与设定硬件时钟"},"iconv":{"n":"iconv","p":"/iconv","d":"转换文件的编码方式"},"id":{"n":"id","p":"/id","d":"打印真实以及有效的用户和所在组的信息"},"ifcfg":{"n":"ifcfg","p":"/ifcfg","d":"置Linux中的网络接口参数"},"ifconfig":{"n":"ifconfig","p":"/ifconfig","d":"配置和显示Linux系统网卡的网络参数"},"ifdown":{"n":"ifdown","p":"/ifdown","d":"禁用指定的网络接口"},"ifstat":{"n":"ifstat","p":"/ifstat","d":"统计网络接口流量状态"},"iftop":{"n":"iftop","p":"/iftop","d":"一款实时流量监控工具"},"ifup":{"n":"ifup","p":"/ifup","d":"激活指定的网络接口"},"indent":{"n":"indent","p":"/indent","d":"格式化C语言的源文件"},"info":{"n":"info","p":"/info","d":"Linux下info格式的帮助指令"},"init":{"n":"init","p":"/init","d":"init进程是所有Linux进程的父进程"},"inotifywait":{"n":"inotifywait","p":"/inotifywait","d":"异步文件系统监控机制"},"insmod":{"n":"insmod","p":"/insmod","d":"将给定的模块加载到内核中"},"install":{"n":"install","p":"/install","d":"安装或升级软件或备份数据"},"iostat":{"n":"iostat","p":"/iostat","d":"监视系统输入输出设备和CPU的使用情况"},"iotop":{"n":"iotop","p":"/iotop","d":"用来监视磁盘I/O使用状况的工具"},"ip":{"n":"ip","p":"/ip","d":"网络配置工具"},"ip6tables-restore":{"n":"ip6tables-restore","p":"/ip6tables-restore","d":"还原ip6tables表"},"ip6tables-save":{"n":"ip6tables-save","p":"/ip6tables-save","d":"保存ip6tables表配置"},"ip6tables":{"n":"ip6tables","p":"/ip6tables","d":"linux中防火墙软件"},"ipcalc":{"n":"ipcalc","p":"/ipcalc","d":"简单的IP地址计算器"},"ipcrm":{"n":"ipcrm","p":"/ipcrm","d":"删除消息队列、信号集、或者共享内存标识"},"ipcs":{"n":"ipcs","p":"/ipcs","d":"分析消息队列共享内存和信号量"},"iperf":{"n":"iperf","p":"/iperf","d":"网络性能测试工具"},"iptables-restore":{"n":"iptables-restore","p":"/iptables-restore","d":"还原iptables表的配置"},"iptables-save":{"n":"iptables-save","p":"/iptables-save","d":"备份iptables的表配置"},"iptables":{"n":"iptables","p":"/iptables","d":"Linux上常用的防火墙软件"},"iptraf":{"n":"iptraf","p":"/iptraf","d":"实时地监视网卡流量"},"iptstate":{"n":"iptstate","p":"/iptstate","d":"显示iptables的工作状态"},"iscsiadm":{"n":"iscsiadm","p":"/iscsiadm","d":"管理iSCSI连接"},"ispell":{"n":"ispell","p":"/ispell","d":"检查文件中出现的拼写错误"},"jed":{"n":"jed","p":"/jed","d":"主要用于编辑代码的编辑器"},"jobs":{"n":"jobs","p":"/jobs","d":"显示作业的状态。"},"joe":{"n":"joe","p":"/joe","d":"强大的纯文本编辑器"},"join":{"n":"join","p":"/join","d":"两个文件中指定栏位内容相同的行连接起来"},"journalctl":{"n":"journalctl","p":"/journalctl","d":"检索 systemd 日志,是 CentOS 7 才有的工具。"},"jq":{"n":"jq","p":"/jq","d":"一个灵活的轻量级命令行JSON处理器"},"jwhois":{"n":"jwhois","p":"/jwhois","d":"whois 客户端服务"},"kernelversion":{"n":"kernelversion","p":"/kernelversion","d":"打印当前内核的主版本号"},"kexec":{"n":"kexec","p":"/kexec","d":"从当前正在运行的内核引导到一个新内核"},"kill":{"n":"kill","p":"/kill","d":"发送信号到进程。"},"killall":{"n":"killall","p":"/killall","d":"使用进程的名称来杀死一组进程"},"last":{"n":"last","p":"/last","d":"列出目前与过去登入系统的用户相关信息"},"lastb":{"n":"lastb","p":"/lastb","d":"列出登入系统失败的用户相关信息"},"lastlog":{"n":"lastlog","p":"/lastlog","d":"显示系统中所有用户最近一次登录信息"},"ld":{"n":"ld","p":"/ld","d":"将目标文件连接为可执行程序"},"ldconfig":{"n":"ldconfig","p":"/ldconfig","d":"动态链接库管理命令"},"ldd":{"n":"ldd","p":"/ldd","d":"打印程序或者库文件所依赖的共享库列表"},"less":{"n":"less","p":"/less","d":"分屏上下翻页浏览文件内容"},"let":{"n":"let","p":"/let","d":"简单的计算器,执行算术表达式。"},"lftp":{"n":"lftp","p":"/lftp","d":"优秀的文件客户端程序"},"lftpget":{"n":"lftpget","p":"/lftpget","d":"调用lftp指令下载指定的文件"},"lha":{"n":"lha","p":"/lha","d":"压缩或解压缩lzh格式文件"},"lilo":{"n":"lilo","p":"/lilo","d":"安装核心载入开机管理程序"},"ln":{"n":"ln","p":"/ln","d":"用来为文件创建链接"},"lnstat":{"n":"lnstat","p":"/lnstat","d":"显示Linux系统的网路状态"},"local":{"n":"local","p":"/local","d":"在函数内定义局部变量。"},"locate":{"n":"locate","p":"/locate","d":"比 find 好用的文件查找工具"},"logger":{"n":"logger","p":"/logger","d":"在系统日志中记录相应条目"},"login":{"n":"login","p":"/login","d":"登录系统或切换用户身份"},"logname":{"n":"logname","p":"/logname","d":"打印当前终端登录用户的名称。"},"logout":{"n":"logout","p":"/logout","d":"退出当前登录的Shell"},"logrotate":{"n":"logrotate","p":"/logrotate","d":"系统日志进行轮转、压缩和删除"},"logsave":{"n":"logsave","p":"/logsave","d":"将命令的输出信息保存到指定的日志文件"},"logwatch":{"n":"logwatch","p":"/logwatch","d":"可定制和可插入式的日志监视系统"},"look":{"n":"look","p":"/look","d":"显示文件中以指定字符串开头的任意行"},"losetup":{"n":"losetup","p":"/losetup","d":"设定与控制循环(loop)设备"},"lp":{"n":"lp","p":"/lp","d":"打印文件或修改排队的打印任务"},"lpadmin":{"n":"lpadmin","p":"/lpadmin","d":"配置CUPS套件中的打印机和类"},"lpc":{"n":"lpc","p":"/lpc","d":"命令行方式打印机控制程序"},"lpq":{"n":"lpq","p":"/lpq","d":"显示打印队列中的打印任务的状态信息"},"lpr":{"n":"lpr","p":"/lpr","d":"将文件发送给指定打印机进行打印"},"lprm":{"n":"lprm","p":"/lprm","d":"删除打印队列中的打印任务"},"lpstat":{"n":"lpstat","p":"/lpstat","d":"显示CUPS中打印机的状态信息"},"ls":{"n":"ls","p":"/ls","d":"显示目录内容列表"},"lsattr":{"n":"lsattr","p":"/lsattr","d":"查看文件的第二扩展文件系统属性"},"lsb_release":{"n":"lsb_release","p":"/lsb_release","d":"显示发行版本信息"},"lsblk":{"n":"lsblk","p":"/lsblk","d":"列出块设备信息"},"lscpu":{"n":"lscpu","p":"/lscpu","d":"显示有关CPU架构的信息"},"lsmod":{"n":"lsmod","p":"/lsmod","d":"显示已载入系统的模块"},"lsof":{"n":"lsof","p":"/lsof","d":"显示Linux系统当前已打开的所有文件列表 `lsof -p pid`"},"lspci":{"n":"lspci","p":"/lspci","d":"显示当前主机的所有PCI总线信息"},"lsusb":{"n":"lsusb","p":"/lsusb","d":"显示本机的USB设备列表信息"},"ltrace":{"n":"ltrace","p":"/ltrace","d":"用来跟踪进程调用库函数的情况"},"lvcreate":{"n":"lvcreate","p":"/lvcreate","d":"用于创建LVM的逻辑卷"},"lvdisplay":{"n":"lvdisplay","p":"/lvdisplay","d":"显示逻辑卷属性"},"lvextend":{"n":"lvextend","p":"/lvextend","d":"扩展逻辑卷空间"},"lvreduce":{"n":"lvreduce","p":"/lvreduce","d":"收缩逻辑卷空间"},"lvremove":{"n":"lvremove","p":"/lvremove","d":"删除指定LVM逻辑卷"},"lvresize":{"n":"lvresize","p":"/lvresize","d":"调整逻辑卷空间大小"},"lvscan":{"n":"lvscan","p":"/lvscan","d":"扫描逻辑卷"},"lynx":{"n":"lynx","p":"/lynx","d":"纯文本模式的网页浏览器"},"mail":{"n":"mail","p":"/mail","d":"命令行下发送和接收电子邮件"},"mailq":{"n":"mailq","p":"/mailq","d":"显示待发送的邮件队列"},"mailstat":{"n":"mailstat","p":"/mailstat","d":"显示到达的邮件状态"},"make":{"n":"make","p":"/make","d":"GNU的工程化编译工具"},"man":{"n":"man","p":"/man","d":"查看Linux中的指令帮助"},"mapfile":{"n":"mapfile","p":"/mapfile","d":"从标准输入读取行并赋值到数组。"},"md5sum":{"n":"md5sum","p":"/md5sum","d":"计算和校验文件报文摘要的工具程序"},"mesg":{"n":"mesg","p":"/mesg","d":"设置当前终端的写权限"},"mii-tool":{"n":"mii-tool","p":"/mii-tool","d":"配置网络设备协商方式的工具"},"mkbootdisk":{"n":"mkbootdisk","p":"/mkbootdisk","d":"可建立目前系统的启动盘"},"mkcert":{"n":"mkcert","p":"/mkcert","d":"用来生成自签证书的工具"},"mkdir":{"n":"mkdir","p":"/mkdir","d":"用来创建目录"},"mke2fs":{"n":"mke2fs","p":"/mke2fs","d":"创建磁盘分区上的“etc2/etc3”文件系统"},"mkfs":{"n":"mkfs","p":"/mkfs","d":"用于在设备上创建Linux文件系统"},"mkinitrd":{"n":"mkinitrd","p":"/mkinitrd","d":"建立要载入ramdisk的映像文件"},"mkisofs":{"n":"mkisofs","p":"/mkisofs","d":"建立ISO 9660映像文件"},"mknod":{"n":"mknod","p":"/mknod","d":"创建字符设备文件和块设备文件"},"mkswap":{"n":"mkswap","p":"/mkswap","d":"建立和设置SWAP交换分区"},"mktemp":{"n":"mktemp","p":"/mktemp","d":"创建临时文件供shell脚本使用"},"modetest":{"n":"modetest","p":"/modetest","d":"DRM/KMS驱动程序libdrm中的模式测试工具"},"modprobe":{"n":"modprobe","p":"/modprobe","d":"自动处理可载入模块"},"more":{"n":"more","p":"/more","d":"显示文件内容,每次显示一屏"},"mount":{"n":"mount","p":"/mount","d":"用于挂载Linux系统外的文件"},"mpstat":{"n":"mpstat","p":"/mpstat","d":"显示各个可用CPU的状态"},"mtools":{"n":"mtools","p":"/mtools","d":"显示mtools支持的指令"},"mtr":{"n":"mtr","p":"/mtr","d":"`mtr` 结合了 `traceroute` 和 `ping` 程序的功能,是一款简单的网络诊断工具"},"mv":{"n":"mv","p":"/mv","d":"用来对文件或目录重新命名"},"mysql":{"n":"mysql","p":"/mysql","d":"MySQL服务器客户端工具"},"mysqladmin":{"n":"mysqladmin","p":"/mysqladmin","d":"MySQL服务器管理客户端"},"mysqldump":{"n":"mysqldump","p":"/mysqldump","d":"MySQL数据库中备份工具"},"mysqlimport":{"n":"mysqlimport","p":"/mysqlimport","d":"为MySQL服务器用命令行方式导入数据"},"mysqlshow":{"n":"mysqlshow","p":"/mysqlshow","d":"显示MySQL中数据库相关信息"},"named-checkzone":{"n":"named-checkzone","p":"/named-checkzone","d":"使用named-checkzone命令可以进行区域文件有效性检查和转换,必须指定区域名称和区域文件名称"},"nano":{"n":"nano","p":"/nano","d":"字符终端文本编辑器"},"nc":{"n":"nc","p":"/nc","d":"nc是网络工具中的瑞士军刀"},"ncftp":{"n":"ncftp","p":"/ncftp","d":"是增强的的FTP工具"},"neofetch":{"n":"neofetch","p":"/neofetch","d":"显示带有发行徽标的系统信息的工具"},"nethogs":{"n":"nethogs","p":"/nethogs","d":"终端下的网络流量监控工具"},"netstat":{"n":"netstat","p":"/netstat","d":"查看Linux中网络系统状态信息"},"newusers":{"n":"newusers","p":"/newusers","d":"用于批处理的方式一次创建多个命令"},"nfsstat":{"n":"nfsstat","p":"/nfsstat","d":"列出NFS客户端和服务器的工作状态"},"ngrep":{"n":"ngrep","p":"/ngrep","d":"方便的数据包匹配和显示工具"},"nice":{"n":"nice","p":"/nice","d":"调整程序执行的优先权等级"},"nisdomainname":{"n":"nisdomainname","p":"/nisdomainname","d":"显示主机NIS的域名"},"nl":{"n":"nl","p":"/nl","d":"为每一个文件添加行号。"},"nm":{"n":"nm","p":"/nm","d":"显示二进制目标文件的符号表"},"nmap":{"n":"nmap","p":"/nmap","d":"网络探测和安全审核"},"nmcli":{"n":"nmcli","p":"/nmcli","d":"地址配置工具"},"nohup":{"n":"nohup","p":"/nohup","d":"将程序以忽略挂起信号的方式运行起来"},"nologin":{"n":"nologin","p":"/nologin","d":"拒绝用户登录系统"},"nproc":{"n":"nproc","p":"/nproc","d":"打印可用的处理器单元数量。"},"nslookup":{"n":"nslookup","p":"/nslookup","d":"查询域名DNS信息的工具"},"nstat":{"n":"nstat","p":"/nstat","d":"nstat 是一个简单的监视内核的 SNMP 计数器和网络接口状态的实用工具。"},"ntpdate":{"n":"ntpdate","p":"/ntpdate","d":"使用网络计时协议(NTP)设置日期和时间"},"ntsysv":{"n":"ntsysv","p":"/ntsysv","d":"集中管理系统的各种服务"},"objdump":{"n":"objdump","p":"/objdump","d":"显示二进制文件信息"},"od":{"n":"od","p":"/od","d":"输出文件的八进制、十六进制等格式编码的字节"},"openssl":{"n":"openssl","p":"/openssl","d":"强大的安全套接字层密码库"},"pacman":{"n":"pacman","p":"/pacman","d":"Arch Linux 系统及其衍生系统中默认使用的包管理器"},"parted":{"n":"parted","p":"/parted","d":"磁盘分区和分区大小调整工具"},"partprobe":{"n":"partprobe","p":"/partprobe","d":"不重启的情况下重读分区"},"passwd":{"n":"passwd","p":"/passwd","d":"用于让用户可以更改自己的密码"},"paste":{"n":"paste","p":"/paste","d":"将多个文件按列队列合并"},"patch":{"n":"patch","p":"/patch","d":"为开放源代码软件安装补丁程序"},"pathchk":{"n":"pathchk","p":"/pathchk","d":"检查文件中不可移植的部分"},"perl":{"n":"perl","p":"/perl","d":"perl语言解释器"},"pfctl":{"n":"pfctl","p":"/pfctl","d":"PF防火墙的配置命令"},"pgrep":{"n":"pgrep","p":"/pgrep","d":"根据用户给出的信息在当前运行进程中查找并列出符合条件的进程ID(PID)"},"php":{"n":"php","p":"/php","d":"PHP语言的命令行接口"},"pico":{"n":"pico","p":"/pico","d":"功能强大全屏幕的文本编辑器"},"pidof":{"n":"pidof","p":"/pidof","d":"查找指定名称的进程的进程号ID号"},"pidstat":{"n":"pidstat","p":"/pidstat","d":"监控进程的系统资源占用情况"},"pigz":{"n":"pigz","p":"/pigz","d":"可以用来解压缩文件,gzip的并行实现升级版"},"ping":{"n":"ping","p":"/ping","d":"测试主机之间网络的连通性(ipv4)"},"ping6":{"n":"ping6","p":"/ping6","d":"测试主机之间网络的连通性(ipv6)"},"pip":{"n":"pip","p":"/pip","d":"Python 编程语言中的包管理器,用于安装和管理第三方 Python 模块"},"pkexec":{"n":"pkexec","p":"/pkexec","d":"以其他用户身份执行命令"},"pkill":{"n":"pkill","p":"/pkill","d":"可以按照进程名杀死进程"},"pmap":{"n":"pmap","p":"/pmap","d":"报告进程的内存映射关系"},"popd":{"n":"popd","p":"/popd","d":"从目录堆栈中删除目录。"},"poweroff":{"n":"poweroff","p":"/poweroff","d":"关闭Linux系统,关闭记录会被写入到/var/log/wtmp日志文件中"},"ppp-off":{"n":"ppp-off","p":"/ppp-off","d":"关闭ppp连线"},"pr":{"n":"pr","p":"/pr","d":"将文本文件转换成适合打印的格式"},"printf":{"n":"printf","p":"/printf","d":"格式化并输出结果。"},"protoize":{"n":"protoize","p":"/protoize","d":"GNU-C代码转换为ANSI-C代码"},"prtstat":{"n":"prtstat","p":"/prtstat","d":"显示进程信息"},"ps":{"n":"ps","p":"/ps","d":"报告当前系统的进程状态"},"pssh":{"n":"pssh","p":"/pssh","d":"批量管理执行"},"pstack":{"n":"pstack","p":"/pstack","d":"显示每个进程的栈跟踪"},"pstree":{"n":"pstree","p":"/pstree","d":"以树状图的方式展现进程之间的派生关系"},"pushd":{"n":"pushd","p":"/pushd","d":"将目录添加到目录堆栈顶部。"},"pv":{"n":"pv","p":"/pv","d":"显示当前在命令行执行的命令的进度信息,管道查看器"},"pvchange":{"n":"pvchange","p":"/pvchange","d":"修改物理卷属性"},"pvck":{"n":"pvck","p":"/pvck","d":"检测物理卷的LVM元数据的一致性"},"pvcreate":{"n":"pvcreate","p":"/pvcreate","d":"将物理硬盘分区初始化为物理卷"},"pvdisplay":{"n":"pvdisplay","p":"/pvdisplay","d":"显示物理卷的属性"},"pvremove":{"n":"pvremove","p":"/pvremove","d":"删除一个存在的物理卷"},"pvs":{"n":"pvs","p":"/pvs","d":"输出物理卷信息报表"},"pvscan":{"n":"pvscan","p":"/pvscan","d":"扫描系统中所有硬盘的物理卷列表"},"pwck":{"n":"pwck","p":"/pwck","d":"用来验证系统认证文件内容和格式的完整性"},"pwconv":{"n":"pwconv","p":"/pwconv","d":"用来开启用户的投影密码"},"pwd":{"n":"pwd","p":"/pwd","d":"显示当前工作目录的绝对路径。"},"pwdx":{"n":"pwdx","p":"/pwdx","d":"用于显示指定进程的当前工作目录"},"pwunconv":{"n":"pwunconv","p":"/pwunconv","d":"用来关闭用户的投影密码"},"quota":{"n":"quota","p":"/quota","d":"显示磁盘已使用的空间与限制"},"quotacheck":{"n":"quotacheck","p":"/quotacheck","d":"检查磁盘的使用空间与限制"},"quotaoff":{"n":"quotaoff","p":"/quotaoff","d":"关闭Linux内核中指定文件系统的磁盘配额功能"},"quotaon":{"n":"quotaon","p":"/quotaon","d":"激活Linux内核中指定文件系统的磁盘配额功能"},"rcconf":{"n":"rcconf","p":"/rcconf","d":"Debian Linux下的运行等级服务配置工具"},"rcp":{"n":"rcp","p":"/rcp","d":"使在两台Linux主机之间的文件复制操作更简单"},"read":{"n":"read","p":"/read","d":"从键盘读取变量值"},"readelf":{"n":"readelf","p":"/readelf","d":"用于显示elf格式文件的信息"},"readonly":{"n":"readonly","p":"/readonly","d":"标记shell变量或函数为只读"},"reboot":{"n":"reboot","p":"/reboot","d":"重新启动正在运行的Linux操作系统"},"reject":{"n":"reject","p":"/reject","d":"指示打印系统拒绝发往指定目标打印机的打印任务"},"rename":{"n":"rename","p":"/rename","d":"用字符串替换的方式批量改变文件名"},"renice":{"n":"renice","p":"/renice","d":"修改正在运行的进程的调度优先级"},"reposync":{"n":"reposync","p":"/reposync","d":"同步yum存储库到本地目录"},"repquota":{"n":"repquota","p":"/repquota","d":"报表的格式输出磁盘空间限制的状态"},"resize":{"n":"resize","p":"/resize","d":"命令设置终端机视窗的大小"},"restore":{"n":"restore","p":"/restore","d":"所进行的操作和dump指令相反"},"restorecon":{"n":"restorecon","p":"/restorecon","d":"恢复文件的安全上下文"},"return":{"n":"return","p":"/return","d":"从函数中退出并返回数值。"},"rev":{"n":"rev","p":"/rev","d":"将文件内容以字符为单位反序输出"},"rexec":{"n":"rexec","p":"/rexec","d":"远程执行Linux系统下命令"},"rlogin":{"n":"rlogin","p":"/rlogin","d":"从当前终端登录到远程Linux主机"},"rm":{"n":"rm","p":"/rm","d":"用于删除给定的文件和目录"},"rmdir":{"n":"rmdir","p":"/rmdir","d":"用来删除空目录"},"rmmod":{"n":"rmmod","p":"/rmmod","d":"从运行的内核中移除指定的内核模块"},"route":{"n":"route","p":"/route","d":"显示并设置Linux中静态路由表"},"rpm":{"n":"rpm","p":"/rpm","d":"RPM软件包的管理工具"},"rpm2cpio":{"n":"rpm2cpio","p":"/rpm2cpio","d":"将RPM软件包转换为cpio格式的文件"},"rpmbuild":{"n":"rpmbuild","p":"/rpmbuild","d":"创建RPM的二进制软件包和源码软件包"},"rpmdb":{"n":"rpmdb","p":"/rpmdb","d":"初始化和重建RPM数据库"},"rpmquery":{"n":"rpmquery","p":"/rpmquery","d":"从RPM数据库中查询软件包信息"},"rpmsign":{"n":"rpmsign","p":"/rpmsign","d":"使用RPM软件包的签名管理工具"},"rpmverify":{"n":"rpmverify","p":"/rpmverify","d":"验证已安装的RPM软件包的正确性"},"rsh":{"n":"rsh","p":"/rsh","d":"连接远程主机并执行命令"},"rsync":{"n":"rsync","p":"/rsync","d":"远程数据同步工具"},"runlevel":{"n":"runlevel","p":"/runlevel","d":"打印当前Linux系统的运行等级"},"sar":{"n":"sar","p":"/sar","d":"系统运行状态统计工具"},"scp":{"n":"scp","p":"/scp","d":"加密的方式在本地主机和远程主机之间复制文件"},"screen":{"n":"screen","p":"/screen","d":"用于命令行终端切换"},"script":{"n":"script","p":"/script","d":"记录终端会话的所有操作"},"scriptreplay":{"n":"scriptreplay","p":"/scriptreplay","d":"重新播放终端会话的所有操作"},"sed":{"n":"sed","p":"/sed","d":"功能强大的流式文本编辑器"},"seinfo":{"n":"seinfo","p":"/seinfo","d":"查询SELinux的策略提供多少相关规则"},"semanage":{"n":"semanage","p":"/semanage","d":"默认目录的安全上下文查询与修改"},"sendmail":{"n":"sendmail","p":"/sendmail","d":"著名电子邮件服务器"},"seq":{"n":"seq","p":"/seq","d":"以指定增量从首数开始打印数字到尾数"},"service":{"n":"service","p":"/service","d":"控制系统服务的实用工具"},"sesearch":{"n":"sesearch","p":"/sesearch","d":"查询SELinux策略的规则详情"},"set":{"n":"set","p":"/set","d":"显示或设置shell特性及shell变量"},"setfacl":{"n":"setfacl","p":"/setfacl","d":"设置文件访问控制列表"},"setpci":{"n":"setpci","p":"/setpci","d":"查询和配置PCI设备的使用工具"},"setsebool":{"n":"setsebool","p":"/setsebool","d":"修改SElinux策略内各项规则的布尔值"},"setsid":{"n":"setsid","p":"/setsid","d":"在新的会话中运行程序"},"sftp-server":{"n":"sftp-server","p":"/sftp-server","d":"sftp协议的服务器端程序"},"sftp":{"n":"sftp","p":"/sftp","d":"交互式的文件传输程序"},"sh":{"n":"sh","p":"/sh","d":"shell命令解释器"},"sha256sum":{"n":"sha256sum","p":"/sha256sum","d":"用于计算文件的 SHA-256 哈希值"},"shift":{"n":"shift","p":"/shift","d":"移动位置参数。"},"shopt":{"n":"shopt","p":"/shopt","d":"显示和设置shell操作选项"},"showmount":{"n":"showmount","p":"/showmount","d":"显示NFS服务器加载的信息"},"shuf":{"n":"shuf","p":"/shuf","d":"产生随机的排列。"},"shutdown":{"n":"shutdown","p":"/shutdown","d":"用来执行系统关机的命令"},"skill":{"n":"skill","p":"/skill","d":"向选定的进程发送信号冻结进程"},"slabtop":{"n":"slabtop","p":"/slabtop","d":"实时显示内核slab内存缓存信息"},"sleep":{"n":"sleep","p":"/sleep","d":"将目前动作延迟一段时间"},"slocate":{"n":"slocate","p":"/slocate","d":"命令查找文件或目录"},"smartmontools":{"n":"smartmontools","p":"/smartmontools","d":"Smartmontools 是一种硬盘检测工具,通过控制和管理硬盘的SMART(Self Monitoring Analysis and Reporting Technology,自动检测分析及报告技术)技术来实现的"},"smbclient":{"n":"smbclient","p":"/smbclient","d":"交互方式访问samba服务器"},"smbpasswd":{"n":"smbpasswd","p":"/smbpasswd","d":"samba用户和密码管理工具"},"sort":{"n":"sort","p":"/sort","d":"对文本文件中所有行进行排序。"},"source":{"n":"source","p":"/source","d":"在当前Shell环境中从指定文件读取和执行命令。"},"speedtest-cli":{"n":"speedtest-cli","p":"/speedtest-cli","d":"命令行下测试服务器外网速度"},"spell":{"n":"spell","p":"/spell","d":"对文件进行拼写检查"},"split":{"n":"split","p":"/split","d":"分割任意大小的文件"},"squid":{"n":"squid","p":"/squid","d":"squid服务器守护进程"},"squidclient":{"n":"squidclient","p":"/squidclient","d":"squid服务器的客户端管理工具"},"ss":{"n":"ss","p":"/ss","d":"比 netstat 好用的socket统计信息,iproute2 包附带的另一个工具,允许你查询 socket 的有关统计信息"},"ssh-add":{"n":"ssh-add","p":"/ssh-add","d":"把专用密钥添加到ssh-agent的高速缓存中"},"ssh-agent":{"n":"ssh-agent","p":"/ssh-agent","d":"ssh密钥管理器"},"ssh-copy-id":{"n":"ssh-copy-id","p":"/ssh-copy-id","d":"把本地的ssh公钥文件安装到远程主机对应的账户下"},"ssh-keygen":{"n":"ssh-keygen","p":"/ssh-keygen","d":"为ssh生成、管理和转换认证密钥"},"ssh-keyscan":{"n":"ssh-keyscan","p":"/ssh-keyscan","d":"收集主机公钥的使用工具"},"ssh":{"n":"ssh","p":"/ssh","d":"openssh套件中的客户端连接工具"},"sshd":{"n":"sshd","p":"/sshd","d":"openssh软件套件中的服务器守护进程"},"sshpass":{"n":"sshpass","p":"/sshpass","d":"免交互 SSH 登录工具。"},"startx":{"n":"startx","p":"/startx","d":"用来启动X Window"},"stat":{"n":"stat","p":"/stat","d":"用于显示文件的状态信息"},"strace":{"n":"strace","p":"/strace","d":"跟踪系统调用和信号"},"strings":{"n":"strings","p":"/strings","d":"在对象文件或二进制文件中查找可打印的字符串"},"stty":{"n":"stty","p":"/stty","d":"修改终端命令行的相关设置"},"su":{"n":"su","p":"/su","d":"用于切换当前用户身份到其他用户身份"},"sudo":{"n":"sudo","p":"/sudo","d":"以其他身份来执行命令"},"sum":{"n":"sum","p":"/sum","d":"计算文件的校验码和显示块数"},"supervisord":{"n":"supervisord","p":"/supervisord","d":"配置后台服务/常驻进程的进程管家工具"},"suspend":{"n":"suspend","p":"/suspend","d":"挂起shell的执行。"},"swapoff":{"n":"swapoff","p":"/swapoff","d":"关闭指定的交换空间"},"swapon":{"n":"swapon","p":"/swapon","d":"激活Linux系统中交换空间"},"sync":{"n":"sync","p":"/sync","d":"用于强制被改变的内容立刻写入磁盘"},"sysctl":{"n":"sysctl","p":"/sysctl","d":"时动态地修改内核的运行参数"},"syslog":{"n":"syslog","p":"/syslog","d":"系统默认的日志守护进程"},"systemctl":{"n":"systemctl","p":"/systemctl","d":"系统服务管理器指令"},"systool":{"n":"systool","p":"/systool","d":"显示基于总线、类和拓扑显示系统中设备的信息"},"tac":{"n":"tac","p":"/tac","d":"连接多个文件并以行为单位反向打印到标准输出。"},"tail":{"n":"tail","p":"/tail","d":"在屏幕上显示指定文件的末尾若干行"},"tailf":{"n":"tailf","p":"/tailf","d":"在屏幕上显示指定文件的末尾若干行内容,通常用于日志文件的跟踪输出"},"talk":{"n":"talk","p":"/talk","d":"让用户和其他用户聊天"},"tar":{"n":"tar","p":"/tar","d":"将许多文件一起保存至一个单独的磁带或磁盘归档,并能从归档中单独还原所需文件。"},"tcpdump":{"n":"tcpdump","p":"/tcpdump","d":"一款sniffer工具,是Linux上的抓包工具,嗅探器"},"tcpreplay":{"n":"tcpreplay","p":"/tcpreplay","d":"将保存在 PCAP 文件包重新发送,用于性能或者功能测试"},"tee":{"n":"tee","p":"/tee","d":"从标准输入读取数据并重定向到标准输出和文件。"},"telinit":{"n":"telinit","p":"/telinit","d":"切换当前正在运行系统的运行等级"},"telnet":{"n":"telnet","p":"/telnet","d":"登录远程主机和管理(测试ip端口是否连通)"},"tempfile":{"n":"tempfile","p":"/tempfile","d":"shell中给临时文件命名"},"test":{"n":"test","p":"/test","d":"执行条件表达式。"},"tftp":{"n":"tftp","p":"/tftp","d":"在本机和tftp服务器之间使用TFTP协议传输文件"},"time":{"n":"time","p":"/time","d":"统计给定命令所花费的总时间"},"timedatectl":{"n":"timedatectl","p":"/timedatectl","d":"用于在 Linux 中设置或查询系统时间、日期和时区等配置。"},"times":{"n":"times","p":"/times","d":"显示进程累计时间。"},"tload":{"n":"tload","p":"/tload","d":"显示系统负载状况"},"tmux":{"n":"tmux","p":"/tmux","d":"Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权"},"top":{"n":"top","p":"/top","d":"显示或管理执行中的程序"},"touch":{"n":"touch","p":"/touch","d":"创建新的空文件"},"tput":{"n":"tput","p":"/tput","d":"通过terminfo数据库对终端会话进行初始化和操作"},"tr":{"n":"tr","p":"/tr","d":"将字符进行替换压缩和删除"},"tracepath":{"n":"tracepath","p":"/tracepath","d":"追踪目的主机经过的路由信息"},"traceroute":{"n":"traceroute","p":"/traceroute","d":"显示数据包到主机间的路径"},"trap":{"n":"trap","p":"/trap","d":"捕捉信号和其他事件并执行命令。"},"tree":{"n":"tree","p":"/tree","d":"树状图列出目录的内容"},"true":{"n":"true","p":"/true","d":"返回状态为成功。"},"tty":{"n":"tty","p":"/tty","d":"显示连接到当前标准输入的终端设备文件名"},"type":{"n":"type","p":"/type","d":"显示指定命令的类型。"},"ufw":{"n":"ufw","p":"/ufw","d":" ubuntu防火墙管理工具"},"ulimit":{"n":"ulimit","p":"/ulimit","d":"控制shell程序的资源"},"umask":{"n":"umask","p":"/umask","d":"显示或设置创建文件的权限掩码。"},"umount":{"n":"umount","p":"/umount","d":"用于卸载已经加载的文件系统"},"unalias":{"n":"unalias","p":"/unalias","d":"删除由alias设置的别名"},"uname":{"n":"uname","p":"/uname","d":"打印系统信息。"},"unarj":{"n":"unarj","p":"/unarj","d":"解压缩由arj命令创建的压缩包"},"uncompress":{"n":"uncompress","p":"/uncompress","d":"用来解压.Z文件"},"unexpand":{"n":"unexpand","p":"/unexpand","d":"将文件的空白字符转换为制表符"},"uniq":{"n":"uniq","p":"/uniq","d":"显示或忽略重复的行。"},"unlink":{"n":"unlink","p":"/unlink","d":"系统调用函数unlink去删除指定的文件"},"unprotoize":{"n":"unprotoize","p":"/unprotoize","d":"删除C语言源代码文件中的函数原型"},"unrar":{"n":"unrar","p":"/unrar","d":"解压rar文件命令,从 rar 压缩包中提取文件"},"unset":{"n":"unset","p":"/unset","d":"删除指定的shell变量或函数。"},"unzip":{"n":"unzip","p":"/unzip","d":"用于解压缩由zip命令压缩的压缩包"},"updatedb":{"n":"updatedb","p":"/updatedb","d":"创建或更新slocate命令所必需的数据库文件"},"uptime":{"n":"uptime","p":"/uptime","d":"查看Linux系统负载信息"},"useradd":{"n":"useradd","p":"/useradd","d":"创建的新的系统用户"},"userdel":{"n":"userdel","p":"/userdel","d":"用于删除给定的用户以及与用户相关的文件"},"usermod":{"n":"usermod","p":"/usermod","d":"用于修改用户的基本信息"},"usernetctl":{"n":"usernetctl","p":"/usernetctl","d":"被允许时操作指定的网络接口"},"users":{"n":"users","p":"/users","d":"打印当前主机所有登陆用户的名称。"},"uucico":{"n":"uucico","p":"/uucico","d":"UUCP文件传输服务程序"},"uupick":{"n":"uupick","p":"/uupick","d":"命令处理传送进来的文件"},"uuto":{"n":"uuto","p":"/uuto","d":"将文件传送到远端的UUCP主机"},"vdfuse":{"n":"vdfuse","p":"/vdfuse","d":"VirtualBox软件挂载VDI分区文件工具"},"vgchange":{"n":"vgchange","p":"/vgchange","d":"修改卷组属性"},"vgconvert":{"n":"vgconvert","p":"/vgconvert","d":"转换卷组元数据格式"},"vgcreate":{"n":"vgcreate","p":"/vgcreate","d":"用于创建LVM卷组"},"vgdisplay":{"n":"vgdisplay","p":"/vgdisplay","d":"显示LVM卷组的信息"},"vgextend":{"n":"vgextend","p":"/vgextend","d":"向卷组中添加物理卷"},"vgreduce":{"n":"vgreduce","p":"/vgreduce","d":"从卷组中删除物理卷"},"vgremove":{"n":"vgremove","p":"/vgremove","d":"用于用户删除LVM卷组"},"vgrename":{"n":"vgrename","p":"/vgrename","d":"使用vgrename命令可以重命名卷组的名称"},"vgscan":{"n":"vgscan","p":"/vgscan","d":"扫描并显示系统中的卷组"},"vi":{"n":"vi","p":"/vi","d":"功能强大的纯文本编辑器"},"vmstat":{"n":"vmstat","p":"/vmstat","d":"显示虚拟内存状态"},"volname":{"n":"volname","p":"/volname","d":"显示指定的ISO-9660格式的设备的卷名称"},"w":{"n":"w","p":"/w","d":"显示目前登入系统的用户信息"},"wait":{"n":"wait","p":"/wait","d":"等待进程执行完后返回"},"wall":{"n":"wall","p":"/wall","d":"向系统当前所有打开的终端上输出信息"},"watch":{"n":"watch","p":"/watch","d":"可以将命令的输出结果输出到标准输出设备,多用于周期性执行命令/定时执行命令"},"wc":{"n":"wc","p":"/wc","d":"统计文件的字节数、字数、行数"},"wget":{"n":"wget","p":"/wget","d":"Linux系统下载文件工具"},"whatis":{"n":"whatis","p":"/whatis","d":"查询一个命令执行什么功能"},"whereis":{"n":"whereis","p":"/whereis","d":"查找二进制程序、代码等相关文件路径"},"which":{"n":"which","p":"/which","d":"查找并显示给定命令的绝对路径"},"who":{"n":"who","p":"/who","d":"显示当前所有登陆用户的信息。"},"whoami":{"n":"whoami","p":"/whoami","d":"打印当前有效的用户ID对应的名称"},"write":{"n":"write","p":"/write","d":"向指定登录用户终端上发送信息"},"xargs":{"n":"xargs","p":"/xargs","d":"给其他命令传递参数的一个过滤器"},"xauth":{"n":"xauth","p":"/xauth","d":"显示和编辑被用于连接X服务器的认证信息"},"xclip":{"n":"xclip","p":"/xclip","d":"管理 X 粘贴板"},"xhost":{"n":"xhost","p":"/xhost","d":"制哪些X客户端能够在X服务器上显示"},"xinit":{"n":"xinit","p":"/xinit","d":"是Linux下X-Window系统的初始化程序"},"xlsatoms":{"n":"xlsatoms","p":"/xlsatoms","d":"列出X服务器内部所有定义的原子成分"},"xlsclients":{"n":"xlsclients","p":"/xlsclients","d":"列出显示器中的客户端应用程序"},"xlsfonts":{"n":"xlsfonts","p":"/xlsfonts","d":"列出X Server使用的字体"},"xrandr":{"n":"xrandr","p":"/xrandr","d":"X 窗口系统配置管理工具"},"xset":{"n":"xset","p":"/xset","d":"设置X-Window系统中的用户爱好的实用工具"},"xz":{"n":"xz","p":"/xz","d":"POSIX 平台开发具有高压缩率的工具"},"yes":{"n":"yes","p":"/yes","d":"重复打印指定字符串"},"ypdomainname":{"n":"ypdomainname","p":"/ypdomainname","d":"显示主机的NIS的域名"},"yum":{"n":"yum","p":"/yum","d":"基于RPM的软件包管理器"},"zcat":{"n":"zcat","p":"/zcat","d":"显示压缩包中文件的内容"},"zfore":{"n":"zfore","p":"/zfore","d":"强制为gzip格式的压缩文件添加.gz后缀"},"zip":{"n":"zip","p":"/zip","d":"可以用来解压缩文件"},"zipinfo":{"n":"zipinfo","p":"/zipinfo","d":"用来列出压缩文件信息"},"zipsplit":{"n":"zipsplit","p":"/zipsplit","d":"将较大的zip压缩包分割成各个较小的压缩包"},"znew":{"n":"znew","p":"/znew","d":"将.Z压缩包重新转化为gzip命令压缩的.gz压缩包"}} \ No newline at end of file diff --git a/template/contributors.ejs b/template/contributors.ejs index 81cce14e78f..a911724e970 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -188,8 +188,40 @@

- 数据来源于 GitHub Contributors,使用action-contributors创建。 + 数据来源于 GitHub Contributors,使用 action-contributors 创建。

+

镜像网站

+ +

魔改网站

+ <%- include('widget/footer',{type: "list"}); %> <%- include('partial/footer'); %> diff --git a/template/styl/index.styl b/template/styl/index.styl index f0cb0b04db5..23d3d0a531d 100644 --- a/template/styl/index.styl +++ b/template/styl/index.styl @@ -282,6 +282,17 @@ mq-mobile = "screen and (max-width: 479px)" a { font-weight: bold; } + .links { + display: inline-flex; + flex-wrap: wrap; + } + .links a { + background: var(--color-theme-bg); + height: 2.1rem; + border-radius: 0.3rem; + gap: 0.1rem; + padding: 0rem 0.5rem 0rem 0.4rem; + } } @media mq-mobile { diff --git a/template/widget/footer.ejs b/template/widget/footer.ejs index 966863110a6..3bea7dbaca9 100644 --- a/template/widget/footer.ejs +++ b/template/widget/footer.ejs @@ -17,4 +17,7 @@ <%=describe.command_length?describe.command_length:''%> 个Linux命令,超过 50+ 贡献者 +
+ 推荐自己的镜像网站 +
\ No newline at end of file From 944ab9c3990617824b447fb49bdeb5d3232dc099 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83?= <398188662@qq.com> Date: Fri, 13 Jun 2025 14:35:17 +0800 Subject: [PATCH 1121/1126] website: udpate contributors page. --- template/contributors.ejs | 2 +- template/styl/index.styl | 3 +++ template/widget/footer.ejs | 17 ++++++++++------- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/template/contributors.ejs b/template/contributors.ejs index a911724e970..8f87054b9a8 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -190,7 +190,7 @@

数据来源于 GitHub Contributors,使用 action-contributors 创建。

-

镜像网站

+

镜像网站

\ No newline at end of file From c7795cd3fe88cfeae227a9d80f82503de4c8cbe5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83?= <398188662@qq.com> Date: Fri, 13 Jun 2025 14:45:29 +0800 Subject: [PATCH 1122/1126] doc: Update README.md --- README.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index cd890c74514..74d73ac6f20 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,8 @@ ⚠️ 你们拿过去部署的静态网站,还是希望挂个 GitHub 地址,这样大家共同维护命令文档,让文档更加完善,更加丰富,当然你删除本站所有信息相关信息,其实我也不太在意,默认允许你们随意搞,我不负任何负责。如果您也部署了一份,可以将网址放到下面 :)。 +由于中国国内访问,时常打不开,你可以访问下面镜像网站(国内打不开的不再收录)。推荐自己的[镜像网站 #649](https://github.com/jaywcjlove/linux-command/issues/649) + **推荐使用的镜像 web 版本** [**`linuxsearch.largeinfo.cc`**](http://linuxsearch.largeinfo.cc),[**`srebro.cn`**](https://linux.srebro.cn/),[**`getaifun.com`**](https://getaifun.com/linux),[**`linux.devonline.net`**](http://linux.devonline.net/),[**`man.zch.ooo`**](https://man.zch.ooo/),[**`linux.mmoke.com`**](https://linux.mmoke.com),[**`bqrdh.com`**](https://tools.bqrdh.com/linux-command/),[**`linux.zyimm.com`**](http://linux.zyimm.com/),[**`linux.vovuo.com`**](https://linux.vovuo.com/),[`linux.liguiying.cn`](https://linux.liguiying.cn/),[`renye.net`](https://renye.net/),[`diqi.org`](https://diqi.org/),[`linux.alistnas.top`](https://linux.alistnas.top/),[`nenufm.com`](https://www.nenufm.com/linux-command/),[`linux.jiangyang.online`](https://linux.jiangyang.online/) @@ -85,7 +87,7 @@ - [`@chenjiandongx/how`](https://github.com/chenjiandongx/how) Python 版 [#129](https://github.com/jaywcjlove/linux-command/issues/129),由 [**@陈键冬**](https://github.com/chenjiandongx) 提供 - [`@chenjiandongx/pls`](https://github.com/chenjiandongx/pls) Golang 版 [#129](https://github.com/jaywcjlove/linux-command/issues/129),由 [**@陈键冬**](https://github.com/chenjiandongx) 提供 -## Docker +## Docker 部署 [![Docker Image Version (latest by date)](https://img.shields.io/docker/v/wcjiang/linux-command?logo=docker)](https://hub.docker.com/r/wcjiang/linux-command) [![Docker Image Size (latest by date)](https://img.shields.io/docker/image-size/wcjiang/linux-command?logo=docker)](https://hub.docker.com/r/wcjiang/linux-command) [![Docker Pulls](https://img.shields.io/docker/pulls/wcjiang/linux-command?logo=docker)](https://hub.docker.com/r/wcjiang/linux-command) @@ -93,16 +95,12 @@ ```bash docker pull wcjiang/linux-command -# Or -docker pull ghcr.io/jaywcjlove/linux-command:latest ``` ```bash docker run --name linux-command --rm -d -p 9665:3000 wcjiang/linux-command:latest # Or docker run --name linux-command -itd -p 9665:3000 wcjiang/linux-command:latest -# Or -docker run --name linux-command -itd -p 9665:3000 ghcr.io/jaywcjlove/linux-command:latest ``` 在浏览器中访问以下 URL From 3b822160e6e295b8751654541e1e2d5983415212 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=BC=9F=E8=B0=83=E8=B0=83?= <398188662@qq.com> Date: Fri, 13 Jun 2025 14:56:22 +0800 Subject: [PATCH 1123/1126] doc: update README.md #649 --- README.md | 29 +++++++++++++++++++++++++++-- template/contributors.ejs | 1 + 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 74d73ac6f20..21033632848 100644 --- a/README.md +++ b/README.md @@ -69,11 +69,36 @@ **推荐使用的镜像 web 版本** -[**`linuxsearch.largeinfo.cc`**](http://linuxsearch.largeinfo.cc),[**`srebro.cn`**](https://linux.srebro.cn/),[**`getaifun.com`**](https://getaifun.com/linux),[**`linux.devonline.net`**](http://linux.devonline.net/),[**`man.zch.ooo`**](https://man.zch.ooo/),[**`linux.mmoke.com`**](https://linux.mmoke.com),[**`bqrdh.com`**](https://tools.bqrdh.com/linux-command/),[**`linux.zyimm.com`**](http://linux.zyimm.com/),[**`linux.vovuo.com`**](https://linux.vovuo.com/),[`linux.liguiying.cn`](https://linux.liguiying.cn/),[`renye.net`](https://renye.net/),[`diqi.org`](https://diqi.org/),[`linux.alistnas.top`](https://linux.alistnas.top/),[`nenufm.com`](https://www.nenufm.com/linux-command/),[`linux.jiangyang.online`](https://linux.jiangyang.online/) +[**`linuxsearch.largeinfo.cc`**](http://linuxsearch.largeinfo.cc) +[**`srebro.cn`**](https://linux.srebro.cn/) +[**`getaifun.com`**](https://getaifun.com/linux) +[**`linux.devonline.net`**](http://linux.devonline.net/) +[**`man.zch.ooo`**](https://man.zch.ooo/) +[**`linux.mmoke.com`**](https://linux.mmoke.com) +[**`bqrdh.com`**](https://tools.bqrdh.com/linux-command/) +[**`linux.zyimm.com`**](http://linux.zyimm.com/) +[**`linux.vovuo.com`**](https://linux.vovuo.com/) +[`linux.liguiying.cn`](https://linux.liguiying.cn/) +[`renye.net`](https://renye.net/) +[`diqi.org`](https://diqi.org/) +[`linux.alistnas.top`](https://linux.alistnas.top/) +[`nenufm.com`](https://www.nenufm.com/linux-command/) +[`linux.jiangyang.online`](https://linux.jiangyang.online/) **其它 web 版本** -[`linux.ftqq.com`](https://linux.ftqq.com/),[`linux.gaomeluo.com`](https://linux.gaomeluo.com),[`atoolbox.net`](http://www.atoolbox.net/Tool.php?Id=826),[`xiaoshanseo.com`](https://tools.xiaoshanseo.com/Tools/linux-command/),[`262235.xyz`](https://262235.xyz/linux-command/),[`cmsblogs.cn`](https://linux.cmsblogs.cn/),[`loquy.cn`](https://www.loquy.cn/linux-command/),[`buyao.vip`](https://demo.buyao.vip/linux/),[`hezhiqiang.gitbook.io`](https://hezhiqiang.gitbook.io/linux/),[`utils.fun`](https://linux.utils.fun/),[`51tools.info`](https://51tools.info/linux/) +[`lylme.com`](https://linux.lylme.com/) +[`linux.ftqq.com`](https://linux.ftqq.com/) +[`linux.gaomeluo.com`](https://linux.gaomeluo.com) +[`atoolbox.net`](http://www.atoolbox.net/Tool.php?Id=826) +[`xiaoshanseo.com`](https://tools.xiaoshanseo.com/Tools/linux-command/) +[`262235.xyz`](https://262235.xyz/linux-command/) +[`cmsblogs.cn`](https://linux.cmsblogs.cn/) +[`loquy.cn`](https://www.loquy.cn/linux-command/) +[`buyao.vip`](https://demo.buyao.vip/linux/) +[`hezhiqiang.gitbook.io`](https://hezhiqiang.gitbook.io/linux/) +[`utils.fun`](https://linux.utils.fun/) +[`51tools.info`](https://51tools.info/linux/) ## 其它版本 diff --git a/template/contributors.ejs b/template/contributors.ejs index 8f87054b9a8..95b02b55b4b 100644 --- a/template/contributors.ejs +++ b/template/contributors.ejs @@ -210,6 +210,7 @@

魔改网站