ubuntu基础知识与技巧

2023-05-16

root用户与超级用户的切换

(1)  sudo -i

(2)  sudo su

(3)  su root

安装升级

查看软件xxx安装内容


dpkg -L xxx 
  

查找软件库中的软件


apt-cache search 正则表达式
或
aptitude search 软件包
  

显示系统安装包的统计信息


apt-cache stats
  

显示系统全部可用包的名称


apt-cache pkgnames
  

显示包的信息


apt-cache show k3b
  

查找文件属于哪个包


dpkg -S filename
apt-file search filename
  

查看已经安装了哪些包


dpkg -l
  

也可用


dpkg -l | less
  

翻页查看

查询软件xxx依赖哪些包


apt-cache depends xxx
  

查询软件xxx被哪些包依赖


apt-cache rdepends xxx
  

增加一个光盘源


sudo apt-cdrom add
  

系统更新


sudo apt-get update (这一步更新包列表)
  

sudo apt-get dist-upgrade (这一步安装所有可用更新)
或者
sudo apt-get upgrade (这一步安装应用程序更新,不安装新内核等)
  

清除所有已删除包的残馀配置文件


dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P 
  

如果报如下错误,证明你的系统中没有残留配置文件了,无须担心。


dpkg: --purge needs at least one package name argument

Type dpkg --help for help about installing and deinstalling packages [*];
Use `dselect' or `aptitude' for user-friendly package management;
Type dpkg -Dhelp for a list of dpkg debug flag values;
Type dpkg --force-help for a list of forcing options;
Type dpkg-deb --help for help about manipulating *.deb files;
Type dpkg --license for copyright license and lack of warranty (GNU GPL) [*].

Options marked [*] produce a lot of output - pipe it through `less' or `more' !

 


编译时缺少h文件的自动处理


sudo auto-apt run ./configure
  

查看安装软件时下载包的临时存放目录


ls /var/cache/apt/archives
  

备份当前系统安装的所有包的列表


dpkg --get-selections | grep -v deinstall > ~/somefile
  

从上面备份的安装包的列表文件恢复所有包


dpkg --set-selections < ~/somefile
sudo dselect
  

清理旧版本的软件缓存


sudo apt-get autoclean
  

清理所有软件缓存


sudo apt-get clean
  

删除系统不再使用的孤立软件


sudo apt-get autoremove
  

如果使用


sudo apt-get autoremove --purge
  

的话会把这些孤立软件的残留配置文件也一并移除

查看包在服务器上面的地址


apt-get -qq --print-uris download 软件包名称 | cut -d\' -f2
  

彻底删除Gnome


sudo apt-get --purge remove liborbit2
  

彻底删除KDE


sudo apt-get --purge remove libqt3-mt libqtcore4
  

一键安装 LAMP 服务


sudo tasksel install lamp-server
  

删除旧内核


sudo aptitude purge ~ilinux-image-.*\(\!\(`uname -r`\|generic-.*\)\)
  

导入ppa源的key值


#W: GPG签名验证错误: http://ppa.launchpad.net jaunty Release: 由于没有公钥,下列签名无法进行验证: NO_PUBKEY 5126890CDCC7AFE0
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 5126890CDCC7AFE0 #5126890CDCC7AFE0替换为你需要导入的Key值
  

增加 add-apt-repository 命令


sudo apt-get install software-properties-common
  

增加一个ppa源


sudo add-apt-repository ppa:user/ppa-name  
#使用 ppa 的地址替换 ppa:user/ppa-name
  

添加163镜像源


sudo add-apt-repository "deb http://mirrors.163.com/ubuntu/ `lsb_release -cs` main restricted universe multiverse"
sudo add-apt-repository "deb http://mirrors.163.com/ubuntu/ `lsb_release -cs`-updates main restricted universe multiverse"
sudo add-apt-repository "deb http://mirrors.163.com/ubuntu/ `lsb_release -cs`-security main restricted universe multiverse"
  

系统升级

  1. 这里指的是版本间的升级,例如 9.04=>10.04。
  2. 使用该升级方式通常需要使用 backports 源。

sudo apt-get update
sudo apt-get install update-manager-core
sudo do-release-upgrade
  

系统

查看内核


uname -a
  

查看系统是32位还是64位


#查看long的位数,返回32或64
getconf LONG_BIT
#查看文件信息,包含32-bit就是32位,包含64-bit就是64位
file /sbin/init
  

或者使用


uname -m
  

查看Ubuntu版本


lsb_release -a
或 cat /etc/lsb-release
  

查看内核加载的模块


lsmod
  

查看PCI设备


lspci
  

查看USB设备


lsusb 

#加参数 -v 可以显示USB设备的描述表(descriptors)
lsusb -v
  

查看网卡状态


sudo apt-get install ethtool 
sudo ethtool eth0
  

激活网卡的 Wake-on-LAN


sudo apt-get install wakeonlan
或 sudo ethtool -s eth0 wol g
  

查看CPU信息


cat /proc/cpuinfo
  

显示当前硬件信息


sudo lshw
  

查看内存型号


sudo dmidecode -t memory
  

获取CPU序列号或者主板序列号


#CPU ID
sudo dmidecode -t 4 | grep ID
#Serial Number
sudo dmidecode  | grep  Serial
#CPU
sudo dmidecode -t 4
#BIOS
sudo dmidecode -t 0
#主板:
sudo dmidecode -t 2
#OEM:
sudo dmidecode -t 11
  

显示当前内存大小


free -m |grep "Mem" | awk '{print $2}'
  

查看硬盘温度


sudo apt-get install hddtemp
sudo hddtemp /dev/sda
  

显示系统运行时间


uptime
  

查看系统限制


ulimit -a
  

查看内核限制


ipcs -l
  

查看当前屏幕分辨率


xrandr
  

硬盘

查看块设备


lsblk
  

查看硬盘的分区


sudo fdisk -l
  

硬盘分区


#危险!小心操作。
sudo fdisk /dev/sda
  

硬盘格式化


#危险!将第一个分区格式化为 ext3 分区, mkfs.reiserfs mkfs.xfs mkfs.vfat
sudo mkfs.ext3 /dev/sda1
  

硬盘检查


#危险!检查第一个分区,请不要检查已经挂载的分区,否则容易丢失和损坏数据
sudo fsck /dev/sda1
  

硬盘坏道检测


sudo badblocks -s  -v -c 32 /dev/sdb
#得到坏的块后,使用分区工具隔离坏道。
  

分区挂载


sudo mount -t 文件系统类型 设备路经 访问路经 
#常用文件类型如下: iso9660 光驱文件系统, vfat fat/fat32分区, ntfs ntfs分区, smbfs windows网络共享目录, reiserfs、ext3、xfs Linux分区
#如果中文名无法显示尝试在最後增加 -o nls=utf8 或 -o iocharset=utf8 
#如果需要挂载後,普通用户也可以使用,在 -o 的参数後面增加 ,umask=022 如:-o nls=utf8,umask=022
  

分区卸载


sudo umount 目录名或设备名
  

只读挂载ntfs分区


sudo mount -t ntfs -o nls=utf8,umask=0 /dev/sdb1 /mnt/c
  

可写挂载ntfs分区


sudo mount -t ntfs-3g -o locale=zh_CN.utf8,umask=0 /dev/sdb1 /mnt/c
  

挂载fat32分区


sudo mount -t vfat -o iocharset=utf8,umask=0 /dev/sda1 /mnt/c
  

挂载共享文件


sudo mount -t smbfs -o  username=xxx,password=xxx,iocharset=utf8 //192.168.1.1/share /mnt/share
  

挂载ISO文件


sudo mount -t iso9660 -o loop,utf8 xxx.iso /mnt/iso
  

查看IDE硬盘信息


sudo hdparm -i /dev/sda
  

查看软raid阵列信息


cat /proc/mdstat
  

参看硬raid阵列信息


dmesg |grep -i raid
cat /proc/scsi/scsi
  

查看SATA硬盘信息


sudo hdparm -I /dev/sda
或
sudo apt-get install blktool
sudo blktool /dev/sda id
  

查看硬盘剩余空间


df
  

df --help 显示帮助

查看目录占用空间


du -hs 目录名
  

闪盘没法卸载


sync
fuser -km /media/闪盘卷标
  

使用文件来增加交换空间


#创建一个512M的交换文件 /swapfile
sudo dd if=/dev/zero of=/swapfile bs=1M count=512 
sudo mkswap /swapfile
sudo swapon /swapfile
#sudo vim /etc/fstab #加到fstab文件中让系统引导时自动启动
/swapfile swap swap defaults 0 0
  

查看硬盘当前读写情况


# 首先安装 sysstat 包
sudo apt-get install sysstat
#每2秒刷新一次
sudo iostat -x 2
  

测试硬盘的实际写入速度


