常用命令及各种小知识

【vim命令相关】

1/2/3/4 dw:删除word
dd:删除行
yy:复制,p粘帖(下一行)
x:删除光标
r:替换当前光标值
u是撤销
ctrl+r:重做
w按word移动
/word(?word):查找,用n查找下一个
dpkg是Debian Package的缩写

gg+dG:clear all contents of the file

 

v然后l可以逐个复制
 
vim乱码问题解决:
windows系统也可以在vim菜单项中:编辑>启动设定,直接打开_vimrc文件

A,"设置文件的代码形式
set encoding=utf-8
set termencoding=utf-8
set fileencoding=utf-8
set fileencodings=ucs-bom,utf-8,chinese,cp936

B,"vim的菜单乱码解决:
"同样在 _vimrc文件里以上的中文设置后加上下列命令,
  source $VIMRUNTIME/delmenu.vim
  source $VIMRUNTIME/menu.vim

C,"vim提示信息乱码的解决
language messages zh_CN.utf-8

按下面这个顺序来就可以

 

 

【ubuntu相关】

1. 设置快捷键:系统设置-键盘-快捷键:第一一个快捷键:局部抓图alt+l

2. rename与mv的区别

3. 更改用户密码:sudo passwd sophia

4. vim定位某行的命令为(:n,n为 行数)

5. mv /home/sophia/../a.out .(当前目录的表示)

6. Ubuntu下查看网络网卡命令:

  ifconfig

    rfkill

查看网卡型号:sudo lshw -C network

7. apache2

        本机的apache重启命令:sudo /usr/local/apache2/bin/apachectl restart或者service apache2 restart ,

        启动的话用 sudo  /etc/init.d/apache2 start(ubuntu 14.04麒麟)

  彻底卸载apache2

    (1)  $ sudo apt-get --purge remove apache2
           $ sudo apt-get --purge remove apache2.2-common
           $ sudo apt-get autoremove
    (2) (关键一步)找到没有删除掉的配置文件,一并删除
          $ sudo find  /etc -name "*apache*" -exec  rm -rf {} \;
          $ sudo rm -rf /var/www

安装apahce2的时候运行localhost时找不到www下的文件,原因很简单呀,修改/etc/apache2/site-available/000-defualt.conf文件,

默认的DocumentRoot是/var/www/html把它改成/var/www,然后运行sudo a2ensite 000-*,再重启apache2就可以了。

80端口被占用:

sudo netstat -tulpn| grep :80查看占用进程,然后 sudo kill "pid" 杀死进程

 8、Freemind软件安装

  只需运行apt-get install freemind即可,安装的是英文版的,ubuntu版本是14.04,所需的 java自动安装了,所以没有出现网上说的没有安装java的情况。不过在运行freemind时出现以下情况:

  

   这是由于JAVA环境变量没有指定,在JAVA的安装目录/usr/lib/jvm/下找打java版本,然后指定java环境变量:  

sophia@DIU:~$ cd /usr/lib/jvm
sophia@DIU:/usr/lib/jvm$ ls
default-java java-1.7.0-openjdk-amd64 java-7-openjdk-amd64
sophia@DIU:/usr/lib/jvm$ export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
sophia@DIU:/usr/lib/jvm$

下次再运行就不会出现这个错误了。

9. ThunderBird Mail的设置

  打开thunderbird,在左侧导航栏的local folder处右击:settings,弹出以下对话框:

点击下面的Account Action选择add  mail account,弹出对话框如下:

下面的password是你的邮箱的密码,点击continue继续设置,thunderbird会自动寻找邮箱服务器,可以直接点击下面的mannual config:

设置incoming sever的类型,以及你的邮箱所在服务器,username即A@pku.edu.cn中的A,是你在服务器上的用户名。点re-test,如果配置正确会出现:

这句话, 然后点击done,checking password,然后就可以了~~

10. 查看Ubuntu是多少位:

  1)使用getconf -a|grep LONG_BIT命令:

    diudiugirl@ubuntu:/var/www/ashelf$ getconf -a|grep LONG_BIT
    LONG_BIT                           64(此处显示ubuntu是64还是32位)

  2)使用file /bin/ls命令:

    diudiugirl@ubuntu:/var/www/ashelf$ file /bin/ls
    /bin/ls: ELF 64-bit(此处显示ubuntu是64还是32位) LSB  executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=64d095bc6589dd4bfbf1c6d62ae985385965461b, stripped
