usage.txt-2

局域网共享喇叭
----------------
$>paprefs               #PulseAudio Preferences. 
$>pavucontrol           #Volume Control.

终端快捷键
----------------
SHIFT+CTRL+v               #终端复制.
SHIFT+CTRL+c               #终端粘贴.
SHIFT+CTRL+t               #新建标签页.
SHIFT+CTRL+w               #关闭标签页.
CTRL+PageUp                #前一标签页.
CTRL+PageDown              #后一标签页.
SHIFT+CTRL+PageUp          #标签页左移动.
SHIFT+CTRL+PageDown        #标签页右移动.
SHIFT+CTRL+n               #新建终端窗口.
SHIFT+CTRL+q               #关闭终端.
CTRL+w                     #向前删除一个字.
CTRL+u                     #从光标当前位置删除所有字符至行尾.
F11                        #终端全屏.
CTRL+0                     #原始大小.
SHFIT+CTRL++               #终端放大.     
CTRL+-                     #终端缩小.
HOME                       #快速将光标移动到行首.
END                        #快速将光标移动到行末.  

dpkg安装x86(i386)架构的软件
----------------
$>dpkg --print-architecture
$>dpkg --add-architecture amd64
$>dpkg --add-architecture i386 

关闭DEBIAN-swap分区
----------------
$>swapoff /dev/DEBIAN/swap_1           

Virtualbox 启动出错的解决办法
---------------
/etc/init.d/vboxdrv setup 

在当前目录中搜索并替换
----------------
$>find . -type f -name "configure" -print | xargs perl -pi -e 's/-O2/-O0/g'    #将当前目录下的所有configure中的-O2全部替换为-O0. 

编译DEBIAN源码
----------------
$>man dpkg-buildpackage
$>cd /path
$>dpkg-buildpackage -uc -us -j2 -rfakeroot                    #编译.dep安装包.
$>./debian/rules clean                                        #清理源代码树.
$>./debian/rules build                                        #构建程序.
$>./fakeroot debian/rules binary                              #构建二进制包.
$>./fakeroot debian/rules binary-arch                         #构建平台依赖二进制包.

使用平台编译选项
----------------
$>gcc `dpkg-buildflags --get CFLAGS` `dpkg-buildflags --get LDFLAGS` $sources 

改变./debian/rules环境变量
----------------
$>export DEB_CFLAGS_SET="-g -O0 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security" 
$>export DEB_CXXFLAGS_SET="-g -O0 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security"
$>dpkg-buildflags                                #查看当前设置的变量是否生效.
$>./debian/rules build 

调试eclipse
----------------
$>dpkg-source -x /home/vsftpd/web/nginx-1.2.1/apt/mirror/ftp.us.debian.org/debian/pool/main/e/eclipse/eclipse_3.8.0~rc4-1.dsc
$>cd eclipse-3.8.0~rc4/
$>export DEB_CFLAGS_SET="-g -O0 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security" 
$>export DEB_CXXFLAGS_SET="-g -O0 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security"
$>./debian/rules build                                          #编译eclipse.
$>cd build/eclipse-3.8.0-I20120502-2000-src/installation        #生成的文件.
$>./eclipse                                                     #运行.
$>gdbserver :1234 ./eclipse                                     #使用gdbserver启动调试.
$>symbol-file /path/build/eclipse-3.8.0-I20120502-2000-src/installation/eclipse   #Display Selected Console.

注意:创建eclipse的调试工程可以很方便的在源代码中打断点和监控或查看数据,New->C++ Project->Makefile project->Enpty Project->Linux Gcc,$PRJ->Properties->C/C++ General->Paths and Symbols->Source Location->Link Folder:选择/path/eclipse-3.8.0~rc4目录;Debug->Debug Configures...->C/C++ Remote Application->Using GDB (DSF) Manual Remote Debugging Launcher-Select othre...:勾选Use configuration specific settings->GDB (DSF) Manual Remote Debugging Launcher;C/C++ Remote Application->Main->Search Project..:选择eclipse执行程序即可,没有实际意义.C/C++ Remote Applicaton->Debugger->Connection:Type=TCP,Hostname or IP address=localhost,Port number=1234;然后在终端执行"cd build/eclipse-3.8.0-I20120502-2000-src/installation && gdbserver :1234 ./eclipse",Debug即可停在打在源代码中断点位置.

火狐浏览器
----------------
$>cd /path
$>dpkg-source -x /home/vsftpd/web/nginx-1.2.1/apt/mirror/ftp.us.debian.org/debian/pool/main/i/iceweasel/iceweasel_31.8.0esr-1~deb7u1.dsc
$>cd iceweasel-31.8.0esr
$>vi ./debian/browser.mozconfig.in
-----------
ac_add_options --enable-debug
ac_add_options --enable-cpp-rtti
ac_add_options --enable-valgrind
ac_add_options --disable-webrtc
ac_add_options --disable-optimize                             #屏蔽优化选项后webrtc(视频会议)编译的时候会出错,(--disable-webrtc)禁止编译webrtc. 

$>./debian/rules build
$>su
$>./debian/rules binary-indep                                 #构建平台依赖二进制包,经过测试能够生成iceweasel.
$>dpkg-buildpackage -uc -us -j2 -rfakeroot                    #编译.dep安装包.