dd if=/dev/zero of=test bs=64k count=512 oflag=dsync
  

进程

查看当前的内存使用情况


free
  

连续监视内存使用情况


watch  -d free
# 使用 Ctrl + c 退出
  

动态显示进程执行情况


top
top指令运行时输入H或?打开帮助窗口,输入Q退出指令。
  

查看当前有哪些进程


ps -AFL
  

查看进程的启动时间


ps -A -opid,stime,etime,args
  

查看目前登入用户运行的程序


w
  

查看当前用户程序实际内存占用,并排序


ps -u $USER -o pid,rss,cmd --sort -rss
  

统计程序的内存耗用


ps -eo fname,rss|awk '{arr[$1]+=$2} END {for (i in arr) {print i,arr[i]}}'|sort -k2 -nr
  

按内存从大到小排列进程


ps -eo "%C  : %p : %z : %a"|sort -k5 -nr
  

列出前十个最耗内存的进程


ps aux | sort -nk +4 | tail
  

按cpu利用率从大到小排列进程


ps -eo "%C  : %p : %z : %a"|sort  -nr
ps aux --sort -pcpu |head -n 20
  

查看当前进程树


pstree
  

中止一个进程


kill 进程号(就是ps -A中的第一列的数字)
或者 killall 进程名
  

强制中止一个进程(在上面进程中止不成功的时候使用)


kill -9 进程号
或者 killall -9 进程名
  

图形方式中止一个程序


xkill 出现骷髅标志的鼠标,点击需要中止的程序即可
  

 

查看进程打开的文件


lsof -p 进程的pid
  

统计进程打开的文件数并排序


lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr
  

显示开启文件abc.txt的进程


lsof abc.txt 
  

显示22端口现在运行什么程序


lsof -i :22 
  

显示nsd进程现在打开的文件


lsof -c nsd
  

在後台运行程序,退出登录後,并不结束程序


nohup 程序 &
#查看中间运行情况 tail nohup
  

在后台运行交互式程序,退出登录后,并不结束程序


sudo apt-get install screen
screen vim a.txt
#直接退出后使用 
screen -ls   # 1656.pts-0.ubuntu   (Detached)
screen -r 1656  #恢复
#热键,同时按下Ctrl和a键结束后,再按下功能键
C-a ?	#显示所有键绑定信息
C-a w	#显示所有窗口列表
C-a C-a	#切换到之前显示的窗口
C-a c	#创建一个新的运行shell的窗口并切换到该窗口
C-a n	#切换到下一个窗口
C-a p	#切换到前一个窗口(与C-a n相对)
C-a 0..9	#切换到窗口0..9
C-a a	#发送 C-a到当前窗口
C-a d	#暂时断开screen会话
C-a k	#杀掉当前窗口
  

在后台运行交互式程序,退出登录后,并不结束程序


tmux 进入后再运行其它命令
tmux attach #恢复
#热键,同时按下Ctrl和b键结束后,再按下功能键
C-b c	#创建一个新的运行shell的窗口并切换到该窗口
C-b n	#切换到下一个窗口
C-b p	#切换到前一个窗口(与C-a n相对)
C-b 0..9	#切换到窗口0..9
C-b d       #暂时断开会话
C-b &	#杀掉当前窗口
  

详细显示程序的运行信息


strace -f -F -o outfile <cmd>
  

增加系统最大打开文件个数


#ulimit -SHn
sudo vim /etc/security/limits.conf
文件尾追加 
* hard nofile 4096
* soft nofile 4096
  

sudo vim /etc/pam.d/su
将 pam_limits.so 这一行注释去掉 
重起系统
  

清除僵尸进程


ps -eal | awk '{ if ($2 == "Z") {print $4}}' | xargs sudo kill -9
  

将大于120M内存的php-cgi都杀掉


ps -eo pid,fname,rss|grep php-cgi|grep -v grep|awk '{if($3>=120000) print $1}' | xargs sudo kill -9
  

Linux系统中如何限制用户进程CPU占用率


renice +10 `ps aux | awk '{ if ($3 > 0.8 && id -u $1 > 500) print $2}'` 
#或直接编辑/etc/security/limits.conf文件。  

网络

根据IP查网卡地址


arping IP地址
  

根据IP查电脑名


nmblookup -A IP地址
  

查看当前IP地址


ifconfig eth0 |awk '/inet/ {split($2,x,":");print x[2]}'
  

查看当前外网的IP地址


w3m -no-cookie -dump www.ip138.com/ip2city.asp|grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'
w3m -no-cookie -dump ip.loveroot.com|grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'
curl ifconfig.me
  

查看当前监听80端口的程序


lsof -i :80
  

查看当前网卡的物理地址


ifconfig eth0 | head -1 | awk '{print $5}'
  

或者


cat /sys/class/net/eth0/address
  

同一个网卡增加第二个IP地址


#在网卡eth0上增加一个1.2.3.4的IP:
sudo ifconfig eth0:0 1.2.3.4 netmask 255.255.255.0
#删除增加的IP:
sudo ifconfig eth0:0 down
  

立即让网络支持nat


echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -I POSTROUTING -j MASQUERADE
  

查看路由信息


netstat -rn
sudo route -n
  

手工增加一条路由


sudo route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1
  

手工删除一条路由


sudo route del -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1
  

修改网卡MAC地址的方法


sudo ifconfig eth0 down #关闭网卡
sudo ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE #然后改地址
sudo ifconfig eth0 up #然后启动网卡
  

永久改地址方法


sudo gedit /etc/network/interfaces
  

在 iface eth0 inet static 后面添加一行:


pre-up ifconfig eth0 hw ether 01:01:01:01:01:01
  

配置文件应该像如下


iface eth0 inet static
pre-up ifconfig eth0 hw ether 01:01:01:01:01:01
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
  

最后是 logout 或者reboot

统计当前IP连接的个数


netstat -na|grep ESTABLISHED|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r -n
netstat -na|grep SYN|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r -n
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
  

统计当前所有IP包的状态


netstat -nat|awk '{print awk $NF}'|sort|uniq -c|sort -n
  

统计当前20000个IP包中大于100个IP包的IP地址


tcpdump -tnn -c 20000 -i eth0 | awk -F "." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr | awk ' $1 > 100 '
  

屏蔽IPV6


echo "blacklist ipv6" | sudo tee /etc/modprobe.d/blacklist-ipv6
  

察看当前网络连接状况以及程序


sudo netstat -atnp
  

查看网络连接状态


netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
  

查看当前系统所有的监听端口


nc -zv localhost 1-65535
  

查看网络的当前流量


#安装 ethstatus 软件
sudo apt-get install ethstatus
#查看 ADSL 的速度
sudo ethstatus -i ppp0
#查看 网卡 的速度
sudo ethstatus -i eth0
#或安装 bwm-ng 
sudo apt-get install bwm-ng
#查看当前网络流量
bwm-ng
  

查看域名的注册备案情况


whois baidu.cn
  

查看到某一个域名的路由情况


tracepath baidu.cn
  

重新从服务器获得IP地址


sudo dhclient
  

从当前页面开始镜像整个网站到本地


wget -r -p -np -k http://www.21cn.com
· -r:在本机建立服务器端目录结构;
· -p: 下载显示HTML文件的所有图片;
· -np:只下载目标站点指定目录及其子目录的内容;
· -k: 转换非相对链接为相对链接。
  

如何多线程下载


sudo apt-get install axel
axel -n 5 http://xxx.xxx.xxx.xxx/xxx.zip
或者
lftp -c "pget -n 5 http://xxx.xxx.xxx.xxx/xxx.zip“
  

如何查看HTTP头


w3m -dump_head http://www.example.com
或 curl --head http://www.example.com
  

快速使用http方式共享目录


#进入需要共享的目录后运行: 
python -m SimpleHTTPServer
#其它电脑使用http://ip:8000 来访问
#自定义端口为8080: 
python -m SimpleHTTPServer 8080
  

SSH 远程端口转发


ssh -v -CNgD 7070 username@sshhostipaddress
  

监控网络所有的tcp数据


sudo apt-get install snort #安装snort入侵检测程序
sudo snort -vde
  

监控TCP/UDP连接的流量


sudo apt-get install iftop 
sudo iftop
#或
sudo apt-get install iptraf
sudo iptraf
  

扫描某个IP的端口


nc -v -w 1 192.168.1.1 -z 1-1000
  

压缩

增加 7Z 压缩软件