11. 使用apt-get install进行安装时,会遇到依赖不全或者一些其他的问题:

  在安装前一定要记得先sudo apt-get update一下,而且有可能因为网络的原因没有update上,也有可能再次失败,所以把能加上的源都加上了。。。不知道什么时候网络就好了呢。。

  这里是源http://www.cnblogs.com/Sophiawow/p/4164342.html  

12. 使用vim和xxd查看和修改二进制文件:

   :%!xxd转换与:%!xxd -r转回  

13. 如果system settings中的设置少了,有可能是删除ibus造成的,重新安装一下sudo apt-get install ubuntu-desktop就可以了。

14. ubuntu14.04开机启动项设置:alt,搜索:gnome-session(系统自带)

15. language support图标不见了,安装im-switch之后,安装sudo apt-get install language-selector-gnome即可。发现貌似这俩是有你没我的状态。。。。

16. grep排除文件夹:grep "访员档案" * -nr --exclude-dir=log

17. 关于scp exclude的问题

     一直用的scp从服务器copy文件,后来总是遇到下载很慢的问题,网络慢,log文件又太大,搜了一下发现了一个很有用的命令:rsync

     http://superuser.com/questions/291822/scp-r-but-leave-out-exclude-a-specified-subdirectory

18. linux下只显示文件夹或者文件,一个很聪明的方法

只显示文件夹     ls -l | grep ^d

只显示文件         ls -l | grep ^- 

解释一下:  

ls -l 之后会得到下面的内容

drwx------   4 jinwang users     4096 2012-02-09 15:00 .xchat2

-rw-r--r--   1 jinwang users  1690399 2012-06-04 12:16 45s.txt 

文件是以 "-"开头 , 文件夹是 d, 所以这就是后面grep的内容。

^是正则表达 匹配输入字符串开始的位置。

19. linux下比较两个文件夹中有哪些不同的文件:

  diff -r dir1 dir2

20. 将一个文件夹下的部分文件copy到另一个文件夹下:

    cp -r ~/photos/2015* /www/photos/

21. 将两个文件夹中不同的文件copy到另外一个文件夹
#!/bin/sh
DIR_A=/var/www/2015_records_3
DIR_B=/var/www/2015_records_4
DIR_C=/var/www/222
file_list=`ls $DIR_A`
cp -a $DIR_B/*  $DIR_C 
for filename in $file_list
do
        if [ ! -e $DIR_C/$filename ];then
                cp $DIR_A/$filename $DIR_C/$filename
                echo "the $filename exists only in  $DIR_A"
        else
                rm $DIR_C/$filename
                echo "the same file $filename in two folders"
        fi
done
echo "---- over ---"

If I remove the line " cp $DIR_A/$filename $DIR_C/$filename", it will  delete the files with same name in folder A and B and doesn't copy the files with differet name  in Folder A to C( this is what I want finally).

22.查看文件夹中文件数量:

Linux下查看某个目录下的文件、或文件夹个数用到3个命令:ls列目录、用grep过虑、再用wc统计。
举例说明:
   1、查看统计当前目录下文件的个数

  ls -l | grep "^-" | wc -l

   2、查看统计当前目录下文件的个数,包括子目录里的。

  ls -lR| grep "^-" | wc -l

   3、查看某目录下文件夹(目录)的个数,包括子目录里的。

  ls -lR| grep "^d" | wc -l

 23. ubuntu15.04安装完sougou输入法注销后不显示输入法指示器,是要在系统设置-语言支持里面把第一个语言设置为汉语。

24. 往ubuntu中添加路径:

     在安装完laravel之后需要将bin路径加入PATH中,可以更改~/.profile或者/etc/profile文件,在文件末尾加入:export PATH=$PATH:~/.composer/vendor/bin保存,运行source ~/.profile即可生效。

25. cat /etc/issue 查看Ubuntu版本

26.rsync从服务器拷贝文件到本地并且可过滤文件

    rsync -av abc@abc:/var/surveys --exclude 'files'会将surveys下的files文件夹过滤掉

【git相关】

1. 看到一个《看日记雪git》:https://forum.ubuntu.org.cn/viewtopic.php?f=88&t=225399

 

2. 通过git clone获取的远端git库,只包含了远端git库的当前工作分支。如果想获取其它分支信息,需要使用”git branch  –r” 来查看, 如果需要将远程的其它分支代码也获取过来,可以使用命令” git checkout -b 本地分支名 远程分支名”,其中,远程分支名为git branch –r所列出的分支名, 一般是诸如“origin/分支名”的样子。如果本地分支名已经存在, 则不需要“-b”参数。
 
3.   递归更改所有文件夹的权限 find ./ -type d -exec sudo chmod 775 {} \;
  更改所有文件(非文件夹)的权限 find ./ -type f -exec sudo chmod 664 {} \;
  更改权限 sudo chown -R git:www-data ./
  删除预编译文件sudo rm -rf compile/*
 
4. git在commit之前删除add的文件:
  git rm --cached 文件名
  这里有个链接:在commit之前撤销add操作
5. ignore:
    ignore mode file:
git config core.fileMode false

 6. git push 出现unstaged changes,但是commit已经提交了,首先git reset --soft HEAD~1去掉本地提交,并执行git push -f origin/master 将远程的commit去掉,然后处理了unstaged change之后再提交吧,少年

 

【php相关】

1. php运行空白,可能是权限原因
注意文件权限与路径的问题

2. ubuntu卸载php5:http://www.imzzy.com/ubuntu-remove-lamp.html

3. strcmp($str1,$str2)若$str1>$str2为正数,否则为负数,若相等为0;

 

【css相关】

css注释:/* */

 

