Linux使用技巧(更新至2009-4-19)

阅读更多
07年开始使用ubuntu,从7.04-9.04,从一开始的linux与windows并存,到只使用linux,期间磕磕碰碰(最开始的一个星期最难受),积累下这些技巧。这些技巧大多来自网上,这里共享出来,供转入linux的朋友参考。linux桌面这两年的发展很快,现在的linux桌面已经很好用了。曾经有位仁兄建议everybody should try ubuntu;我不建议everybody,但是每个程序员,至少应该试一下使用linux作为桌面。作为日常使用的工作环境,linux绝对可以给你跟windows不一样的感受-自由的世界、丰富的选择、没有病毒与流氓软件的侵扰。随着个人的成长,你所用的操作系统也跟着成长进化,系统会越用越顺手。正如我曾经在twitter上所说的:“使用windows,终遭'毒'手;使用linux,终成高手“。 Enjoy linux!

常用命令
安装和登录命令:login、 shutdown、 halt、 reboot 、mount、umount 、chsh
文件处理命令:file、 mkdir、 grep、dd、 find、 mv 、ls 、diff、 cat、 ln
查看某目录下文件的数目 ls -A|wc -w
mv foo.{jpeg,jpg} 这个命令将把foo.jpeg改名为foo.jpg。
系统管理相关命令: df、 top、 free、 quota 、at、 lp、 adduser、 groupadd kill、
crontab、 tar、 unzip、 gunzip 、last
网络操作命令:ifconfig、 ip 、ping 、 netstat 、telnet、 ftp、 route、 rlogin rcp 、finger 、mail 、nslookup
traceroute ip/hostname  Find network path to ip/hostname
系统安全相关命令: passwd 、su、 umask 、chgrp、 chmod、chown、chattr、sudo、pswho

lspci  List PCI devices
lsusb List USB devices
free -m Display RAM+Swap usage

控制台下滚屏
SHIFT + pageUp/pageDown

amule
aMule 并不预置获取服务器地址的列表文件位置,需要自己设置。中文用户推荐在“网络”->ED2k 的服务器列表文件地址处输入 http://www.emule.org.cn/server.met,点击左侧的小箭头更新;“网络”->Kad 的服务器列表文件地址处输入 http://emule-inside.net/nodes.dat,点击左侧的小箭头更新。

在opera里关联aMule的问题办法.和关联mldonkey差不多,在工具->首先项->高级->程序里添加协议为ed2k,程序是/usr/bin/ed2k,勾选在终端打开.然后需要注意,工具->首先项->高级->网络中,要取消选中用UTF-8给国际网址编码.然后op也能正常关联amule了.

firefox 下 about:config
1. 新建一個Boolean,名字為 network.protocol-handler.external.ed2k,值為true
2. 新建一個String,名字為 network.protocol-handler.app.ed2k,值為/usr/bin/ed2k
前兩個步驟一樣,重點是接下來...
3. 安裝"amule-utils"套件,因為要用到其中的/usr/bin/ed2k程式,接著點選ed2k的連結,如果跑出詢問關聯的視窗,記住不要使用默認的,點選其他程式,照著路徑/usr/bin/ed2k找出ed2k的程式來使用

• aptitude下载包
sudo aptitude download unrar 下载包而不安装,下载到当前目录
sudo apt-get install -d unrar 下载到/var/cache/apt/archives

• cpu
安装sudo apt-get install cpufrequtils
查看cpu类型、当前频率、支持频率、运行模式等。
cpufreq-info
调整cpu运行模式
sudo cpufreq-set -g
powersave,是无论如何都只会保持最低频率的所谓“省电”模式;
userspace,是自定义频率时的模式,这个是当你设定特定频率时自动转变的;
ondemand,一有cpu计算量的任务,就会立即达到最大频率运行,等执行完毕就立即回到最低频率;
conservative,翻译成保守的,也就是默认的模式,一般选择这个,会自动在频率上下限调整;
performance,顾名思义只注重效率,无论如何一直保持以最大频率运行。

sudo cpufreq-set -c 0 -f 1.33G && sudo cpufreq-set -c 1 -f  1.33G      
sudo cpufreq-set -c 0 -g conservative && sudo cpufreq-set -c 1 -g conservative

• 查看目录的磁盘占用情况
du -h --max-depth=1 | sort -n -r
我觉得,要达到这样的目的,还不如用 du -hs

find
• 删除当前目录及子目录中所有某种类型的文件
find . -name *.db -delete
find . -name CVS -delete