终端调试iceweasel
----------------
$>sudo gdb ./iceweasel
$>source ~/.gdbinit
$>eval $(dbus-launch --sh-syntax)                             #解决"No D-BUS daemon running".
$>export DBUS_SESSION_BUS_ADDRESS                             #解决"No D-BUS daemon running".
$>export DBUS_SESSION_BUS_PID                                 #解决"No D-BUS daemon running".
$>export DBUS_SESSION_BUS_WINDOWID                            #解决"No D-BUS daemon running".

eclipse调试iceweasel
----------------
$>su
$>eval $(dbus-launch --sh-syntax)                             #解决"No D-BUS daemon running".
$>export DBUS_SESSION_BUS_ADDRESS                             #解决"No D-BUS daemon running".
$>export DBUS_SESSION_BUS_PID                                 #解决"No D-BUS daemon running".
$>export DBUS_SESSION_BUS_WINDOWID                            #解决"No D-BUS daemon running".
$>cd /path/iceweasel-31.8.0esr/build-browser/dist/bin
$>gdbserver :1234 ./iceweasel 
$>eclipse                                                     #Debug->C/C++ Application->Main,选择iceweasel程序;工程的创建请参考"调试eclipse->注意". 
$>source ~/.gdbinit                                           #Display Selected Console->[C/C++ Application] gdb.

解决"warning: not using untrusted file '.gdbinit'"
----------------
$>vi .gdbinit
-------------
python sys.path.append("/usr/share/gcc-4.7/python/");

$>source ~/.gdbinit 

GIMP图像处理软件
----------------
$>cd /path
$>dpkg-source -x /home/vsftpd/web/nginx-1.2.1/apt/mirror/ftp.us.debian.org/debian/pool/main/g/gimp/gimp_2.8.2-2+deb7u1.dsc
$>export DEB_CFLAGS_SET="-g -O0 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security" 
$>export DEB_CXXFLAGS_SET="-g -O0 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security"
$>cd gimp-2.8.2
$>./debian/rules build

注意:项目的开发与调试请参考“调试eclipse”. 

inkscape图像处理软件
----------------
$>cd /path
$>dpkg-source -x /home/vsftpd/web/nginx-1.2.1/apt/mirror/ftp.us.debian.org/debian/pool/main/i/inkscape/inkscape_0.48.3.1-1.3.dsc
$>vi ./inkscape-0.48.3.1/debian/rules                       #修改CFLAGS,CXXFLAGS选项即可.
$>cd inkscape-0.48.3.1
$>./debian/rules build
$>./debian/rules binary-indep  

注意:编译后的二进制文件存储在./src/inkscape. 

synergy-1.3.8通用编译选项
---------------
$>gcc -c -DSYSAPI_UNIX=1 -DHAVE_CONFIG_H -DWINAPI_XWINDOWS=1 -I ../../.. -I . -I ../arch -I ../base -I ../client -I ../common -I ../io -I ../mt -I ../net -I ../platform -I ../server -I ../synergy -I ../../lib/server x.cpp y.cpp z.cpp ...

注意:是从顶层的cmakefiles/Makefile2文件分析 + base目录下的Makefile分析综合得出来的选项. 

Kate高级编辑器
----------------
$>cd /path
$>dpkg-source -x /home/vsftpd/web/nginx-1.2.1/apt/mirror/ftp.us.debian.org/debian/pool/main/k/kate/kate_4.8.4-1.dsc
$>cd kate-4.8.4
$>./debian/rules build                              #obj-x86_64-linux-gnu/kate/app(Kate生成目录),obj-x86_64-linux-gnu/kwrite(Kwrite生成目录)

注意:这个项目是使用CMAKE进行工程管理的. 

开发GTK-3.0应用程序
----------------
`pkg-config --cflags gtkmm-3.0`                               #列出头文件.
`pkg-config --libs gtkmm-3.0`                                 #列出库文件.
`pkg-config --cflags --libs gtkmm-3.0`                        #列出头文件和库文件.
or
$>pkg-config --libs gtkmm-3.0
$>pkg-config --cflags gtkmm-3.0
$>pkg-config --cflags --libs gtkmm-3.0
$>gcc/g++ `pkg-config --cflags --libs gtkmm-3.0` prog.c/.cc
$>gcc/g++ `pkg-config --cflags gtkmm-3.0` `pkg-config --libs gtkmm-3.0` prog.c/.cc 

将输出内容以表格的形式显示出来
----------------
$>mount | column -t
$>cat /etc/passwd | column -t -s :

注意:由于mount内容中留了空格,所以输出的形式就美观了起来;那如果想要的分隔符是别的什么符号,比如说冒号(cat /etc/passwd),只需要使用 -s 参数指定分隔符就行了. 

重复执行一个命令直到它运行成功
----------------
$>while true; do ping -c 1 192.168.10.1 > /dev/null 2>&1 && break; done;

按内存资源的使用量对进程进行排序
----------------
$>ps aux | sort -rnk 4

按CPU资源的使用量对进程进行排序
----------------
$>ps aux | sort -rnk 3

检查机器架构
----------------
$>getconf LONG_BIT

在会话关掉以后继续运行程序
----------------
$>nohup ping -c 10 192.168.10.1
$>tail -f nohup.out

自动对任何命令回答Yes或者No
----------------
$>yes | apt-get update

对命令行会话进行记录
----------------
$>script
$>...
$>exit                        #所有敲写的内容保存到一个名为 typescriptscript 的文件中,然后在终端中查看即可.
$>cat ./typescript            #查看上面保存的命令操作.

