史上最全的常用linux命令

《常用linux命令》

================================GNOME应用技巧:=============================================================
Alt + F2: 类似Windows下的Win + R组合键,在GNOME中运行应用程序
Alt Tab: 同Windows下的Alt + Tab组合键,在不同程序窗口间切换
PrintScreen:全屏抓图
Alt + PrintScreen:当前窗口抓图
Alt + F4:关闭窗口
Alt + F10:最大化窗口
F11:全屏(对大多数程序)
Ctrl+X:剪切
Ctrl+C:复制
Ctrl+V:粘贴
文件浏览器(部分)
Ctrl+H 显示隐藏文件(切换键)
Ctrl+T 新建标签

Ctrl+Alt+F1:切换到第一个文本终端。在Linux下你可以有多达六个不同的终端。
Ctrl+Alt+F7:切换到第一个图形用户界面(一般来说X-window在第七个终端)。
ctrl+alt+f2=linux终端用户(alt + f7返回xwindows,alt+ 《- 或-》 进行终端切换)
窗口最大化时,直接拖标题栏,可立刻缩小窗口,如果不松手,再拖回桌面边缘,又可马上恢复最大化。这样也便于临时性的看被最大化窗口覆盖了的下面窗口的信息。
如果文件夹里面很多文件,比如/usr/bin下面,则可以直接输入文件名快速定位:如firefox
直接按/就可以输入地址,打开nautilus。
任务栏滚动鼠标=切换窗口。
在gnome终端,不想输入长的,难记的路径,从nautilus拖个对应目录的文件过来,把文件名去掉,就等于输入长串的路径了。
linux系统的复制/粘贴:鼠标选择文字,换到要输入的地方,鼠标中键就是粘贴了。几乎所有软件通用。不要老想着ctrl-v那套。
CTRL+ALT+方向键可以切换工作区
ctrl+s是按模式选择,即可以如*.jpg之类的,选择一片,支持通配符*。
ctrl+shift +拖动,可以快速建立链接。
快速拖动窗口:按住 Alt 键,然后在任一窗口拖动鼠标左键,即可拖动窗口。
鼠标中键单击窗口标签栏, 将切换到另一打开的窗口(不包括最小化的)
ctrl+alt+T 打开终端
ctrl+alt+del=调出关机菜单
ctrl+alt+d=最小化gnome所有窗口
Win+E - 显示所有桌面,方便的左右选择。
Win + 鼠标滚轮 - 放大/缩小屏幕
选中=复制
===================Bash Shell (终端)快捷键====================================================================
tab=补全
TAB 巧用tab键,当你不知道文件或命令的全名是请连续按两下tab键.
CTRL+a:将光标移到行首
CTRL+e:将光标移到行尾
纯字符终端滚动屏幕: 同时按下 Shift + PageUp 或 Shift + PageDown。
!$:重复前一个命令最后的参数。
Ctrl + c - 终端进程
Ctrl + l - 清屏,类似 clear 命令
Ctrl + r - 查找历史命令
Ctrl + u - Delete backward from cursor // 密码输入错误的时候比较有用
shift+ctrl+c复制
shift+ctrl+v粘贴
shift+ctrl+T新建标签页
win+n切换背景颜色风格
上下箭头键 浏览历史命令
ctrl+p=向上显示缓存命令
ctrl+n=向下显示缓存命令
alt+滚轮 :查看显示历史?
ctrl+c强行中断当前程序的执行。
ctrl+d表示结束当前输入(即用户不再给当前程序发出指令),那么Linux通常将结束当前程序。
ctrl+z表示将当前前台运行的经常放在后台并挂起,如需其在后台继续运行,需用“bg 进程号”使其继续运行;再用"fg 进程号"可将后台进程前台化
==========================================================================================
http://www.commandlinefu.com/
------------------------------
登录mysql
mysql -u root -p
(建立数据库 )
create database 库名;
(添加用户 )
grant all on 库名.* to 用户名@localhost identified by '密码';
(显示数据库列表)
mysql>show databases;
(删除数据库)
drop database 数据库;
(每行后面的;(半角分号)不要忘了)