递归查找文件内的字符串
find ./ -name ‘*.html’ -exec grep “breadcrumbs.inc.php” ‘{}’ \; -print
这条命令将查找所有包含 breadcrumbs.inc.php 的 HTML 文件。

• 合并PDF文件
使用Gost Script和 PDFtk运行如下命令:
#gs -q -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=test.pdf -dBATCH *.pdf
结果:把当前目录下所有的 pdf 文件全部合并到 test.pdf 中。

修改mac地址
修改 MAC 地址,这一步较 Windows 中的修改要简单。

首先把网卡设备给 down 掉,否则会报告系统忙,无法更改。
sudo ifconfig eth0 down
#然后修改 MAC 地址
sudo ifconfig eth0 hw ether  00:FF:BB:CC:DD:EE #(你的MAC地址,随便啦,XXOO的,反正是0-9、A-F就行)
sudo ifconfig eht0 up #重新启用网卡
sudo /etc/init.d/networking restart #重启一下网络服务。

如果只是为了突发的访问一下其他网段的IP,可以用命令临时加一个IP,重启之后就失效。
命令如下:
sudo ifconfig eth0:0 192.X.X.X netmask 255.255.255.0 up
ifconfig eth0:2 61.144.192.242 netmask 255.255.255.192 broadcast 61.144.192.255

