赞
踩
- 局域网共享喇叭
- ----------------
- $>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文件.

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。