【mysql相关】

1. 在不知道字段属于哪个表时使用如下命令:

use information_schema;
select `TABLE_NAME`
from `COLUMNS`
where `COLUMN_NAME`='字段名';

就能看见所有的包含此字段的表了

2. mysql更改表名:alter table '..' rename to '..'

3.  做了一件很秀逗的事情,把表中的一万多行的数据中某一列update成一个值了。因为本地的数据表已经修改过了,所以不能直接用服务器上导出的sql文件直接source覆盖,最后用以下方法解决了:

      首先从服务器上把原数据库表a导出名为b的sql文件。

      本地导入表b

      使用update语句将a中需要覆盖的列id更新为b中的id:  

  update a set a.id = (select b.id from b where a.id = b.id); 

然后可以了~~

4. 在使用update与select进行更新时遇到以下错误:

ERROR 1093 (HY000): You can't specify target table 'check_2014' for update in FROM clause

解决方法是为select语句中的内容建一个临时表:

drop table check_2014_rec;
create
temporary table check_2014_rec select hhid from check_2014 where hhid like '18%';
update check_2014 set checkstate =1 and checkmethod =2 where hhid in (select * from check_2014_rec);
将一个表中的字段赋值另外一个表中的字段:
UPDATE check_2015
SET check_2015.phone3 = (
SELECT qc_report_2015.phone3
FROM qc_report_2015
WHERE check_2015.hhid = qc_report_2015.hhid)
 5. A problem need to solve :Multi-table update failing to change matched rows

 6. mysqldump只导出某数据库中的部分表,如果表的数量比较少那就直接导出好了,如果要导出的表多不需要的表少,需使用--ignore参数:

  