#支持 7Z,ZIP,Zip64,CAB,RAR,ARJ,GZIP,BZIP2,TAR,CPIO,RPM,ISO,DEB 压缩文件格式
sudo apt-get install p7zip p7zip-full p7zip-rar
#将所有已txt结尾的文件都加入到files.7z
7z a -t7z files.7z *.txt
#解压缩files.zip
7z x files.zip
#删除 files.zip中所有已bak结尾的文件
7z d -r files.zip *.bak 
#列出file.7z中所有的文件信息
7z l files.7z
#测试files.zip中所有doc结尾文件的正确性
7z t -r files.zip *.doc 
#更新files.zip中的所有doc结尾的文件(不是所有的压缩格式都支持更新这一选项)
7z u files.zip *.doc
  

增加 rar 格式解压和压缩支持


#解压
sudo apt-get install unrar
#压缩
#源里的rar包有文件名乱码问题,不建议使用。
#如果确实需要rar压缩功能,请到以下网址直接下载RAR for Linux
#http://www.rarlab.com/download.htm
  

增加 zip 格式解压和压缩支持


#解压
sudo apt-get install unzip
#压缩
sudo apt-get install zip
  

解压缩 xxx.tar.gz


tar -xf xxx.tar.gz
  

解压缩 xxx.tar.bz2


tar -xf xxx.tar.bz2
  

解压缩 xxx.tar.xz


tar -Jxf xxx.tar.xz
  

压缩aaa bbb目录为xxx.tar.gz


tar -zcvf xxx.tar.gz aaa bbb
  

压缩aaa bbb目录为xxx.tar.bz2


tar -jcvf xxx.tar.bz2 aaa bbb
  

压缩aaa bbb目录为xxx.tar.xz


tar -Jcvf xxx.tar.xz aaa bbb
  

增加 lha 支持


sudo apt-get install lha
  

增加解 cab 文件支持


sudo apt-get install cabextract
  

Nautilus

显示隐藏文件


Ctrl+h
  

显示地址栏


Ctrl+l
  

特殊 URI 地址


* computer:/// - 全部挂载的设备和网络
* network:/// - 浏览可用的网络
* burn:/// - 一个刻录 CDs/DVDs 的数据虚拟目录
* smb:/// - 可用的 windows/samba 网络资源
* x-nautilus-desktop:/// - 桌面项目和图标
* file:/// - 本地文件
* trash:/// - 本地回收站目录
* ftp:// - FTP 文件夹
* ssh:// - SSH 文件夹
* fonts:/// - 字体文件夹,可将字体文件拖到此处以完成安装
* themes:/// - 系统主题文件夹
  

查看已安装字体


fc-list |grep 文
获取安装的中文字体信息
  

文件管理器(比如nautilus)的地址栏里输入 ~/.fonts ,就可以查看当前用户拥有的fonts——而系统通用字体位于 /usr/share/fonts

日期和时间

显示日历


cal # 显示当月日历
cal 2 2007 # 显示2007年2月的日历
  

显示农历


#sudo apt-get install lunar
date '+%Y %m %d %H' |xargs lunar --utf8
  

设置日期


date -s mm/dd/yy
  

设置时间


date -s HH:MM
  

将时间写入CMOS


hwclock --systohc
  

查看CMOS时间


 hwclock --show
  

读取CMOS时间


hwclock --hctosys
  

从服务器上同步时间


sudo ntpdate ntp.ubuntu.com
sudo ntpdate time.nist.gov
  

设置电脑的时区为上海


sudo dpkg-reconfigure tzdata
  

然后根据提示选择 Asia/Shanghai。这样在升级了 tzdata 包之后时区也是对的。

XP 和 Ubuntu 相差了 8 小时的时差


#关闭UTC,将当前时间写入CMOS。
sudo sed -ie 's/UTC=yes/UTC=no/g' /etc/default/rcS
sudo hwclock --systohc
  

将时间截转为时间


date -d@1234567890
  

工作区

不同工作区间切换


Ctrl + ALT + ←
Ctrl + ALT + →
或者,将滚轮鼠标放在工作区图标上滚动
  

控制台

指定控制台切换


Ctrl + ALT + Fn(n:1~7)
  

控制台下滚屏


SHIFT + pageUp/pageDown
  

控制台抓图


setterm -dump n(n:1~7)
  

只是支持tty1-7。没中文。没颜色代码序列。

回到上一次的目录


cd –
  

以root的身份执行上一条命令


sudo !!
  

数据库

mysql的数据库存放路径


/var/lib/mysql
  

从mysql中导出和导入数据


mysqldump 数据库名 > 文件名 #导出数据库
mysqladmin create 数据库名 #建立数据库
mysql 数据库名 < 文件名 #导入数据库
  

忘了mysql的root口令怎么办


sudo /etc/init.d/mysql stop
sudo mysqld_safe --skip-grant-tables &
sudo mysqladmin -u user password 'newpassword
sudo mysqladmin flush-privileges
  

修改mysql的root口令


sudo mysqladmin -u root -p password '你的新密码'
  

 

如何优化mysql


wget  http://www.day32.com/MySQL/tuning-primer.sh
chmod +x tuning-primer.sh
./tuning-primer.sh
  

mysql命令行中文显示?号


mysql> set names utf8;
  

常用mysql管理语句


show table status;  #查询表状态
show full processlist;  #查询mysql进程
alter table site_stats engine=MyISAM;   #转换表为MyISAM类型,转表锁为行锁。
show variables;  #查看mysql 变量
  

mysql的自动备份


#备份 forum myweb 数据库到 /backup/mysql 目录,并删除7天之前的备份记录
mysqldump --opt --skip-lock-tables -u root forum | gzip -9 > /backup/mysql/forum.`date +%Y%m%d`.sql.gz
mysqldump --opt --skip-lock-tables -u root myweb | gzip -9 > /backup/mysql/myweb.`date +%Y%m%d`.sql.gz
find /backup/mysql/ -type f -ctime +7 -exec rm {} \;
  

控制

如何使用命令关闭显示器


xset dpms force off
  

设置CPU的频率


sudo apt-get install cpufrequtils 
#查看cpu当前频率信息
sudo cpufreq-info 
设置模式,对应于{最省电(最低频率),用户控制,最高或最低,正常,最大性能} 
cpufreq-set -g {powersave, userspace, ondemand, conservative, performance}
  

命令关机


sudo halt
sudo shutdown -h now              #现在关机
  

定时关机


sudo shutdown -h 23:00           #晚上11点自动关机
sudo shutdown -h +60          #60分钟后关机
  

命令重启电脑


sudo reboot
sudo shutdown -r now
  

如何修改ssh登录提示


sudo gedit  /etc/motd
  

如何关闭ssh登录提示


sudo gedit  /etc/ssh/sshd_config 修改这一行为: PrintLastLog no
  

如何使用命令关闭笔记本的触摸板


synclient touchpadoff=1
那么开启触摸板就是:
synclient touchpadoff=0
  

从命令行通知桌面消息


#sudo apt-get install libnotify-bin
notify-send "hello world"
  

统计

统计最常用的10条命令


history | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n10 
  

统计每个单词的出现频率,并排序


awk '{arr[$1]+=1 }END{for(i in arr){print arr[i]"\t"i}}' FILE_NAME | sort -rn
  

统计80端口的连接个数并按照从大到小排列


netstat -na|grep :80|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r -n
  

编辑器

vim中删除技巧


