Black-Gold 7 years ago
parent 433ef3f38a
commit cb7448079f

@ -1,40 +1,6 @@
{
"workbench.startupEditor": "none",
"workbench.iconTheme": "vscode-icons",
"workbench.colorTheme": "Monokai",
"files.autoSave": "afterDelay",
"editor.wordWrap": "on",
"workbench.statusBar.feedback.visible": false,
"editor.smoothScrolling": true,
"editor.tabCompletion": "on",
"editor.cursorBlinking": "smooth",
"editor.cursorStyle": "line-thin",
"editor.minimap.maxColumn": 127,
"editor.minimap.renderCharacters": false,
"files.autoGuessEncoding": true,
"workbench.commandPalette.history": 40,
"workbench.enableExperiments": false,
"breadcrumbs.enabled": true,
"extensions.ignoreRecommendations": true,
"terminal.integrated.copyOnSelection": true,
"terminal.integrated.shell.linux": "/bin/bash",
"update.showReleaseNotes": false,
"telemetry.enableCrashReporter": false,
"vsicons.dontShowNewVersionMessage": true,
"telemetry.enableTelemetry": false,
"git.autofetch": true,
"git.showPushSuccessNotification": true,
"markdown.previewFrontMatter": "show",
"python.autoComplete.addBrackets": true,
"python.linting.pep8Enabled": true,
"python.unitTest.debugPort": 2000,
"code-runner.saveFileBeforeRun": true,
"code-runner.runInTerminal": true,
"yaml.format.enable": true,
"python.linting.pylintEnabled": false,
"terminal.integrated.rendererType": "dom",
"git.allowForcePush": true,
"git.alwaysShowStagedChangesResourceGroup": true,
"gitlens.settings.mode": "advanced",
"python.jediEnabled": false
"python.linting.enabled": true,
"python.pythonPath": "D:\\Python37\\python.exe"
}