mysqldump -u用户名 -p密码 charls_wave3 
--ignore-table=charls_wave3.community_data
--ignore-table=charls_wave3.coverscreen_data
--ignore-table=charls_wave3.coverscreen_lg_data
--ignore-table=charls_wave3.lifehistory_data
--ignore-table=charls_wave3.qcsurvey_data
> charls_wave3.sql

 

  最后数据会导出到charls_wave3.sql的文件中。

 mysqldump:

  mysqldump -u* -p* charls_wave3 --ignore-table=charls_wave3.community_data --ignore-table=charls_wave3.community_cache  --ignore-table=charls_wave3.community_log  --ignore-table=charls_wave3.community_navigation --ignore-table=charls_wave3.community_paradata --ignore-table=charls_wave3.community_timing   --ignore-table=charls_wave3.coverscreen_data --ignore-table=charls_wave3.coverscreen_cache --ignore-table=charls_wave3.coverscreen_log --ignore-table=charls_wave3.coverscreen_navigation --ignore-table=charls_wave3.coverscreen_paradata --ignore-table=charls_wave3.coverscreen_timing --ignore-table=charls_wave3.coverscreen_lg_cache --ignore-table=charls_wave3.coverscreen_lg_log --ignore-table=charls_wave3.coverscreen_lg_navigation --ignore-table=charls_wave3.coverscreen_lg_paradata --ignore-table=charls_wave3.coverscreen_lg_timing   --ignore-table=charls_wave3.coverscreen_lg_data --ignore-table=charls_wave3.lifehistory_data --ignore-table=charls_wave3.lifehistory_cache --ignore-table=charls_wave3.lifehistory_log --ignore-table=charls_wave3.lifehistory_navigation --ignore-table=charls_wave3.lifehistory_paradata --ignore-table=charls_wave3.lifehistory_timing   --ignore-table=charls_wave3.qcsurvey_data --ignore-table=charls_wave3.qcsurvey_cache --ignore-table=charls_wave3.qcsurvey_log --ignore-table=charls_wave3.qcsurvey_navigation --ignore-table=charls_wave3.qcsurvey_paradata --ignore-table=charls_wave3.qcsurvey_timing > charls_wave3.sql

7. sql语句中下划线等的匹配

  SELECT *,cast(aes_decrypt(answertext,'basbas') as char) as answertext,cast(aes_decrypt(remark,'basbas') as char) as remark FROM `lifehistory_data` where prim_key =1843115627900001 and fieldname like 'J1*_%' escape '*'

8. 解决mysql导出数据为科学计数法且超过12位的数字自动归0的问题

在mysql的命令行下执行:(optionally enclosed by '\t'     起了作用)

SELECT * from table into outfile '/tmp/123.csv(xls)' fields terminated by ',' optionally enclosed by '\t' lines terminated by '\r\n'

9.遇到这样一个问题:需要将表a中的数据blob转换然后导出到csv中,在phpmyadmin中导出或者命令行中导出时都面临一个问题:字符集的问题+数字超过12位后面自动补零,也就是上面第8个问题。解决办法:

  先将需要的字段转换并存到一个临时表中,再用select into outfile导出csv,用记事本打开另存为ANSI格式就好了(有时候好有时候不好的。。。)

10. 把一个表中的某条记录的某个(些)字段copy到另一条记录中,可以使用 update功能来实现:

UPDATE sms_survey s1,
sms_survey s2 SET s1.sypassword = s2.sypassword WHERE s1.syid =6 AND s2.syid =4

11. limit:

limit m, n:指的是从第m+1条记录开始取n条记录,例如limit 0, 200000,指的是从第1条记录开始取20,0000条记录。

12. Subquery returns more than 1 row错误

    select * from table1 where name = any(select name from table2 where id = any(....))使用any来解决这个错误。

13. 清除表中的所有数据:

    truncate table tablename即可

14. 错误: column count in CSV input on line 1 Error出现这个错误一般是导入的csv与数据库中表的列的类型或数目不一样造成的,可以入链接中的答案中所说,直接将csv命名为想要创建的表名,直接导入到数据库中即可(csv需要列名)。

15. 更改mysql表中enum字段的内容:

  ALTER TABLE `table` MODIFY COLUMN `type` enum('a','b','c');

 

【shell相关】

使用   “ssh -p 端口号 用户名@服务器名称”  即可连接到远程服务器

使用 “scp -p 端口号 用户名@服务器名:文件路径/文件名称 本地要保存的路径” 即可从远程服务器下载文件

 

【firefox相关】

在linux下想找到windows下firefox的书签:

在linux下进入C:\Users\你的用户名\AppData\Roaming\Mozilla\Firefox\Profiles\****.default\bookmarkbackups\

在该文件夹下有以下bookmarks的备份,点击最新的打开,ctrl+f查找一下想要的书签就可以了。

 

 【软件】