:%s/[Ctrl-v][Enter]//g         删除DOS方式的回车^M
:%s= *$==                      删除行尾空白
:%!sort -u                     删除重复行
:%s/^.{-}pdf/new.pdf/          只是删除第一个pdf
:%s///                         删除多行注释
:g/^$/d                        删除所有空行 
:g!/^dd/d                      删除不含字符串'dd'的行
:v/^dd/d                       删除不含字符串'dd'的行
:g/str1/,/str2/d               删除所有第一个含str1到第一个含str2之间的行
:v/./.,/./-1join               压缩空行
:g/^$/,/./-j                   压缩空行
ndw 或 ndW                     删除光标处开始及其后的 n-1 个字符。
d0                             删至行首。
d$                             删至行尾。
ndd                            删除当前行及其后 n-1 行。
x 或 X                         删除一个字符。
Ctrl+u                         删除输入方式下所输入的文本。
D                              删除到行尾
x,y                            删除与复制包含高亮区
dl                             删除当前字符(与x命令功能相同)
d0                             删除到某一行的开始位置
d^                             删除到某一行的第一个字符位置(不包括空格或TAB字符)
dw                             删除到某个单词的结尾位置
d3w                            删除到第三个单词的结尾位置
db                             删除到某个单词的开始位置
dW                             删除到某个以空格作为分隔符的单词的结尾位置
dB                             删除到某个以空格作为分隔符的单词的开始位置
d7B                            删除到前面7个以空格作为分隔符的单词的开始位置
d)                             删除到某个语句的结尾位置
d4)                            删除到第四个语句的结尾位置
d(                             删除到某个语句的开始位置
d)                             删除到某个段落的结尾位置
d{                             删除到某个段落的开始位置
d7{                            删除到当前段落起始位置之前的第7个段落位置
dd                             删除当前行
d/text                         删除从文本中出现“text”中所指定字样的位置,一直向前直到下一个该字样所出现的位置(但不包括该字样)之间的内容
dfc                            删除从文本中出现字符“c”的位置,一直向前直到下一个该字符所出现的位置(包括该字符)之间的内容
dtc                            删除当前行直到下一个字符“c”所出现位置之间的内容
D                              删除到某一行的结尾
d$                             删除到某一行的结尾
5dd                            删除从当前行所开始的5行内容
dL                             删除直到屏幕上最后一行的内容
dH                             删除直到屏幕上第一行的内容
dG                             删除直到工作缓存区结尾的内容
d1G                            删除直到工作缓存区开始的内容
ci{                            删除修改光标所在的{}中的所有内容,change in { 的简写
ca{                            删除修改光标所在的{}中的所有内容,包括{}
ci"                            删除修改光标所在的""中的所有内容,change in " 的简写
ca"                            删除修改光标所在的""中的所有内容,包括{}
ci(                            删除修改光标所在的()中的所有内容,change in ( 的简写
ca(                            删除修改光标所在的()中的所有内容,包括{}
  

vim一个远程文件


vim scp://username@host//path/to/somefile
  

如何配置Emacs

打开新立得或者命令行,查找emacs, 选择你想要的版本,比如emacs22或者emacs21.

之后的配置参考Emacs 常见问题及其解决方法

vim 如何显示彩色字符


sudo cp /usr/share/vim/vimcurrent/vimrc_example.vim /usr/share/vim/vimrc
  

让 vim 直接支持编辑 .gz 文件


sudo apt-get install vim-full
  

vim 如何显示行号,在~/.vimrc中加入


set number
  

如果没有~/.vimrc文件,则可以在/etc/vim/vimrc中加入


set number
  

vim配色方案 (~/.vimrc)


colorscheme scheme
可用的 scheme 在 /usr/share/vim/vim71/colors/ 
  

解决vim中文编码问题,在~/.vimrc中加入


let &termencoding=&encoding
set fileencodings=utf-8,gbk,ucs-bom,cp936
  

#再提供一个实践中觉得不错的配置:
" Encoding related
set encoding=UTF-8
set langmenu=zh_CN.UTF-8
language message zh_CN.UTF-8
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
set fileencoding=utf-8
  

gedit中文乱码的解决


gsettings set org.gnome.gedit.preferences.encodings auto-detected "['GB18030', 'UTF-8', 'CURRENT', 'ISO-8859-15', 'UTF-16']"
  

编译和打包

安装通用编译环境


sudo apt-get install build-essential
  

通用的编译安装步骤


./configure && make && sudo make install
  

如何编译安装软件 kate


sudo apt-get install apt-build
sudo apt-build install kate
  

获得源代码包


sudo apt-get source mysql-server
  

解压缩还原源代码包


dpkg-source -x mysql-dfsg-5.1_5.1.30-1.dsc
  

安装编译打包环境


sudo apt-get build-dep mysql-server
  

重新编译并打包Debian化的源码


dpkg-buildpackage -rfakeroot
  

获得源码并重新打包


apt-get source php5-cgi  
#或手工下载源码后使用 dpkg-source -x  php5_5.2.6.dfsg.1-3ubuntu4.1.dsc 解开源码
sudo apt-get build-dep php5-cgi
cd php5-5.2.6.dfsg.1
dpkg-buildpackage -rfakeroot -uc -b
  

给源代码打补丁


patch -p0 < mysql.patch
  

安装 gtk+ 编译环境


sudo apt-get install build-essential libgtk2.0-dev
  

其它

把终端加到右键菜单


sudo apt-get install nautilus-open-terminal 
  

如何删除Totem电影播放机的播放历史记录


rm ~/.recently-used
  

清除桌面挂载硬盘图标


gconftool-2 --set /apps/nautilus/desktop/volumes_visible 0 --type bool
  

恢复:


gconftool-2 --set /apps/nautilus/desktop/volumes_visible 1 --type bool
  

如何更换gnome程序的快捷键


点击菜单,鼠标停留在某条菜单上,键盘输入任意你所需要的键,可以是组合键,会立即生效;
如果要清除该快捷键,请使用backspace
  

man 如何显示彩色字符


vim ~/.bashrc
#增加下面的内容:
export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;31m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;32m'
#生效文件
#source .bashrc
  

如何在命令行删除在会话设置的启动程序


cd ~/.config/autostart
rm 需要删除启动程序
  

如何提高wine的反应速度


sudo sed -ie '/GBK/,/^}/d' /usr/share/X11/locale/zh_CN.UTF-8/XLC_LOCALE
  


可能造成某些游戏帧数降低 

 

iptables

防止外网用内网IP欺骗


#eth0 为外网网卡
sudo iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
sudo iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP
sudo iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP 
  

查看nat规则


sudo iptables -t nat -L
  

查看filter规则


sudo iptables -L -n
  

取消nat规则


sudo iptables -t nat -F
  

取消filter规则


sudo iptables -F
  

阻止一个IP连接本机


#规则位于最后
sudo iptables -t filter -A INPUT -s 192.168.1.125 -i eth0 -j DROP 
  

关闭 1234 端口


sudo iptables -A OUTPUT -p tcp --dport 1234 -j DROP
  

开启 80 端口


sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
  

限制访问80端口的外部IP最大只有50个并发


sudo iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 --connlimit-mask 32 -j DROP
  

禁止一个IP或者一个IP段访问服务器端口服务


#80端口 ,规则插入到前面
sudo iptables -t filter -I INPUT -s 192.168.2.0/24 -p tcp --dport http -j DROP
#21端口,规则插入到前面
sudo iptables -t filter -I INPUT -s 192.168.1.23 -p tcp --dport ftp -j DROP
  

安全

检查本地是否存在安全隐患


sudo apt-get install rkhunter
sudo rkhunter --checkall
  

  

防止服务器被暴力破解ssh密码


sudo apt-get install denyhosts
  

查看系统的登录情况


last
  

查看所有帐号的登录情况


lastlog
  

服务

查看全部服务状态


service --status-all
  

添加一个服务


sudo update-rc.d 服务名 defaults 99
  

删除一个服务


sudo update-rc.d 服务名 remove
  

临时重启一个服务


service 服务名 restart
  

临时关闭一个服务


service 服务名 stop
  

临时启动一个服务


service 服务名 start
  

用户管理

增加用户


sudo adduser 用户名
  

删除用户


sudo deluser 用户名
  

修改当前用户的密码 


passwd
  

修改用户密码 


sudo passwd 用户名
  

修改用户资料


sudo chfn userid
  

如何禁用/启用某个帐户


sudo usermod -L 用户名 #锁定用户
sudo usermod -U 用户名 #解锁
或
sudo passwd -l 用户名 #锁定用户
sudo passwd -u 用户名 #解锁
  

增加用户到admin组,让其有sudo权限


sudo usermod -G admin -a 用户名
  

如何切换到其他帐号(需要该用户的密码)


su 用户名
  

如何切换到root帐号


sudo -s
sudo -i
sudo su
  

设置

配置默认Java环境


sudo update-alternatives --config java
  

设置系统http代理


export http_proxy=http://xx.xx.xx.xx:xxx
  

设置系统https代理


export https_proxy=http://xx.xx.xx.xx:xxx
  

修改系统登录信息


sudo vim /etc/motd
  

使用eclipse等其他自带java编译器的软件,换回sun的编译器方法

对于Java JDK6 (就是1.6,sun缩短Java的版本名字了):


sudo update-java-alternatives -s java-6-sun
  

对于Java JDK1.5


sudo update-java-alternatives -s java-1.5.0-sun
  

  

文件管理

创建一个空文件


> file.txt
touch file.txt
  

一屏查看文件内容


cat 文件名
  

不显示以#开头的行


cat /etc/vsftpd.conf |grep -v ^#
  

分页查看文件内容


more 文件名
  

可控分页查看文件内容


less 文件名
  

带行号显示文件的内容


nl 文件名
cat -n 文件名
  

去除文件中的行号


cut -c 5- a.py
  

删除文件中的重复行


cat file.txt |sort -u
  

根据字符串匹配来查看文件部分内容


grep 字符串 文件名
  

显示包含或者不包含字符串的文件名


grep -l -r 字符串 路径 #显示内容包含字符串的文件名
grep -L -r 字符串 路径 #显示内容不包含字符串的文件名
find . -path './cache' -prune -o -name "*.php" -exec grep -l "date_cache[$format]['lang']" {} \; #显示当前目录下不包含cache目录的所有含有“date_cache[$format]['lang']”字符串的php文件。
find . -type f -name \*.php -exec grep -l "info" {} \;
  

快速查找某个文件


whereis filename
find 目录 -name 文件名
locate 文件名 # 注意,为了得到更好的效果,运行前可以更新下数据库,运行 sudo updatedb 即可,但这个命令每隔一段时间会自动运行,所以不用太在意
  

创建两个空文件


touch file1 file2
  

递归式创建一些嵌套目录


mkdir -pv /tmp/xxs/dsd/efd
  

递归式删除嵌套目录


rm -fr /tmp/xxs
  

回当前用户的宿主目录


cd ~ # 这个是波浪线,在 Tab 键的上面
# 或者更简单的
cd
  

回到上一次的目录


cd -  # 这个是连字符,在退格键的左边两个
  

查看当前所在目录的绝对路经


pwd
  

获得文件的后缀名


echo xxx.xxx.rmvb |sed 's/.*\(\..*$\)/\1/'
  

去除文件的后缀名


echo xxx.xxx.rmvb |sed 's/\(.*\)\..*$/\1/'
  

列出当前目录下的所有文件,包括以.开头的隐含文件的具体参数


ls -al
  

或(在 Ubuntu 中)


ll
  

移动路径下的文件并改名


mv 路径/文件  /新路径/新文件名
  

复制文件或者目录


cp -av 原文件或原目录 新文件或新目录
  

查看文件类型


file filename
  

查看文件的时间


stat filename
  

对比两个文件之间的差异 


diff file1 file2
  

一边比较一边编辑还是彩色的:(需要安装 Vim)


vimdiff file1 file2
  

显示xxx文件倒数6行的内容


tail -6 xxx
  

让tail不停地读取最新的内容


tail -10f /var/log/apache2/access.log
  

或者


tailf /var/log/apache2/access.log
  

查看文件中间的第五行(含)到第10行(含)的内容


sed -n '5,10p' /var/log/apache2/access.log
  

 

查找关于xxx的命令


apropos xxx
man -k xxx
  

通过ssh传输文件


scp -rp /path/filename username@remoteIP:/path #将本地文件拷贝到服务器上
scp -rp username@remoteIP:/path/filename /path #将远程文件从服务器下载到本地
  

tar cvzf - /path/ | ssh username@remoteip "cd /some/path/; cat -> path.tar.gz" #压缩传输
tar cvzf - /path/ | ssh username@remoteip "cd /some/path/; tar xvzf -" #压缩传输一个目录并解压
  

rsync -avh /path/to/file/or/dir user@host:/path/to/dir/or/file
rsync -avh user@host:/path/to/file/or/dir /path/to/file/or/dir
  

把所有文件的後辍由rm改为rmvb


rename 's/.rm$/.rmvb/' *
  

把所有文件名中的大写改为小写


rename 'tr/A-Z/a-z/' *
  

删除特殊文件名的文件,如文件名:--help.txt


rm -- --help.txt 或者 rm ./--help.txt
  

查看当前目录的子目录


ls -d */ 或 echo */
  

将当前目录下最近30天访问过的文件移动到上级back目录


find . -type f -atime -30 -exec mv {} ../back \;
  

查找当前目录下最近30天访问过的文件打包备份


find . -type f -atime -30 | xargs tar zrvpf backup.tar.gz
find . -type f -atime -30 -print -exec tar rvpf backup.tar {} \;
  

显示系统服务器一小时以内的包含 xxxx 的所有邮件


find /home/ -path "*Maildir*" -type f -mmin -60|xargs -i  grep -l xxxx '{}'
  

将当前目录下最近2小时到8小时之内的文件显示出来


find . -mmin +120 -mmin -480 -exec more {} \;
  

删除修改时间在30天之前的所有文件


find . -type f -mtime +30 -exec rm -v {} \;
  

删除访问时间在30天之前的所有文件


find . -type f -atime +30 -exec rm -v {} \;
  

查找guest用户的以avi或者rm结尾的文件并删除掉


find . -name '*.avi' -o -name '*.rm' -user 'guest' -exec rm {} \;
  

查找不以java和xml结尾,并7天没有使用的文件删除掉


find . ! -name *.java ! -name ‘*.xml’ -atime +7 -exec rm {} \;
  

查找目录下所有有包含abcd文字的文本文件,并替换为xyz


grep -rIl "abcd" ./* --color=never | xargs sed -i "s/abcd/xyz/g" #注意grep的一个参数是大写的i,一个参数是小写的L
  

删除当前目录里面所有的 .svn 目录


find . -name .svn -type d -exec rm -fr {} \;
  

删除当前目录所有以“~”结尾的临时文件


find . -name "*~" -exec rm {} \;
  

删除包含 aaa 字符串的所有文件


grep -rl "aaa" * |xargs rm -fv
  

统计当前文件个数


echo $(($(ll|wc -l)-3));
  

统计当前目录下所有jpg文件的尺寸


find . -name *.jpg -exec wc -c {} \;|awk '{print $1}'|awk '{a+=$1}END{print a}'
  

统计当前目录个数


ls -l /usr/bin|grep ^d|wc -l
  

统计当前目录下占空间最大的前10名文件或目录


du -sm * | sort -nr | head -10
  

显示当前目录下2006-01-01的文件名


ls -l |grep 2006-01-01 |awk '{print $8}'
  

备份当前系统到另外一个硬盘 


sudo rsync -Pa / /media/disk1 --exclude=/media/* --exclude=/home/* --exclude=/sys/* --exclude=/tmp/* --exclude=/proc/* --exclude=/mnt/*
  

使用ssh方式同步远程数据到本地目录


rsync -Pa -I --size-only --delete --timeout=300 Remote_IP:/home/ubuntu/back /backup
  

使用ftp方式同步远程数据到本地目录


lftp -c "open Remote_IP;user UserName Password;set cache:enable false;set ftp:passive-mode false;set net:timeout 15;mirror -e -c /back /backup;"
  

去掉文件中的^M


#注意不要使用同样的文件名,会清空掉原文件
cat -A filename| tr -d "^M$" > newfile
或者
  

cat -A word|sed -e 's/\^M\$//g' > newfile

直接修改文件


ex "+:%s/[Ctrl+V][Enter]//g" "+:wq"  filename 
  

或者


dos2unix filename
  

转换Dos文本文件到Unix文本文件


tr -d '\15\32' < dosfile.txt > unixfile.txt                         #dos = > unix
awk '{ sub("\r$", ""); print }' dosfile.txt > unixfile.txt   #dos = > unix
awk 'sub("$", "\r")' unixfile.txt > dosfile.txt                  #unix = > dos
  

转换bin/cue到iso文件


#sudo apt-get install bchunk
bchunk image.bin image.cue image
  

转换目录到iso文件


mkisofs -o isofile.iso  dirname
  

转换CD到iso文件


dd if=/dev/cdrom of=isofile.iso
  

将一个文件作为附件发到邮箱


#sudo apt-get install mailutils sharutils
uuencode xxx.tar.gz xxx.tar.gz |mail xxx@xxx.com
(echo "hello, please see attached file"; uuencode xxx.tar.gz xxx.tar.gz)| mail xxx@xxx.com
  

合并多个pdf文件到一个pdf文件


#apt-get install gs pdftk
gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=output.pdf -dBATCH input1.pdf input2.pdf
  

比较两个目录里面的文件是否有相同


diff -r dir1 dir2
  

比较一个远程文件和一个本地文件


ssh user@host cat /path/to/remotefile | diff /path/to/localfile -
  

当file.log里出现Finished: SUCCESS时候就退出tail


tail -f /path/to/file.log | sed '/^Finished: SUCCESS$/ q'
  

统计py代码行数,不包括空行


find . -name "*.py" | xargs grep '^.' | wc -l
find . \( -path '*migrations*' -prune -o -name '*.py' \) -type f | xargs grep '^.' | wc -l
  

统计java代码行数,不包括空行和公共目录


find . -path './src/java/com/xxx/common' -prune -o -name '*.java' -print  | xargs grep '^.' | wc -l
  

给文件增加行号


nl HelloWorld.java > HelloWorldCode.java
  

影像

播放swf文件

安装swf解码器


 sudo apt-get install swfmill
  

如何保存串流视频(mms/rtsp)


mplayer -dumpfile dump.rm -dumpstream rstp://....
  

批量将rmvb转为avi


#ipod touch可用
for i in *.rmvb; do mencoder -vf harddup -oac mp3lame -lameopts vbr=3 -ovc xvid -xvidencopts fixed_quant=4 -of avi $i -o `echo $i | sed -e 's/rmvb$/avi/'`; done
  

批量将DVD转为avi


for i in *.VOB; do mencoder -oac mp3lame -lameopts aq=7:vbr=2:q=6 -srate 44100 -ovc xvid -xvidencopts fixed_quant=4 -of avi $i -o `echo $i | sed -e 's/VOB$/avi/'`; done
  

批量将任何格式的电影转为ogv


#sudo apt-get install ffmpeg2theora   
#firefox3.5或chrome直接支持播放,无需安装任何解码器,注意不支持rmvb,rmvb会出现a/v不同步问题
for i in *; do ffmpeg2theora --optimize --deinterlace $i; done
  

批量将rmvb格式的电影转为ogv


#!/bin/bash
for i in *; do
   mkfifo "/tmp/$i"
   mencoder -quiet -vf harddup -ovc raw -oac pcm -o "/tmp/$i" "$i" &
   ffmpeg2theora --optimize --deinterlace "/tmp/$i" -o "`echo $i | sed 's/\(.*\)\..*$/\1/'`.ogv"
   rm "/tmp/$i"
done
  

利用gst来转换任意电影为ogv


#!/bin/bash
for i in *; do
   gst-launch-0.10 filesrc location="$i" ! decodebin name=demux \
   { oggmux name=mux ! filesink location="`echo $i | sed 's/\(.*\)\..*$/\1/'`.ogv" } \
   { demux. ! queue ! audioconvert ! vorbisenc ! queue ! mux. } \
   { demux. ! queue ! ffmpegcolorspace ! videorate ! theoraenc ! mux. } 
done
  

 

批量转换任意文件为ipod touch使用的mp4


#!/bin/bash
#ubuntu10.04自带的mencoder由于版权问题,不支持h264编码,需要重新编译;也可以直接参考下面的压缩方法。
#sudo apt-get install mencoder mplayer
find . -name '*.avi' -o -name '*.rm' -o -name '*.rmvb' -o -name '*.wmv' -o \
      -name '*.vob' -o -name '*.asf' -o -name '*.mpg' -o -name '*.ts' -o \
      -name '*.flv' -o -name '*.mpeg' -o -name '*.ogv' -o -name '*.mov' -o \
      -name '*.mkv' -o -name '*.dat' | while read i; do
  basename=`echo $i | sed 's/\(.*\)\..*$/\1/'`
  font="WenQuanYi Zen Hei"

  if [ -f "${basename}.srt" ] ; then
     cp "${basename}.srt" $$.srt
     m0="-vf scale=480:-10,harddup -sub $$.srt -unicode -subcp GB18030 -subfont-text-scale 3"; 
  else
     m0="-vf scale=480:-10,harddup"; 
  fi
 
  x0="-lavfopts format=mp4 -faacopts mpeg=4:object=2:raw:br=160 -oac faac -ovc x264 -sws 9 -x264encopts nocabac:level_idc=30:bframes=0:global_header:threads=auto:subq=5:frameref=6:partitions=all:trellis=1:chroma_me:me=umh:bitrate=500 -of lavf -ofps 24000/1001";
  mencoder $m0 -fontconfig -font "${font}" $x0 -o "$$.mp4" "$i"
  mv "$$.mp4" "${basename}.mp4"
  if [ -f "${basename}.mp4" ] ; then
     rm "$i"
  fi
done
  

转换任意格式的视频到H264


#!/bin/bash
#sudo apt-get install faac x264 gpac mplayer mencoder
basename=`echo $1 | sed 's/\(.*\)\..*$/\1/'`
#获得视频的长宽和帧数
mplayer -vo null -ao null -identify -frames 0 "$1" 2>/dev/null > video.info
FPS=`cat video.info | grep ID_VIDEO_FPS | cut -d = -f 2`
#FPS=23.976
W=`cat video.info | grep ID_VIDEO_WIDTH | cut -d = -f 2`
H=`cat video.info | grep ID_VIDEO_HEIGHT | cut -d = -f 2`
WIDTH=480
HEIGHT=`expr $WIDTH \* $H \/ $W`
echo $1 FPS=$FPS WIDTH=$WIDTH HEIGHT=$HEIGHT
mkfifo audio.wav video.yuv
faac -o audio.aac audio.wav &
mplayer -ao pcm:file=audio.wav:fast -vc null -vo null "$1" 
x264 --profile baseline --fps $FPS -o video.264 video.yuv ${WIDTH}x${HEIGHT} &
mencoder -vf scale=$WIDTH:$HEIGHT,harddup,pp=fd,format=i420 -nosound -ovc raw -of rawvideo -ofps $FPS -o video.yuv "$1"
MP4Box -new -add video.264 -add audio.aac -fps $FPS "$basename.mp4"
rm video.info audio.aac video.264 audio.wav video.yuv
#使用方法将上面的脚本保存为 x264.sh , x264.sh xxx.avi 来进行转化。
  

压制DVD到H264,支持ipod


#sudo apt-get install faac x264 gpac mplayer
FPS=29.970
mkfifo audio.wav
cat VTS_01_1.VOB VTS_02_1.VOB VTS_02_2.VOB VTS_03_1.VOB VTS_04_1.VOB | mplayer -nocorrect-pts -vo null -vc null -ao pcm:file=audio.wav:fast - &
faac audio.wav -o audio.aac
mkfifo video.y4m
cat VTS_01_1.VOB VTS_02_1.VOB VTS_02_2.VOB VTS_03_1.VOB VTS_04_1.VOB | mplayer -vo yuv4mpeg:file=video.y4m -vf scale=480:-3,harddup,pp=fd -nosound - &
x264 --profile baseline --muxer mp4 --demuxer y4m video.y4m -o video.mp4
MP4Box -add video.mp4 -add audio.aac -fps $FPS video.mp4
  

图形界面为ipod touch转mp4的方法

先确保有zenity和memcoder


wget http://linuxfire.com.cn/~lily/toIpod -O ~/.gnome2/nautilus-scripts/toIpod && chmod +x ~/.gnome2/nautilus-scripts/toIpod
  

在nautilus里对视频文件点右键,选择"脚本"-"toIpod".

详情请查看出处。

转换flv到MP4


#sudo apt-get install ffmpeg
ffmpeg -i 矜持.flv -ar 22050 矜持.mp4
  

mencoder/mplayer 反拉丝参数


-vf lavcdeint
  

合并多个 rm 文件为一个 avi 文件


mencoder -ovc lavc 1.rm -oac mp3lame -o 1.avi
mencoder -ovc lavc 2.rm -oac mp3lame -o 2.avi
mencoder -idx 1.avi -ovc copy -oac copy -o o1.avi
mencoder -idx 2.avi -ovc copy -oac copy -o o2.avi
cat o1.avi o2.avi | mencoder -noidx -ovc copy -oac copy -o output.avi -
  

合并视频到一个文件


mencoder -ovc copy -oac copy -idx  -o 目标文件名 文件名1 文件名2
  

CD 抓轨为 mp3 (有损)


#sudo apt-get install abcde
abcde -o mp3 -b
  

CD 抓轨为 Flac (无损)


#sudo apt-get install abcde
abcde -o flac -b
  

ape 转换为 flac


#sudo apt-get install flac shntool iconv mac
#iconv -f GB2312 -t UTF-8 example.cue -o example_UTF-8.cue
#shntool split -t "%n.%p-%t" -f example_UTF-8.cue -o flac example.ape -d flacOutputDir

#sudo apt-get install libav-tools
ffmpeg -i example.ape example.flac
  

ape/flac 转换为 mp3


#sudo apt-get install shntool iconv libav-tools
ffmpeg -i CDImage.ape CDImage.flac
iconv -f gbk -t utf-8 CDImage.cue | shntool split -t "%n.%p-%t" -o 'cust ext=mp3 lame --quiet - %f' CDImage.flac
  

批量将 ape 转为 flac


find . -name "*.ape" -exec bash -c 'avconv -i "$0" "${0/%ape/flac}"' {} \;
#此命令将当前目录(包括子目录)的所有ape文件转换为flac
  

批量将 ape 转为 mp3


for f in *.ape; do gst-launch-0.10 filesrc location="$f" ! decodebin ! audioconvert ! lame vbr=0 bitrate=320 ! id3mux ! filesink location="${f%.ape}.mp3"; done
#需要安装 shntool
for i in *.ape; do shnconv -i ape -o "cust ext=mp3 lame -b 320 - %f" "$i" -d mp3OutputDir; done
  

批量将 ape 转为 m4a


for f in *.ape; do ffmpeg -i  "$f" -acodec alac "${f%.ape}.m4a"; done
  

批量将 ape 转为 aac


for f in *.ape; do ffmpeg -i  "$f" -acodec aac -strict experimental -ab 256k "${f%.ape}.aac"; done
  

批量将 flac 转为 mp3


for i in *.flac; do shnconv -i flac -o "cust ext=mp3 lame -b 320 - %f" "$i" -d mp3OutputDir; done
  

批量将svg转为png


for i in *.svg; do inkscape $i --export-png=`echo $i | sed -e 's/svg$/png/'`; done
  

批量转换格式到mp3


#sudo apt-get install lame mplayer
for i in *; do base=${i%.*}; mplayer -quiet -vo null -vc dummy -af volume=0,resample=44100:0:1 -ao pcm:waveheader:file="$i.wav" "$i" ; lame -V0 -h -b 192 -vbr-new "$i.wav" "$base.mp3"; rm -f "$i.wav" ; done
  

批量缩小图片到30%


for i in *.jpg; do convert -resize 30%x30% "$i" "sm-$i"; done
  

批量转换jpg到png


for i in *.jpg; do convert $i `echo $i | sed -e 's/jpg$/png/'`; done
  

将文字转为图片


convert -size 200x30 xc:transparent -font /usr/share/fonts/truetype/wqy/wqy-microhei.ttc -fill red -pointsize 16 -draw "text 5,15 '测试中文转为图片'" test.png
  

如何压缩png图片


#sudo apt-get install optipng
optipng -o7 old.png new.png
#或 sudo apt-get install pngcrush
#pngcrush -brute old.png new.png
  

将多张图片合并到一个PDF文件


convert *.jpg out.pdf
  

批量把pdf转换为txt并格式化


sudo apt-get install poppler-utils poppler-data
find ./ -name '*.txt' | while read i; do cat $i | awk '{if ($0 ~ "^space:”) {printf “\n”$0} else {printf $0}}’ | sed ‘/^space:*digit:*$/d’ | sed ’s/^space:\+/    /’ | sed ’s/"/”/g’ > “../txt/$i”; done
  

转换 pdf 到 png


#sudo apt-get install imagemagick
convert -density 196 FILENAME.pdf  FILENAME.png
  

获取jpg的扩展信息(Exif)


identify -verbose xxx.jpg
  

获取视频文件 xxx.avi 的信息


mplayer -vo null -ao null -frames 0 -identify "xxx.avi" 2>/dev/null | sed -ne '/^ID_/ { s/[]()|&;<>`'"'"'\\!$" []/\\&/g;p }'
  

查看MKV视频文件 xxx.mkv 的信息


#sudo apt-get install mkvtoolnix
mkvinfo -v xxx.mkv
  

 

抓取桌面操作的视频


ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg
  

命令行读出文本


espeak -vzh "从前有座山"
  

命令行抓屏


 scrot -s screenshot.png
  

 

如何命令行刻录


mkisofs -o test.iso -Jrv -V test_disk /home/carla/
cdrecord -scanbus
scsibus1:
 1,1,0 101) 'HL-DT-ST' 'CD-RW GCE-8481B ' '1.04' Removable CD-ROM
cdrecord -v -eject speed=8 dev=1,1,0 test.iso
  

http://www.ibm.com/developerworks/cn/linux/l-cdburn/index.html

延迟抓图


gnome-screenshot -d 10 #延迟10秒抓图
gnome-screenshot -w -d 5 #延迟5秒抓当前激活窗口
  

回收站在哪里


~/.local/share/Trash/
  

强制清空回收站


sudo rm -fr $HOME/.local/share/Trash/files/
  

默认打开方式的配置文件在哪里


#全局
/etc/gnome/defaults.list 
#个人
~/.local/share/applications/mimeapps.list
  

Firefox 的缓存目录在哪里


ls ~/.mozilla/firefox/*.default/Cache/
  

查看samba的用户


sudo pdbedit -L
  

增加一个用户到samba


sudo pdbedit -a username
  

从samba账户中删除一个用户


sudo pdbedit -x username
  

显示samba账户信息


sudo pdbedit -r username
  

测试samba账户是否正常


smbclient -L 192.168.1.1 -U username -d 3
  

samba的数据库存在哪里


/var/lib/samba/passdb.tdb
  

samba用户Windows下无法登录


在Windows的运行输入 cmd ,进入终端,输入 net use 命令,将显示已经连接的帐号如 \\192.168.1.1\username
再输入 net use  \\192.168.1.1\username /delete 删除现有的共享连接,再尝试进入另外一个目录就可以正常登录了。
  

Pidgin 的聊天记录在哪里


~/.purple/logs/
  

安装PDF打印机


sudo apt-get install cups-pdf
#打印生成的pdf文件在 ~/PDF 文件夹里面
  

nvidia快速重设显示设置及配置多显示器


sudo dpkg-reconfigure xserver-xorg
sudo nvidia-xconfig
#nvidia-settings 用于设置分辨率和多显示器
sudo nvidia-settings
  

kacpid进程大量占用CPU

硬件驱动中不要激活无线网卡驱动即可

替换上一条命令中的一个短语


^foo^bar^
!!:s/foo/bar/
  

AMD64位系统安装免费的杀毒软件 avast!


wget http://files.avast.com/files/linux/avast4workstation_1.3.0-2_i386.deb
sudo dpkg --force-architecture -i avast4workstation_1.3.0-2_i386.deb
sudo apt-get install ia32-libs
#然后打开 http://www.avast.com/registration-free-antivirus.php 去申请免费一年的许可证号
  

应用合适的字体显示尺寸

获取信息


xdpyinfo | grep -B1 dot
  

例如


 dimensions:    1440x900 pixels (333x212 millimeters)
 resolution:    110x108 dots per inch
  

获取X server信息


grep DPI /var/log/Xorg.0.log
  

例如


[    19.244] (--) NVIDIA(0): DPI set to (110, 108); computed from "UseEdidDpi" X config
  

这里设置的X DPI会被桌面的顶替,找到你自己的替换,如上的DPI从默认的96改为109。

重新配置键盘类型


sudo dpkg-reconfigure keyboard-configuration
  

重新载入声卡驱动模块

有时候折腾系统突软声卡无法发声了,又不想重启系统,直接重启声卡驱动模块:


pulseaudio -k && sudo alsa force-reload
  

或者


sudo service pulseaudio restart  

转载于:https://www.cnblogs.com/zhangjiansheng/p/6528559.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ubuntu基础知识与技巧 的相关文章

  • Linux----面试

    1 tcp和udp的区别 TCP xff1a 是面向连接的流传输控制协议 xff0c 具有高可靠性 xff0c 确保传输数据的正确性 xff0c 有验证重发机制 xff0c 因此不会出现丢失或乱序 UDP xff1a 是无连接的数据报服务
  • ssh免密码登陆失败的原因

    今天因为需要在两台服务器上进行ssh免登陆 xff0c 所以安装网上的教程 xff0c ssh keygen t rsa xff0c 然后把相互的密钥加入到对方的authorized keys 问题是我们虽然这样做了 xff0c 却一直要密
  • ESP32-s2芯片esp32-s2-saola-1开发板 micropython的repl连接

    本文只是解决通过esp32 s2 saola 1开发板 自带microUSB 作为repl与micro python通信的问题 如果你对esp32 xff0c micropython不熟 xff0c 本文不适合你 如果你用的不是esp32
  • 机械臂模拟2.0

    机械臂模拟 void MobileCrane updateHopeLength int center x int center y int center z int armNodeNum int ropePitchNum int baseN
  • Qt获取时间戳作为图片名

    Qt获取时间戳作为图片名 保存图片 void SaveRealsenseImg QString picIndexName 61 dataSavePath picIndexName append 34 34 获取当前时间 QDateTime
  • [转&精]IO_STACK_LOCATION与IRP的一点笔记

    IO STACK LOCATION和IRP算是驱动中两个很基础的东西 xff0c 为了理解这两个东西 xff0c 找了一点资料 1 IRP可以看成是Win32窗口程序中的消息 xff08 Message xff09 xff0c DEVICE
  • wireshark抓包结果很多[TCP Retransmission]怎么办?

    有一同事问用wireshark抓包时发现很多 TCP Retransmission xff0c 这些包极大影响了自己真正想看的http数据包 xff0c 如下图 我拿到pcapng后首先看到这些包的来源ip都是固定的两个 xff0c 所以首
  • MATLAB神经网络训练结果各参数解释

    最上面的图形显示的是神经网络的结构图 xff0c 可知有一个隐层一个输出层 第二部分显示的是训练算法 xff0c 这里为学习率自适应的梯度下降BP算法 xff1b 误差指标为MSE 第三部分显示训练进度 xff1a Epoch xff1a
  • SQL语句统计个数大于一的记录

    1 主要是利用Having语句进行 xff0c 由于where不能与聚合函数一起使用 xff0c 所以用having SELECT MC COUNT MC AS SL FROM JSB GROUP BY MC HAVING COUNT MC
  • You must give at least one requirement to install (see "pip help install")

    语言 python why install 后面没有参数 xff0c 也就是说没有给想要安装的包 way pip install 后面要跟想要安装的包名 转载于 https www cnblogs com 2bjiujiu p 902966
  • VHDL乘除法及转换

    首先鄙视一下这个不智能的语言 1 要进行乘法与除法 xff0c 数据类型必须是signed 2 两个16位的数相乘 xff0c 结果必须是32位的 3 乘以2的n次幂的数可以直接乘 xff0c 之后截位也比较方便 xff0c xff08 其
  • C语言真正的编译过程

    说实话 xff0c 很多人做了很久的C C 43 43 也用了很多IDE xff0c 但是对于可执行程序的底层生成一片茫然 xff0c 这无疑是一种悲哀 xff0c 可以想象到大公司面试正好被问到这样的问题 xff0c 有多悲催不言而喻 x
  • Docker 删除&清理镜像

    文章首发自个人网站 xff1a https www exception site docker docker delete image 本文中 xff0c 您将学习 Docker 如何删除及清理镜像 xff1f 一 通过标签删除镜像 通过如
  • 解决:invalid application of `sizeof' to incomplete type `({anonymous})'错误

    这个错误的原因 xff1a sizeof不能用在extern变量 xff0c sizeof 的计算发生在代码编译 的时刻 extern 标注的符号 在链接的时刻解析 所以 sizeof 不知道 这个符号到底占用了多少空间 发生错误的程序是这
  • 自制吸锡带

    焊接qfp封装芯片的时候 xff0c 由于两个引脚间距过小 xff0c 常常会在引脚上留有焊锡 xff0c 这个时候就需要吸锡带 xff0c 但是一般情况下我们手边的设备并不齐全 xff0c 所以我们可以利用手边的工具自制 工具 xff1a
  • 实验六

    芯片派生 include lt iostream gt using namespace std class Base public void add int x int y cout lt lt x lt lt 34 43 34 lt lt
  • geometry_msgs.msg.PoseStamped 代码示例

    https programtalk com python examples geometry msgs msg PoseStamped 转载于 https www cnblogs com sea stream p 11129929 html
  • ubuntu 执行apt-get update报错Failed to fetch

    在ubuntu下执行sudo apt get update时 xff0c 经常会遇到报错 xff1a Err http security ubuntu com precise security InReleaseErr http secur
  • github中的wiki是干嘛的_在 Hyperf 框架中,如何定制 gen:model 命令

    Hyperf v2 0 版本中 xff0c 会将 decimal 转化为 float xff0c 从而存在精度丢失的风险 如果直接修改这个问题 xff0c 可能会导致 v2 0 出现 BC xff0c 所以我们在 v2 1 中得到了处理 x
  • APM飞控修改数传模块方法

    APM飞控修改数传模块方法 硬件 ARDUCOPTER第二代数传模块 USB接口 数传模块 telem接口 usb ttl模块 修改方法 注意 xff1a APM固件版本和数传模块估计版本是分开的 xff0c 但有一定的对应关系 xff0c

随机推荐

  • HTTP AUTH 那些事

    谨以此文献给那些需要实现HTTP AUTH的 程序猿 们 关于HTTP AUTH的文档不多 RFC在 http www ietf org rfc rfc2617 txt wiki在 http en wikipedia org wiki Ba
  • 基于超声波的四轴定高控制简析

    笔者是来自武汉理工的小青同学 xff0c 接下来为大家讲一下基于超声波的定高问题 xff0c 鉴于笔者能力有限 xff0c 所以如有错误请多指教 xff0c 且很多仅仅是工程上的近似化应用 xff0c 没有做过仿真模拟 我讲的东西更加偏重于
  • Android 新建工程 卡在Gradle:Resolve dependencies':app:_debugCompile'

    今天更新 androidSDK 到 5 0 xff0c 发现新建工程时卡在 Gradle Resolvedependencies 39 app debugCompile 39 首先 xff0c googledevelop是访问不了的 xff
  • 数学公式

    一 泰勒公式 数学中 xff0c 泰勒公式是一个用函数在某点的信息描述其附近取值的公式 如果函数足够平滑的话 xff0c 在已知函数在某一点的各阶导数值的情况之下 xff0c 泰勒公式可以用这些导数值做系数构建一个多项式来近似函数在这一点的
  • python内置方法和属性

    1 del 方法 作用 当使用类名 创建对象时 xff0c 为对象分配完空间后 xff0c 会自动调用 init 方法 xff0c 当对象被从内存中销毁前 xff0c del 方法会被自动调用 应用场景 xff1a init 方法可以重新设
  • Linux行人识别,0.kcf-tracker 机器人跟踪编程,基于opencv的行人检测和 ,当 发现 后自动进行 。 Linux Network 网络 276万源代码下载- www.pudn.co...

    文件名称 0 kcf tracker下载 收藏 5 4 3 2 1 开发工具 Windows Unix 文件大小 95560 KB 上传时间 2017 05 14 下载次数 0 详细说明 xff1a 机器人跟踪编程 xff0c 基于open
  • 【VirtualBox】快照

    一 快照备份 虚拟机系统快照下来 xff0c 以后就可以恢复到快照之前的系统 右上角 gt 虚拟电脑工具 gt 快照 转载于 https www cnblogs com chenxiaomeng p 9497166 html
  • TX2-start 6 CPU kernel-开启高功耗模式

    1 TX2简介 Jetson TX2是由一个GPU和一个CPU集群组成 CPU集群由双核denver2处理器和四核ARM Cortex A57组成 xff0c 通过高性能互连架构连接 拥有 xff16 个CPU核心和一个GPU xff0c
  • 生成正太随机变量

    clc clear close format long syms u v x y u1 u2 u3 u3 u x1 x2 x3 x4 x5 d L int int int int 1 x5 x4 1 x4 x3 1 x3 x2 1 x2 x
  • 【opencv基础】OpenCV installation stuck at [ 98%] Built target opencv_perf_stitching with no error...

    前言 按照官网步骤安装opencv的过程中进行到98 时一直没有继续进行 原因 后台一直在编译运行 xff0c 只需等待即可 xff0c 参考here xff1b well turns out it gets stuck for quite
  • PX4的UORB通信机制

    在Firmware的msg文件夹里面 xff0c 里面有很多 msg结尾的文件 xff0c 这些msg文件在编译的时候可以生成h头文件 xff0c 这些编译过程中生成的头文件一般是保存在build default src module uo
  • ubuntu下安装和更新R语言

    ubuntu 下安装和更新 R 语言 本文主要讲解在 ubuntu 下如何安装和更新 R 语言 将分别介绍什么是 R 语言 xff0c 简单方法安装 R 语言 xff0c 通过更新源来安装或更新 R 语言 xff0c 和安装 R 语言集成开
  • Linux 中各个文件夹的作用

    根目录 包含了几乎所的文件目录 相当于中央系统 进入的最简单方法是 xff1a cd boot 引导程序 xff0c 内核等存放的目录 这个目录 xff0c 包括了在引导过程中所必需的文件 在最开始的启动阶段 xff0c 通过引导程序将内核
  • 转:Fix Bug的五个阶段

    一个非常严重和困难的bug xff0c 能够成就一个饱经沧桑深受压力的有经验的专业程序员的职业生涯 经受这种考验的创伤程度 xff0c 相当你受到了一次严重的身体伤害 xff0c 离婚 xff0c 或是家庭成为的离世 研究人员在研究了计算机
  • 10.app后端选择什么开发语言

    在qq上 xff0c 经常看到有创业团队的创始人一直都招不到技术人员 xff0c 除了项目的因素外 xff0c 很大的原因就是所需要掌握的开发语言偏门 通过阅读本文 xff0c 详细了解选择开发语言的核心原则 xff0c 使各位心里对开发语
  • dell服务器系统开机提示错误解决方法

    DELL 服务器有时会若硬件的改动 xff0c 在开机以后会提示错误信息 信息一般会提示在显示器上 xff0c 以后举出如下信息的解决办法 信息 原因 纠正措施 Alert iDRAC6 not responding Rebooting i
  • 卡尔曼滤波原理

    卡尔曼滤波原理 原文链接 xff1a http www bzarg com p how a kalman filter works in pictures https blog csdn net u010720661 article det
  • 在网络直播中什么叫推流

    参考 xff1a 推流 xff0c 指的是把采集阶段封包好的内容传输到服务器的过程 其实就是将现场的视频信号传到网络的过程 推流 对网络要求比较高 xff0c 如果网络不稳定 xff0c 直播效果就会很差 xff0c 观众观看直播时就会发生
  • Hello, Weka

    转自http dreamhead blogbus com logs 16813833 html Weka xff0c 是一个用Java编写的数据挖掘软件 数据挖掘 xff0c 从字面上来看 xff0c 它是一个从数据中找寻有用信息的过程 x
  • ubuntu基础知识与技巧

    root用户与超级用户的切换 1 sudo i 2 sudo su 3 su root 安装升级 查看软件xxx安装内容 dpkg L xxx 查找软件库中的软件 apt cache search 正则表达式 或 aptitude sear