停止mysql
/etc/rc.d/init.d/mysqld stop
启动mysql
/etc/rc.d/init.d/mysqld start
更改文件的所有者或组
chown mysql:mysql filename

改变文件或目录的访问权限
chmod 660 filename

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 {} \;
-----------------------------------------------------

安装php扩展命令:sudo apt-get install php5-sqlite
-----------------------------------------------------------
nginx:
sudo /etc/init.d/nginx start
-------------------------------------------------------------
apache:
产生的启动和停止文件是:/etc/init.d/apache2
启动:sudo apache2ctl -k start
停止:sudo apache2ctl -k stop
重新启动:sudo apache2ctl -k restart 或 sudo /etc/init.d/apache2 restart
配置文件保存在:/etc/apache2
apache 开启gzip压缩 /etc/apache/mods-available/deflate.load

cat /etc/httpd/logs/access_log|awk '{print $1}'|sort|uniq -c|sort -nr|less ???
cat /etc/httpd/logs/access_log|grep '02/Apr/2012'|awk '{print $1}'|sort|uniq -c|sort -nr|less ????
启用 mod_rewrite 模块

终端命令:sudo a2enmod rewrite
--------------------------------------------
删除PPA源的方法 sudo add-apt-repository -r ppa:passy/vim
---------------------------------------
修改hosts
sudo gedit /etc/hosts
2、添加解析记录( . )
完整案例:127.0.0.1 localhost.localdomain localhost
简洁记录:127.0.0.1 localhost
3、保存后重启网络
sudo /etc/init.d/networking restart
--------------------------------------------
SVN:
检出文件svn checkout https://svn.sinaapp.com/newapp
上传文件 :svn commit -m "add TODO.htm"
------------------------------------------------------
linux下安装.sh文件
$ chmod +x 文件名
然后执行 ./文件名
-------------------------------------
ubuntu下的批处理把要在终端执行的语句全部放在一个新建的文本文档里,如保存为abc
打开终端,输入sh abc 回车。
----------------------------------------------------------
更新图标缓存 gtk-update-icon-cache -f /usr/share/icons/Humanity

查看所有用户 cat /etc/passwd
---------------------------------------------------
---------------------------------------------------------------------
<command> --help:查看一个命令的中文帮助

上下箭头查看终端历史命令
q 退出man等显示的内容

建立硬链接 ln file1 file2
建立软链接 ln -s file1 file2

sed 替换文件内容(sed可依照script的指令,来处理、编辑文本文件。)

. Run a command script in the current shell

cmd1 ; cmd2
Run cmd1 then cmd2
cmd1 && cmd2
Run cmd2 if cmd1 is successful
cmd1 || cmd2
Run cmd2 if cmd1 is not successful

cmd1 | cmd2
stdout of cmd1 to cmd2

