Android with root Git for version control Lircd with Raspberry Pi for IR receiver and sender Tips for Windows Depolying your own password management tool -- KeeWeb Depoly your flask app into Heroku Fix shit IE code manually ISBN to Book Category by Scraping DangDang A Generic Makefile for C/C++ Program Configure Raspberry pi Remove watermark with PyPDF2 tips for docker Anaconda+TensorFlow+CUDA Snippets Configure Remote Mathematica Kernel Build your own ngrok server Access Array SSL VPN 使用Rstudio制作html5幻灯片 tips for Mac OS X system Tips for ipython notebook 配置Ubuntu server + Openbox (Obuntu) tips for Vimperator tips for Vim 安装CUDA My First Jekyll Blog rsync常见选项 在Linux中读取Ipod touch的文件 tip for texmacs 在VPS上建站的一些tip Gnuplot绘图札记 Samba系统和autofs自动挂载 Linux中alsamixer声卡无法录音 搭建自己的RSS订阅器——Tiny Tiny RSS Grub2引导安装Ubuntu awk tips 将Ubuntu系统装入U盘 The Great Rtorrent 编译GCC 再这样剁手!!!该死的libgd 使用ulimit进行资源限制 使用SSH代理上IPV6 使用RCurl抓取网页数据 修复Ubuntu Grub记 openbox中的文件关联 在Ubuntu 12.04下编译qtiplot 处理BCM4312网卡驱动纪实 配置我的Ubuntu Server记 Cygwin杂记 Linux 使普通用户具有以超级权限执行脚本 让firefox自定义地处理文件类型 WordPress优秀主题及插件 在phpcloud上搭建wordpress UBUNTU下用pptpd做VPN server ubuntu升级内核过后的一些问题 安装telnet服务 kubuntu札记 64位kubuntu札记 统计软件R Virtualbox stardict星际译王 Ubuntu重装windows系统后的grub引导修复 SSH服务及花生壳域名解析 采用cbp2make工具由code::blocks工程创建makefile文件 UBUNTU 札记

UBUNTU 札记