• root和当前用户用同样的主题
sudo ln -s ~/.themes/* /usr/share/themes
sudo ln -s ~/.icons/* /usr/share/icons

• mp3转编码
我用的是 Mutagen,除了 listen 还是不能识别意外,其它几个播放器都可正常显示中文信息了。
命令如下:
sudo apt-get install python-mutagen

使用方法:
mid3iconv -e gbk *.mp3

如果想转换当前目录下的所有 mp3 (包括子目录):
find . -iname "*.mp3" -execdir mid3iconv -e gbk {} \;

制作iso
mkisofs -r -o file.iso ~/fold
加载iso
mount -t iso9660 -o loop xxx.iso /path

samba
smb共享要点:修改配置文件,使用系统的用户。 用smbpassword设置共享用户的密码。虽然都是系统的用户,但是跟系统的密码可以不一样。
sudo smbmount //192.168.0.88/d$ /media/server1d -o iocharset=utf8,codepage=cp936,username=administrator,password=fireshort

• 搜索并替换文件里的内容
sed -i ’s/b/strong/g’ index.html
此命令搜索 index.html 文件中的 b 并将其替换为 strong。

• 创建存档文件
tar -czpf folder_name.tar.gz folder_name
该命令将 folder_name 创建为 folder_name.tar.gz 存档文件。

用 tee 显示信息同时重定向到文件
display it out as well as store into a file
echo "hello world" | tee test.txt
Append to file and display it out as well
echo"hello world" | tee -a test.txt

• mail 命令发送附件
uuencode file.txt file.txt | mail [email protected]

• wget 使用技巧
wget 是一个命令行的下载工具。对于我们这些 Linux 用户来说,几乎每天都在使用它。
1. $ wget -r -np -nd http://ivan.iteye.com/packages/
这条命令可以下载 http://ivan.iteye.com 网站上 packages 目录中的所有文件。其中,-np 的作用是不遍历父目录,-nd 表示不在本机重新创建目录结构。
   2. $ wget -r -np -nd --accept=iso http://ivan.iteye.com/centos-5/i386/
与上一条命令相似,但多加了一个 --accept=iso 选项,这指示 wget 仅下载 i386 目录中所有扩展名为 iso 的文件。你也可以指定多个扩展名,只需用逗号分隔即可。
   3. $ wget -i filename.txt
此命令常用于批量下载的情形,把所有需要下载文件的地址放到 filename.txt 中,然后 wget 就会自动为你下载所有文件了。
   4. $ wget -c http://ivan.iteye.com/really-big-file.iso
这里所指定的 -c 选项的作用为断点续传。
   5. $ wget -m -k (-H) http://ivan.iteye.com/
      该命令可用来镜像一个网站,wget 将对链接进行转换。如果网站中的图像是放在另外的站点,那么可以使用 -H 选项。

查看设备的UUID
如果设备进行过格式化,UUID 已经更新,所以要重新获取设备 ID 。
$ sudo vol_id /dev/sda5
获得类似如下的信息,记住其中的 ID_FS_UUID

也可以用ls -al /dev/disk/by-uuid

还可以直接用sudo blkid 查看。

• 英文界面使用中文输入法
修改/etc/environment
LANG="en_US.UTF-8"
SUPPORTED="zh_CN.UTF-8:zh_CN.GBK:zh_CN:zh:en_US.UTF-8:en_US:en"
LC_CTYPE="zh_CN.UTF-8"

cue2tracks -- 转换 cue ape 到分轨 flac
cue2tracks  -c flac -f gbk -o "/data/media/music/abc/%p-%N%t" CDImage.cue
测试
cue2tracks -R  -c flac -f gbk  -o "/data/media/music/abc/%p-%N%t" CDImage.cue
真正执行

• Linux打开文件的限制
The current setting for maximum number of open files can be viewed with the command:
ulimit -n 查看
http://haka.sharera.com/blog/BlogTopic/5374.htm

vim /etc/security/limits.conf

加上:
*        soft   nofile          8192
*        hard   nofile          20480

• 解决Ubuntu下的JAVA中文乱码
1.在 jre/lib/fonts/ 下建立个目录 fallback
mkdir /usr/lib/jvm/java-1.5.0-sun/jre/lib/fonts/fallback/

2.在 fallback 里弄个中文字体
拷贝或链接都可以
ln -s /usr/share/fonts/truetype/arphic/uming.ttf /usr/lib/jvm/java-1.5.0-sun/jre/lib/fonts/fallback/


解决text-editor打开.txt文档乱码现象
依次打开 apps->gedit2->preferences->encodings双击右边的 “auto_detected"->add->输入:gb2312->OK->UP到它在最上边->OK。

巧用 watch 命令
在 Linux 中, Shell 命令“watch”的作用是以全屏方式重复地执行指定的命令。用户可以通过它
了解命令的运行情况。例如用户如果想实时观察内存变化,那么可以输入如下命令:
#watch free
这样就可以动态地观察内存中各个指标在某段时间内的变化情况了。

默认 watch 会以 2s 的间隔重复运行命令,你也可以用 -n 参数指定时间间隔~

还有一个实用的参数是 -d,这样 watch 会帮你高亮显示变化的区域,这样更加一目了然了~

使用opendns
To avoid having your settings get revoked after reboots, or after periods of inactivity, do this:
$ sudo cp /etc/resolv.conf /etc/resolv.conf.auto
$ gksudo gedit /etc/dhcp3/dhclient.conf
# append the following line to the document
prepend domain-name-servers 208.67.222.222,208.67.220.220;
# save and exit
$ sudo ifdown eth0 && sudo ifup eth0

Metacity 的混合特效
执行下面的终端命令来打开 Metacity 的混合特效:
gconftool-2 -s '/apps/metacity/general/compositing_manager' --type bool true

要关闭 Metacity 的混合特效则执行:
gconftool-2 -s '/apps/metacity/general/compositing_manager' --type bool false

缺少公钥问题的解决方法
症状:
代码:
sudo apt-get update
W: GPG error: http://apt.tt-solutions.com dapper Release: 由于没有公钥,下列签名无法进行验证: NO_PUBKEY 06EA41DE4F6C1E86

解决方法:
代码:
gpg --keyserver subkeys.pgp.net --recv 4F6C1E86
gpg --export --armor 4F6C1E86 | sudo apt-key add -

说明:
若缺少其他公钥,则将命令中两处4F6C1E86改为NO_PUBKEY 06EA41DE4F6C1E86中最后8位即可!


sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com FE85409EEAB40ECCB65740816AF0E1940624A220

• bash常用命令
# ctrl+r 可以搜索历史命令,很常用的一个
# ctrl+a 到行首
# ctrl+e 到行尾
# ctrl+u 删除到行首
# ctrl+k 删除到行尾
# ctrl+l 类似 clear 命令效果
# ctrl+y 粘贴

定制 linux 提示符
   在 bash 中提示符是通过一个环境变量$PS1 指定的。用 export $PS1 查看现在的值,比较直观常用的提示符可以设定为 export PS1=“[ \u@\h \W]\$”。其中\u 代表用户名,\h 代表主机名,\W 代表当前工作目录的最后一层,如果是普通用户\$则显示$,root 用户显示#

git
创建一个版本库:git-init-db
植入内容跟踪信息:git-add
查看提交状态:git-status
提交内容到版本库:git-commit
git-commit -m "Initial commit of gittutor reposistory"
$ git-commit -a -m "new day for git"
管理分支:git-branch
创建分支
下面的命令将创建我自己的工作分支,名叫 robin,并且将以后的工作转移到这个分支上开展。
$ git-branch robin
$ git-checkout robin
git-show-branch 命令可以使我们看到版本库中每个分支的世系发展状态,并且可以看到每次提交的内容是否已进入每个分支。

更改系统时间
date 123017412008.50
date 122012301999.20 #將系統時間設為1999年12月20日12時30分20秒
当你以 root 身分更改了系统时间之后,请记得以 clock -w 来将系统时间写入 CMOS 中,这样下次重新开机时系统时间才会持续保持最新的正确值。 

实现彩色版的 Manpages
   1. 在你的主目录创建 .terminfo 目录,并转到该目录:mkdir ~/.terminfo/ && cd ~/.terminfo
   2. 从作者网站获取 terminfo 描述文件:wget http://nion.modprobe.de/mostlike.txt
   3. 使用 tic 命令编译 mostlike.txt 文件(编译后可删除):tic mostlike.txt
   4. 定义别名:alias man="TERMINFO=~/.terminfo/ LESS=C TERM=mostlike PAGER=less man"

fortune
可以的,自己找个txt 文件, 注意编码 utf8 , ( icov 转 gbk ) , 每小节用 % 隔开,% 单行后边不能有其他字符,
然后 sudo strfile 一下就行了 , fortune -f 可以设调用几个文件的频率 , 比如 fortune 100% tang300 就只检索唐诗了

screen
    • ctrl-a c:创建一个新的 Shell
    • ctrl-a ctrl-a:在 Shell 间切换
    • ctrl-a n:切换到下一个 Shell
    • ctrl-a p:切换到上一个 Shell
    • ctrl-a 0…9:同样是切换各个 Shell
    • ctrl-a d:退出 Screen 会话
    • When you're using a window, type C-a A to give it a name. This name will be used in the window listing, and will help you remember what you're doing in each window when you start using a lot of windows.
    • ctrl-a x: 锁定屏幕
    • Control-a ” will show all the current shells. Use the up/down cursor keys and then press enter to select a shell.
    • use Ctrl-a w and you get the list on the status line

    screen -S sessionname  create a session
screen -ls will list the current screen sessions running on a machine.
    screen -x Attach to a not detached screen. (Multi display mode).

查看路由信息:
netstat -rn
route -n
手工增加一条路由:
route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1
手工删除一条路由:
route del -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1

在命令行下面,改变图形的大小
譬如想把图形filename.bmp的大小缩小一半,可以运行:
convert -resize 50% filename.bmp filename_small.bmp

当然,如果想扩大一倍,可以运行:
convert -resize 200% filename.bmp filename_larger.bmp

However, to convert "Freedom Downtime" (starting size of 640x480) to a smaller clip (say 320x240), the command would look like this:
ffmpeg -i freedom\downtime.mpg -s 320x240 freedom\downtime\resized.mpg

If you have a 1280x800 pixel image which you want to resize to
640x400, you can do so with either:
mogrify -resize 50 in.jpg out.jpg
or:
mogrify -resize 640x400 in.jpg out.jpg
or even just:
mogrify -resize 50% in.jpg out.jpg

mogrify -thumbnail 50 in.jpg out.jpg

You can also use it to convert images using the “-format”
argument. So,
mogrify -format jpg *.png
will convert all the .png files in the current directory into .jpg format
(names will be the same).

用ssh开代理
用命令
ssh -CfNg -D 127.0.0.1:13501 -l fireshort ivan.iteye.com
后台连接到ivan.iteye.com,各个参数的含义为:
    -C 传输时压缩数据
    f 输入密码登录后,ssh进入后台运行。这样我们才可以用ssh建立一个长时间不断的Tunnel
    N 在ssh2协议中表示:不执行任何命令。我们需要的只是ssh的端口转发(tunnel)功能,所以并不需要一个shell
    g 允许远程主机连接ssh转发的端口
    -D 设置socks代理地址和端口。由于只是本机访问,所以设置为127.0.0.1:13501。如果需要在任意网络的计算机访问,可以设置成202.11x.2x.135:13501。其中13501是socks代理的端口
    -l ssh登录名。

备份系统
使用"dpkg --get-selections > pkg.list"命令来获得一个完整详尽的已装软件列表,备份我的/etc和/home文件夹到一个独立分区,然后你就可以随时恢复你的系统了,而且超简单。

• 备份已安装软件包名(手动安装的不管)
aptitude search '~i !~M' | tr -s ' ' | cut -f 2 -d ' ' > /etc/apt/installed.txt

你可能感兴趣的:(Linux,Git,SSH,Ubuntu,C++)