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
      
  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]命令可以将二进制文件进行编解码,然后可以通过复制粘贴生成的文本文件实现文件传输。