2012年05月24日

  1. adobe_pdf 菜单栏

    /etc/profile 是一个global config file,会影响系统全局用户,如果你只想对single user生效的话,可以修改vi ~/.bash_profile。 在终端下输入export UBUNTU_MENUPROXY= 偶把export UBUNTU_MENUPROXY= 加到启动脚本里/opt/Adobe/Reader8/bin/acroread

     alias acroread="export UBUNTU_MENUPROXY= && /opt/Adobe/Reader8/bin/acroread"
     echo "alias acroread=\"export UBUNTU_MENUPROXY= && /opt/Adobe/Reader8/bin/acroread\"" >>~/.bashrc
    
  2. 解除Unity系统托盘图标限制:

    由于在Unity中,Ubuntu对系统托盘采取了白名单机制,只有在白名单内的程序才能在系统托盘处显示图标,这显然不符合我们的要求。因为我们还需要开启一些中国特色的软件,如WINE、AIR程序等。所以需要解除这一设置:

     #如果你想所有的程序都可以显示,则在终端运行下面命令:
         gsettings set com.canonical.Unity.Panel systray-whitelist "['all']"
     #若你想自定义程序的话,运行下面的命令(YOUR_APPLICATION是程序名):
         gsettings set com.canonical.Unity.Panel systray-whitelist "['JavaEmbeddedFrame', 'Mumble', 'Wine', 'YOUR_APPLICATION']"
     #还原到系统默认状态:
         gsettings set com.canonical.Unity.Panel systray-whitelist "['JavaEmbeddedFrame', 'Mumble', 'Wine', 'Skype', 'hp-systray']"
    
  3. 如何用linux创建iso镜像文件

    1.用dd命令

         dd if=/dev/cdrom of=/***/目的文件.iso
    

    上面的命令是在将光盘作成iso文件

    2.用mkisofs 命令

         mkisofs -r -J -V 卷标名 -o 目的文件.iso 源文件
    

    上面的命令是将 “源文件” 文件及目录作成 “目的文件.iso”。

    注:卷标名是iso文件载入系统时显示的名称

  4. time command 计算command运行的时间

  5. Rhythmbox 乱码

    原理应该就是让播放器先试着用GBK解码标签,然后用UTF-8解码,其实就是调整解码顺序啦。具体的做法就是在/etc/profile.d/文件夹底下创建一个shell脚本:

     #!/bin/bash
     export GST_ID3_TAG_ENCODING=GBK:UTF-8:GB18030
     export GST_ID3V2_TAG_ENCODING=GBK:UTF-8:GB18030
    

    必须让Rhythmbox重新读取音乐文件的信息,可以通过删除~/.local/share/rhythmbox下的所有文件来实现。注销后再登录使sh脚本生效,重新添加音乐文件即可。

  6. 自动挂载硬盘

    可以通过配置/etc/fstab文件来实现系统启动时自动进行挂载。

     设备编号        挂载点          挂载方式                                 挂载参数
     /dev/sdb1       /media/DATA     ntfs-3g                                 umask=0000,uid=1000,gid=1000,defaults,locale=zh_CN.UTF-8        0       0
    

    挂载参数中uid,gid等可以运行命令id得到,上面给出的一般是系统第一个注册用户的参数。man ntfs-3g 可以得到详细文档。

  7. ubuntu 安装新字体:

    把字体文件复制到家目录的.fonts文件夹下。 常见字体名和文件名对照:http://www.yale.edu/chinesemac/pages/fonts.html

  8. 让codeblocks调用系统终端:

    启动codeblocks,点击菜单栏 Settings => Environment settings,把下面的“Terminal to launch console programs”的内容改成gnome-terminal -t $TITLE -x codeblocks增加设置快捷键插件,codeblocks官方发布版没有自定义快捷键的功能,需要由插件来实现,一般可以通过安装codeblocks-contrib软件包来实现

     sudo apt-get install codeblocks-contrib
    

    但是这一般要解决很多依赖并下载大量数据,实际上是因为同时安装的还有很多其他插件,一个简单的方法就是下载codeblocks-contrib然后手动解压两个文件(文件名应该是key,搜索一下即可)到对应位置实现插件的安装。

  9. 修改ubuntu显示桌面默认快捷键为win+d

    安装 :sudo apt-get install gconf-editor 输入命令 :gconf-editor 找到目录:apps->Metacity->Global keybingdings 下的 show desktop 属性修改值为 <super>d

  10. 装好texlive后更新、安装新软件包

    若用光盘安装,完成后默认更新目录是光盘的挂载目录,此时可以重新设置默认更新仓库:

     sudo tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet
    

    另一个仓库是 ftp://ftp.ctex.org/CTAN/systems/texlive/tlnet. Texlive每年都会发布新版本,测试期间会frozen旧版本的仓库,这时可以设定仓库地址为诸如ftp://tug.org/historic/systems/texlive/2015/tlnet-final.

    更改后运行命令进行升级:

     sudo tlmgr update --self
     sudo tlmgr update --all
    

    运行命令sudo tlmgr --gui可以打开texlive可视化界面进行配置。 在编译tex文件时如果出现错误提示无法找到**.sty,则运行下面命令安装宏包:

     sudo tlmgr install **
    

    如果安装名称不对,可以先查找缺失文件对应的包名:

     sudo tlmgr search --global --file **.sty
    
  11. 安装Adobe字体:

    首先下载下面的这些字体文件:

     AdobeSongStd-Light.otf
     AdobeFangsongStd-Regular.otf
     AdobeHeitiStd-Regular.otf
     AdobeKaitiStd-Regular.otf
    

    里面有宋体和黑体.

     sudo mkdir /usr/share/fonts/adobe
     #把otf字体文件复制到 /usr/share/fonts/adobe
     sudo cp Adobe*.otf /usr/share/fonts/adobe/
     #更新字体缓存:
     sudo fc-cache -fsv
     #察看一下是否已安装:
     fc-list | grep Adobe
    
  12. 让终端不显示当前路径

    选择以下变量定义追加到~/.bashrc

     export PS1="\[\e]0;\u@\h: \w\a\e[32;1m\]\$\[\e[0m\] "
     export PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\W\$  "
     export PS1='/\W\$  '
    

    建议采用第二条,当前完整路径将会显示在标题上,提示符$前仅显示当前文件夹的名称。 相关分析见http://www.yunsec.net/a/school/xtrm/linux/2010/0522/4012.html

  13. Mercurial

    1. 在仓库根目录下创建文件.hgignore添加以下内容可使hg仅跟踪某些类型的文件和文件夹

       syntax: regexp
       .*\.(?!(h|cpp|cbp|depend|layout|cxx|ini)$)
       ^bin/
       ^obj/
      

      注:hgignore支持两种语法,Python/Perl-style regular expressions和系统shell。虽然shell语法一目了然,但是还是建议使用regexp吧,一是不用在文件中指定语法(正则表达式是默认语法),二是可控性高些。常用需求有两种:过滤掉特定类型文件(一般是靠后缀),过滤掉特定文件夹下的文件。

       - 过滤特定后缀的写法:`/.xxx$`,“/.”是就是“.”,因为“.”在正则表达式里有特殊含义,所以前面要加上“/”转义。“$”表示结束,所以上面的表达式的意思是匹配以“. xxx ”结束的文件
      
       - 过滤特定文件夹的写法:`^folder/`.python的路径分隔符是“/”,这样在不同的操作系统上是可移植的。“^”表示开始。一个完整的文件名是path/filename,所以上面的表达式的意思是匹配“folder/  ”开始的文件。
      
    2. .hg/hgrc配置文件

       # 设置hg默认拉取和推送地址:
       [paths]
       default = 拉取地址
       default-push = 推送地址
      
       #设置hg用户名及默认编辑器
       [ui]
       username = nickname <email>
       editor = nano
      

      注:nano是一个和记事本十分像的编辑器,很好用哦!

    3. google code 被墙

      去google搜online ping,在英文google搜。在提供在线ping的国外网站上 ping code.google.com ,取得ip。改/etc/hosts文件,将刚才ping到的ip设置和code.google.com配对。(最好清空一下dns缓存,windows下命令行输入ipconfig /flushdns,我自己没有清缓存也可以。)

    4. 利用下面命令导出和导入一些commit,或者使用更加方便的transplant扩展:

       hg export -o 'changeset-%R.patch' 1:tip
       hg import $(ls *.patch | sort -V)
      
    5. 利用hg-git扩展操作git仓库,注意clone的时候要求克隆地址(URL或文件夹名)必须以.git结尾,否则会报错找不到仓库。克隆github地址形式需要转换一下:

       hg clone git://github.com/user/repo.git
       # set the push path in hgrc as following
       hg push git+ssh://git@github.com/user/repo.git
       hg push git+ssh://SSHConfigEntry/user/repo.git
       # where SSHConfigEntry can be defined in ssh/config file as:
       #   Host SSHConfigEntry
       #       User git # must be git, not your github user name
       #       Hostname github.com
       #       IdentityFile ~/.ssh/private-key
      
  14. Git

    1. 下载github中仓库下某一个文件夹内的文件,可使用命令svn checkout $(echo $GITHUB_HTTPS|sed 's#tree\/master#trunk#'),即使用trunk替换github地址中的tree/master

    2. 用于做中央备份的git仓库最好是裸仓库,通过hg-git推送时要求目标git仓库是bare的。一下命令创建会克隆一个裸仓库:

       git init --bare repo.git
       git clone --bare https://github.com/user/repo.git
      
    3. 同时推送到多个仓库

       git remote add github git@github.com:${USER_ON_GITHUB}/repo_a.git
       git remote add bitbuket git@bitbucket.org:${USER_ON_BITBUCKET}/repo_b.git
       git remote set-url --add --push origin git@github.com:${USER_ON_GITHUB}/repo_a.git
       git remote set-url --add --push origin git@bitbucket.org:${USER_ON_BITBUCKET}/repo_b.git
      
  15. 安装GSL - GNU Scientific Library库

    http://www.gnu.org/software/gsl/下载GSL的源码包,解压后按照INSTALL文件介绍的步骤安装GSL。

     ./configure && make && sudo make install
    

    在编译源代码时,提示找不到头文件,这是因为在编译时没有添加链接库参数引起的。

    命令gsl-config --cflags命令即可查询编译参数Cflags,gsl-config --libs可查询库参数Libs。

    举例:

     //filename: test.c
     #include <stdio.h>
     #include <gsl/gsl_block_double.h>
     int main()
     {
         gsl_block * b = gsl_block_alloc(100);
         printf("length of block = %u\n", b->size);
         printf("block data address = %#x\n", b->data);
         gsl_block_free(b);
         return 0;
     }
    

    以上源码使用了gsl下gsl_block_double.h这个头文件,编译的时候有命令

     gcc   test.c   `gsl-config --libs`
    

    也可以首先执行一遍gsl-config --libs,再用相应结果替换gcc的编译参数。如果gsl-config --libs不起作用,则在安装目录</lib/pkgconfig>下有一个文件gsl.pc,里面就有编译选项Cflags和Libs。

  16. 将一组图片合成为GIF,延时为10,无限循环播放

     convert -delay 10 -loop 0 *.jpeg 4*101-k=0.1-ONE.gif
    
  17. 以HTTP方式共享当前文件夹的文件

     python -m SimpleHTTPServer
    

    这命令启动了Python的SimpleHTTPServer模块,考虑到Python在绝大多数的Linux发 行版当中都默认安装,所以这个命令很可能是最简单的跨平台传文件的方法。命令执行后将在本机8000端口开放HTTP服务,在其他能访问本机的机器的浏览器打开__http://ip:8000__即打开一个目录列表,点击即可下载。

  18. 将Windows/dos格式的换行(CRLF)转成Unix格式(LF)

     awk '{ sub(/\r$/,""); print }'
    

    这条语句使用了sub(regex,repl,[string])函数。此函数将匹配regex的string替换成repl,如果没有提供string参数,则$0将会被默认使用。$0的含义代表整行。

    这句话其实是将\r删除,然后print语句在行后自动添加一个ORS,也就是默认的\n。

    将Unix格式的换行(LF)换成Windows/dos格式(CRLF)

     awk '{ sub(/$/,"\r"); print }'
    

    这句话同样使用了sub函数,它将长度为0的行结束符$替换成\r,也就是CR。然后print语句在后面添加一个ORS,使每行最后以CRLF结束。

  19. SSH

    1. 有时候不想开启 SFTP 工具传送文件,那么下面的命令会帮到你

       tar cvfz - localFileOrDir | ssh user@remotehost 'cd /remote/path/to/unpack/ ; tar xvfz -'
      

      这个命令可以自动将本地的文件或者目录打包压缩以后,通过 ssh 传输到 remotehost 主机,然后 remotehost 会自动将其解压缩。

    2. 自动登录 ssh

       ssh user@remotehost 'cat >> ~/.ssh/authorized_keys' < ~/.ssh/id_rsa.pub
      

      还有些有用的参数

       -C 这个参数可以将文本数据压缩传送
       -X 如果远程服务器支持 X11 forwarding ,那么远程的 X 应用直接可以在本地显示运行(当然你本地要有 X Server)
      

      一个更加实用的命令是ssh-copy-id user@remotehost可以实现上面的功能,不过不确信在其他发行版也有这个命令.另外,需要确信用户主目录权限对组用户不具有权限,drwxrwx---权限是不行的。

    3. 使用SSH代理

       ssh -qTfnN -D 7070 nick@nick-wong.vicp.cc
      

      回车后会输入密码,关闭shell窗口,ssh仍然会后台运行,一个基于SSH的本地代理即建立完毕。在firefox中打开首选项-高级-网络-设置,选择手动配置代理,填写SOCKS主机为本机__127.0.0.1__,端口为7070,开启远程dns解析。 Chrome浏览器的话,安装Proxy switchy插件后,在socks Host里设置代理服务器为__127.0.0.1__端口为7070。

    4. 远程端口转发

       ssh -qfnTN -R lp:GhostHost:gp LocalHost
      

      在一个中间节点InterHost上执行此命令,将GhostHost的gp端口转发到LocalHost的lp端口上,使得LocalHost可以通过访问自身的lp端口实现访问GhostHost上的gp端口。通常InterHost和GhostHost可以是同一个节点,从而GhostHost直接写作localhost。更一般地,-R 后面的参数形式为[bindaddress]:lp:GhostHost:gp,通常bindaddress为127.0.0.1,表示此端口转发仅在LocalHost本机上可用,但实际上可以是含有通配符的其他地址(如\*:8022:127.0.0.1:22),当其为0.0.0.0时,表示任意主机都能通过LocalHost的lp端口连接到GhostHost的gp端口(这一点和适用-L本地转发时的-g参数有类似作用,且要使用此功能,需在LocalHost中/etc/ssh/sshd_config打开GatewayPorts yes选项)。

       -q Quiet mode. 安静模式,忽略一切对话和错误提示。
       -f Requests ssh to go to background just before command execution. 后台运行,并推荐加上 -n 参数。
       -n Redirects stdin from /dev/null (actually, prevents reading from stdin). -f 推荐的,不加这条参数应该也行。
       -T Disable pseudo-tty allocation. 不占用 shell 了。
       -N Do not execute a remote command. 不执行远程命令,专为端口转发度身打造。
      
    5. ssh -X user@host ‘command’ 传递命令行的GUI信息

      实用-X或-Y命令可以利用SSH的X服务传递功能实现远程调用GUI程序。注意,是大写的X,小写x表示关闭X服务传递。 若显示无法打开DISPLAY,那么可能是DISPLAY变量未设置。bash下面可以export DISPLAY=localhost:11.0或者 export DISPLAY=ClientIp:0.0设置。若设置后还是无法打开,再/etc/hosts中添加127.0.0.1 localhost。 其中CliendIp为本机的ip地址。实用后面一种需要在本机上设置服务端ip,用xhost + ServerIp即可。 如果想要在打开ssh时默认打开-X选项,可以将以下代码添加至~/.ssh/config文件:

       Host *
           ForwardX11 yes
      
  20. 更改 Gnome Shell 默认日历程序为 Thunderbird:

     gsettings set org.gnome.desktop.default-applications.office.calendar exec thunderbird
    
  21. 仅复制目录结构(从source到dst)

    方法一:find source/ -type d | sed 's#^source#mkdir -p dst#'>sh.sh && source sh.sh && rm sh.sh

    方法二:find ./work_database/ -type d -exec mkdir -p ./copy/{} \; -exec echo '创建文件夹 {} 成功' \;

    利用find的执行命令的功能实现,最后的\;是语法要求,{}代表查找到的文件,mkdir -p表示需要时创建上层文件夹,注意此种用法目标位置不要在源位置下,会引起嵌套的创建文件夹目录

  22. 音频分轨:shntool split -f CDImage.cue -t '%n.%t' -o flac CDImage.ape。需sudo add-apt-repository ppa:flacon/ppa添加源后安装flacon

  23. 在网站域名后面添加 .sixxs.org 后缀,例如:通过 Google.com.sixxs.org 访问 Google 网站;

  24. 命令行关闭ubuntu错误报告服务whoopsie

    Just change the report_crashes parameter to false in the /etc/default/whoopsie file. Then bid farewell to whoopsie with sudo service whoopsie stop.

  25. 获取 WAN IP : curl ifconfig.me

  26. 死机时安全重启系统

    按住 Alt-Print(Sys Rq),然后依次按下 reisub 这几个键(busy的比较级busier倒过来就是),按完 b 系统就会重启。

  27. ubuntu server +fvwm

     sudo apt-get install  xorg fvwm-crystal build-essential msttcorefonts
     echo "exec fvwm-crystal" > ~/.xinitrc
     startx
    
  28. 命令od可以查看文件其他进制的代码

  29. 使用 echo 密码 sudo -S 命令 的形式来自动输入密码
    有时候使用脚本运行管理员命令时,希望能够自动运行,不被sudo 密码中断,这时候可以使用 echo 密码 sudo -S 命令 的形式来自动输入密码,如:
     #!/bin/bash
     echo psw|sudo -S halt
     #或者:
     #echo psw|sudo -S init 0
    
  30. 添加命令行记录到log文件

    首先创建日志文件并调整权限

     #1.创建一个审计日志文件
     sudo touch /var/log/command_history.log
     #2.将日志文件所有者赋予一个最低权限的用户
     sudo chown nobody:nogroup /var/log/command_history.log
     #3.给该日志文件赋予所有人的写权限
     sudo chmod 002 /var/log/command_history.log
     #4.设置文件权限,使所有用户对该文件只有追加权限(当需要删除此log文件时需要去掉此权限)
     sudo chattr +a /var/log/command_history.log
    

    然后设置PROMPT_COMMAND变量已实现每次敲入命令后添加记录到log文件,编辑/etc/profile添加

     HISTSIZE=1000
     export HISTTIMEFORMAT="%Y/%m/%d %T   "
     export HISTORY_FILE=/var/log/command_history.log
     export PROMPT_COMMAND='{ thisHistID=`history 1|awk "{print \\$1}"`;lastCommand=`history 1| awk "{\\$1=\"\" ;print}"`;user=`id -un`;whoStr=(`who -u am i`);realUser=${whoStr[0]};logMonth=${whoStr[2]};logDay=${whoStr[3]};logTime=${whoStr[4]};pid=${whoStr[6]};ip=${whoStr[7]};if [ ${thisHistID}x != ${lastHistID}x ];then echo -E `date "+%Y/%m/%d %H:%M:%S"` $user\($realUser\)@$ip[PID:$pid][LOGIN:$logMonth $logDay $logTime] --- $lastCommand ;lastHistID=$thisHistID;fi; } >> $HISTORY_FILE'
    
  31. 更改包标记

    有的时候需要安装一个软件包,当这个包已经被其他包依赖且自动安装时,apt-get 就只是简单的把这个包标记为手动安装。这样子的话,如果哪天不需要这个包了,又不能被手动删除,因为可能还有包在依赖它,而如果就这样丢在哪儿不管它,一旦哪天它不再被依赖了,又不能自动删除它。对于我这个对系统有洁癖的人来说,那是不可接受的,所以需要在使用完后重新标记该包为自动安装。需要用到以下命令:

     sudo apt-mark auto pkg-name
    
  32. 安装ubuntu server后无法启动网络

    想装一个清爽版的desktop,所以先装server然后手动装desktop,为求方便,安装时并没有链接网络,所以启动后插上网线也没有网络可以使用。添加以下语句到文件/etc/network/interfaces即可:

     auto eth0
     iface eth0 inet dhcp 
        
     #这表示采用动态获取网址dhcp方式打开有线网络eth0,下面是以手动配置IP等:
    
     auto eth0
     iface eth0 inet static
     address 192.168.200.99
     netmask 255.255.255.0
     gateway 192.168.200.100 
    
     #对于无线网络,类似地:
     auto wlan0
     iface wlan0 inet dhcp 
    

    设置好网络后,先升级软件库,然后安装桌面就可以了,因为要清爽,所以我没有安装建议的包,少了好几百兆呢!

     sudo apt-get update
     sudo aptitude install --no-install-recommends kubuntu-desktop
    
  33. 安装wps出错

    安装wps时候,显示xdg-desktop-menu: No writable system menu directory found.如下即可:

     mkdir /usr/share/desktop-directories
    
  34. 采用命令行进行VPN拨号

    首先新建一个VPN账户:

     sudo pptpsetup --create vpnname --server ip --username test --password test --encrypt --start
    

    start参数表示立即开始这个拨号,password密码是可选的。以后要用时:

     sudo pon vpnname
     sudo poff#断开
     plog#查看状态
     sudo pptpsetup --delete vpnname#删除保存的会话
    

    开启VPN后还需要添加一条路由信息

     sudo route add default dev ppp0
    
  35. umount没有响应的nfs文件系统

    如果一个正在使用得nfs文件系统失去了连接,有以下方法可能能够卸载掉它:

    1)umount加参数f,是强制执行umount

    2)要kill正在使用这个目录的进程。可以fuser -m -v nfsfs看一下哪个用户哪个进程占用着此设备, 然后杀掉fuser -m -v -k nfsfs占用此设备的进程(fuser -m -v -k -i nfsfs杀掉之前先确认)。 更简单地直接用fuser -km nfsfs杀掉所有以任何形式访问文件系统nfsfs的进程。杀完之后umount就行了。

    3)umount -l nfsfs,采用Lazy方式卸载。

    对于一个频繁掉线的nfs,用soft模式可以避免系统无法响应不断重试。

     sudo mount -o soft IP:/medis/study /media/office/
    
  36. 给SSH主机起别名

    当使用SSH登录远端的主机时,可以将输入长长的一串主机名(user@a.long.address.name)设置别名。在~/.ssh/config里面加入下面的字段:

     Host nickname
         Hotname user@a.long.address.name
    

    这样只需要输入ssh nickname,就可以登录了,适用于ssh和sftp。

  37. 合并flv

     mencoder -of lavf -oac mp3lame -lameopts abr:br=128 -ovc copy -o output.flv input1.flv input2.flv
    
  38. 格式化U盘

    在Ubuntu下格式化U盘需要使用mkfs命令族,使用前需卸载已被挂载的U盘分区,也可使用磁盘实用工具(palimpsest)。

     sudo fdisk -l #列出磁盘
     sudo umount /dev/sdc1 #卸载U盘分区
     sudo umount /dev/sdc #卸载U盘分区
     sudo mkfs.vfat /dev/sdc1 #以vfat格式格式化U盘分区
     sudo mkfs.vfat [-I] /dev/sdc #以vfat格式格式化整个U盘
    
  39. ppa

    本人对系统有洁癖,同时乱添加ppa也容易把系统包管理搞乱,所以,对于某些独立性很强的deb包我希望能直接下下来用dpkg安装。最常见的ppa仓库是http://ppa.launchpad.net, 在得知仓库的名字后(如ppa:francisbrwn9/testing中的francisbrwn9/testing部分),可以直接访问http://ppa.launchpad.net/ppaname去找到deb包来下载(如http://ppa.launchpad.net/francisbrwn9/testing/ubuntu/pool/main/)。

  40. Ubuntu启动后进入GUI界面

    /etc/default/grub文件中修改GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"GRUB_CMDLINE_LINUX_DEFAULT="quiet splash text" 然后运行sudo update-grub更新grub,即可使系统打开时不自动进入GUI桌面,要想进入,在新版Ubuntu里运行sudo lightdm即可。

  41. 添加一个新用户并设置其可以使用sudo提升权限

     sudo useradd newuser #创建新用户
     sudo passwd newuser #更改密码
     sudo adduser newuser sudo #加入sudo组
    
  42. 从recover模式修改用户密码,进入recover模式后选择root进入shell

    mount -rw -o remount / #重载文件系统以修改 passwd username #设置用户密码

  43. 若添加用户后登陆后总是以sh做终端,可以更改/etc/passwd中该用户的默认shell为bash。

  44. 使用命令dpkg-reconfigure tzdata重新配置时区

  45. openbox下打开skype时聊天窗口总是在左上角,边框被到屏幕外了,这时使用Alt+左键同时用鼠标就可以拖动窗口了。具体用什么快捷键可以看openbox的rc.xml.

  46. 实用set path = ($path /add/a/path)更改tcsh的PATH环境变量

  47. 在命令行打开GUI程序显示Error: no display specified时可以试一下改变环境变量:export DISPLAY=localhost:0.0

  48. 在命令行调节麦克风音量到最大:amixer set Capture cap 99.

  49. zip解压乱码,可指定编码unzip -O gb2310 filename.zip

  50. 查看软件版本aptitude show pkg,查看软件安装位置dpkg -L pkg

  51. rsync 常用参数

     # 压缩
     -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
     -z, --compress 对备份的文件在传输时进行压缩处理
    
     #备份
     -b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。
     --backup-dir 将备份文件(如~filename)存放在在目录下。
     -suffix=SUFFIX 定义备份文件前缀
    
     #文件信息处理
     -L, --copy-links 想对待常规文件一样处理软链结
     -p, --perms 保持文件权限
     -t, --times 保持文件时间信息
    
     #哪些文件更新
     -u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
     --partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输
     --exclude=PATTERN 指定排除不需要传输的文件模式
     --include=PATTERN 指定不排除而需要传输的文件模式
     --exclude-from=FILE 排除FILE中指定模式的文件
     --include-from=FILE 不排除FILE指定模式匹配的文件
     -r, --recursive 对子目录以递归模式处理
    
     #信息输出
     -v, --verbose 详细模式输出
    
  52. 安装新库后设置库路径export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/new/pathsudo ldconfig刷新库

  53. 利用Nmap扫描网段内所有计算机22端口

     sudo nmap -sP -PI -PT 192.168.1.0/24 |awk '/report/{print $5}' |xargs -i sudo nmap -v -sS -p 22 {}
    
  54. 编译某个包时需要安装额外的依赖包,一个简单的方法是使用命令sudo apt-get build-dep pkg-name

  55. 利用vim打开某些含有BOM的文件时行头部可能出现一个<feff>这样的字符,利用如下命令删除

    sed -i ‘s/^\xEF\xBB\xBF//’ file.txt

  56. 为extX分区设置卷标名e2label /dev/sdX NEW-NAME

  57. 固定网卡的界面名称,修改udev规则即可。如在文件/lib/udev/rules.d/75-persistent-net-generator.rules中添加行SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="your:mac:address:here", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="what-ever-name-you-want"

  58. 通过base64 [-d]命令可以将二进制文件进行编解码,然后可以通过复制粘贴生成的文本文件实现文件传输。