微软内部最受欢迎的编辑器是什么么?还在用Ctrl+f勾选”正则表达式”进行review替换么? 你真的out了 还在用代码提示来安慰自己的么?你的智商真的下降得不行了。。 什么是程序员最后的武器 vc6?vim?emacs?editplus?eclipse?
笑而不语 没有最好 只有最强
VIM基本命令
- VI常用实用命令学习
- 目标:[通过此练习学习通够利用VI编辑器,对系统配置文件进行修改或编写简单的脚本程序]
-
- 命令行或命令模式:在最后一行没有显示–INSERT–或–REPLACE–字样的时候。
-
- #: 是指常用的命令
-
- 一般模式:光标移动
- h 或 -> 光标向左移动一个字符
- ————————————————————
- l 或 <- 光标向右移动一个字符
- ————————————————————
- k 或 向上方向键 光标向上移动一个字符
- ————————————————————
- j 或 向下方向键 光标向下移动一个字符
- ————————————————————
- Ctrl+f # 屏幕向前翻动一页
- ——————————————————–
- Ctrl+b # 屏幕向后翻动一页
- ——————————————————–
- Ctrl+d 屏幕向前翻动半页
- ——————————————————–
- Ctrl+u 屏幕向后翻动半页
- ——————————————————–
- + 光标移动到非空格符的下一列
- ——————————————————————
- – 光标移动到非空格符的上一列
- ——————————————————————-
- n 按下数字键后再按空格键,光标会向右移动这一行的n个字符。
- (例如20,则光标会向右移动20个字符)
- ———————————————————————————————-
- 0 # (这是数字0)移动到这一行的第一个字符处
- —————————————————————————–
- $ # 移动到这一行的最后一个字符处
- ——————————————————————–
- H 光标移动到这个屏幕最上方的那一行
- ————————————————————————
- M 光标移动到这个屏幕中央的那一行
- ———————————————————————-
- L 光标移动到这个屏幕最下方的那一行
- ————————————————————————
- G # 移动到这个文件的最后一行
- —————————————————————-
- nG 移动到这个文件的第n行。
- 例如20G,则会移动到这个文件的第20行(可配合:set nu)
- ———————————————————————————————-
- n # 光标向下移动n行
- ——————————————————-
-
-
- 一般模式:查找与替换
-
- /word # 在光标之后查找一个名为word的字符串
- ————————————————————————–
- ?word 在光标之前查找一个名为word的字符串
- ————————————————————————–
- :n1,n2s/word1/word2/g # 在第n1与n2行之间查找word1这个字符串,并将该字符串替换为word2
- —————————————————————————————————-
- :1,$s/word1/word2/g # 从第一行到最后一行查找word1字符串,并将该字符串替换为word2
- ————————————————————————————————–
- :1,$s/word1/word2/gc # 从第一行到最后一行查找word1字符串,并将该字符串替换为word2,
- 且在替换前显示提示符让用户确认(confirm)
- —————————————————————————————————
-
-
- 一般模式:删除、复制与粘贴
-
- x,X # x为向后删除一个字符,X为向前删除一个字符
- ——————————————————————————–
- nx 向后删除n个字符
- ——————————————————-
- dd # 删除光标所在的那一整行
- ————————————————————–
- ndd # 删除光标所在列的向下n列,例如,20dd则是删除20列
- —————————————————————————————
- d1G 删除光标所在行到第一行的所有数据
- ————————————————————————
- dG 删除光标所在行到最后一行的所有数据
- ————————————————————————–
- yy # 复制光标所在行
- ——————————————————
- nyy # 复制光标所在列的向下n列,例如,20yy则是复制20列
- —————————————————————————————
- y1G 复制光标所在列到第一列的所有数据
- ————————————————————————
- yG 复制光标所在列到最后一列的所有数据
- ————————————————————————–
- p,P # p为复制的数据粘贴在光标下一行,P为粘贴在光标上一行
- ——————————————————————————————
- J 将光标所在列与下一列的数据结合成一行
- —————————————————————————–
- u # 恢复前一个动作
- ——————————————————
-
-
-
- 编辑模式:
-
- i,I # 插入:在当前光标所在处插入输入的文字,已存在的字符会向后退
- ————————————————————————————————–
- a,A # 添加:由当前光标所在处的下一个字符开始输入,已存在的字符会向后退
- ——————————————————————————————————-
- o,O # 插入新的一行:从光标所在处的下一行行首开始输入字符
- ——————————————————————————————
- r,R # 替换:r会替换光标所指的那一个字符;R会一直替换光标所指的文字,直到按下Esc为止
- ———————————————————————————————————————
- Esc # 退出编辑模式,回到一般模式
- ——————————————————————
-
-
- 命令行模式:
-
- :w # 将编辑的数据写入硬盘文件中
- ——————————————————————
- :w! 若文件属性为只读,强制写入该文件
- ————————————————————————
- :q # 退出vi
- ———————————————-
- q! 若曾修改过文件,又不想保存,使用!为强制退出不保存文件
- ———————————————————————————————
- :wq # 保存后退出,若为:wq!,则为强制保存后退出
- ———————————————————————————
- :w[filename] 将编辑数据保存为另一个文件(类似另存为新文档):x也是保存
- ————————————————————————————
- :r[filename] 在编辑的数据中,读入另一个文件的数据,亦即将filename这个文件内容加到光标所在行的后面
- —————————————————————————————————————————-
- :set nu 显示行号,设定之后,会在每一行的前面显示该行的行号
- ——————————————————————————————
- :set nonu 与set nu相反,为取消行号
- —————————————————————-
- n1,n2w[filename] 将n1到n2的内容保存为filename这个文件
- —————————————————————————-
-
- 练习:
- 1.请在/root目录下建立一个名为supxmen的目录;
- 2.进入supxmen目录中;
- 3.将/etc/man.config复制到本目录下;
- 4.使用vi开启本目录下的man.config文件;
- 5.在vi中设定行号.
- 6.移动到第63行,向右移动29个字符,请问您在双引号中看到的是什么目录?
- 7.移到第一行,并且向下搜寻teTeX字符串,请问它在第几行?
- 8.接下来,将50到100行之间的man改为MAN,要求是逐个查找修改,请问如何输入指令?
- 9.修改完后,突然反悔,要全部复原,有哪些方法?
- 10.复制51到60行这10行的内容,并且粘贴到最后一行之后;
- 11.删除11到30行之间的20行内容;
- 12.将这个文件另存为文件名为man.supxmen.config的文件;
- 13.转到第29行,并且删除15个字符;
- 14.请问目前的文件有多少行,多少字符?
- 15.保存后退出.
- 答案是:134 3846
MySQL一分钟 掌握 只需要 1分钟 超过一分钟 对不起 你更适合用mssql 傻瓜配置管理器!
- 格式:mysql -h 远程主机地址 -u 用户名 -p 回车
- 输入密码进入:
-
- mysql -u root -p 回车
- Enter password: ,输入密码就可以进入
- mysql> 进入了
- 退出命令:>exit 或者ctrl+D
-
- 二,MySQL管理与授权
- 1.修改密码:
- 格式:mysqladmin -u 用户名 -p 旧密码 password 新密码
-
- 2.增加新用户:
- >grant create,select,update….(授予相关的操作权限)
- ->on 数据库.*
- -> to 用户名@登录主机 identified by ‘密码’
-
- 操作实例:
-
- 给root用户添加密码:
- # mysqladmin -u root password linuxidc
- 因为开始root没有密码,所以-p旧密码一项可以省略.
- 登陆测试:
- # mysql -u root -p 回车
- 输入密码,成功登陆.
-
-
- 将原有的mysql管理登陆密码linuxidc改为linuxidc.net.
- # mysqladmin -u root -p linuxidc password ‘linuxidc.net’
-
- 创建数据库添加用户并授予相应的权限:
- mysql> create database phpbb;
- Query OK, 1 row affected (0.02 sec)
-
- mysql> use phpbb;
- Database changed
- mysql> grant create,select,update,insert,delete,alter
- -> on phpbb.*
- -> to phpbbroot@localhost identified by ‘linuxidc’;
- Query OK, 0 rows affected (0.00 sec)
-
- 授予所有的权限:
- >grant all privileges
- >on bbs.*
- >to bbsroot@localhost identified by ‘linuxidc’
-
- 回收权限:
- revoke create,select,update,insert,delete,alter
- on phpbb.*
- from phpbbroot@localhost identified by ‘linuxidc’;
-
- 完全将phpbbroot这个用户删除:
- >use mysql
- >delete from user
- where user=‘phpbbroot’ and host=‘localhost’;
- >flush privileges; 刷新数据库
-
- 三,数据库简单操作
- 1.显示数据库列表:
- >show databases;
- mysql
- test
- 2.使其成为当前操作数据库
- >use mysql; 打开数据库.
- >show tables; 显示mysql数据库中的数据表.
- 3.显示数据表的表结构:
- >describe 表名;
- >describe user; 显示user表的表结构:
- 4.创建数据库,建表
- >create database 数据库名;
- >use 数据库名;
- >create table 表名(字段设定列表)
- 5.删除数据库,册除表
- >drop database 数据库名;
- >drop table 表名;
- 6.显示表中的记录;
- select * from 表名;
- 7.修改数据库结构:
- 增加字段:
- alter table dbname add column <字段名><字段选项>
- 修改字段:
- alter table dbname change <旧字段名> <新字段名><选项>
- 删除字段:
- alter table dbname drop column <字段名>
-
- 实例操作:
- >create database office;
- >use office;
- mysql> create table personal(
- -> member_no char(5) not null,
- -> name char(,
- -> birthday date,
- -> exam_score tinyint,
- -> primary key(member_no)
- -> );
- Query OK, 0 rows affected (0.01 sec)
- >desc personal; 显示表结构:
- +————+————+——+—–+———+——-+
- | Field | Type | Null | Key | Default | Extra |
- +————+————+——+—–+———+——-+
- | member_no | char(5) | | PRI | | |
- | name | char( | YES | | NULL | |
- | birthday | date | YES | | NULL | |
- | exam_score | tinyint(4) | YES | | NULL | |
- +————+————+——+—–+———+——-+
- 4 rows in set (0.00 sec)
-
- insert into personal values (‘001’,‘netseek’,‘1983-03-15’,’95’);
- insert into personal values (‘002’,‘heihei’,‘1982-02-24’,’90’);
- insert into personal values (‘003’,‘gogo’,‘1985-05-21’,’85’);
- insert into personal values (‘004’,‘haha’,‘1984-02-25’,’84’);
- insert into personal values (‘005’,‘linlin’,‘1982-04-28’,’85’);
- insert into personal values (‘006’,‘xinxin’,‘1985-03-15’,’75’);
-
- mysql> select * from personal;
- +———–+———+————+————+
- | member_no | name | birthday | exam_score |
- +———–+———+————+————+
- | 001 | netseek | 1983–03–15 | 95 |
- | 002 | heihei | 1982–02–24 | 90 |
- | 003 | gogo | 1985–05–21 | 85 |
- | 004 | haha | 1984–02–25 | 84 |
- | 005 | linlin | 1982–04–28 | 85 |
- | 006 | xinxin | 1985–03–15 | 75 |
- +———–+———+————+————+
-
- 修改数据库表:
- 要求: 在birthday这后增加一个为height的字段,数据类型为tinyint.
- 将字段exam_score 改名为scores,数据类型不变
- >alter table personal
- ->add column height tinyint after birthday,
- ->change column exam_score scores tinyint;
-
- mysql> select * from personal;
- +———–+———+————+——–+——–+
- | member_no | name | birthday | height | scores |
- +———–+———+————+——–+——–+
- | 001 | netseek | 1983–03–15 | NULL | 95 |
- | 002 | heihei | 1982–02–24 | NULL | 90 |
- | 003 | gogo | 1985–05–21 | NULL | 85 |
- | 004 | haha | 1984–02–25 | NULL | 84 |
- | 005 | linlin | 1982–04–28 | NULL | 85 |
- | 006 | xinxin | 1985–03–15 | NULL | 75 |
- +———–+———+————+——–+——–+
-
- 给表中插入数据:
- >update personal set scores=95+5 where name=‘netseek’;
- >select scores from personal where name=‘netseek’;
- +——–+
- | scores |
- +——–+
- | 100 |
- +——–+
-
- 删除表名字为‘gogo’所有的信息中的的:
- > delete from personal where name=‘gogo’;
-
- 册除数据库中的表:
- mysql>drop table if exists personal;
-
- 三,数据库的导入与导出
- 导出:
- 使用select into outfile ‘filename’语句
- 使用mysqldump实用程序
- 使用select into outfile ‘filename’语句
-
- 1.只能处理单个表,输出文件只有数据,没有表结构
- 我们要将office,其中有一个表为personal,现在要把personal卸成文本文件out.txt:
- >use office;
- >select * from personal into outfile ‘out.txt’; 可以看在/var/lib/mysql/office/目录下有out.txt
- select * from personal into outfile ‘./out.txt’; 可以看在out.txt 在/var/lib/mysql/目录下用out.txt
-
- 2.使用mysqldump实用程序(可以轻松处理多个表)
- # cd /var/lib/mysql
- 导出建立相关表的建表命令和插入指令
- # mysqldump bbs >bbs.sql 将数据库bbs导入到bbs.sql中
-
- 如果要将bbs.sql导入数据库可以使用:
- mysql> create database bbstest; 先建立一个名为office 的数据库.
- # mysql bbstest <bbs.sql (这个常用在将本地的数据库文件传到服务器上,再导入到数据库中)
-
- 只想导出建表指令:
- # mysqldump -d bbs >bbscreate.sql
- 只想导出插入数据的sql指令:
- # mysqldump -t bbs >bbsinsert.sql
- 同时导出数据库中建表指令和表中的数据:
- # mysqldump -T./ bbs cdb_admingroups (其中./表示当前目录,cdb_admingroups为bbs数据库其中的一个表)
- #ls
- cdb_admingroups.sql 导出了建表指令
- cdb_admingroups.txt 导出了表中的数据
-
- 导入:
- 从文件中加载数据库:
- mysql>load data infile “/tmp/name.txt” into table names;
- mysql>select * from names;
-
-
- 四,数据库备份
-
- 1.手动拷贝备份:
- MySQL数据库的文件保存在目录/var/lib/mysql中,数据库为每个库建立一个目录,所有的数据库文件都在这些目录中.
- [root@www.linuxidc.com mysql]#ls
- bbs mysql mysql.sock phpbb test office 显示其中的数据库.
-
- 如果我们要将现在的数据库目录备份为mysql.bak .
- [root@www.linuxidc.com lib]# cp -rf mysql mysql.bak
- 如果数据库遭到了破坏,现在要将数据库恢复:
- [root@www.linuxidc.com lib]# cp -rf mysql.bak/* mysql
- 恢复数据库以后,var/lib/mysql中的文件已改变了,要更改文件的所属权限必须改变MySQL数据库的用户读写权限。
- 所以我们得启动和运行mysql,并登陆数据库:
- [root@www.linuxidc.com lib]# /etc/init.d/mysqld start
- [root@www.linuxidc.com lib]# mysql -u root -p
- Enter password:输入密码成功登陆.
- mysql> show databses;
-
- 2.利用mysqldump来备份数据库
- [root@www.linuxidc.com mysql]# mysqldump –opt bbs -u root -p > bbs.sql
- Enter password:
- 注:–opt添加备份的其它选项,bb为其中一个数据库名,
- 上面的意思是:使用重定向输出将备份写入到文件bb.sql中.
- [root@www.linuxidc.com mysql] #less bbs.sql
-
- 如果要恢复bb这个数据库,则进行如下操作:
- [root@www.linuxidc.com mysql] #mysql bbs -u root -p < bbs.sql
-
- 如果要备份所有数据库:
- [root@www.linuxidc.com mysql] #mysqldump –opt –all-databases -u root -p >mysql.bak
- Enetr password:输入密码即可
- 恢复所有数据库,不用输入数据库的名字:
- [root@www.linuxidc.com mysql] #mysql -u root -p < mysql.bak
- Enetr password: 输入密码即可
-
- 五,附:MySQL密码忘记了怎么办?
- 如果 MySQL 正在运行,首先杀之: killall -TERM mysqld。
- 启动 MySQL :bin/safe_mysqld –skip-grant-tables &
- 就可以不需要密码就进入 MySQL 了。
- 然后就是
- >use mysql
- >update user set password=password(“new_pass”) where user=“root”;
- >flush privileges;
- 重新杀 MySQL ,用正常方法启动 MySQL 。