微軟內部最受歡迎的編輯器是什麼麼?還在用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 。