TR命令
----------------
$>mount | tr 'a-z' 'A-Z' > out.txt        #将内容全部转换为大写.
$>mount | tr 'A-Z' 'a-z' > out.txt        #将内容全部转换为小写.

强大的xargs命令
----------------
$>find . -name *.png -type f -print | xargs tar -cvzf images.tar.gz   #搜索png文件然后对其进行压缩.
$>cat urls.txt | xargs wget                    #文件中有一个URL的列表并以不同的方式下载或者处理这些URL.
$>ls /etc/*.conf | xargs -i cp {} ~/Templates  

注意:如果命令需要中间过程的输出,只需要使用 {} 并结合 -i 参数就行了. 

查看GNOME控制中心版本信息
----------------
$>gnome-control-center --version returns

将网站输出为PDF
----------------
$>wkhtmltopdf https/http://url $name.pdf

CLION-IDE使用特性
----------------
注意:不能更新,否则激活不了;使用cmake管理工程,重构只对当前目录下的所有文件生效(这个可以使用eclipse来弥补). 

blender中文问题
----------------
注意:系统blender对中文支持不好,建议使用/home/backup/blender-2.63.tar.bz2中的blender. 

Linux系统使用建议
----------------
$>mkdir /data
$>ln -sf /data /home/$USER

注意:1.系统启动时需插上网线,否则在开机的时候不能自动登录或自动登录错误.2.用户的主目录应该尽量保持干净整洁并且不要放大的文件;大文件可以在根目录创建文件单独存放. 

Linux在没有显示器的情况下使用图形程序[转发整个GDM]
----------------  
$>X :12.0 vt12 2>&1 >/dev/null&                                          #按下CTRL+ALT+F1/[F1~F6],然后在终端输入当前命令;命令完成后需要按下CTRL+ALT+F1/[F1~F6]回车.
$>xterm -display :12.0 -e ssh -4 -C -c blowfish-cbc -X $USER@$IPSRV      #按下CTRL+ALT+F12输入密码即可.
or
$>xterm -display :12.0 -e ssh -4 -C -c blowfish-cbc -t -q -o Compression=yes -o CompressionLevel=9 -X hy@$1
$>gnome-session                                                          #执行当前命令即可进入GNOME图形系统,然后就可以安装本地的应用一样使用.
$>ibus-setup                                                             #启动ibus输入法,否则无法中文. 
$>vi .bashrc                                                             #配置环境变量.
-------------
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus 

eth0单网口多ip配置
----------------
allow-hotplug eth0
auto eth0
iface eth0 inet static
address 192.168.10.88
netmask 255.255.255.0
gateway 192.168.10.1

auto eth0:1
iface eth0:1 inet static
address 10.10.10.100
netmask 255.255.255.0 

Linux在没有显示器的情况下使用图形程序[转发界面程序]
----------------  
$>ssh -X $USER@$IPSRV
$>./eclipse                                                              #运行eclipse之后,界面将会在本地计算机显示;显示效果没有“Linux在没有显示器的情况下使用图形程序[转发整个GDM]”好,有些图标出不来.

注意:首先参考“开机进入字符界面”设置需要远程的机器;脚本请直接参考"/home/vsftpd/ssh"目录.

终端模拟器
----------------
$>tilda                               #下拉终端,需要进行设置才好用.

编译命令脚本并被错误日志
----------------
#!/bin/bash

#这条命令的作用是自动编译某个工程并记录在编译过程中所有错误.
#需要修改“cd /$SPATH”和"make all/target"

if [ ! -d "./.err"  ] ;
then
  mkdir ./.err
fi

if [ -f "./.err/errors"  ] ;
then  
  mv ./.err/errors ./.err/`date +%Y%m%d-%H.%M.%S.errors`
fi

cd /$SPATH
make all/target 1>./.err/errors 2>&1  #这里填写Makefile命令.
cat ./.err/errors

SVN搭建
----------------
$>mkdir -p /application/data                          #指定svn的数据存储路径
$>mkdir -p /application/passwd                        #指定svn的配置文件信息路径
$>svnserve -d -r /application/data                    #启动svn服务

$>svnadmin --help
$>svnadmin help create
$>svnadmin create /application/data/docs              #创建docs版本库
$>chmod -R 2777 /application/data/docs   

$>cd /application/data/docs/conf/
$>cp -p svnserve.conf svnserve.conf.default
$>vi svnserve.conf
--------
anon-access = none                                 //禁止匿名访问
auth-access = write                                //认证后有读的权限
password-db = /application/passwd/passwd           //指定密码文件
authz-db = /appplication/passwd/authz              //指定权限认证文件 

实际操作
----------------
$>svnadmin create /application/data/docs                            #svn版本库的创建.
$>ln -sf /application/passwd/passwd /application/data/docs/conf/
$>ln -sf /application/passwd/authz /application/data/docs/conf/
$>sudo svnserve -d -r /application/data/                            #启动.
$>svn co svn://localhost/docs --username hy --password 123456       #svn版本库签出. 

注意:"password-db","authz-db"避免每次创建版本库都配置用户名和密码.

$>cp -p authz passwd /application/passwd/
$>cd /application/passwd/
$>chmod 700 authz passwd
$>vi passwd
--------
USER = PASSWD
...

$>pkill svnserve                                         #重新启动svn服务
$>svnserve -d -r /application/data

$>svn --username=USER co svn://localhost/docs

注意:SVN在本系统中需要配合CLION,SVN版本选择1.6一起使用;否则功能不全无法使用.

终端BT下载工具
----------------
$>sudo mkdir -p /bt/data/temp && sudo chmod -R 4777 /bt/data/temp
$>sudo mkdir -p /bt/data/sessions && sudo chmod -R 4777 /bt/data/sessions
$>sudo mkdir -p /bt/data/download && sudo chmod -R 4777 /bt/data/download
$>sudo mkdir -p /home/hy/bt/ && sudo chmod -R 4777 /home/hy/bt/
$>vi ~/.rtorrent.rc
-------------
min_peers = 1
max_peers = 9999
peer_exchange = yes
use_udp_trackers = yes
directory = "/bt/data/temp"          
session = "/bt/data/sessions"        
schedule = low_diskspace,5,60,close_low_diskspace=1000M
schedule = watch_directory,5,5,load_start="/home/hy/bt/*.torrent"
system.method.set_key = event.download.finished,rm_torrent,"execute=rm,$d.get_tied_to_file="
system.method.set_key = event.download.finished,move_complete,"xecute=mv,-u,$d.get_base_path=,/bt/data/download;d.set_directory=/bt/data/download"

$>rtorrent                         #启动bt下载程序,假设"/home/hy/bt"存放着所有"*.torrent"文件.
CTRL+s                             #开始下载.
CTRL+d                             #停止下载.
CTRL+d,CTRL+d                      #移除torrent任务.
CTRL+q                             #退出.

注意:按下"Enter"键,即可出现底部窗口"load.normal",下一步输入torrent文件的名字.eg."xxxx.torrent"或者"/home/hy/bt/xxxx.torrent". 

项目学习规范
----------------
1.先编译后提交,改正错误后再编译然后提交.

如何安装帮助文档
----------------
$>su
$>synaptic                                               #使用"synaptic"安装帮助文档.
$>apt-cache search Documentation |grep -i xxx            #搜索需要的文档进行安装.

浏览器中的快捷键
----------------
CTRL+SHIFT+I                                             #快速打开开发者工具(使用Firefox和Google浏览器).
CTRL+-/+                                                 #减小/增大字体. 

PCB设计工具
----------------
$>gschem $NAME.sch                                       #创建$NAME.sch电路图,制作好电路图后关闭该文件;执行下面的命令为每个器件自动编号.
$>grenum $NAME.sch                                       #为每个器件自动编号,然后使用gschem重新打开$NAME.sch即可.
$>pcb-gtk                                                #pcb画图工具,印刷电路板布局设计.
$>gnucap                                                 #电路模拟仿真.
$>gtkwave                                                #显示电路仿真波形,查看在设计过程中生成的VCD仿真波形.

注意:
    gtkwave源代码目录"/home/vsftpd/gtkwave.tar.gz"
    $>./configure --prefix=/usr --with-tcl=/usr/lib/tcl8.5 --with-tk=/usr/lib/tk8.5            #gtkwave编译配置命令.

将程序放在后台执行
----------------
$>Command &
$>nohup Command
$>setsid Command
$>disown       

注意:参考"Linux环境编程-第六章 信号的产生".

Linux将IPAD+XServer XSDL作为扩展显示器
----------------
DEBIAN主机IP:192.168.43.143                              #本机连接IPAD热点网络,或者选择局域网.
IPAD主机IP  :192.168.43.1

$>vi /etc/inittab
----------
...
# The default runlevel.
id:5:initdefault:
...

在gnome2桌面环境中按下"CTRL+ALT+F1~F6"进入虚拟终端(eg.CTRL+ALT+F1),然后在终端中输入如下命令:
$>export DISPLAY=192.168.43.1:0
$>gnome-session&
$>synergyc -n Hy-system 192.168.43.143 &                                                  #命令完成后"CTRL+ALT+F7"返回gnome2桌面环境,鼠标向左移动即可进入IPAD屏幕中.

FPGA开发前的准备"ds-5"
----------------
$>xterm -e '/altera/embedded/ds-5_installer/install.sh --destination /home/hy/SoCEDS'     #安装"Eclipse for DS-5"程序.

注意:"Eclipse for DS-5"就选择"Quartus"的“license.dat”即可.

usb-blaster添加
----------------
$>lsusb
$>vi /etc/udev/rules.d/51-usb-blaster.rules
-----------
#USB-Blaster
SUBSYSTEM=="usb",ATTR{idVendor}=="09fb",ATTR{idProduct}=="6001",MODE="0666",SYMLINK+="usbblaster"
or
SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",SYSFS{idVendor}=="09fb",ATTR{idProduct}=="6001",MODE="0666",NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}",RUN+="/bin/chmod 0666 %c"

$>udevadm control --reload-rules  #如果还不行请继续执行下面的步骤.
$>mount --bind /dev/bus /proc/bus
$>ln -s /sys/kernel/debug/usb/devices /proc/bus/usb/devices #重启机器即可. 

开发C51程序
----------------
$>sdcc $SOURCE.c
$>packihx $SOURCE.ihx > $SOURCE.hex
$>hex2bin $SOURCE.hex                     #hex2bin程序路径"/home/vsftpd/hex2bin.tar.gz".
$>dmesg | tail
or
$>sdcc $SOURCE.c
$>packihx $SOURCE.ihx > $SOURCE.hex
$>objcopy -I ihex -O binary $SOURCE.hex $SOURCE.bin
$>dmesg | tail 

解压包含中文路径的压缩包
----------------
$>convmv -f GBK -t utf8 --notest -r .     #将GBK编码的文件名转化为UTF8编码,-r表示递归访问目录. 
注意:首先将压缩包的内容到当前目录,然后执行上面的命令即可.
or 
$>unar -e help                            #查看能用的字符编码列表.
$>unar -e GB18030 xxxx.zip                #解压包含中文路径的压缩包. 

文档转换
----------------
$>pandoc $file.md -o $file.docx             #将md文件转换成docx.
$>pandoc -s -o $file.html $file.md          #将md转换成html.

在Linux系统中备份磁盘
----------------
$>fdisk -l                                                               #这里需要关注的是"End"数据.
$>dd if=/dev/sd[a...z] of=/dev/sd[a+1...z+1]                             #全盘拷贝,eg>dd if=/dev/sdb of=/dev/sdb.
$>dd bs=512 count=$End+1 if=/dev/sd[a...z] of=$NAME.IMG                  #分区拷贝.
$>dd bs=512 count=$End+1 if=/dev/sd[a...z] |gzip -9 > $NAME.IMG.gz       #分区拷贝并压缩.
$>dd if=$NAME.IMG of=/dev/sd[a..z]                                       #系统还原.
$>gzip -c -d $NAME.IMG.gz | dd of=/dev/sd[a...z]                         #解压并进行系统还原.
$>watch -n 5 killall -USR1 dd                                            #查看拷贝进度. 

解决VMWARE启动虚拟机报错
----------------
$>cd /tmp
$>tar -xvf /usr/lib/vmware/modules/source/vmmon.tar
$>cd vmmon-only/
$>make
$>cp vmmon.ko /lib/modules/3.2.0-4-amd64/misc/
$>modprobe vmmon

$>cd /tmp
$>tar -xvf /usr/lib/vmware/modules/source/vmci.tar
$>cd vmci-only
$>make
$>cp vmci.ko /lib/modules/3.2.0-4-amd64/misc/
$>modprobe vmci 

$>tar -xvf /usr/lib/vmware/modules/source/vmnet.tar
$>cd vmnet-only
$>make
$>cp vmnet.ko /lib/modules/3.2.0-4-amd64/misc/
$>modprobe vmnet

rdesktop远程rdp/windows桌面
----------------
$>su
$>rdesktop -f -N -5 -K -r lspci -r clipboard:PRIMARYCLIPBOARD -r sound:local -r disk:HOME=/home -r disk:TMP=/tmp -x lan -u $USR -p $PWD $SRV &                #使用USR/PWD登录SRV,"-r clipboard:PRIMARYCLIPBOARD"共享剪切板,"-r sound:local"启动本地音频设备.
or
$>rdesktop -r -N -5 -K -r lspci clipboard:PRIMARYCLIPBOARD -r sound:local -r disk:HOME=/home -r disk:TMP=/tmp -a 32 -g $WIDTHx$HEIGHT -x lan -u $USER -p $PWD $SRV_IP &
$>cd ~
$>vi ~/.bashrc
---------------
alias desktop="rdesktop -f -r clipboard:PRIMARYCLIPBOARD -r sound:local -r disk:HOME=/home -r disk:TMP=/tmp -x lan -u $USR -p $PWD $SRV &"

注意:CTRL+ALT+ENTER退出全屏模式,使用rdesktop远程windows比vinagre体验性要好. 

wireshark过滤
----------------
$>ip.[dst|src] [==|>|<|>=|<=] $ip    #过滤源/目的ip.
$>tcp.port [==|>|<|>=|<=] $port      #把源端口和目的端口为$port都过滤出来.
$>tcp.srcport ...                    #只过滤目的端口.
$>tcp.dstport ...                    #只过滤源端口.

注意:关键字ip,http,tcp他们都可以在过滤器中搜索到;ip->IPV4/IPV6,http->HTTP-Hypertext Transfer Protocol,TCP->Transmission Control Protocol. 

wireshark抓包并使用data进行分析与过滤
-------------------
$>tcpdump -i $ethx -w xx_name.pcap -s 1000           #-i:监听网络接口"$ethx",-w:截取的数据保存到"xx_name.pcap",-s:从截取的数据包中每个数据包最多读取最开始的1000个字节.
or
$>tcpdump -i $ethx -w xx_name.pcap
$>wireshark-filter:data.data[$offset:1/2] == xxxx    #通过数据的方式过滤数据包.

注意:data数据的过滤条件data.data[x:y]表达式中参数x,y的意义分别为:x-指定的字节在data中从头开始的偏移,y-从data中的第x个字节开始选取y个字节作为过滤条件"y<=2"(y必须小于等于2);$offset"为在"data"中所处的位置,在过滤数据的时候"offset:y";y必须<=2,所以offset:1/2分解为[offset:1]或[offset:2]."

Find根据权限查找
----------------
-perm mode                   #精确查找
-perm -mode                  #完全包含此mode时才可以匹配.
-perm +mode or /mode         #+mode or /mode任何一位匹配即可.
-executable ! -path ".*"     #!的作用是排除其后-path所跟的目录. 
eg.
$>find / -type f -perm /0001 -exec ls -alh {} \;       #查找具有可以执行权限的文件.
$>find / -type f -perm +0001 -exec ls -alh {} \;       #查找具有可以执行权限的文件.

注意:u+s->4000,g+s->2000;u+s g+s->6000;u+s g+s u+rw->6600.

Find查找指定文件内容包含特定关键字
----------------
$>find . -type f -name "*.c" -exec awk 'BEGIN{ FS="\n";RS="" }'/关键字1/&&/关键字2/... {print FILENAME}' {} \;
$>find . -type f -name "*.c" -exec awk 'BEGIN{ FS="\n";RS="" }'/关键字1/||/关键字2/... {print FILENAME}' {} \;
eg.
$>find . -type f -name "*.c" -exec awk 'BEGIN{ FS="\n";RS="" } /webs/&&/web/ {print FILENAME}' {} \;   #查找包含"web"和"webs"的文件. 

Tar创建压缩包
----------------
$>tar -czvf $file.tar.gz /$dir           #创建压缩包 
or
$>tar -cvf $file.tar /$dir 
$>tar -uvf $file.tar /$dir               #更新目录.
$>tar -uvf $file.tar.gz /$dir/$files     #更新某个文件.
$>tar -czvf $file.tar.gz $file.tar       #压缩.
1.$>tar -xzvf $file.tar.gz               #下面是对应的解压步骤(1,2).
2.$>tar -xvf $file.tar

注意:只有使用“tar -cvf $file.tar /$dir”创建的压缩包才可以更新;tar.gz一般是在发布的时候才创建.

Tar排除指定类型的文件
----------------
$>tar -cvf $FILENAME.tar.gz /$dir --exclude *.xx --exclude ...        #排除.xx类型的文件或者更多.

eg.
$>tar -cvf file.tar.gz /$dir --executable *.o --executable *.txt      #排除.o类型的文件. 

sshfs挂载
----------------
sshfs -o allow_other -o sshfs_sync $USR@$IP:$PATH  $MNT

sshfs卸载
----------------
$>fusermount -u $MNT             #'$MNT'为挂载点.

eg.
$>fusermount -u /mnt/lfs 

Tar排除指定目录
----------------
$>tar -cvf $FILENAME.tar.gz /$dir --exclude /$path --exclude ...   

Tar列出所有文件
----------------
$>tar -tf $file.tar.gz

Tar列出压缩包的顶层文件
----------------
$>tar -tf $file.tar.gz | awk -F "/" '{print $1}'| sort | uniq
$>tar -tf $file.tar.gz | awk -F "/" '{print $1}'| tail -n 1
$>tar -tf $file.tar.gz | awk -F "/" '{print $1}'| sed -n '1p'      

Tar解压部分文件
----------------
$>tar -xvf $file.tar.gz $foder/file.xx           #解压单个file.xx文件.
$>tar -xvf $file.tar.gz $foder/*.xx.*            #解压多个*.xx.*文件.
$>tar -xvf $file.tar.gz $foder                   #解压$foder目录.
$>tar -xvf $file.tar.gz $foder/*.xx.* -C /$dir   #解压多个*.xx.*文件并输出到$dir目录. 

单元覆盖率
----------------
$>gcc -fprofile-arcs -ftest-coverage -lgcov $NAME.c 
or
$>gcc --coverage $NAME.c                                                                    #在编译框架中使用"--coverage"更方便和快捷.
$>./$NAME.out

export GCOV_PREFIX=.
export GCOV_PREFIX_STRIP=$NUM                                                               #eg.编译路径为"/path/src",并且所有的可执行文件和“.gcno”都在"/path/src"下面则$NUM为“2”,如果".gcno","$NAME.out"在"/path"下面则“$NUM”为3.
$>lcov --capture --directory . --output-file $NAME.info --test-name $NAME                   #生成.info文件.
$>genhtml $NAME.info --output-directory $PATH -title $TITLE_NAME --show-details --legend    #以HTML的方式输出单元覆盖率文档.

注意:总结“GCOV_PREFIX_STRIP”变量,以编译路径"/path/src"为例($NUM=2,eg."/path/project/src"则$NUM=3),".gcno","$NAME.out"在编译路径的上一级目录中则"$NUM"的值为$NUM=$NUM+1;".gcno","$NAME.out"在编译路径的上二级目录中则"$NUM"的值为$NUM=$NUM+2.或者不使用export变量.

Texlive更新
----------------
$>tlmgr update --self
$>tlmgr update --all           #Texlive更新.
$>tlmgr show <package>         #安装失败的包-第一步.
$>tlmgr install <package>      #安装失败的包-第二步.

注意:失败后请多次重试. 

ssh克隆会话
----------------
$>vi ~/.ssh/config
-------------
Host *
ControlMaster auto
ControlPath /tmp/%r@%h:%p

作用:
  免去多次使用ssh登录远程主机过程中多次输入密码的麻烦.
  
注意:
  1.退出所有终端 
  2.使用ssh远程登录主机后再次使用ssh登录就无须再次输入密码.

电路学习工具
----------------
$>Fritzing      #非常适合教育.
$>kicad

Linux配置网桥
----------------
1.ip列出物理口
------------
$>ip -f inet a s

2.更新"/etc/network/interface"文件
------------
$>vi /etc/network/interface
----------
source /etc/network/interface.d/*

3.配置网桥(br0)
------------
$>vi /etc/network/interface.d/br0
---------
auto br0
iface br0 inet static
address 192.168.10.88               #根据具体情况进行修改.
broadcast 192.168.10.255            #根据具体情况进行修改.
netmask 255.255.255.0              
gateway 192.168.10.254              #根据具体情况进行修改.

dns-nameservers 192.168.10.254      #根据具体情况进行修改.
bridge_ports eth0 eth1              #根据具体情况进行修改.
bridge_stp off
bridge_waitport 0 
bridge_fd 0

注意:这里的配置经过测试是OK的;修改完后eth0的ip为:192.168.10.88,其他服务正常通过这个ip来使用.

4.重启并测试
------------
$>ip a s
$>ip r 
$>sudo brctl show
$>ping -c 2 $serv_ip 

TCPDump抓包
------------------
$>tcpdump -i $ETH_no. -w tcpdump_xxx.pcap -s 1000

注意:tcpdump_xxx.pcap文件使用Wireshark工具打开查看并进行过滤. 

用nc做聊天工具
-------------------
$>ncat -l 8080                                     #在服务端运行这条命令.
$>ncat $serv_ip                                    #在远程客户端主机上运行这条命令,之后开发发送消息;这些消息会在服务器终端上显示出来.

$>ncat -l 8080 | ncat $proxy_ip 80                 #所有发往服务器8080端口的连接都会自动转发到$proxy_ip上的80端口,此时数据只能被单向传输.

$>mkfifo 2way                                      #创建管道,下面解决双向传输.
$>ncat -l 8080 0<2way | ncat $proxy_ip 80 1>2way   

用nc拷贝文件
-------------------
$>ncat -l 8080 > $FILE_NAME                        #在接收主机上启动nc,并进入监听模式.
$>ncat $cli_ip --send-only < $FILE_NAME            #在拷贝的主机上运行这条命令.

用nc创建后门
-------------------
$>ncat -l 10000 -e /bin/bash                       #客户端只要连接到服务器上的10000端口就能通过bash获取系统的完整访问权限. 
$>ncat $serv_ip 10000  

用nc端口转发
-------------------
$>ncat -u -l 80 -c 'ncat -u -l 8080'               #所有连接到80的端口的连接都会转发到8080端口.

用nc设置连接超时
-------------------
$>ncat -w 10 $serv_ip 8080                         #导致连接10秒后终止,只能用于客户端.

用nc强制nc待命
-------------------
$>ncat -l -k 8080                                  #即使客户端的连接断开了,服务端也依然处于待命状态.

Linux将文件分割成不同的大小
-------------------
$>split -b 20M $FILE_NAME                                                     #分割出来的大小相似(eg.20M),尺寸单位缩写K,M,G,T,P,E,Z,Y等.
$>split -a 3 -d $FILE_NAME $prefix_name                                       #-a:控制编号的数字位置.
$>cat $prefix_name* > $FILE_NAME                                              #将分割后的文件合并.

parallel用法
-------------------
$>list | parallel command                                                     #parallel基本用法.
$>find . -type f -name "*.log" | parallel
$>find . -type f -name "*.log" | parallel gzip {}
$>find . -type f -name "*.jpg" -exec cjpeg -outfile LoRes/{} {} ';'           #找出所有.jpg文件,然后通过cjpeg对其进行图像压缩.
$>find . -type f -name "*.jpg" | parallel cjpeg -outfile LoRes/{} {}    
$>for i in {1..100}; do dd if=/dev/urandom of=file-$i bs=1MB count=10; done   #所及创建了100个大约1GB的文件.
$>find . -type f -name "file*" -exec gzip {} ';'
$>find . -type f -name "file*" | parallel gzip {}                             #parallel与gzip连用.

解决QT中文输入法的问题
----------------
$>export QT_IM_MODULE=ibus
$>qtcreator

注意:文件的编码需要设置为UTF-8否则依然无法输入中文.

打开终端和使用'sshpass'自动输入密码进行远程登录
-------------------
$>gnome-terminal --hide-menubar --title="$TITLE" --geometry=$WIDTHX$HEIGHT+$X+$Y -x sshpass -p $PWD ssh $USER@$SRV_IP &   #eg.>geometry=100X80+0+0 宽100,高80,距离左边0px,距离上边0px.
$>gnome-terminal --hide-menubar --title="$TITLE" --geometry=$WIDTHX$HEIGHT+$X+$Y -x bash --rcfile /$PATH/.bashrc      &   #启动本地终端bash并指定初始化资源文件为“/$PATH/.bashrc”.

注意:在工作当中可以将其写入脚本. 

使用"PS-GREP"的时候排除"grep"自身
-------------------
$>ps -ef | grep -i $prog_name | grep -v grep | awk '{print $2}'   
$>ps -ef | grep -i $prog_name | grep -v grep | awk '{print $2}' | awk BEGIN{RS=EOF}'{gsub(/\n/,",");print}'

GDB中直接附加到进程调试技巧
-------------------
vi debug.sh 
-------------
#!/bin/bash 

#杀死"$other_prog_name"进程
kill -9 $(ps -ef |grep -i $other_prog_name |grep -v grep|awk '{print $2}') 2 >/dev/null

#获取需要调试的进程ID.
PROG_PID=$(ps -ef | grep -i $prog_name | grep -v grep | awk '{print $2}')
echo $PROG_PID

#导出环境变量
export LD_LIBRARY_PATH=$PROG_LD_LIBRARY_PATH:$LD_LIBRARY_PATH

#"GDB"附加到进程进行调试
gdb -x /path/debug.cfg -p $PROG_PID

vi debug.sh 
-------------
#!/bin/bash 

#杀死多个"$other_prog_name"进程
for i in $(ps -ef | grep -i $other_prog_name | grep -v grep | awk '{print $2}' | awk BEGIN{RS=EOF}'{gsub(/\n/," ");print}'); 
do
 kill -9 $i 2 >/dev/null
done

#获取需要调试的进程ID.
PROG_PID=$(ps -ef | grep -i $prog_name | grep -v grep | awk '{print $2}')
echo $PROG_PID

#导出环境变量
export LD_LIBRARY_PATH=$PROG_LD_LIBRARY_PATH:$LD_LIBRARY_PATH

#"GDB"附加到进程进行调试
gdb -x /path/debug.cfg -p $PROG_PID

GDB中直接附加到进程调试技巧
-------------------
vi debug.sh 
-------------
#!/bin/bash 

#文件后缀.
PREFIX=`date +%Y%m%d-%H:%M:%S.txt`

#整个环境启动
#ENV-START 
cnt=`cat /tmp/env_prog`                     #环境启动标识.

let cnt=$cnt+1
echo $cnt > /tmp/env_prog
#ENV-END

if [ $cnt -ge 1  ]
then 
    #需要启动的内容,下面添加启动脚本即可.
    #...
else 
    #需要干掉进程,下面添加杀死进程的脚本即可.
    #...
fi

#备份前面调试日志和命令历史记录.
mkdir -p ./debug
mkdir -p ./debug/.tmp
touch ./debug/debug.cfg                     #创建debug.cfg.
touch ./debug/breakpoints                   #创建breakpoints.
touch ./debug/xdebug.cfg
touch ./debug/xbreakpoints
touch ./debug/.editing

#ENV-START                                  #开发中或已发布调试标识.
eflag=`cat ./debug/.editing`
#ENV-END

if [ $eflag -ge 1  ]
then                                        #调试正在开发的代码.
    mv ./debug/.glog ./debug/.tmp/glog_$PREFIX
    mv ./debug/.ghistory ./debug/.tmp/ghistory_$PREFIX
else                                        #调试已发布代码.
    mv ./debug/.glog ./debug/glog_$PREFIX
    mv ./debug/.ghistory ./debug/ghistory_$PREFIX
fi

#杀死多个"$other_prog_name"进程
for i in $(ps -ef | grep -i $other_prog_name | grep -v grep | awk '{print $2}' | awk BEGIN{RS=EOF}'{gsub(/\n/," ");print}'); 
do
 kill -9 $i 2 >/dev/null
done

#获取需要调试的进程ID.
PROG_PID=$(ps -ef | grep -i $prog_name | grep -v grep | awk '{print $2}')
echo $PROG_PID

#导出环境变量.
export LD_PRELOAD=/path/:$LD_PRELOAD        #HOOK.                   
export LD_LIBRARY_PATH=$PROG_LD_LIBRARY_PATH:$LD_LIBRARY_PATH

if [ $eflag -ge 1  ]
then                                        #调试正在开发的代码.
    #"GDB"附加到进程进行调试.
    gdb -q -x /path/debug/debug.cfg -p $PROG_PID
else                                        #调试已发布代码.
    #"GDB"附加到进程进行调试.
    gdb -q -x /path/debug/xdebug.cfg -p $PROG_PID
fi

vi ./debug/debug.cfg                        #常用调试选项.
-------------
set confirm off
set pagination off
set print address on
set print array on
set print elements 0
set print pretty on
set print array-indexes on
set print union on
set print object on
set print vtbl on
set logging on
set logging overwrite off
set logging file .glog
set history filename .ghistory
set history save on
source /path/debug/breakpoints            #断点文件.

vi ./debug/xdebug.cfg                     #常用调试选项.
-------------
set confirm off
set pagination off
set print address on
set print array on
set print elements 0
set print pretty on
set print array-indexes on
set print union on
set print object on
set print vtbl on
set logging on
set logging overwrite off
set logging file .glog
set history filename .ghistory
set history save on
source /path/debug/xbreakpoints        #断点文件.

注意:"GDB"脚本与配置参考"/usr/share/doc/gdb",可以利用HOOK反复练习功能代码的实现机制.

GDB调试框架
-------------------
$>vi ~/.gcfg
-------------
...
set substitute-path /$PATH/$MNT_/$PATH/$HOME/    #在调试嵌入式设备时指定源代码所在的目录,eg."/$PATH/$MNT/src" and "/$PATH/$HOME/src".
source /$PATH/breakpoints                        #如何方便则如何设置.
...

$>vi /$PATH/breakpoints
-------------
...
b ...
...

注意:注释使用"#".

$>vi .profile
-------------
...
alias g="cd /$PATH && gdb -x ~/.gcfg $PROG"
... 

将镜像还原到SD卡
----------------
$>ddrescue -D --force $IMG /dev/$SDX 

Linux制作USB系统启动盘
----------------
$>mkfs.vfat /dev/sdx -I           #将U盘(/dev/sdx)格式为vfat/fat32格式.
$>dd if=/path/x.iso of=/dev/sdx   #写入系统iso文件. 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胡致云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值