@ -1,117 +0,0 @@
git
===
是目前世界上最先进的分布式版本控制系统
## 补充说明
**git命令** 很多人都知道Linus在1991年创建了开源的Linux从此Linux系统不断发展已经成为最大的服务器系统软件了。
Linus虽然创建了Linux但Linux的壮大是靠全世界热心的志愿者参与的这么多人在世界各地为Linux编写代码那Linux的代码是如何管理的呢
事实是在2002年以前世界各地的志愿者把源代码文件通过diff的方式发给Linus然后由Linus本人通过手工方式合并代码
你也许会想为什么Linus不把Linux代码放到版本控制系统里呢不是有CVS、SVN这些免费的版本控制系统吗因为Linus坚定地反对CVS和SVN这些集中式的版本控制系统不但速度慢而且必须联网才能使用。有一些商用的版本控制系统虽然比CVS、SVN好用但那是付费的和Linux的开源精神不符。
不过到了2002年Linux系统已经发展了十年了代码库之大让Linus很难继续通过手工方式管理了社区的弟兄们也对这种方式表达了强烈不满于是Linus选择了一个商业的版本控制系统BitKeeperBitKeeper的东家BitMover公司出于人道主义精神授权Linux社区免费使用这个版本控制系统。
安定团结的大好局面在2005年就被打破了原因是Linux社区牛人聚集不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图破解BitKeeper的协议这么干的其实也不只他一个被BitMover公司发现了监控工作做得不错于是BitMover公司怒了要收回Linux社区的免费使用权。
Linus可以向BitMover公司道个歉保证以后严格管教弟兄们这是不可能的。实际情况是这样的
Linus花了两周时间自己用C写了一个分布式版本控制系统这就是Git一个月之内Linux系统的源码已经由Git管理了牛是怎么定义的呢大家可以体会一下。
Git迅速成为最流行的分布式版本控制系统尤其是2008年GitHub网站上线了它为开源项目免费提供Git存储无数开源项目开始迁移至GitHub包括jQueryPHPRuby等等。
历史就是这么偶然如果不是当年BitMover公司威胁Linux社区可能现在我们就没有免费而超级好用的Git了。
[Git常用命令清单](https://github.com/jaywcjlove/handbook/blob/master/other/Git%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4%E6%B8%85%E5%8D%95.md)
### 语法
```
git [--version] [--help] [-C <path>] [-c name=value]
[--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
[-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
[--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
<command> [<args>]
```
### 选项
```
add 将文件内容添加到索引
bisect 通过二进制查找引入错误的更改
branch 列出,创建或删除分支
checkout 检查分支或路径到工作树
clone 将存储库克隆到新目录中
commit 将更改记录到存储库
diff 显示提交,提交和工作树等之间的更改
fetch 从另一个存储库下载对象和引用
grep 打印匹配图案的行
init 创建一个空的Git仓库或重新初始化一个现有的
log 显示提交日志
merge 加入两个或更多的开发历史
mv 移动或重命名文件,目录或符号链接
pull 从另一个存储库或本地分支获取并合并
push 更新远程引用以及相关对象
rebase 转发端口本地提交到更新的上游头
reset 将当前HEAD复位到指定状态
rm 从工作树和索引中删除文件
show 显示各种类型的对象
status 显示工作树状态
tag 创建列出删除或验证使用GPG签名的标签对象
```
### 例子
init
`git init` #初始化
status
`git status` #获取状态
add
`git add file` # .或*代表全部添加
`git rm --cached <added_file_to_undo>` # 在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 <版本库的网址> <本地目录名>`
```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/
$ 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/
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

@ -1,6 +1,6 @@
ab
===
Apache服务器的性能测试工具
## 补充说明

@ -1,112 +1,112 @@
alias
===
用来设置指令的别名
## 补充说明
**alias命令** 用来设置指令的别名。我们可以使用该命令可以将一些较长的命令进行简化。使用alias时用户必须使用单引号`''`将原来的命令引起来,防止特殊字符导致错误。
alias命令的作用只局限于该次登入的操作。若要每次登入都能够使用这些命令别名则可将相应的alias命令存放到bash的初始化文件`/etc/bashrc`中。
### 语法
```
alias(选项)(参数)
```
### 选项
```
-p打印已经设置的命令别名。
```
### 参数
命令别名设置:定义命令别名,格式为“命令别名=‘实际命令’”。
### 实例
**alias 的基本使用方法为:**
```
alias 新的命令='原命令 -选项/参数'
```
例如:`alias l=ls -lsh'`将重新定义ls命令现在只需输入l就可以列目录了。直接输入 alias 命令会列出当前系统中所有已经定义的命令别名。
要删除一个别名,可以使用 unalias 命令,如 unalias l。
**查看系统已经设置的别名:**
```bash
[root@localhost ~]#
[root@localhost ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@localhost ~]#
```
### 命令别名永久生效
直接在shell里设定的命令别名在终端关闭或者系统重新启动后都会失效如何才能永久有效呢办法就是将别名的设置加入~/.bashrc文件然后重新载入下文件就可以了。
```bash
$ vim ~/.bashrc
```
在文件最后面加入别名设置alias rm=rm -i保存后重新载入
```bash
$ source ~/.bashrc
```
这样就可以永久保存命令的别名了。因为修改的是当前用户目录下的.bashrc文件所以这样的方式只对当前用户有用。如果要对所有用户都有效修改/etc目录下的bashrc文件就可以了。在CentOS7下这个文件是/etc/bash.bashrc。此外在CentOS7下细看~/.bashrc文件会发有这样一段代码
```bash
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
```
这个代码的意思就是加载.bash_aliases文件CentOS7已经帮我们考虑好了所以也可以在用户根目录下新建一个文件.bash_aliases存放命令别名设置。
### 小结
alias这个命令是shell的内建命令可以根据自己的使用习惯设置一些别名需要注意的就是和其他命令冲突的情况。
#### 一、 范例演示
在使用和维护Linux系统过程中我们常常希望根据自己的需要来定义一些命令那么这样的操作是不是很难呢其实不是系统已经为我们设置好了相关的命令下面小编就以CentOS6.4系统为例,为大家演示如何创建自己的命令。
#### 二、 自定义命令简介
CentOS系统下的创建自定义命令其实比较简单使用的命令就是alias具体使用的方法就是 alias 自定义命令名=‘命令’。但是需要注意的是,在自定义之前需要查看自定义的命令名是否是系统已经使用的命令名,否则会冲突,另外一个就是定期清理不需要的自定义命令名。
#### 三、 演示举例
假定系统操作员希望进行如下操作:
1.进入目录/root
2.查看目录下文件
3.切换回根目录
通常这需要三条命令 cd /rootlscd / ,如果需要经常使用那么我们可以通过自定义命令的方式用一条命令完成全部操作。
![](alias\01.png)
#### 四、 操作过程
首先使用命令 type 自定义命令名 查看自定义命令名是否被系统占用。从图中可以看出test命令名已被系统占用所以不能使用而loo这个命令名经查询可以使用。
![](alias\02.png)
使用命令alias创建自定义命令alias loo='cd /root;ls;cd /' 。需要注意的是命令的使用格式,分号与分号之间是没有空格的。
![](alias\03.png)
测试一下自定义命令,当输入命令 loo 时,发现系统依次完成了 cd /root、ls、cd / 三条命令,说明设置成功。同时也可直接使用命令 alias 查询系统中是否添加了loo这个自定义命令。
![](alias\04.png)
如果希望删除这个自定义命令,可以使用命令 unalias 自定义命令名 来完成。执行之后发现loo命令已不存在同时自定义命令库中也没有loo命令。
![](alias\05.png)
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->
alias
===
用来设置指令的别名
## 补充说明
**alias命令** 用来设置指令的别名。我们可以使用该命令可以将一些较长的命令进行简化。使用alias时用户必须使用单引号`''`将原来的命令引起来,防止特殊字符导致错误。
alias命令的作用只局限于该次登入的操作。若要每次登入都能够使用这些命令别名则可将相应的alias命令存放到bash的初始化文件`/etc/bashrc`中。
### 语法
```
alias(选项)(参数)
```
### 选项
```
-p打印已经设置的命令别名。
```
### 参数
命令别名设置:定义命令别名,格式为“命令别名=‘实际命令’”。
### 实例
**alias 的基本使用方法为:**
```
alias 新的命令='原命令 -选项/参数'
```
例如:`alias l=ls -lsh'`将重新定义ls命令现在只需输入l就可以列目录了。直接输入 alias 命令会列出当前系统中所有已经定义的命令别名。
要删除一个别名,可以使用 unalias 命令,如 unalias l。
**查看系统已经设置的别名:**
```bash
[root@localhost ~]#
[root@localhost ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@localhost ~]#
```
### 命令别名永久生效
直接在shell里设定的命令别名在终端关闭或者系统重新启动后都会失效如何才能永久有效呢办法就是将别名的设置加入~/.bashrc文件然后重新载入下文件就可以了。
```bash
$ vim ~/.bashrc
```
在文件最后面加入别名设置alias rm=rm -i保存后重新载入
```bash
$ source ~/.bashrc
```
这样就可以永久保存命令的别名了。因为修改的是当前用户目录下的.bashrc文件所以这样的方式只对当前用户有用。如果要对所有用户都有效修改/etc目录下的bashrc文件就可以了。在CentOS7下这个文件是/etc/bash.bashrc。此外在CentOS7下细看~/.bashrc文件会发有这样一段代码
```bash
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
```
这个代码的意思就是加载.bash_aliases文件CentOS7已经帮我们考虑好了所以也可以在用户根目录下新建一个文件.bash_aliases存放命令别名设置。
### 小结
alias这个命令是shell的内建命令可以根据自己的使用习惯设置一些别名需要注意的就是和其他命令冲突的情况。
#### 一、 范例演示
在使用和维护Linux系统过程中我们常常希望根据自己的需要来定义一些命令那么这样的操作是不是很难呢其实不是系统已经为我们设置好了相关的命令下面小编就以CentOS6.4系统为例,为大家演示如何创建自己的命令。
#### 二、 自定义命令简介
CentOS系统下的创建自定义命令其实比较简单使用的命令就是alias具体使用的方法就是 alias 自定义命令名=‘命令’。但是需要注意的是,在自定义之前需要查看自定义的命令名是否是系统已经使用的命令名,否则会冲突,另外一个就是定期清理不需要的自定义命令名。
#### 三、 演示举例
假定系统操作员希望进行如下操作:
1.进入目录/root
2.查看目录下文件
3.切换回根目录
通常这需要三条命令 cd /rootlscd / ,如果需要经常使用那么我们可以通过自定义命令的方式用一条命令完成全部操作。
![](alias\01.png)
#### 四、 操作过程
首先使用命令 type 自定义命令名 查看自定义命令名是否被系统占用。从图中可以看出test命令名已被系统占用所以不能使用而loo这个命令名经查询可以使用。
![](alias\02.png)
使用命令alias创建自定义命令alias loo='cd /root;ls;cd /' 。需要注意的是命令的使用格式,分号与分号之间是没有空格的。
![](alias\03.png)
测试一下自定义命令,当输入命令 loo 时,发现系统依次完成了 cd /root、ls、cd / 三条命令,说明设置成功。同时也可直接使用命令 alias 查询系统中是否添加了loo这个自定义命令。
![](alias\04.png)
如果希望删除这个自定义命令,可以使用命令 unalias 自定义命令名 来完成。执行之后发现loo命令已不存在同时自定义命令库中也没有loo命令。
![](alias\05.png)
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

@ -1,6 +1,6 @@
apachectl
===
Apache服务器前端控制工具
## 补充说明

@ -1,6 +1,6 @@
apropos
===
在 whatis 数据库中查找字符串
## 补充说明

@ -1,6 +1,6 @@
apt-get
===
Debian Linux发行版中的APT软件包管理工具
## 补充说明

@ -1,6 +1,6 @@
apt-key
===
管理Debian Linux系统中的软件包密钥
## 补充说明

@ -1,6 +1,6 @@
apt-sortpkgs
===
Debian Linux下对软件包索引文件进行排序的工具
## 补充说明

@ -1,6 +1,6 @@
aptitude
===
Debian Linux系统中软件包管理工具
## 补充说明

@ -1,6 +1,6 @@
arp
===
显示和修改IP到MAC转换表
## 补充说明

@ -1,6 +1,6 @@
arpd
===
收集免费ARP信息
## 补充说明

@ -1,6 +1,6 @@
arping
===
通过发送ARP协议报文测试网络
## 补充说明

@ -1,6 +1,6 @@
arptables
===
管理ARP包过滤规则表
## 补充说明

@ -1,6 +1,6 @@
arpwatch
===
监听网络上ARP的记录
## 补充说明

File diff suppressed because it is too large Load Diff

@ -1,6 +1,6 @@
basename
===
打印目录或者文件的基本名称
## 补充说明

@ -1,6 +1,6 @@
bind
===
显示或设置键盘按键与其相关的功能
## 补充说明

@ -1,6 +1,6 @@
blkid
===
查看块设备的文件系统类型、LABEL、UUID等信息
## 补充说明

@ -1,6 +1,6 @@
cal
===
显示当前日历或指定日期的日历
## 补充说明

@ -1,6 +1,6 @@
cat
===
连接文件并打印到标准输出设备上
## 补充说明

@ -1,6 +1,6 @@
cd
===
切换用户当前工作目录
## 补充说明

@ -1,6 +1,6 @@
chattr
===
用来改变文件属性
## 补充说明

@ -1,52 +1,52 @@
chgrp
===
用来变更文件或目录的所属群组
## 补充说明
**chgrp命令** 用来改变文件或目录所属的用户组。该命令用来改变指定文件所属的用户组。其中组名可以是用户组的id也可以是用户组的组名。文件名可以 是由空格分开的要改变属组的文件列表,也可以是由通配符描述的文件集合。如果用户不是该文件的文件主或超级用户(root),则不能改变该文件的组。
在UNIX系统家族里文件或目录权限的掌控以拥有者及所属群组来管理。您可以使用chgrp指令去变更文件与目录的所属群组设置方式采用群组名称或群组识别码皆可。
### 语法
```
chgrp [选项][组群][文件|目录]
```
### 选项
```
-R 递归式地改变指定目录及其下的所有子目录和文件的所属的组
-c或——changes效果类似“-v”参数但仅回报更改的部分
-f或--quiet或——silent不显示错误信息
-h或--no-dereference只对符号连接的文件作修改而不是该其他任何相关文件
-H如果命令行参数是一个通到目录的符号链接则遍历符号链接
-R或——recursive递归处理将指令目录下的所有文件及子目录一并处理
-L遍历每一个遇到的通到目录的符号链接
-P不遍历任何符号链接默认
-v或——verbose显示指令执行过程
--reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;
```
### 参数
* 组:指定新工作名称;
* 文件:指定要改变所属组的文件列表。多个文件或者目录之间使用空格隔开。
### 实例
将`/usr/meng`及其子目录下的所有文件的用户组改为mengxin
```
chgrp -R mengxin /usr/meng
```
更改文件ah的组群所有者为newuser
```
[root@rhel ~]# chgrp newuser ah
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->
chgrp
===
用来变更文件或目录的所属群组
## 补充说明
**chgrp命令** 用来改变文件或目录所属的用户组。该命令用来改变指定文件所属的用户组。其中组名可以是用户组的id也可以是用户组的组名。文件名可以 是由空格分开的要改变属组的文件列表,也可以是由通配符描述的文件集合。如果用户不是该文件的文件主或超级用户(root),则不能改变该文件的组。
在UNIX系统家族里文件或目录权限的掌控以拥有者及所属群组来管理。您可以使用chgrp指令去变更文件与目录的所属群组设置方式采用群组名称或群组识别码皆可。
### 语法
```
chgrp [选项][组群][文件|目录]
```
### 选项
```
-R 递归式地改变指定目录及其下的所有子目录和文件的所属的组
-c或——changes效果类似“-v”参数但仅回报更改的部分
-f或--quiet或——silent不显示错误信息
-h或--no-dereference只对符号连接的文件作修改而不是该其他任何相关文件
-H如果命令行参数是一个通到目录的符号链接则遍历符号链接
-R或——recursive递归处理将指令目录下的所有文件及子目录一并处理
-L遍历每一个遇到的通到目录的符号链接
-P不遍历任何符号链接默认
-v或——verbose显示指令执行过程
--reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;
```
### 参数
* 组:指定新工作名称;
* 文件:指定要改变所属组的文件列表。多个文件或者目录之间使用空格隔开。
### 实例
将`/usr/meng`及其子目录下的所有文件的用户组改为mengxin
```
chgrp -R mengxin /usr/meng
```
更改文件ah的组群所有者为newuser
```
[root@rhel ~]# chgrp newuser ah
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

@ -1,79 +1,79 @@
chkconfig
===
检查或设置系统的各种服务
## 补充说明
**chkconfig命令** 检查、设置系统的各种服务。这是Red Hat公司遵循GPL规则所开发的程序它可查询操作系统在每一个执行等级中会执行哪些系统服务其中包括各类常驻服务。谨记chkconfig不是立即自动禁止或激活一个服务它只是简单的改变了符号连接。
### 语法
```bash
chkconfig(选项)
```
### 选项
```bash
--add增加所指定的系统服务让chkconfig指令得以管理它并同时在系统启动的叙述文件内增加相关数据
--del删除所指定的系统服务不再由chkconfig指令管理并同时在系统启动的叙述文件内删除相关数据
--level<等级代号>:指定读系统服务要在哪一个执行等级中开启或关毕。
```
缺省的运行级RHS用到的级别如下
* 0关机
* 1单用户模式
* 2无网络支持的多用户模式
* 3有网络支持的多用户模式
* 4保留未使用
* 5有网络支持有X-Window支持的多用户模式
* 6重新引导系统即重启
对各个运行级的详细解释:
* 0 为停机,机器关闭。
* 1 为单用户模式就像Win9x下的安全模式类似。
* 2 为多用户模式但是没有NFS支持。
* 3 为完整的多用户模式,是标准的运行级。
* 4 一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本 电脑的电池用尽时,可以切换到这个模式来做一些设置。
* 5 就是X11进到X Window系统了。
* 6 为重启运行init 6机器就会重启。
需要说明的是level选项可以指定要查看的运行级而不一定是当前运行级。对于每个运行级只能有一个启动脚本或者停止脚本。当切换运行级时init不会重新启动已经启动的服务也不会再次去停止已经停止的服务。
运行级文件:
每个被chkconfig管理的服务需要在对应的init.d下的脚本加上两行或者更多行的注释。第一行告诉chkconfig缺省启动的运行级以及启动和停止的优先级。如果某服务缺省不在任何运行级启动那么使用`-`代替运行级。第二行对服务进行描述,可以用`\`跨行注释。
例如random.init包含三行
```bash
# chkconfig: 2345 20 80
# description: Saves and restores system entropy pool for \
# higher quality random number generation.
```
### 实例
```bash
chkconfig --list #列出所有的系统服务。
chkconfig --add httpd #增加httpd服务。
chkconfig --del httpd #删除httpd服务。
chkconfig --level httpd 2345 on #设置httpd在运行级别为2、3、4、5的情况下都是on开启的状态。
chkconfig --list # 列出系统所有的服务启动情况。
chkconfig --list mysqld # 列出mysqld服务设置情况。
chkconfig --level 35 mysqld on # 设定mysqld在等级3和5为开机运行服务--level 35表示操作只在等级3和5执行on表示启动off表示关闭。
chkconfig mysqld on # 设定mysqld在各等级为on“各等级”包括2、3、4、5等级。
chkconfig level redis 2345 on # 把redis在运行级别为2、3、4、5的情况下都是on开启的状态。
```
如何增加一个服务:
1. 服务脚本必须存放在`/etc/ini.d/`目录下;
2. `chkconfig --add servicename`在chkconfig工具服务列表中增加此服务此时服务会被在`/etc/rc.d/rcN.d`中赋予K/S入口了
3. `chkconfig --level 35 mysqld on`修改服务的默认启动等级。
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->
chkconfig
===
检查或设置系统的各种服务
## 补充说明
**chkconfig命令** 检查、设置系统的各种服务。这是Red Hat公司遵循GPL规则所开发的程序它可查询操作系统在每一个执行等级中会执行哪些系统服务其中包括各类常驻服务。谨记chkconfig不是立即自动禁止或激活一个服务它只是简单的改变了符号连接。
### 语法
```bash
chkconfig(选项)
```
### 选项
```bash
--add增加所指定的系统服务让chkconfig指令得以管理它并同时在系统启动的叙述文件内增加相关数据
--del删除所指定的系统服务不再由chkconfig指令管理并同时在系统启动的叙述文件内删除相关数据
--level<等级代号>:指定读系统服务要在哪一个执行等级中开启或关毕。
```
缺省的运行级RHS用到的级别如下
* 0关机
* 1单用户模式
* 2无网络支持的多用户模式
* 3有网络支持的多用户模式
* 4保留未使用
* 5有网络支持有X-Window支持的多用户模式
* 6重新引导系统即重启
对各个运行级的详细解释:
* 0 为停机,机器关闭。
* 1 为单用户模式就像Win9x下的安全模式类似。
* 2 为多用户模式但是没有NFS支持。
* 3 为完整的多用户模式,是标准的运行级。
* 4 一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本 电脑的电池用尽时,可以切换到这个模式来做一些设置。
* 5 就是X11进到X Window系统了。
* 6 为重启运行init 6机器就会重启。
需要说明的是level选项可以指定要查看的运行级而不一定是当前运行级。对于每个运行级只能有一个启动脚本或者停止脚本。当切换运行级时init不会重新启动已经启动的服务也不会再次去停止已经停止的服务。
运行级文件:
每个被chkconfig管理的服务需要在对应的init.d下的脚本加上两行或者更多行的注释。第一行告诉chkconfig缺省启动的运行级以及启动和停止的优先级。如果某服务缺省不在任何运行级启动那么使用`-`代替运行级。第二行对服务进行描述,可以用`\`跨行注释。
例如random.init包含三行
```bash
# chkconfig: 2345 20 80
# description: Saves and restores system entropy pool for \
# higher quality random number generation.
```
### 实例
```bash
chkconfig --list #列出所有的系统服务。
chkconfig --add httpd #增加httpd服务。
chkconfig --del httpd #删除httpd服务。
chkconfig --level httpd 2345 on #设置httpd在运行级别为2、3、4、5的情况下都是on开启的状态。
chkconfig --list # 列出系统所有的服务启动情况。
chkconfig --list mysqld # 列出mysqld服务设置情况。
chkconfig --level 35 mysqld on # 设定mysqld在等级3和5为开机运行服务--level 35表示操作只在等级3和5执行on表示启动off表示关闭。
chkconfig mysqld on # 设定mysqld在各等级为on“各等级”包括2、3、4、5等级。
chkconfig level redis 2345 on # 把redis在运行级别为2、3、4、5的情况下都是on开启的状态。
```
如何增加一个服务:
1. 服务脚本必须存放在`/etc/ini.d/`目录下;
2. `chkconfig --add servicename`在chkconfig工具服务列表中增加此服务此时服务会被在`/etc/rc.d/rcN.d`中赋予K/S入口了
3. `chkconfig --level 35 mysqld on`修改服务的默认启动等级。
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

@ -1,91 +1,91 @@
chmod
===
用来变更文件或目录的权限
## 补充说明
**chmod命令** 用来变更文件或目录的权限。在UNIX系统家族里文件或目录权限的控制分别以读取、写入、执行3种一般权限来区分另有3种特殊权限可供运用。用户可以使用chmod指令去变更文件与目录的权限设置方式采用文字或数字代号皆可。符号连接的权限无法变更如果用户对符号连接修改权限其改变会作用在被连接的原始文件。
权限范围的表示法如下:
`u` User即文件或目录的拥有者
`g` Group即文件或目录的所属群组
`o` Other除了文件或目录拥有者或所属群组之外其他用户皆属于这个范围
`a` All即全部的用户包含拥有者所属群组以及其他用户
`r` 读取权限数字代号为“4”;
`w` 写入权限数字代号为“2”
`x` 执行或切换权限数字代号为“1”
`-` 不具任何权限数字代号为“0”
`s` 特殊功能说明:变更文件或目录的权限。
### 语法
```
chmod(选项)(参数)
```
### 选项
```bash
u # 操作对象简称用户user文件或目录的所有者。
g # 操作对象简称同组用户group文件或目录所属群组
o # 操作对象简称其它用户others
a # 操作对象简称所有用户all系统默认使用此项
+ # 权限操作符,添加某些权限
- # 权限操作符,取消某些权限
= # 权限操作符,设置文件的权限为给定的权限
r # 权限设定(英文),表示可读权限
w # 权限设定(英文),表示可写权限
x # 权限设定(英文),表示可执行权限
- # 权限设定(英文字符),表示没有权限
X # 权限设定,如果目标文件是可执行文件或目录,可给其设置可执行权限
s # 权限设定设置权限suid和sgid使用权限组合“u+s”设定文件的用户的ID位“g+s”设置组ID位
t # 权限设定,只有目录或文件的所有者才可以删除目录下的文件
-c或——changes # 效果类似“-v”参数但仅回报更改的部分如果文件权限已经改变显示其操作信息
-f或--quiet或——silent # 操作过程中不显示任何错误信息;
-R或——recursive # 递归处理,将指令目录下的所有文件及子目录一并处理;
-v或——verbose # 显示命令运行时的详细执行过程;
--reference=<参考文件或目录> # 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;
<权限范围>+<权限设置> # 开启权限范围的文件或目录的该选项权限设置;
<权限范围>-<权限设置> # 关闭权限范围的文件或目录的该选项权限设置;
<权限范围>=<权限设置> # 指定权限范围的文件或目录的该选项权限设置;
--help # 显示帮助信息
--version # 显示版本信息
```
### 参数
权限模式:指定文件的权限模式;
文件:要改变权限的文件。
### 知识扩展和实例
Linux用 户分为:拥有者、组群(Group)、其他otherLinux系统中预设的情況下系统中所有的帐号与一般身份使用者以及root的相关信 息, 都是记录在`/etc/passwd`文件中。每个人的密码则是记录在`/etc/shadow`文件下。 此外,所有的组群名称记录在`/etc/group`內!
linux文件的用户权限的分析图
!linux文件的用户权限的分析图
rwx rw- r--
r=读取属性  //值4
w=写入属性  //值2
x=执行属性  //值1
```bash
chmod u+x,g+w f01  # 为文件f01设置自己可以执行组员可以写入的权限
chmod u=rwx,g=rw,o=r f01
chmod 764 f01
chmod a+x f01   # 对文件f01的u,g,o都设置可执行属性
```
文件的属主和属组属性设置
```bash
chown user:market f01  # 把文件f01给uesr添加到market组
ll -d f1 查看目录f1的属性
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->
chmod
===
用来变更文件或目录的权限
## 补充说明
**chmod命令** 用来变更文件或目录的权限。在UNIX系统家族里文件或目录权限的控制分别以读取、写入、执行3种一般权限来区分另有3种特殊权限可供运用。用户可以使用chmod指令去变更文件与目录的权限设置方式采用文字或数字代号皆可。符号连接的权限无法变更如果用户对符号连接修改权限其改变会作用在被连接的原始文件。
权限范围的表示法如下:
`u` User即文件或目录的拥有者
`g` Group即文件或目录的所属群组
`o` Other除了文件或目录拥有者或所属群组之外其他用户皆属于这个范围
`a` All即全部的用户包含拥有者所属群组以及其他用户
`r` 读取权限数字代号为“4”;
`w` 写入权限数字代号为“2”
`x` 执行或切换权限数字代号为“1”
`-` 不具任何权限数字代号为“0”
`s` 特殊功能说明:变更文件或目录的权限。
### 语法
```
chmod(选项)(参数)
```
### 选项
```bash
u # 操作对象简称用户user文件或目录的所有者。
g # 操作对象简称同组用户group文件或目录所属群组
o # 操作对象简称其它用户others
a # 操作对象简称所有用户all系统默认使用此项
+ # 权限操作符,添加某些权限
- # 权限操作符,取消某些权限
= # 权限操作符,设置文件的权限为给定的权限
r # 权限设定(英文),表示可读权限
w # 权限设定(英文),表示可写权限
x # 权限设定(英文),表示可执行权限
- # 权限设定(英文字符),表示没有权限
X # 权限设定,如果目标文件是可执行文件或目录,可给其设置可执行权限
s # 权限设定设置权限suid和sgid使用权限组合“u+s”设定文件的用户的ID位“g+s”设置组ID位
t # 权限设定,只有目录或文件的所有者才可以删除目录下的文件
-c或——changes # 效果类似“-v”参数但仅回报更改的部分如果文件权限已经改变显示其操作信息
-f或--quiet或——silent # 操作过程中不显示任何错误信息;
-R或——recursive # 递归处理,将指令目录下的所有文件及子目录一并处理;
-v或——verbose # 显示命令运行时的详细执行过程;
--reference=<参考文件或目录> # 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;
<权限范围>+<权限设置> # 开启权限范围的文件或目录的该选项权限设置;
<权限范围>-<权限设置> # 关闭权限范围的文件或目录的该选项权限设置;
<权限范围>=<权限设置> # 指定权限范围的文件或目录的该选项权限设置;
--help # 显示帮助信息
--version # 显示版本信息
```
### 参数
权限模式:指定文件的权限模式;
文件:要改变权限的文件。
### 知识扩展和实例
Linux用 户分为:拥有者、组群(Group)、其他otherLinux系统中预设的情況下系统中所有的帐号与一般身份使用者以及root的相关信 息, 都是记录在`/etc/passwd`文件中。每个人的密码则是记录在`/etc/shadow`文件下。 此外,所有的组群名称记录在`/etc/group`內!
linux文件的用户权限的分析图
!linux文件的用户权限的分析图
rwx rw- r--
r=读取属性  //值4
w=写入属性  //值2
x=执行属性  //值1
```bash
chmod u+x,g+w f01  # 为文件f01设置自己可以执行组员可以写入的权限
chmod u=rwx,g=rw,o=r f01
chmod 764 f01
chmod a+x f01   # 对文件f01的u,g,o都设置可执行属性
```
文件的属主和属组属性设置
```bash
chown user:market f01  # 把文件f01给uesr添加到market组
ll -d f1 查看目录f1的属性
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

@ -1,6 +1,6 @@
chown
===
用来变更文件或目录的拥有者或所属群组
## 补充说明

@ -1,6 +1,6 @@
clear
===
清除当前屏幕终端上的任何信息
## 补充说明

@ -1,152 +1,152 @@
cp
===
将源文件或目录复制到目标文件或目录中
## 补充说明
**cp命令** 用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件当一次复制多个文件时目标文件参数必须是一个已经存在的目录否则将出现错误。
### 语法
```
cp(选项)(参数)
```
### 选项
```
用法cp [选项]... [-T] 源文件 目标文件
 cp [选项]... 源文件... 目录
 cp [选项]... -t 目录 源文件...
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
必选参数对长短选项同时适用。
-a, --archive 等于-dR --preserve=all
--attributes-only 仅复制属性而不复制数据 --backup[=CONTROL 为每个已存在的目标文件创建备份
-b 类似--backup 但不接受参数
--copy-contents 在递归处理是复制特殊文件内容
-d 等于--no-dereference --preserve=links,当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f, --force 强行复制文件或目录,不论目标文件或目录是否已存在强行复制文件或目录,不论目标文件或目录是否已存在
-i, --interactive 覆盖既有文件之前先询问用户
-H follow command-line symbolic links in SOURCE
-l, --link 对源文件建立硬连接,而非复制文件
-L, --dereference always follow symbolic links in SOURCE
-n, --no-clobber 不要覆盖已存在的文件(使前面的 -i 选项失效)
-P, --no-dereference 不跟随源文件中的符号链接
-p 等于--preserve=模式,所有权,时间戳
--preserve[=属性列表 保持指定的属性(默认:模式,所有权,时间戳),如 果
可能保持附加属性环境、链接、xattr 等
--sno-preserve=属性列表 不保留指定的文件属性
--parents 复制前在目标目录创建来源文件路径中的所有目录
-R, -r, --recursive 递归复制目录及其子目录内的所有内容
--reflink[=WHEN] 控制克隆/CoW 副本。请查看下面的内如。
--remove-destination 尝试打开目标文件前先删除已存在的目的地
文件 (相对于 --force 选项)
--sparse=WHEN 控制创建稀疏文件的方式
--strip-trailing-slashes 删除参数中所有源文件/目录末端的斜杠
-s, --symbolic-link 只创建符号链接而不复制文件
-S, --suffix=后缀 自行指定备份文件的后缀
-t, --target-directory=目录 将所有参数指定的源文件/目录
复制至目标目录
-T, --no-target-directory 将目标目录视作普通文件
-u, --update 只在源文件比目标文件新,或目标文件
不存在时才进行复制
-v, --verbose 显示详细的进行步骤
-x, --one-file-system 不跨越文件系统进行操作
-Z set SELinux security context of destination
file to default type
--context[=CTX] like -Z, or if CTX is specified then set the
SELinux or SMACK security context to CTX
--help 显示此帮助信息并退出
--version 显示版本信息并退出
默认情况下,源文件的稀疏性仅仅通过简单的方法判断,对应的目标文件目标文件也
被为稀疏。这是因为默认情况下使用了--sparse=auto 参数。如果明确使用
--sparse=always 参数则不论源文件是否包含足够长的0 序列也将目标文件创文
建为稀疏件。
使用--sparse=never 参数禁止创建稀疏文件。
当指定了--reflink[=always] 参数时执行轻量化的复制,即只在数据块被修改的
情况下才复制。如果复制失败或者同时指定了--reflink=auto则返回标准复制模式。
The backup suffix is '~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.
The version control method may be selected via the --backup option or through
the VERSION_CONTROL environment variable. Here are the values:
none, off 不进行备份(即使使用了--backup 选项)
numbered, t 备份文件加上数字进行排序
existing, nil 若有数字的备份文件已经存在则使用数字,否则使用普通方式备份
simple, never 永远使用普通方式备份
有一个特别情况:如果同时指定--force 和--backup 选项,而源文件和目标文件
是同一个已存在的一般文件的话cp 会将源文件备份。
```
### 参数
* 源文件制定源文件列表。默认情况下cp命令不能复制目录如果要复制目录则必须使用`-R`选项;
* 目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。
### 实例
下面的第一行中是 cp 命令和具体的参数(-r 是“递归”, -u 是“更新”,-v 是“详细”)。接下来的三行显示被复制文件的信息,最后一行显示命令行提示符。这样,只拷贝新的文件到我的存储设备上,我就使用 cp 的“更新”和“详细”选项。
通常来说,参数 `-r` 也可用更详细的风格 `--recursive`。但是以简短的方式,也可以这么连用 `-ruv`
```
cp -r -u -v /usr/men/tmp ~/men/tmp
```
版本备份 `--backup=numbered` 参数意思为“我要做个备份,而且是带编号的连续备份”。所以一个备份就是 1 号,第二个就是 2 号,等等。
```bash
$ cp --force --backup=numbered test1.py test1.py
$ ls
test1.py test1.py.~1~ test1.py.~2~
```
如果把一个文件复制到一个目标文件中,而目标文件已经存在,那么,该目标文件的内容将被破坏。此命令中所有参数既可以是绝对路径名,也可以是相对路径名。通常会用到点`.`或点点`..`的形式。例如,下面的命令将指定文件复制到当前目录下:
```
cp ../mary/homework/assign .
```
所有目标文件指定的目录必须是己经存在的cp命令不能创建目录。如果没有文件复制的权限则系统会显示出错信息。
将文件file复制到目录`/usr/men/tmp`下并改名为file1
```
cp file /usr/men/tmp/file1
```
将目录`/usr/men`下的所有文件及其子目录复制到目录`/usr/zh`中
```
cp -r /usr/men /usr/zh
```
交互式地将目录`/usr/men`中的以m打头的所有.c文件复制到目录`/usr/zh`中
```
cp -i /usr/men m*.c /usr/zh
```
我们在Linux下使用cp命令复制文件时候有时候会需要覆盖一些同名文件覆盖文件的时候都会有提示需要不停的按Y来确定执行覆盖。文件数量不多还好但是要是几百个估计按Y都要吐血了于是折腾来半天总结了一个方法
```
cp aaa/* /bbb
复制目录aaa下所有到/bbb目录下这时如果/bbb目录下有和aaa同名的文件需要按Y来确认并且会略过aaa目录下的子目录。
cp -r aaa/* /bbb
这次依然需要按Y来确认操作但是没有忽略子目录。
cp -r -a aaa/* /bbb
依然需要按Y来确认操作并且把aaa目录以及子目录和文件属性也传递到了/bbb。
\cp -r -a aaa/* /bbb
成功没有提示按Y、传递了目录属性、没有略过目录。
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->
cp
===
将源文件或目录复制到目标文件或目录中
## 补充说明
**cp命令** 用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件当一次复制多个文件时目标文件参数必须是一个已经存在的目录否则将出现错误。
### 语法
```
cp(选项)(参数)
```
### 选项
```
用法cp [选项]... [-T] 源文件 目标文件
 cp [选项]... 源文件... 目录
 cp [选项]... -t 目录 源文件...
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
必选参数对长短选项同时适用。
-a, --archive 等于-dR --preserve=all
--attributes-only 仅复制属性而不复制数据 --backup[=CONTROL 为每个已存在的目标文件创建备份
-b 类似--backup 但不接受参数
--copy-contents 在递归处理是复制特殊文件内容
-d 等于--no-dereference --preserve=links,当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f, --force 强行复制文件或目录,不论目标文件或目录是否已存在强行复制文件或目录,不论目标文件或目录是否已存在
-i, --interactive 覆盖既有文件之前先询问用户
-H follow command-line symbolic links in SOURCE
-l, --link 对源文件建立硬连接,而非复制文件
-L, --dereference always follow symbolic links in SOURCE
-n, --no-clobber 不要覆盖已存在的文件(使前面的 -i 选项失效)
-P, --no-dereference 不跟随源文件中的符号链接
-p 等于--preserve=模式,所有权,时间戳
--preserve[=属性列表 保持指定的属性(默认:模式,所有权,时间戳),如 果
可能保持附加属性环境、链接、xattr 等
--sno-preserve=属性列表 不保留指定的文件属性
--parents 复制前在目标目录创建来源文件路径中的所有目录
-R, -r, --recursive 递归复制目录及其子目录内的所有内容
--reflink[=WHEN] 控制克隆/CoW 副本。请查看下面的内如。
--remove-destination 尝试打开目标文件前先删除已存在的目的地
文件 (相对于 --force 选项)
--sparse=WHEN 控制创建稀疏文件的方式
--strip-trailing-slashes 删除参数中所有源文件/目录末端的斜杠
-s, --symbolic-link 只创建符号链接而不复制文件
-S, --suffix=后缀 自行指定备份文件的后缀
-t, --target-directory=目录 将所有参数指定的源文件/目录
复制至目标目录
-T, --no-target-directory 将目标目录视作普通文件
-u, --update 只在源文件比目标文件新,或目标文件
不存在时才进行复制
-v, --verbose 显示详细的进行步骤
-x, --one-file-system 不跨越文件系统进行操作
-Z set SELinux security context of destination
file to default type
--context[=CTX] like -Z, or if CTX is specified then set the
SELinux or SMACK security context to CTX
--help 显示此帮助信息并退出
--version 显示版本信息并退出
默认情况下,源文件的稀疏性仅仅通过简单的方法判断,对应的目标文件目标文件也
被为稀疏。这是因为默认情况下使用了--sparse=auto 参数。如果明确使用
--sparse=always 参数则不论源文件是否包含足够长的0 序列也将目标文件创文
建为稀疏件。
使用--sparse=never 参数禁止创建稀疏文件。
当指定了--reflink[=always] 参数时执行轻量化的复制,即只在数据块被修改的
情况下才复制。如果复制失败或者同时指定了--reflink=auto则返回标准复制模式。
The backup suffix is '~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.
The version control method may be selected via the --backup option or through
the VERSION_CONTROL environment variable. Here are the values:
none, off 不进行备份(即使使用了--backup 选项)
numbered, t 备份文件加上数字进行排序
existing, nil 若有数字的备份文件已经存在则使用数字,否则使用普通方式备份
simple, never 永远使用普通方式备份
有一个特别情况:如果同时指定--force 和--backup 选项,而源文件和目标文件
是同一个已存在的一般文件的话cp 会将源文件备份。
```
### 参数
* 源文件制定源文件列表。默认情况下cp命令不能复制目录如果要复制目录则必须使用`-R`选项;
* 目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。
### 实例
下面的第一行中是 cp 命令和具体的参数(-r 是“递归”, -u 是“更新”,-v 是“详细”)。接下来的三行显示被复制文件的信息,最后一行显示命令行提示符。这样,只拷贝新的文件到我的存储设备上,我就使用 cp 的“更新”和“详细”选项。
通常来说,参数 `-r` 也可用更详细的风格 `--recursive`。但是以简短的方式,也可以这么连用 `-ruv`
```
cp -r -u -v /usr/men/tmp ~/men/tmp
```
版本备份 `--backup=numbered` 参数意思为“我要做个备份,而且是带编号的连续备份”。所以一个备份就是 1 号,第二个就是 2 号,等等。
```bash
$ cp --force --backup=numbered test1.py test1.py
$ ls
test1.py test1.py.~1~ test1.py.~2~
```
如果把一个文件复制到一个目标文件中,而目标文件已经存在,那么,该目标文件的内容将被破坏。此命令中所有参数既可以是绝对路径名,也可以是相对路径名。通常会用到点`.`或点点`..`的形式。例如,下面的命令将指定文件复制到当前目录下:
```
cp ../mary/homework/assign .
```
所有目标文件指定的目录必须是己经存在的cp命令不能创建目录。如果没有文件复制的权限则系统会显示出错信息。
将文件file复制到目录`/usr/men/tmp`下并改名为file1
```
cp file /usr/men/tmp/file1
```
将目录`/usr/men`下的所有文件及其子目录复制到目录`/usr/zh`中
```
cp -r /usr/men /usr/zh
```
交互式地将目录`/usr/men`中的以m打头的所有.c文件复制到目录`/usr/zh`中
```
cp -i /usr/men m*.c /usr/zh
```
我们在Linux下使用cp命令复制文件时候有时候会需要覆盖一些同名文件覆盖文件的时候都会有提示需要不停的按Y来确定执行覆盖。文件数量不多还好但是要是几百个估计按Y都要吐血了于是折腾来半天总结了一个方法
```
cp aaa/* /bbb
复制目录aaa下所有到/bbb目录下这时如果/bbb目录下有和aaa同名的文件需要按Y来确认并且会略过aaa目录下的子目录。
cp -r aaa/* /bbb
这次依然需要按Y来确认操作但是没有忽略子目录。
cp -r -a aaa/* /bbb
依然需要按Y来确认操作并且把aaa目录以及子目录和文件属性也传递到了/bbb。
\cp -r -a aaa/* /bbb
成功没有提示按Y、传递了目录属性、没有略过目录。
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

@ -1,6 +1,6 @@
cut
===
连接文件并打印到标准输出设备上
## 补充说明

@ -1,170 +1,170 @@
# **date**
## 说明
**date命令** 是显示或设置系统时间与日期。
很多shell脚本里面需要打印不同格式的时间或日期以及要根据时间和日期执行操作。延时通常用于脚本执行过程中提供一段等待的时间。日期可以以多种格式去打印也可以使用命令设置固定的格式。在类UNIX系统中日期被存储为一个整数其大小为自世界标准时间UTC1970年1月1日0时0分0秒起流逝的秒数。
## 语法
用法date [选项]... [+格式]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
## 选项
```sh
必选参数对长短选项同时适用
-d,--date=STRING 用STRING描述时间而不是'NOW'
--debug 注释解析日期,并警告stderr的可疑用法
-f,--file=DATEFILE 和--date相似,输出DATEFILE的每一行
-I[FMT],--iso-8601[=FMT] 以ISO 8601格式输出FMT='date'默认只适用于日期,'hour''minutes''seconds'或'ns'对于指定精度的日期和时间。 示例2006-08-14T023456-0600
-R,--rfc-email 以RFC 5322格式输出例如Mon, 14 Aug 2006 02:34:56 -0600
--rfc-3339=FMT 以RFC 3339格式输出FMT='date''hour''minutes''seconds'或'ns',对于指定精度的日期和时间。 示例: 2006-08-14 02:34:56-06:00
-r,--reference=FILE 显示文件最后的修改时间
-s,--set=STRING 以字符串方式设置时间
-u,--utc,--universal 打印或者设置协调世界时(UTC)
```
## 参数
给定的格式FORMAT 控制着输出,解释序列如下:
```sh
%% 一个文字的%(即%不起到格式化的作用)
%a 当前locale 的星期名缩写(例如: 日,代表星期日)
%A 当前locale 的星期名全称 (如:星期日)
%b 当前locale 的月名缩写 (如:一,代表一月)
%B 当前locale 的月名全称 (如:一月)
%c 当前locale 的日期和时间 (如2005年3月3日
%C 世纪;比如 %Y通常为省略当前年份的后两位
%d 按月计的日期(例如01)
%D 按月计的日期;等于%m/%d/%y
%e 按月计的日期,添加空格,等于%_d
%F 完整日期格式,等价于 %Y-%m-%d
%g ISO-8601 格式年份的最后两位 (参见%G)
%G ISO-8601 格式年份 (参见%V),一般只和 %V 结
%h 等于%b
%H 小时(00-23)
%I 小时(00-12)
%j 按年计的日期(001-366)
%k hour, space padded ( 0..23); same as %_H
%l hour, space padded ( 1..12); same as %_I
%m month (01..12)
%M minute (00..59)
%n a newline
%N nanoseconds (000000000..999999999)
%p locale's equivalent of either AM or PM; bla
%P like %p, but lower case
%q quarter of year (1..4)
%r locale's 12-hour clock time (e.g., 11:11:04
%R 24-hour hour and minute; same as %H:%M
%s seconds since 1970-01-01 00:00:00 UTC
%S 秒(00-60)
%t 输出制表符 Tab
%T 时间,等于%H:%M:%S
%u 星期1 代表星期一
%U 一年中的第几周,以周日为每星期第一天(00-53
%V ISO-8601 格式规范下的一年中第几周,以周一
%w 一星期中的第几日(0-6)0 代表周一
%W 一年中的第几周,以周一为每星期第一天(00-53
%x 当前locale 下的日期描述 (如12/31/99)
%X 当前locale 下的时间描述 (如23:13:48)
%y 年份最后两位数位 (00-99)
%Y 年份
%z +hhmm 数字时区(例如,-0400)
%:z +hh:mm 数字时区(例如,-04:00)
%::z +hh:mm:ss 数字时区(例如,-04:00:00)
%:::z 数字时区带有必要的精度 (例如,-04
%Z 按字母表排序的时区缩写 (例如EDT)
默认情况下日期的数字区域以0填充
以下可选标志可能跟在''后面:
- 连字符,不要填充字段
_ 下划线,用空格填充
0 用0填充
^ 如果可能的话,使用大写字母
# 尽可能使用相反的情况
在任何标记之后还允许一个可选的域宽度指定,它是一个十进制数字。
作为一个可选的修饰声明它可以是E在可能的情况下使用本地环境关联的
表示方式或者是O在可能的情况下使用本地环境关联的数字符号。
例如:
将数字从纪元(1970-01-01)UTC开始转换为日期
date --date='@2147483647'
显示美国西海岸的时间使用tzselect1查找TZ
TZ='America/Los_Angeles' date
显示下周五上午9点在美国西海岸的当地时间
date --date='TZ="America/Los_Angeles" 09:00 next Fri'
```
## 实例
```sh
# 格式化输出并用-符号连接日期:
date +"%Y-%m-%d"
2009-12-07
# 输出昨天日期:
date -d "1 day ago" +"%Y-%m-%d"或date -d "yesterday" +"%Y-%m-%d"或date -d "-1 day" +"%Y-%m-%d"
2012-11-19
# 2秒后输出
date -d "2 second" +"%Y-%m-%d %H:%M.%S"
2012-11-20 14:21.31
# 传说中的 1234567890 秒:
date -d "1970-01-01 1234567890 seconds" +"%Y-%m-%d %H:%m:%S"
2009-02-13 23:02:30
# 普通转格式:
date -d "2009-12-12" +"%Y/%m/%d %H:%M.%S"
2009/12/12 00:00.00
# apache格式转换
date -d "Dec 5, 2009 12:00:37 AM" +"%Y-%m-%d %H:%M.%S"
2009-12-05 00:00.37
# 格式转换后时间游走:
date -d "Dec 5, 2009 12:00:37 AM 2 year ago" +"%Y-%m-%d %H:%M.%S"
2007-12-05 00:00.37
# 加减操作:
date +%Y%m%d //显示前天年月日
date -d "+1 day" +%Y%m%d //显示前一天的日期
date -d "-1 day" +%Y%m%d //显示后一天的日期
date -d "-1 month" +%Y%m%d //显示上一月的日期
date -d "+1 month" +%Y%m%d //显示下一月的日期
date -d "-1 year" +%Y%m%d //显示前一年的日期
date -d "+1 year" +%Y%m%d //显示下一年的日期
# 设定时间:
date -s //设置当前时间只有root权限才能设置其他只能查看
date -s 20120523 //设置成20120523这样会把具体时间设置成空00:00:00
date -s 01:01:01 //设置具体时间,不会对日期做更改
date -s "01:01:01 2012-05-23" //这样可以设置全部时间
date -s "01:01:01 20120523" //这样可以设置全部时间
date -s "2012-05-23 01:01:01" //这样可以设置全部时间
date -s "20120523 01:01:01" //这样可以设置全部时间
# 有时需要检查一组命令花费的时间,举例:
#!/bin/bash
start=$(date +%s)
nmap man.linuxde.net &> /dev/null
end=$(date +%s)
difference=$(( end - start ))
echo $difference seconds.
```
# **date**
## 说明
**date命令** 是显示或设置系统时间与日期。
很多shell脚本里面需要打印不同格式的时间或日期以及要根据时间和日期执行操作。延时通常用于脚本执行过程中提供一段等待的时间。日期可以以多种格式去打印也可以使用命令设置固定的格式。在类UNIX系统中日期被存储为一个整数其大小为自世界标准时间UTC1970年1月1日0时0分0秒起流逝的秒数。
## 语法
用法date [选项]... [+格式]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
## 选项
```sh
必选参数对长短选项同时适用
-d,--date=STRING 用STRING描述时间而不是'NOW'
--debug 注释解析日期,并警告stderr的可疑用法
-f,--file=DATEFILE 和--date相似,输出DATEFILE的每一行
-I[FMT],--iso-8601[=FMT] 以ISO 8601格式输出FMT='date'默认只适用于日期,'hour''minutes''seconds'或'ns'对于指定精度的日期和时间。 示例2006-08-14T023456-0600
-R,--rfc-email 以RFC 5322格式输出例如Mon, 14 Aug 2006 02:34:56 -0600
--rfc-3339=FMT 以RFC 3339格式输出FMT='date''hour''minutes''seconds'或'ns',对于指定精度的日期和时间。 示例: 2006-08-14 02:34:56-06:00
-r,--reference=FILE 显示文件最后的修改时间
-s,--set=STRING 以字符串方式设置时间
-u,--utc,--universal 打印或者设置协调世界时(UTC)
```
## 参数
给定的格式FORMAT 控制着输出,解释序列如下:
```sh
%% 一个文字的%(即%不起到格式化的作用)
%a 当前locale 的星期名缩写(例如: 日,代表星期日)
%A 当前locale 的星期名全称 (如:星期日)
%b 当前locale 的月名缩写 (如:一,代表一月)
%B 当前locale 的月名全称 (如:一月)
%c 当前locale 的日期和时间 (如2005年3月3日
%C 世纪;比如 %Y通常为省略当前年份的后两位
%d 按月计的日期(例如01)
%D 按月计的日期;等于%m/%d/%y
%e 按月计的日期,添加空格,等于%_d
%F 完整日期格式,等价于 %Y-%m-%d
%g ISO-8601 格式年份的最后两位 (参见%G)
%G ISO-8601 格式年份 (参见%V),一般只和 %V 结
%h 等于%b
%H 小时(00-23)
%I 小时(00-12)
%j 按年计的日期(001-366)
%k hour, space padded ( 0..23); same as %_H
%l hour, space padded ( 1..12); same as %_I
%m month (01..12)
%M minute (00..59)
%n a newline
%N nanoseconds (000000000..999999999)
%p locale's equivalent of either AM or PM; bla
%P like %p, but lower case
%q quarter of year (1..4)
%r locale's 12-hour clock time (e.g., 11:11:04
%R 24-hour hour and minute; same as %H:%M
%s seconds since 1970-01-01 00:00:00 UTC
%S 秒(00-60)
%t 输出制表符 Tab
%T 时间,等于%H:%M:%S
%u 星期1 代表星期一
%U 一年中的第几周,以周日为每星期第一天(00-53
%V ISO-8601 格式规范下的一年中第几周,以周一
%w 一星期中的第几日(0-6)0 代表周一
%W 一年中的第几周,以周一为每星期第一天(00-53
%x 当前locale 下的日期描述 (如12/31/99)
%X 当前locale 下的时间描述 (如23:13:48)
%y 年份最后两位数位 (00-99)
%Y 年份
%z +hhmm 数字时区(例如,-0400)
%:z +hh:mm 数字时区(例如,-04:00)
%::z +hh:mm:ss 数字时区(例如,-04:00:00)
%:::z 数字时区带有必要的精度 (例如,-04
%Z 按字母表排序的时区缩写 (例如EDT)
默认情况下日期的数字区域以0填充
以下可选标志可能跟在''后面:
- 连字符,不要填充字段
_ 下划线,用空格填充
0 用0填充
^ 如果可能的话,使用大写字母
# 尽可能使用相反的情况
在任何标记之后还允许一个可选的域宽度指定,它是一个十进制数字。
作为一个可选的修饰声明它可以是E在可能的情况下使用本地环境关联的
表示方式或者是O在可能的情况下使用本地环境关联的数字符号。
例如:
将数字从纪元(1970-01-01)UTC开始转换为日期
date --date='@2147483647'
显示美国西海岸的时间使用tzselect1查找TZ
TZ='America/Los_Angeles' date
显示下周五上午9点在美国西海岸的当地时间
date --date='TZ="America/Los_Angeles" 09:00 next Fri'
```
## 实例
```sh
# 格式化输出并用-符号连接日期:
date +"%Y-%m-%d"
2009-12-07
# 输出昨天日期:
date -d "1 day ago" +"%Y-%m-%d"或date -d "yesterday" +"%Y-%m-%d"或date -d "-1 day" +"%Y-%m-%d"
2012-11-19
# 2秒后输出
date -d "2 second" +"%Y-%m-%d %H:%M.%S"
2012-11-20 14:21.31
# 传说中的 1234567890 秒:
date -d "1970-01-01 1234567890 seconds" +"%Y-%m-%d %H:%m:%S"
2009-02-13 23:02:30
# 普通转格式:
date -d "2009-12-12" +"%Y/%m/%d %H:%M.%S"
2009/12/12 00:00.00
# apache格式转换
date -d "Dec 5, 2009 12:00:37 AM" +"%Y-%m-%d %H:%M.%S"
2009-12-05 00:00.37
# 格式转换后时间游走:
date -d "Dec 5, 2009 12:00:37 AM 2 year ago" +"%Y-%m-%d %H:%M.%S"
2007-12-05 00:00.37
# 加减操作:
date +%Y%m%d //显示前天年月日
date -d "+1 day" +%Y%m%d //显示前一天的日期
date -d "-1 day" +%Y%m%d //显示后一天的日期
date -d "-1 month" +%Y%m%d //显示上一月的日期
date -d "+1 month" +%Y%m%d //显示下一月的日期
date -d "-1 year" +%Y%m%d //显示前一年的日期
date -d "+1 year" +%Y%m%d //显示下一年的日期
# 设定时间:
date -s //设置当前时间只有root权限才能设置其他只能查看
date -s 20120523 //设置成20120523这样会把具体时间设置成空00:00:00
date -s 01:01:01 //设置具体时间,不会对日期做更改
date -s "01:01:01 2012-05-23" //这样可以设置全部时间
date -s "01:01:01 20120523" //这样可以设置全部时间
date -s "2012-05-23 01:01:01" //这样可以设置全部时间
date -s "20120523 01:01:01" //这样可以设置全部时间
# 有时需要检查一组命令花费的时间,举例:
#!/bin/bash
start=$(date +%s)
nmap man.linuxde.net &> /dev/null
end=$(date +%s)
difference=$(( end - start ))
echo $difference seconds.
```

@ -1,6 +1,6 @@
df
===
显示磁盘的相关信息
## 补充说明

@ -1,6 +1,6 @@
dirname
===
去除文件名中的非目录部分
## 补充说明

@ -1,53 +1,53 @@
dmesg
===
显示Linux系统启动信息
## 补充说明
**dmesg命令** 被用于检查和控制内核的环形缓冲区。kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息可利用dmesg来查看。开机信息保存在`/var/log/dmesg`文件里。
### 语法
```
dmesg(选项)
```
### 选项
```
-c显示信息后清除ring buffer中的内容
-s<缓冲区大小>预设置为8196刚好等于ring buffer的大小
-n设置记录信息的层级。
```
### 实例
```
[root@localhost ~]# dmesg | head
Linux version 2.6.18-348.6.1.el5 (mockbuild@builder17.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-54)) #1 SMP Tue May 21 15:34:22 EDT 2013
BIOS-provided physical RAM map:
BIOS-e820: 0000000000010000 - 000000000009f400 (usable)
BIOS-e820: 000000000009f400 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 000000007f590000 (usable)
BIOS-e820: 000000007f590000 - 000000007f5e3000 (ACPI NVS)
BIOS-e820: 000000007f5e3000 - 000000007f5f0000 (ACPI data)
BIOS-e820: 000000007f5f0000 - 000000007f600000 (reserved)
BIOS-e820: 00000000e0000000 - 00000000e8000000 (reserved)
```
查看硬盘基础信息
```bash
dmesg | grep sda
[ 2.442555] sd 0:0:0:0: [sda] 488281250 512-byte logical blocks: (250 GB/232 GiB)
[ 2.442590] sd 0:0:0:0: [sda] Write Protect is off
[ 2.442592] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[ 2.442607] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 2.447533] sda: sda1
[ 2.448503] sd 0:0:0:0: [sda] Attached SCSI disk
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->
dmesg
===
显示Linux系统启动信息
## 补充说明
**dmesg命令** 被用于检查和控制内核的环形缓冲区。kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息可利用dmesg来查看。开机信息保存在`/var/log/dmesg`文件里。
### 语法
```
dmesg(选项)
```
### 选项
```
-c显示信息后清除ring buffer中的内容
-s<缓冲区大小>预设置为8196刚好等于ring buffer的大小
-n设置记录信息的层级。
```
### 实例
```
[root@localhost ~]# dmesg | head
Linux version 2.6.18-348.6.1.el5 (mockbuild@builder17.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-54)) #1 SMP Tue May 21 15:34:22 EDT 2013
BIOS-provided physical RAM map:
BIOS-e820: 0000000000010000 - 000000000009f400 (usable)
BIOS-e820: 000000000009f400 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 000000007f590000 (usable)
BIOS-e820: 000000007f590000 - 000000007f5e3000 (ACPI NVS)
BIOS-e820: 000000007f5e3000 - 000000007f5f0000 (ACPI data)
BIOS-e820: 000000007f5f0000 - 000000007f600000 (reserved)
BIOS-e820: 00000000e0000000 - 00000000e8000000 (reserved)
```
查看硬盘基础信息
```bash
dmesg | grep sda
[ 2.442555] sd 0:0:0:0: [sda] 488281250 512-byte logical blocks: (250 GB/232 GiB)
[ 2.442590] sd 0:0:0:0: [sda] Write Protect is off
[ 2.442592] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[ 2.442607] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 2.447533] sda: sda1
[ 2.448503] sd 0:0:0:0: [sda] Attached SCSI disk
```
<!-- Linux命令行搜索引擎https://jaywcjlove.github.io/linux-command/ -->

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save