1. sublime text packages:sublimecodeintel

 可以使得sublime text可以跳转到标签等的定义处或文件;也具有补全功能;可以在状态栏显示工作函数的状态。

使用pannel control安装时遇到这个问题:

Package Control:

Unable to find git.exe. Please set the git_binary setting by accessing the Preferences > Package Settings > Package Control > Settings – User menu entry. The Settings – Default entry can be usedfor reference, but changes to that will be overwritten upon next upgrade.

按照错误提示,在pannel control 的seting-user中加入下面这行:"ignore_vcs_packages": true(注意要在每条语句后加上逗号“,”要不然会提示语法错误而不能保存)

{
    "ignore_vcs_packages": true,
    "installed_packages":
    [
        "3024 Color Scheme",
        "Package Control"
    ]
}

 还需要设置一下php路径才能使用函数跳转功能:

在\.codeintel\config文件中加入php.exe和php.ini的路径:

{

    "php": 'E:\Program Files\EasyPHP-DevServer-14.1VC11\binaries\php\php_runningversion\php.exe',
       
        "phpConfigFile": 'E:\Program Files\EasyPHP-DevServer-14.1VC11\binaries\php\php_runningversion\php.ini'
    

哦啦~~

这里有一个安装破解版sublime text 3的帖子,linux的安装请参考。

ubuntu下sublime text不能输入中文的解决办法

 

sublime-text3 3038 license:

—– BEGIN LICENSE —–
Andrew Weber
Single User License
EA7E-855605
813A03DD 5E4AD9E6 6C0EEB94 BC99798F
942194A6 02396E98 E62C9979 4BB979FE
91424C9D A45400BF F6747D88 2FB88078
90F5CC94 1CDC92DC 8457107A F151657B
1D22E383 A997F016 42397640 33F41CFC
E1D0AE85 A0BBD039 0E9C8D55 E1B89D5D
5CDB7036 E56DE1C0 EFCC0840 650CD3A6
B98FC99C 8FAC73EE D2B95564 DF450523
—— END LICENSE ——

2. 当win8中安装软件时出现internal error 2503/2502原因是没有用管理员身份运行安装程序,有时点击右键没有以管理员身份运行的选项,有个trick:在任务管理器中结束explorer.exe的进程,然后重新创建,创建时在下面选择以管理员权限创建该进程,如下图:

再运行安装就ok了。

还有vmware虚拟机也必须用管理员权限运行,如果不以管理员权限运行的话有可能告诉你内存不足或者内部错误等不靠谱的错误提示。什么时候可以用win10呀,哼!

 

后来在安装google drive的时候也出现了该问题,但是使用以上方法还是不好用,搜到一个百度经验,是可以的(感谢分享~~):Win8安装程序出现2502、2503错误解决方法

3. Mindmanager

  topic中中文换行,好多网传的方法都试了试,只有Shift+Enter好用!

4. 在cmd命令行中使用notepad ~/.codeintel/config 可以用记事本打开文件进行编辑~

5. VMware更新vmware tools:

   在打开虚拟机的时候会提示你更新vmwaretools,或者点击vmware菜单栏里的虚拟机选项选择更新vmwaretools,会弹出

首先进入/tmp下,解压/media/diudiugirl/VMware Tools中的gz文件,使用sudo tar zxpf解压gz文件

解压之后再tmp目录下出现vmware-tools-distrib文件夹,如果之前存在这个文件夹,需要删除。然后执行sudo ./vmware-install.pl即可。

参照帮助链接,本文使用的是ubuntu麒麟14.04的虚拟机,自动装载镜像,所以直接从解压步骤开始。

6. 在win8.1下Xshell4输入中文显示为问号,

  原因:win8.1中文输入法中含有美式输入法

  解决方法:打开控制面板-语言,点击下图中中文右边的选项:

将除了搜狗输入法之外的所有输入法(微软输入法和美式键盘输入法)删除:

   再在Xshell4中输入中文即可正常显示。  

 

@@@@@@@@@@@@@@@@@@@@@@

libxml的作用,xml的学习

posted @ 2014-02-27 21:42  Sophiawow  Views(445)  Comments(0Edit  收藏