linux应用小技巧收集

一些一两句话的linux应用小技巧放在这个帖子里。

1、查看文件字符集编码是gb2312还是utf8等:$file filename (Determine file type of FILEs.)

2、find 命令忽略大小写参数 -iname

3、gftp 中如果要把一个文件移到其它目录可以使用“更名”,如把文件h.txt 移到 ./folder/h.txt就把文件名h.txt更名为./folder/h.txt就行了。注:gftp是linux下的图形化的ftp软件。

4、 查看目录的大小

du -sh dirname

-s 仅显示总计

-h 以K、M、G为单位,提高信息的可读性。KB、MB、GB是以1024为换算单 位, -H以1000为换算单位。

-b print size in bytes

(但是奇怪的是在redhat linux9.0中在图形界面的目录上点击右键的属性项上显示的大小与上面命令显示的大小不一样,如上面命令显示的是9M,而在图形界面的属性中显示的却是7.2M。不知道是怎么一回事?)

53 thoughts on “linux应用小技巧收集”

  1. 1、如果需要原封不动的复制一个目录及其下的所有东西,用 cp dir1 parentDir/ -a 。参数a等同于参数dpR;

    2、如果在用mkfs命令格式化一个分区需要为分区添加卷标,可以这样:

    在linux分区下,如:mkfs -t ext3 -L /boot /dev/hda1 (加 -L /boot即是把这个分区的卷标设为:/boot);

    在DOS分区下,如:mkfs -t msdos -n PWIN97 /dev/hda2 (加 -n PWIN97即是把这个分区的卷标设为:PWIN97);另,据我的经验,这时一定把DOS分区下的卷标全部大写,否则在DOS版的fdisk程序下删除分区时验证卷标名会通不过;而且,我发现,linux下用mkfs格式化dos分区可以说是一瞬间就完成了(而且在dos下面和windows下面都可以正常使用),而在dos下用format命令有时格式化一个盘可能要超过10分钟,不知道它们之间有什么区别没有?

    3、把linux下的含中文目录名和文件名拷贝到windows分区出现乱码的解决:

    mount windows分区时指定字符集和编码:

    mount -t vfat -o umask=0,iocharset=gb2312,codepage=936 /dev/hda1 /mnt/win

    其中iocharset=gb2312,codepage=936就是做这个的;

    也可以在/etc/fstab中这样写来自动mount:

    /dev/hda1 /mnt/win vfat exec,dev,suid,rw,umask=0,iocharset=gb2312,codepage=936 0 0

  2. 1, 查找包括zhcon字样(不分大小写)文件或目录并打包成tar文件。tar命令中的r模式即是把查找到的文件或目录追加到包中:

    find / -iname "*zhcon*" -exec tar rfv "zhcon.tar" {} \;

    2, 用rar分卷压缩文件,即参数v,后面是分卷的大小:

    rar a -v1024k $compressfile $filename

    3,按年月日时分秒的格式显示日期:

    date +%Y%m%d%H%M%S # Needs a leading '+' to invoke formatting.

    4, 开机加载某一模块,如声卡模块:

    在 /etc/rc文件的结尾加上:/sbin/modprobe sb io=0x220

    但不知在/etc/modules.conf文件中怎么加载任一模块?

  3. 1、在有zhcon中文控制台的情况下,在man, vi, less等程序下按CTRL+s屏幕会停止响应,但不是死机,可以开另外的控制台使用机器。

    在没有zhcon中文控制台的情况下,在上述程序按CTRL+s是Scroll Lock的状态,再按Scroll Lock键屏幕会重新响应。

    2、在man, vi, less 等程序下搜索用/。在w3m浏览网页时用CTRL+s搜索。

  4. 把img格式的文件克隆到软盘上的linux命令:
    dd if=/mnt/cdrom/bootflop.img of=/dev/fd0 bs=1440k
    我用这个命令到minix3光盘上的映像文件克隆到软盘上,以解决不能从光盘直接启动minix3安装光盘的问题。

  5. 1、
    dns设置在/etc/resolv.conf中,格式:nameserver xxx.xxx.xxx.xxx

    2、
    Damnsmalllinux的自定义启动项在: /opt/bootlocal.sh 中,如modprobe, ifconfig, iptables等等

  6. Linux两句话实现了共享上网(设置好服务器和客户机的ip后):
    iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -j SNAT --to 210.1.1.1
    echo 1 > /proc/sys/net/ipv4/ip_forward

  7. 1、查看 linux 下相应模块的版本,如:
    pkg-config --modversion gtk+-2.0
    pkg-config --modversion gtk+

    2、制作 sqashfs 压缩文件的命令,如:
    mksquashfs opera opera-8.52-cdl.md

    3、挂载 sqashfs 压缩文件的命令,如:
    mount -t squashfs -o loop firefox-2.0.0.6-cdl.md /mnt/squash

    4、用 apt-get 强制安装一个有依赖关系问题的软件的方法,如:
    apt-get -o APT::ForceLoopBreak=yes install locales

  8. 1、Redhat linux 9.0 中,杀掉指定名称的进程:killall name
    2、在 redhat linux 9.0 下不能用 shutdown -h now 关机,在 BIOS 中启用电源管理选项,问题解决了。不能究竟是不是关闭了电源管理的原因还不是非常确定;
    3、在redhat linux 9.0中,mkswap 命令建立交换分区或交换文件,swapon 命令启用交换分区;
    4、top 命令中的 buff + cached = free memory, 相当于 free 命令中的 -/+ buffers/cache,free 命令中的 used 是程序真正使用的内存,buffers + cached 是空闲的内存,使用的内存加上空闲的内存等于全部的内存(total),全部内存加上核心(?)占用的内存等于全部物理内存。(参见:Top命令中cache和buffed - Linux技术中坚站论坛

  9. (摘自:ubuntu6.06 linux xfs分区不能读取内容

    ubuntu6.06 linux xfs分区不能读取内容

    有一笔记本装的是ubuntu 6.06 ,有一分区是xfs,但一次突然断电后,再启动后进去,此
    分区能挂载,但进去后用ls命令报错,报错信息如下:正在读取目录:Input/output
    error ,求教各位,这怎样解决,我用fsck.xfs试过了,没效果,由于里面存的是很重要的
    东西,一定需要修复

    guohongqing 2006-12-29 01:59

    已经解决

    由于正在关机时断电,查了xfs的文档,用xfs_repair -L device修复

  10. 1、Ubuntu 6.06 LTS 在locale为 zh_CN.UTF-8 时挂载fat32 分区时要加参数:iocharset=utf8(详见:Ubuntu 6.06 LTS 上挂载fat32分区和ext2分区的一些测试。)

    2、在 Ubuntu 7.10 上安装nividia的受限显卡驱动后,屏幕分辨率不正常,可以手动修改/etc/X11/xorg.conf 文件,去掉不需要的分辨率,增加需要的分辨率,重启X后在系统首选项的屏幕分辨率选项中设置一下,也许就正常了。

    还有,安装了nividia受限驱动后,如果显示不正常,可以试试在系统设置中选择nividia驱动的不同型号的显卡,或者试试上面的nividia通用型的显卡驱动。

    另外,nividia显卡驱动不对可能造成窗口缺少右上角的“最小化”、“最大化”、“关闭”按纽,并且造成 gnome 终端一片空白。

  11. Ubuntu 6.06 LTS 在“系统->首选项->屏幕分辨率”中设置 X windows 的刷新率后,需要勾选“只对此计算机(ubuntu)设为默认(M)”,点击“应用”后,新设置的刷新率才会生效并保存下来。如不勾选上面的“只对此计算机(ubuntu)设为默认(M)”,本次登录生效,重新登录后就又回到原来的刷新率了。

  12. 现在的控制台 UTF-8 中文环境好像是不能实现的:
    http://www.linuxfromscratch.org/lfs/view/6.2/chapter07/console.html
    片断:
    · For Chinese, Japanese, Korean and some other languages, the Linux console
    cannot be configured to display the needed characters. Users who need such
    languages should install the X Window System, fonts that cover the
    necessary character ranges, and the proper input method (e.g., SCIM, it
    supports a wide variety of languages).

  13. Xubuntu 6.06,安装程序后执行 sudo update-menus 更新菜单,blackbox的菜单中才看得见;

    把 Xubuntu 8.04 的/root 安装在 raid0 + lvm上,当为/root所在卷组(vg)增加新的raid0为pv(物理卷)并增加了/root所在lv(逻辑卷)的大小,并用resize_reiserfs 在线扩展了/root的reiserfs文件系统后。需执行 sudo update-initramfs 更新启动映像。否则会启动不了系统,报告找不到卷组,找不卷组中的全部设备等。

  14. 在 Ubuntu 6.06 下用 “ sudo apt-get -f install ”修复系统时出现下列错误:

    正在解压缩 libparted1.6-13 (从 .../libparted1.6-13_1.6.25.1-1ubuntu2_i386.deb) ...
    dpkg:处理 /var/cache/apt/archives/libparted1.6-13_1.6.25.1-1ubuntu2_i386.deb (--unpack)时出错:
    正试图覆盖“/lib/libparted-1.6.so.13.11.1”,它属于软件包 libparted1.6-udeb
    dpkg-deb: 子进程 paste 被信号(Broken pipe)终止了
    在处理时有错误发生:
    /var/cache/apt/archives/libparted1.6-13_1.6.25.1-1ubuntu2_i386.deb
    E: Sub-process /usr/bin/dpkg returned an error code (1)

    解决方法是用如下命令卸载 libparted1.6-udeb 软件包:

    sudo dpkg -r libparted1.6-udeb

    然后执行修复命令就行了:

    sudo apt-get -f install

  15. 影音处理:
    1、分割视频:
    mencoder -ss 1:40 -endpos 8:40 -oac copy -ovc copy inputfile.avi -o outputfile.avi

    mencoder -ss 1:17:50 -endpos 0:00:34 -oac mp3lame -ovc lavc inputfile.rmvb -o outputfile.avi

    2、转换视频成vcd:
    ffmpeg -i 1.avi -target vcd 1.mpg
    sudo cdrdao write –device 1,0,0 vcd.toc

    3、提取视频的声音:
    for i in ./*.mpg; do mplayer -dumpaudio $i -dumpfile ${i%%mpg}mp3; done

    4、批量处理照片:
    for file in `find . -name \*.JPG`; do convert -resize 60% -quality 80 ${file} ${file%.*}-resize.JPG; done

    把照片顺时针旋转270度:
    convert -rotate 270 file.jpg file-270.jpg

    5、用ffmpeg + winff GUI前端在Ubuntu 9.04下转换avi影音文件到flv文件,需要安装 libavcodec-unstripped-52

  16. 7zip 在 Linux 和 Windows 之间进行互操作很好,在 zh_CN.UTF-8 的 locale 的Ubuntu 下压缩的中文文件名的文件在 Windows 下用 7zip 和 Winrar 都可以完全正常的打开。还没有发现其他压缩软件的互操作性这么好。

  17. wmv 文件转 DVD 的过程:
    1、从 WinFF 上得到的转 640x480 分辨率的4:3 wmv 文件到DVD格式的代码(2小时约150M的wmv文件转成约1.8的mpg文件)/usr/bin/ffmpeg -i input.wmv -vcodec mpeg2video -r 25.00 -s 352x576  -aspect 4:3 -b 4000k -mbd rd -trellis -mv0 -cmp 2 -subcmp 2 -acodec mp2 -ab 192k -ar 48000 -ac 2 output.mpg
    这样,一张4.3G的DVD可以转2个wmv文件,用 -target pal-dvd 的方法装不了2个这样的wmv文件;

    2、用dvdauthor的前端DVDstyler 制作DVD ISO镜像。好像视频编码和音频编码都要选copy(复制)项才能保持原来的大小,如视频编码选成700x576的pal-dvd体积好像会增大。

  18. git命令应用:
    git checkout branchname 切换到本地仓库某分枝
    git pull 从远程仓库更新当前分枝
    git log filename 查看某一文件历史
    git checkout 3607253d20c7a295965f798109f9d4af0fbeedd8(版本标记?) filename 获取历史版本

  19. 下载某网站某级目录之内的页面,只下载html页面和其中包括的图片(图片可不在本级目录中):
    wget -cm -p -np http://www.test.com/test1/test2/index.html -A html,gif

    批量替换某目录中的所有html文件中全部指定字符串(把"http://www.test.com/test/test"替换成"../../pics"):
    sed -i -e 's/http:\/\/www.test.com\/test1\/test2/..\/..\/pics/g' *.html
    不加pics/后面的g为替换每行遇到的第一个匹配字符串,加了g为替换每一行的所有匹配的字符串

  20. Dillo 2.2 中文设置:
    1、把 etc/dillo/dillorc 复制到 ~/.dillo/dillorc,启用并修改 font-* 成中文字体,如: font_serif="AR PL UKai CN" 等等
    2、添加编辑 ~/.dillo/style.css 文件内容如下(http://www.dillo.org/FAQ.html#q24 How do I force web pages to use my favourite fonts with CSS? 不添加这个文件只要启用了tools -> Use remote CSS 中文页面就可能不正常,tools -> Use embedded CSS 的作用未发现):
    code, tt, pre, samp, kbd {font-family: monospace !important}
    * {font-family: serif !important}

  21. Ubuntu 10.04 禁止图形界面启动的方法:
    把 /boot/grub/grub.cfg 中的 ro quiet 替换成 text 即可,永久修改可在 /etc/default/grub 作相应修改后执行 sudo update-grub2

  22. vncviewer via ssh tunnel
    ssh -LLOCALBINDPORT:127.0.0.1:REMOTEVNCSERVERPORT YOUHOST -lYOUNAME -p SSHPORT -v
    vncviewer 127.0.0.1:LOCALBINDRPORT

  23. 索尼硬盘 DV 高清 MTS 格式转换成 PAL DVD 兼容格式文件之示例命令(参数可变,平台: Ubuntu 10.04, 版本:MEncoder SVN-r1.0~rc3+svn20090426-4.4.3 (C) 2000-2009 MPlayer Team ):
    1、声音重新编码为立体声(二声道):
    mencoder -demuxer lavf -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf -vf scale=720:576,harddup -srate 48000 -af lavcresample=48000 -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9000:vbitrate=5001:keyint=15:vstrict=0:acodec=ac3:abitrate=224:aspect=16/9 -ofps 25 -o 00001.mpg 00001.MTS

    2、声音不重新编码(为原来的5.1多声道):
    mencoder -demuxer lavf -oac copy -ovc lavc -of mpeg -mpegopts format=dvd:tsaf \
      -vf scale=720:576,harddup -ofps 25 \
      -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\
    keyint=15:vstrict=0:aspect=16/9 -o 00001oaccopy.mpg 00001.MTS

    针对 MTS 文件专用的参数:
    -demuxer lavf 必须加上,不然识别不了,不能转换;用mplayer 播放这种格式也要加上此参数
    aspect=16/9 原始的分辨率为:1440*1080,我碰到的原始图像高宽比为16/9,选择16/9保持原有高宽比

    参考链接:
    一、 [MPlayer-users] No Video for .TS files (with H.264 Video)
    http://lists.mplayerhq.hu/pipermail/mplayer-users/2010-January/078758.html

    二、 11.8. Using MEncoder to create VCD/SVCD/DVD-compliant files
    http://www.mplayerhq.hu/DOCS/HTML/en/menc-feat-vcd-dvd.html

    三、
    linux下mencoder的一些用法 - 红联Linux门户 - 中国领先的Linux技术网站 - 网站导航 - Linux通用技术 ...
    http://www.linuxdiyf.com/viewarticle.php?id=80784

    四、 mts格式转换软件
    http://baike.baidu.com/view/3275997.html

    五、
    索尼DV的MTS格式转换方法—MTS转换器_影音相关新闻-泡泡网
    http://www.pcpop.com/doc/0/553/553923.shtml

  24. 1、Ubuntu 10.04 禁用 gdm 后无声音的解决方法,把当前用户加入 audio 组,
    sudo usermod -a -G audio currentuser

    2、Ubuntu 10.04 的一部分服务在/etc/init/ 中用 upstart 配置,禁止此类服务的方法是注释掉配置文件中 start 的部分;一部分仍在 /etc/init.d/ 用原来的 sysv-rc 的方法管理。链接到 /lib/init/upstart-job 应该就是用 upstart 管理的系统服务。

    3、Vmware  Linux 虚拟机中内存占用异常大的一个发现,禁掉 vmware tools 中的 Virtual Printing daemon ,chmod -x 把它的可执行属性去掉。

  25. The fastest way to disable PC speaker in Ubuntu or Debian 5:
    sudo modprobe -r pcspkr
    Add the the line “blacklist pcspkr” to /etc/modprobe.d/blacklist to turn off the speaker forever 🙂

  26. x11vnc -display :0 可以直接共享真实桌面
    vncviewer over ssh:
    ssh username@ip(or domain) -L 5900:localhost:5900
    vncviewer localhost:0

  27. Ubuntu 10.04 的打开文件数目默认限制为:1024,在 wine-thunder 中 bt 下载时经常不能启动,报告如: "err:winediag:FILE_CreateFile Too many open files, ulimit -n probably needs to be increased"
    解决方法:
    1、在 /etc/security/limits.conf 添加:
    username  soft  nofile 65536
    username  hard  nofile 65536
    2、在  /etc/pam.d/common-session 添加:
    session required pam_limits.so
    3、重启

    参考:Open File Limits Settings on Ubuntu
    http://knol.google.com/k/fred-grott/open-file-limits-settings-on-ubuntu/166jfml0mowlh/3

  28. 把文件夹下面所有的 html 文件转换成 text 文件:
    for f in `find ./LFS-BOOK-6.6-TEXT -name "*.html"`; do html2text -ascii -utf8 -o "`dirname $f`/`basename $f .html`.txt" $f;  done

  29. 通过秘钥实现scp不输入密码传送文件
    发送端: ssh-keygen -t rsa
    然后 scp ~/.ssh/id_rsa.pub 接收端:/home/user/.ssh/authorized_keys
    如果报错,rm ~/.ssh -fr 再重复上面的步骤

  30. Debian Lenny 中添加 DNS:
    在 /etc/network/interface 中添加: name-server 192.168.1.1(或你的DNS地址)

    Adobe Reader 有针对 Linux 的版本,可在官方下载。

  31. 1、分割文本文件,每个文件100行: split -l 100 文件名
    2、在 Debian 5 的 Gnome 桌面里编辑了 U 盘的挂载点 /media/disk 导致 U 盘不能自动挂载且不能在桌面上修改,进入开始菜单中的配置编辑器(即命令行下的 gconf-editor ),把里面的键值 /system/storage/volumes/_org_freedesktop_Hal_devices_voume_uuid_*/mount_point 删除就行了,或者修改成 disk 也行。
    参见:
    https://bugs.launchpad.net/ubuntu/+source/gnome-mount/+bug/107668

  32. 给图片加文字水印示例:
    mogrify -font /usr/share/fonts/truetype/thai/Purisa.ttf -pointsize 27 -verbose -draw "fill black text 200,200 'learndiary.com' \
    fill orange text 201,201 'learndiary.com' " 1.jpg

  33. Debian Lenny 下编译安装 cdemu 虚拟光驱要点:
    http://cdemu.sourceforge.net/project.php#download
    安装 vhba-module 后执行 sudo depmod, 否则不能加载 vhba 模块;
    sudo addgroup --system cdemu ;
    把当前用户加入组 cdemu ;
    在菜单中的"会话"中加入 cdemud -n 2 使后台服务随会话启动(这里是启动两个虚拟光驱) ;
    命令行加载光盘映像: cdemu load 0 /home/user/cd1.toc 或通过在面板上添加 gCDEmu Applet 来加载。
    另,可通过 Brasero 刻录软件来制作光盘映像文件; Windows 下的 nero 等也行。

    2011.04.20补充:
    今天在重装的 debian lenny 上重新编译相同版本的 cdemu 时, 增加了两步才能正常使用,也不知道是不是上面的步骤记漏还是怎么的:

    1, 在 /etc/modules 加入 vhba ,不然模块 vhba 无法加载;
    2, 在 /etc/udev/rules.d/99-vhba.rules 中添加规则:
    KERNEL=="vhba_ctl", NAME="%k", MODE="0660", OWNER="root", GROUP="cdemu",不然 /dev/vhba_ctl 无法被用户组 cdemu 的用户读取;
    3, 另外不知为什么不能在面板上添加那个可以管理虚拟光驱的 applet 了。

    2011.05.04 补充:
    上面 2011.04.20 补充时使用系统的内核版本应该比最前面描述步骤时的内核版本低,可能是造成 2011.04.20 情况的原因。

Comments are closed.