cmd < file
Input of cmd from file
cmd1 <(-cmd2
Output of cmd2 as file input to cmd1
cmd > file
Standard output (stdout) of cmd to file
cmd
Discard stdout of cmd
cmd >> file
Append stdout to file
cmd 2> file
Error output (stderr) of cmd to file
cmd
stdout to same place as stderr
cmd
stderr to same place as stdout
cmd &> file
Every output of cmd to file

any_command&
Run any command in the background

linux下查找文件内容!find+grep
#> find . -type f -exec grep 'mingtian' -l {} \;(find后的.可换成dir)
grep -l :是显示匹配的内容的文件名字!
或者:
#> find . -type f -name "*.*" |xargs grep 'xiaoshou' -l
(这个方法 不好,挺乱的,还慢,推荐前一个方法!)

inux中搜索文件中某字符串
单个文件中搜索test: grep test foo.txt
多个文件中:grep test *.txt
grep -r test *(包括子文件夹)
grep text /use/local -r(包括子文件夹)

替换文件夹下包含字符串的文件
sed结合grep
例:要将目录/www下面所有文件中的zhangsan都修改成lisi,这样做:
sed -i “s/old/new/g” `grep old -rl /www` (此处为反引号)

dpkg -i <package.deb>
安装一个 Debian 包裹文件,如你手动下载的文件。
dpkg -r <package>
移除一个已安装的包裹。
dpkg -P <package>
完全清除一个已安装的包裹。包括配置文件。
dpkg -l
列出所有已安装的软件包

sudo apt-get install packagename 安装一个新软件包
sudo apt-get update 取回更新的软件包列表信息
sudo apt-get upgrade (这一步安装应用程序更新,不安装新内核等)

清除所有已删除包的残馀配置文件
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

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

dpkg --get-selections | grep -v deinstall > ~/somefile
从上面备份的安装包的列表文件恢复所有包

dpkg --set-selections < ~/somefile
sudo dselect
清理旧版本的软件缓存

sudo apt-get autoclean
清理所有软件缓存

sudo apt-get clean

一键安装 LAMP 服务

sudo tasksel install lamp-server
删除旧内核

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

增加一个ppa源

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

显示当前硬件信息

sudo lshw

查看硬盘温度

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

查看当前屏幕分辨率

xrandr

查看目录占用空间

du -hs 目录名

使用文件来增加交换空间

#创建一个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

查看当前有哪些进程

ps -AFL
查看进程的启动时间

ps -A -opid,stime,etime,args

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

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
按cpu利用率从大到小排列进程

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

中止一个进程

kill 进程号(就是ps -A中的第一列的数字)
或者 killall 进程名
强制中止一个进程(在上面进程中止不成功的时候使用)

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

查看进程打开的文件

lsof -p 进程的pid
显示开启文件abc.txt的进程

lsof abc.txt

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

lsof -i :22
显示nsd进程现在打开的文件

lsof -c nsd

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

nohup 程序 &

详细显示程序的运行信息

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文件。

如何设置动态域名

#首先去 http://www.3322.org 申请一个动态域名
#然後修改 /etc/ppp/ip-up 增加拨号时更新域名指令
sudo vim /etc/ppp/ip-up
#在最後增加如下行
w3m -no-cookie -dump 'http://username:password@members.3322.org/dyndns/update?system=dyndns&hostname=yourdns.3322.org'

根据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

同一个网卡增加第二个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 '

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

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: 转换非相对链接为相对链接。

解决wget下载网站乱码
wget --restrict-file-names=nocontrol -m http://ebook.elain.org

如何多线程下载

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

防止外网用内网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

服务

添加一个服务

sudo update-rc.d 服务名 defaults 99
删除一个服务

sudo update-rc.d 服务名 remove
临时重启一个服务

/etc/init.d/服务名 restart
临时关闭一个服务

/etc/init.d/服务名 stop
临时启动一个服务

/etc/init.d/服务名 start

增加用户

sudo adduser 用户名
删除用户

sudo deluser 用户名

修改用户资料

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

设置系统http代理

export http_proxy=http://xx.xx.xx.xx:xxx
设置系统https代理

export https_proxy=http://xx.xx.xx.xx:xxx
修改系统登录信息

sudo vim /etc/motd

切换输入法引擎

im-switch -c
察看文件编码

enca 文件名
file 文件名

转换文件名由GBK为UTF8

sudo apt-get install convmv
convmv -r -f cp936 -t utf8 --notest --nosmart *
批量转换src目录下的所有文件内容由GBK到UTF8

find src -type d -exec mkdir -p utf8/{} \;
find src -type f -exec iconv -f GBK -t UTF-8 {} -o utf8/{} \;
mv utf8/* src
rm -fr utf8
转换文件内容由GBK到UTF8

iconv -f gbk -t utf8 $i > newfile
批量转换文件内容由GBK到UTF8

for i in `find . *`; do if [ -f "$i" ]; then iconv -f gb2312 -t utf8 $i > "./converted/$i" fi ; done

转换 mp3 标签编码

sudo apt-get install python-mutagen
find . -iname '*.mp3' -execdir mid3iconv -e GBK {} \;
或者使用图形界面工具“小K”,具体请参考解决文件名mp3标签和文本文件内容的乱码问题

控制台下显示中文

sudo apt-get install zhcon
使用时,输入zhcon即可

更具体的输入:zhcon --utf8 --drv=vga
如果在/etc/zhcon.conf中指定了分辨率,可以去掉--drv=vga以指定的分辨率启动。

lftp 登录远程Windows中文FTP

lftp :~>set ftp:charset GBK
lftp :~>set file:charset UTF-8
java6 的安装和中文设置

#下面是ubuntu安装标准的sun-java,安装过程中需要使用tab键切换同意其授权协议
sudo add-apt-repository "deb http://archive.canonical.com/ `lsb_release -c | awk '{print $2}'` partner"
sudo apt-get update
sudo apt-get install sun-java6-jdk sun-java6-plugin ttf-wqy-microhei
sudo apt-get remove ttf-kochi-gothic ttf-kochi-mincho ttf-unfonts ttf-unfonts-core
sudo mkdir -p /usr/lib/jvm/java-6-sun/jre/lib/fonts/fallback
sudo ln -s /usr/share/fonts/truetype/arphic/wqy-microhei.ttc /usr/lib/jvm/java-6-sun/jre/lib/fonts/fallback
openjdk6 的安装和中文设置

sudo apt-get install openjdk-6-jdk ttf-wqy-microhei
#有两种解决办法,第一种关闭Java的AA
echo "export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on'" >> ~/.profile
#第二种直接修改Java字体配置
echo "allfonts.umingcn=WenQuanYi Microhei Hei" | sudo tee -a /usr/lib/jvm/java-6-openjdk/jre/lib/fontconfig.properties
echo "allfonts.uminghk=WenQuanYi Microhei Hei" | sudo tee -a /usr/lib/jvm/java-6-openjdk/jre/lib/fontconfig.properties
echo "allfonts.umingtw=WenQuanYi Microhei Hei" | sudo tee -a /usr/lib/jvm/java-6-openjdk/jre/lib/fontconfig.properties
echo "allfonts.wqy-zenhei=WenQuanYi Microhei Hei" | sudo tee -a /usr/lib/jvm/java-6-openjdk/jre/lib/fontconfig.properties
echo "allfonts.shanheisun=WenQuanYi Microhei Hei" | sudo tee -a /usr/lib/jvm/java-6-openjdk/jre/lib/fontconfig.properties
echo "filename.WenQuanYi_Microhei_Hei=/usr/share/fonts/truetype/wqy/wqy-microhei.ttc" | sudo tee -a /usr/lib/jvm/java-6-openjdk/jre/lib/fontconfig.properties
程序显示有些字大,有些小

sudo apt-get remove ttf-kochi-gothic ttf-kochi-mincho ttf-unfonts ttf-unfonts-core
PDF 文件乱码

sudo apt-get install xpdf-chinese-simplified xpdf-chinese-traditional poppler-data
Flash中文乱码

sudo gedit /etc/fonts/conf.d/49-sansserif.conf
将倒数第四行 <string>sans-serif</string>
改为 <string>sans</string>
保存即可,重启firefox

unzip 中文文件名乱码

sudo apt-get install p7zip-full
export LANG=zh_CN.GBK #临时在控制台修改环境为zh_CN.GBK,然后解压缩即可
7za e docs.zip
ibus跟随

安装ibus-gtk即可,最好另外安装:ibus-qt4

不显示以#开头的行

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

带行号显示文件的内容

nl 文件名
cat -n 文件名

去除文件中的行号

cut -c 5- a.py
删除文件中的重复行

cat file.txt |sort -u

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

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 即可,但这个命令每隔一段时间会自动运行,所以不用太在意

递归式创建一些嵌套目录

mkdir -pv /tmp/xxs/dsd/efd
递归式删除嵌套目录

rm -fr /tmp/xxs

获得文件的后缀名

echo xxx.xxx.rmvb |sed 's/.*\(\..*$\)/\1/'
去除文件的后缀名

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

移动路径下的文件并改名

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

复制文件或者目录

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

查看文件的时间

stat filename

显示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 -" #压缩传输一个目录并解压
把所有文件的后辍由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 zcvpf 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 -mtime -3600 -exec rm {} \;
删除访问时间在30天之前的所有文件

find . -type f -atime +30 -atime -3600 -exec rm {} \;
查找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 {} \;
统计当前文件个数

ls /usr/bin|wc -w
统计当前目录下所有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 filename | tr -d "^M" > newfile;
或者
sed -e "s/^M//g" filename > newfile;
或者
ex "+:%s/[Ctrl+V][Enter]//g" "+:wq" 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

播放swf文件

安装swf解码器

sudo apt-get install swfmill
如何保存串流视频(mms/rtsp)

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

批量缩小图片到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

抓取桌面操作的视频

ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg
命令行读出文本

espeak -vzh "从前有座山"
命令行抓屏

scrot -s screenshot.png

增加 rar 软件压缩和解压缩支持

sudo apt-get install rar unrar
增加 zip 格式压缩和解压缩支持

sudo apt-get install zip unzip
解压缩 xxx.tar.gz

tar -zxvf xxx.tar.gz
解压缩 xxx.tar.bz2

tar -jxvf xxx.tar.bz2
压缩aaa bbb目录为xxx.tar.gz

tar -zcvf xxx.tar.gz aaa bbb
压缩aaa bbb目录为xxx.tar.bz2

tar -jcvf xxx.tar.bz2 aaa bbb

特殊 URI 地址

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

从服务器上同步时间

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

设置电脑的时区为上海

sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
XP 和 Ubuntu 相差了 8 小时的时差

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

控制台抓图

setterm -dump n(n:1~7)
只是支持tty1-7。没中文。没颜色代码序列。

如何使用命令关闭显示器

xset dpms force off
设置CPU的频率

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

如何修改ssh登录提示

sudo gedit /etc/motd
如何关闭ssh登录提示

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

统计

统计最常用的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

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

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

通用的编译安装步骤

./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

如何更换gnome程序的快捷键

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

基于 OpenVZ 的 VPS 支持 OpenVPN 对外访问设置

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE
#或
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j SNAT --to-source VPS-IP-ADDRESS

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 需要删除启动程序

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

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

Linux下使用rsync最快速删除海量文件的方法
用rsync删除目标目录:
rsync --delete-before -a -H -v --progress --stats /tmp/test/ log/

**************************************************************************************************
名称:cat  说明:把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案)

名称:cd
使用方式:cd [dirName]
说明:变换工作目录至 dirName。 其中 dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的 home directory (也就是刚 login 时所在的目录).另外,"~" 也表示为 home directory 的意思,"." 则是表示目前所在的目录,".." 则表示目前目录位置的上一层目录。

指令名称:chmod   说明:改变文件或目录的访问权限

指令名称:chown   使用方式:chown user[:group] file... 说明:更改文件的所有者或组

名称:cp
使用权限:所有使用者
使用方式:
cp [options] source dest
cp [options] source... directory
说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录。

用法:find
使用说明:
将档案系统内符合 expression 的档案列出来。你可以指要档案的名称,类别,时间,大小,权限等不同资讯的组合,只有完全相符的才会被列出来。

名称:ls
使用权限:所有使用者
使用方式:ls [name...]
说明:显示指定工作目录下之内容(列出目前工作目录所含之档案及子目录)。

名称:mv
使用权限:所有使用者
使用方式:
mv [options] source dest
mv [options] source... directory
说明:将一个档案移至另一档案,或将数个档案移至另一目录。

名称:rm
使用权限:所有使用者
使用方式:rm [options] name...
说明:删除档案及目录。

名称:rmdir
使用权限:于目前目录有适当权限的所有使用者
使用方式: rmdir [-p] dirName
说明: 删除空的目录。
mkdir 创建目录
-p: parent,父目录不存在,则创建父目录
mkdir -p test/test

jobs 显示后台或挂起的进程

sort 可针对文本文件的内容,以行为单位来排序
xargs-- build and execute command lines from standard input

service ssh restart:重启ssh服务

whatis : Whatis command displays a single line description about a command.

iftop & iptraf
iftop和iptraf可以用来查看当前网络链接的一些流量情况。

mtr
MTR – traceroute 2.0,其是把 traceroute 和 ping 集成在一块的一个小工具 用于诊断网络。

剩余内容需要付费后查看,请点击支付

原创文章,转载请注明来自lenix博客,地址 http://blog.p2hp.com/archives/268

史上最全的常用linux命令
标签: