蚊章汇 - 2015年3月
type: channel
link: https://linuxcn.bwsl.wang/2015/03/
description: Linux中国社区镜像站，没有大保镖。
items: 开源的巨大胜利，印度强制要求其政府使用开源软件
items: Linux基础：如何找出你的系统所支持的最大内存
items: 如何在CentOS 7.0 安装 Websvn
items: 如何不用重启在CentOS 7/ RHEL 7虚拟机中添加一块新硬盘
items: Linux 基础：如何在Ubuntu上检查一个软件包是否安装
items: Shell入门：掌握Linux，OS X，Unix的Shell环境
items: Linux 有问必答：如何在Ubuntu或者Debian中编译安装ixgbe驱动
items: 使用“最近通知工具”保持桌面通知历史
items: 如何在树莓派上使用图片特效
items: 如何在Linux上找出并删除重复的文件：FSlint

开源的巨大胜利，印度强制要求其政府使用开源软件
type: item
date: 2015-03-31T23:37:00+08:00
description: 印度政府做了一项重大政策改变，它宣布其政府的所有软件服务和应用都将强制采用开源软件。印度政府说，这是他们的数字印度计划的一部分，所有的电子政务项目都将采用自由和开源软件（FOSS）。据一份来自印度电子和信息技术部（DeitY）的申明说：“印度政府应当努力在各个政府部门所实施的电子政务系统中采用自由和开源软件，（对开源软件的采用）要优先于闭源软件。” 印度政府说，这一举措将确保透明度、可靠性和效率。而在去年11月，印度电子和信息技术部部长说，“只要有可能”就优先采用开源软件，仅在开源软件不能满足功能需求时才选择闭源软件。该申明补充道：“政府部门应确保遵循这一要求，并通过在软件能力、战略控制、可伸缩性、软件生命周期成本和支持需求等方面对开源软件和闭源软件做比较而决定。”美国、几个欧洲国家和英国等一些国家都把开源软件作为优先选择。此外， 印度的喀拉拉邦政府据闻已经使用开源软件很长一段时间了。已经上线的印度政府总门户网站 MyGov.in 完全是通过开源软件所开发的。这件事被认为是开源运动的一大胜利，其根本原因在于开源技术能够极大地降低成本。印度是世界上增长最快的国家之一，其在信息时代前沿的发展上具有巨大潜力。随着这个政策的改变，开源软件可能成为印度技术革命的驱动力。

Linux基础：如何找出你的系统所支持的最大内存
type: item
date: 2015-03-31T22:11:00+08:00
description: 大多数情况下你可以从BIOS、产品目录或者干脆手动找出你的系统所持的最大内存。这里，我们介绍一种简单有用的技巧——使用dmidecode来找出系统支持的最大内存，这样你就无需打开机箱或者参照BIOS和产品目录了。什么是 dmidecode?就像你可能知道的一样， dmidecode是一个将计算机DMI（又名SMBIOS）表的内容转换为可读格式的工具。这个表包含了系统硬件组件的介绍以及其他一些如序列号和IOS版本等有用的信息。使用dmidecode你能够获取此项信息，而无需去探测真实的硬件。找出你的系统所支持的最大内存请确定你已经在系统中安装了dmidecode，我觉得你的操作系统应该已经自动安装过了，不过并不非常确定。在基于Deb的系统中安装sudo apt-get install dmidecode 在基于RPM的系统中安装sudo yum install dmidecode 在SUSE/openSUSE中安装sudo zypper in dmidecode 好了，我们已经安装了dmidecode，接下来让我们找出支持的最大内存。输入以下命令：sudo dmidecode -t 16 输出样本# dmidecode 2.12 SMBIOS 2.6 present. Handle 0x0014, DMI type 16, 15 bytes Physical Memory Array Location: System Board Or Motherboard Use: System Memory Error Correction Type: None Maximum Capacity: 16 GB Error Information Handle: Not Provided Number Of Devices: 2 就像你看到的，我的系统支持最大内存到16G，并且有两个内存插槽，简单吧？接下来，让我们找出现在已经安装的内存的详细信息。sudo dmidecode -t 17 输出样本# dmidecode 2.12 SMBIOS 2.6 present. Handle 0x0017, DMI type 17, 28 bytes Memory Device Array Handle: 0x0014 Error Information Handle: 0x0000 Total Width: Unknown Data Width: Unknown Size: No Module Installed Form Factor: DIMM Set: None Locator: DIMM_B Bank Locator: BANK 2 Type: Unknown Type Detail: None Speed: Unknown Manufacturer: Not Specified Serial Number: Not Specified Asset Tag: Not Specified Part Number: Not Specified Rank: Unknown Handle 0x0015, DMI type 17, 28 bytes Memory Device Array Handle: 0x0014 Error Information Handle: 0x0000 Total Width: 64 bits Data Width: 64 bits Size: 4096 MB Form Factor: SODIMM Set: None Locator: DIMM_A Bank Locator: BANK 0 Type: DDR3 Type Detail: Synchronous Speed: 1067 MHz Manufacturer: 014F Serial Number: 00092AF2 Asset Tag: 54114000 Part Number: JM1066KSN-4G Rank: Unknown 就像上边输出的一样，我在插槽1里边安装了一个内存条。内存大小为4G，类型为DDR3，速度为1067 MHz。同样的，我们可以通过下边命令得到完整的内存信息。sudo dmidecode -t memory sudo dmidecode -t memory | less sudo dmidecode -t memory | more 输出样本# dmidecode 2.12 SMBIOS 2.6 present. Handle 0x0014, DMI type 16, 15 bytes Physical Memory Array Location: System Board Or Motherboard Use: System Me…

如何在CentOS 7.0 安装 Websvn
type: item
date: 2015-03-31T21:06:00+08:00
description: 大家好，今天我们会在CentOS 7.0 上为 subversion（SVN）安装Web 界面 WebSVN。（subverion 是 apache 的顶级项目，也称为 Apache SVN 或 SVN）WebSVN 将 Svbverion 的操作你的仓库的各种功能通过 Web 界面提供出来。通过它，我们可以看到任何给定版本的任何文件或者目录的日志，并且可看到所有文件改动、添加、删除的列表。我们同样可以查看两个版本间的差异来知道特定版本改动了什么。特性WebSVN提供了下面这些特性:易于使用的用户界面可定制的模板系统色彩化的文件列表追溯视图日志信息查询RSS支持更多由于其使用PHP写成，WebSVN同样易于移植和安装。现在我们将为Subverison安装WebSVN。请确保你的服务器上已经安装了 SVN。如果你还没有安装，你可以按本教程安装。安装完SVN后，你需要以下几步。1. 下载 WebSVN你可以从官方网站 http://www.websvn.info/download/ 中下载 WebSVN。我们首先进入 /var/www/html/ 并在这里下载安装包。$ sudo -s 请在shell或者终端中执行上面的命令，因为我们需要切换到root权限来对系统限制区域有访问权。# cd /var/www/html # wget http://websvn.tigris.org/files/documents/1380/49057/websvn-2.3.3.zip 这里，我下载的是最新的2.3.3版本的 websvn。你可以从上面这个网站找到下载链接，用适合你的包的链接来替换上面的链接。2. 解压下载的zip# unzip websvn-2.3.3.zip # mv websvn-2.3.3 websvn 3. 安装php# yum install php 4. 编辑WebSVN配置现在，我们需要拷贝位于 /var/www/html/websvn/include 的 distconfig.php 为 config.php，并且接着编辑该配置文件。# cd /var/www/html/websvn/include # cp distconfig.php config.php # nano config.php 现在我们需要按如下改变文件。完成之后，请保存并退出。// Configure these lines if your commands aren't on your path. // $config->setSVNCommandPath('/usr/bin'); // e.g. c:\\program files\\subversion\\bin $config->setDiffPath('/usr/bin'); // For syntax colouring, if option enabled... $config->setEnscriptPath('/usr/bin'); $config->setSedPath('/bin'); // For delivered tarballs, if option enabled... $config->setTarPath('/bin'); // For delivered GZIP'd files and tarballs, if option enabled... $config->setGZipPath('/bin'); // $config->parentPath('/svn/'); $extEnscript[".pl"] = "perl"; $extEnscript[".py"] = "python"; $extEnscript[".sql"] = "sql"; $extEnscript[".java"] = "java"; $extEnscript[".html"] = "html"; $extEnscript[".xml"] = "html"; $extEnscript[".thtml"] = "html"; $extEnscript[".tpl"] = "html"; $extEnscript[".sh"] = "bash"; 5. 启动 WebSVN现在，我们将近完成了。现在需要重启Apache服务。你可以用下面的命令。# systemctl restart httpd.service 接着我们在浏览器中打开WebSVN，输入 http:// IP地址/websvn ，或者你在本地的话，你可以输入 http://localhost/websvn 。注意: 如果你遇到一个像"Unable to find "enscript" tool at location "/…

如何不用重启在CentOS 7/ RHEL 7虚拟机中添加一块新硬盘
type: item
date: 2015-03-31T19:50:00+08:00
description: 通常在你在虚拟机中添加一块新硬盘时，你可能会看到新硬盘没有自动加载。这是因为连接到硬盘的SCSI总线需要重新扫描来使得新硬盘可见。这里有一个简单的命令来重新扫描SCSI总线和SCSI设备。下面这几步在CentOS 7 和RHEL 7 中测试过。在ESXi或者vCenter中添加一块新的20G硬盘：显示当前磁盘分区：[root@centos7 ~]# fdisk -l Disk /dev/sda: 32.2 GB, 32212254720 bytes, 62914560 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x0006b96a Device Boot Start End Blocks Id System /dev/sda1 * 2048 1026047 512000 83 Linux /dev/sda2 1026048 62914559 30944256 8e Linux LVM Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/centos-root: 29.5 GB, 29536288768 bytes, 57688064 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes 确定主机总线号[root@centos7 ~]# ls /sys/class/scsi_host/ host0 host1 host2 重新扫描SCSI总线来添加设备[root@centos7 ~]# echo "- - -" > /sys/class/scsi_host/host0/scan [root@centos7 ~]# echo "- - -" > /sys/class/scsi_host/host1/scan [root@centos7 ~]# echo "- - -" > /sys/class/scsi_host/host2/scan 验证磁盘和分区并确保20GB硬盘已经添加了。在本例中，出现了下面这行 “Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors” 并且可以确认没有重启服务器就添加了新盘：[root@centos7 ~]# fdisk -l Disk /dev/sda: 32.2 GB, 32212254720 bytes, 62914560 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x0006b96a Device Boot Start End Blocks Id System /dev/sda1 * 2048 1026047 512000 83 Linux /dev/sda2 1026048 62914559 30944256 8e Linux LVM Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512…

Linux 基础：如何在Ubuntu上检查一个软件包是否安装
type: item
date: 2015-03-31T16:42:00+08:00
description: 如果你正在管理Debian或者Ubuntu服务器，你也许会经常使用dpkg 或者 apt-get命令。这两个命令用来安装、卸载和更新包。在本篇中，让我们看下如何在基于DEB的系统下检查是否安装了一个包。要检查特定的包，比如firefox是否安装了，使用这个命令：dpkg -s firefox 示例输出： Package: firefox Status: install ok installed Priority: optional Section: web Installed-Size: 93339 Maintainer: Ubuntu Mozilla Team <ubuntu-mozillateam@lists.ubuntu.com> Architecture: amd64 Version: 35.0+build3-0ubuntu0.14.04.2 Replaces: kubuntu-firefox-installer Provides: gnome-www-browser, iceweasel, www-browser Depends: lsb-release, libasound2 (>= 1.0.16), libatk1.0-0 (>= 1.12.4), libc6 (>= 2.17), libcairo2 (>= 1.2.4), libdbus-1-3 (>= 1.0.2), libdbus-glib-1-2 (>= 0.78), libfontconfig1 (>= 2.9.0), libfreetype6 (>= 2.2.1), libgcc1 (>= 1:4.1.1), libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.37.3), libgtk2.0-0 (>= 2.24.0), libpango-1.0-0 (>= 1.22.0), libpangocairo-1.0-0 (>= 1.14.0), libstartup-notification0 (>= 0.8), libstdc++6 (>= 4.6), libx11-6, libxcomposite1 (>= 1:0.3-1), libxdamage1 (>= 1:1.1), libxext6, libxfixes3, libxrender1, libxt6 Recommends: xul-ext-ubufox, libcanberra0, libdbusmenu-glib4, libdbusmenu-gtk4 Suggests: ttf-lyx Conffiles: /etc/firefox/syspref.js 09e457e65435a1a043521f2bd19cd2a1 /etc/apport/blacklist.d/firefox ee63264f847e671832d42255912ce144 /etc/apport/native-origins.d/firefox 7c26b75c7c2b715c89cc6d85338252a4 /etc/apparmor.d/usr.bin.firefox f54f7a43361c7ecfa3874abca2f292cf Description: Safe and easy web browser from Mozilla Firefox delivers safe, easy web browsing. A familiar user interface, enhanced security features including protection from online identity theft, and integrated search let you get the most out of the web. Xul-Appid: {ec8030f7-c20a-464f-9b0e-13a3a9e97384} 如上所见，firefox已经安装了。同样，你可以使用dpkg-query 命令。这个命令会有一个更好的输出，当然，你可以用通配符。dpkg-query -l firefox 示例输出：Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-==…

Shell入门：掌握Linux，OS X，Unix的Shell环境
type: item
date: 2015-03-31T16:05:00+08:00
description: 在Linux或类Unix系统中，每个用户和进程都运行在一个特定环境中。这个环境包含了变量、设置、别名、函数以及更多的东西。下面是对Shell环境下一些常用命令的简单介绍，包括每个命令如何使用的例子，以及在命令行下设定你自己的环境来提高效率。找出你当前的shell在终端应用中输入下面命令中的任意一个：ps $$ ps -p $$ 或者echo "$0" 输出范例：图1：找出当前的shell找出所有已安装的shell找到已安装shell的完整路径：type -a zsh type -a ksh type -a sh type -a bash 输出范例：图2：找出shell的路径文件/etc/shells里包含了系统所支持的shell列表。每一行代表一个shell，是相对根目录的完整路径。用这个cat命令来查看这些数据：cat /etc/shells 输出范例：# List of acceptable shells for chpass(1). # Ftpd will not allow users to connect who are not using # one of these shells. /bin/bash /bin/csh /bin/ksh /bin/sh /bin/tcsh /bin/zsh /usr/local/bin/fish 临时改变当前shell只需要输入shell的名字。在下面的例子里，我从bash切换到了zsh：zsh 这只是临时改变了系统shell。也叫做子shell。要从子/临时shell退出，输入下面的命令或者按下CTRL-D：exit 找出子shell的层级或临时shell的嵌套层级每个bash实例启动后，变量$SHLVL的值都会加一。输入下面的命令：echo "$SHLVL" 示例输出：图3：Bash shell嵌套层级（子shell数目）通过chsh命令永久变更系统shell想要把当前系统shell从bash永久换成zsh？试试这个：chsh -s /bin/zsh 想把其他用户的shell从bash永久换成ksh？试试这个：sudo chsh -s /bin/ksh userNameHere 查看当前的环境变量你需要用到：env env | more env | less env | grep 'NAME' 示例输出：TERM_PROGRAM=Apple_Terminal SHELL=/bin/bash TERM=xterm-256color TMPDIR=/var/folders/6x/45252d6j1lqbtyy_xt62h40c0000gn/T/ Apple_PubSub_Socket_Render=/tmp/launch-djaOJg/Render TERM_PROGRAM_VERSION=326 TERM_SESSION_ID=16F470E3-501C-498E-B315-D70E538DA825 USER=vivek SSH_AUTH_SOCK=/tmp/launch-uQGJ2h/Listeners __CF_USER_TEXT_ENCODING=0x1F5:0:0 PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/go/bin:/usr/local/sbin/modemZapp:/Users/vivek/google-cloud-sdk/bin __CHECKFIX1436934=1 PWD=/Users/vivek SHLVL=2 HOME=/Users/vivek LOGNAME=vivek LC_CTYPE=UTF-8 DISPLAY=/tmp/launch-6hNAhh/org.macosforge.xquartz:0 _=/usr/bin/env OLDPWD=/Users/vivek 下面是bash shell里一些常见变量的列表：图4：常见bash环境变量注意：下面这些环境变量没事不要乱改。很可能会造成不稳定的shell会话：SHELLUIDRANDOMPWDPPIDSSHAUTHSOCKUSERHOMELINENO显示环境变量的值使用下面任意一条命令显示环境变量HOME的值：## 使用printenv ## printenv HOME ## 或者用echo ## echo "$HOME" # 考虑到可移植性，也可以用printf ## printf "%s\n" "$HOME" 示例输出：/home/vivek 增加或设定一个新环境变量下面是bash，zsh，sh和ksh的语法：## 语法 ## VAR=value FOO=bar ## 设定vim为默认文本…

Linux 有问必答：如何在Ubuntu或者Debian中编译安装ixgbe驱动
type: item
date: 2015-03-30T21:39:00+08:00
description: 提问： 我想为我的Intel 10G网卡下载安装最新的ixgbe驱动。我该如何在Ubuntu（或者Debian）中安装ixgbe驱动？Intel的10G网卡（比如，82598、 82599、 x540）由ixgbe驱动支持。现代的Linux发行版已经带有了ixgbe驱动，通过可加载模块的方式使用。然而，有些情况你希望在你机器上的自己编译安装ixgbe驱动，比如，你想要体验ixbge驱动的最新特性时。同样，内核默认自带的ixgbe驱动中的一个问题是不允许你自定义驱动的参数。如果你想要一个完全定制的ixgbe驱动（比如 RSS、多队列、中断阈值等等），你需要手动从源码编译ixgbe驱动。这里是如何在Ubuntu、Debian或者它们的衍生版中下载安装ixgbe驱动的教程。第一步： 安装前提安装之前，需要安装匹配的内核头文件和开发工具包。$ sudo apt-get install linux-headers-$(uname -r) $ sudo apt-get install gcc make 第二步： 编译Ixgbe驱动从最新的ixgbe驱动中下载源码。$ wget http://sourceforge.net/projects/e1000/files/ixgbe%20stable/3.23.2/ixgbe-3.23.2.tar.gz 如下编译ixgbe驱动。$ tar xvfvz ixgbe-3.23.2.tar.gz $ cd ixgbe-3.23.2/src $ make 第三步： 检查Ixgbe驱动编译之后，你会看到在ixgbe-3.23.2/src目录下创建了ixgbe.ko。这就是会加载到内核之中的ixgbe驱动。用modinfo命令检查内核模块的信息。注意你需要指定模块文件的绝对路径（比如 ./ixgbe.ko 或者 /home/xmodulo/ixgbe/ixgbe-3.23.2/src/ixgbe.ko）。输出中会显示ixgbe内核的版本。$ modinfo ./ixgbe.ko filename: /home/xmodulo/ixgbe/ixgbe-3.23.2/src/ixgbe.ko version: 3.23.2 license: GPL description: Intel(R) 10 Gigabit PCI Express Network Driver author: Intel Corporation, srcversion: 2ADA5E537923E983FA9DAE2 alias: pci:v00008086d00001560sv*sd*bc*sc*i* alias: pci:v00008086d00001558sv*sd*bc*sc*i* alias: pci:v00008086d0000154Asv*sd*bc*sc*i* alias: pci:v00008086d00001557sv*sd*bc*sc*i* alias: pci:v00008086d0000154Fsv*sd*bc*sc*i* alias: pci:v00008086d0000154Dsv*sd*bc*sc*i* alias: pci:v00008086d00001528sv*sd*bc*sc*i* alias: pci:v00008086d000010F8sv*sd*bc*sc*i* alias: pci:v00008086d0000151Csv*sd*bc*sc*i* alias: pci:v00008086d00001529sv*sd*bc*sc*i* alias: pci:v00008086d0000152Asv*sd*bc*sc*i* alias: pci:v00008086d000010F9sv*sd*bc*sc*i* alias: pci:v00008086d00001514sv*sd*bc*sc*i* alias: pci:v00008086d00001507sv*sd*bc*sc*i* alias: pci:v00008086d000010FBsv*sd*bc*sc*i* alias: pci:v00008086d00001517sv*sd*bc*sc*i* alias: pci:v00008086d000010FCsv*sd*bc*sc*i* alias: pci:v00008086d000010F7sv*sd*bc*sc*i* alias: pci:v00008086d00001508sv*sd*bc*sc*i* alias: pci:v00008086d000010DBsv*sd*bc*sc*i* alias: pci:v00008086d000010F4sv*sd*bc*sc*i* alias…

使用“最近通知工具”保持桌面通知历史
type: item
date: 2015-03-30T18:27:00+08:00
description: 大多数桌面环境像Unity和Gnome都有通知特性。我很喜欢其中一些。它尤其当我在Ubuntu上收听流媒体时帮到我。默认上通知会在桌面的顶部显示几秒接着就会消失。如果你听见了通知的声音但是没有看到内容怎么办？你该如何知道通知的内容？如果你可以看到最近所有通知的历史会很棒吧？是的，我知道这很棒。你可以在Ubuntu Unity或者Gnome中使用最近通知小工具来追踪所有的最近通知。最近通知位于顶部面板，并且记录了最近所有通知的历史。当它捕获到新的通知后，它就会变绿来表明你有未读的通知。当你点击它后，你就会看到最近所有的通知。你可以选择清空所有或者删除部分。不幸的是它没有配置选项。因此你不能屏蔽特定程序的通知。所有的通知都会被保存。在Ubuntu 14.04 和 14.10 中安装最近通知工具一般说来这个最近通知工具应该也可以在Linux Mint Cinnamon版本中运行。你可以试一试。使用下面的命令来在在Ubuntu 14.04 和 14.10 中安装最近通知工具：sudo add-apt-repository ppa:jconti/recent-notifications sudo apt-get update sudo apt-get install indicator-notifications 安装完成后，重新登录后你就可以用了。现在妈妈再也不用担心我的通知没看到了。很方便的小工具，不是么？via: http://itsfoss.com/notifications-appindicator/作者：Abhishek 译者：geekpi 校对：wxy本文由 LCTT 原创翻译，Linux中国 荣誉推出

如何在树莓派上使用图片特效
type: item
date: 2015-03-30T16:20:00+08:00
description: 现在使用树莓派摄像头模组("raspi cam")，也可以像使用卡片相机那样，给拍摄的照片增加各种各样的图片特效。 raspistill命令行工具，为您的树莓派提供了丰富的图片特效选项，来美化处理你的图片。有三个命令行工具可以用于抓取raspicam拍摄的照片或者视频，在这文章中将重点介绍其中的raspstill工具。raspstill工具提供了丰富的控制选项来处理图片，比如说：锐度（sharpness）、对比度（contrast）、亮度（brightness）、饱和度（saturation）、ISO、自动白平衡（AWB）、以及图片特效（image effect）等。在这篇文章中，将介绍如何使用raspstill工具以及raspicam摄像头模组来控制照片的曝光、AWB以及其他的图片效果。我写了一个简单的python脚本来自动拍摄照片并在这些照片上自动应用各种图片特效。raspicam的帮助文档中介绍了该摄像头模组所支持的曝光模式、AWB和图片特效。总的来说，raspicam一共支持16种图片特效、12种曝光模式以及10种AWB选项。Python脚本很简单，如下所示 。#!/usb/bin/python import os import time import subprocess list_ex=['auto','night'] list_awb=['auto','cloud',flash'] list_ifx=['blur','cartoon','colourswap','emboss','film','gpen','hatch','negative','oilpaint','posterise','sketch','solarise','watercolour'] x=0 for ex in list_ex: for awb in list_awb: for ifx in list_ifx: x=x+1 filename='img_'+ex+'_'+awb+'_'+ifx+'.jpg' cmd='raspistill -o '+filename+' -n -t 1000 -ex '+ex+' -awb '+awb+' -ifx '+ifx+' -w 640 -h 480' pid=subprocess.call(cmd,shell=True) print "["+str(x)+"]-"+ex+"_"+awb+"_"+ifx+".jpg" time.sleep(0.25) print "End of image capture" 这个脚本完成了以下几个工作。首先，脚本中定义了3个列表，分别用于枚举曝光模式、AWB模式以及图片特效。在这个实例中，我们将使用到2种曝光模式、3种AWB模式以及13种图片特效。脚本会遍历上述3种选项的各种组合，并使用这些参数组合来运行raspistill工具。传入的参数共6个，分别为：（1）输出文件名；（2）曝光模式；（3）AWB模式；（4）图片特效模式；（5）拍照时间，设为1秒；（6）图片尺寸，设为640x480。脚本会自动拍摄78张照片，每张照片会应用不同的特效参数。执行这个脚本也很简单，只需键入下面的命令行：$ python name_of_this_script.py 下面是抓取到一些样张。小福利除了使用raspistill命令行工具来操控raspicam摄像模组以外，还有其他的方法可以用哦。Picamera是一个python库，它提供了操控raspicam摄像模组的的API接口，这样就可以便捷地构建更加复杂的应用程序。如果你精通python，那么picamera一定是你的 hack 项目的好伙伴。picamera已经被默认集成到Raspbian最新版本的的镜像中。当然，如果你用的不是最新的Raspbian或者是使用其他的操作系统版本，你可以通过下面的方法来进行手动安装。首先，先在你的系统上安装pip，详见指导。然后，就可以按下面的方法安装picamera。 $ sudo pip install picamera picamera的使用说明可以查阅官方文档。via: http://xmodulo.com/apply-image-effects-pictures-raspberrypi.html作者：Kristophorus Hadiono 译者：coloka 校对：wxy本文由 LCTT 原创翻译，Linux中国 荣誉推出

如何在Linux上找出并删除重复的文件：FSlint
type: item
date: 2015-03-30T15:10:00+08:00
description: 大家好，今天我们会学习如何在Linux PC或者服务器上找出和删除重复文件。这里有一款工具你可以工具自己的需要使用。无论你是否正在使用Linux桌面或者服务器，有一些很好的工具能够帮你扫描系统中的重复文件并删除它们来释放空间。图形界面和命令行界面的都有。重复文件是磁盘空间不必要的浪费。毕竟，如果你的确需要在不同的位置享有同一个文件，你可以使用软链接或者硬链接，这样就可以在磁盘的一个地方存储数据了。FSlintFSlint 在不同的Linux发行版二进制仓库中都有，包括Ubuntu、Debian、Fedora和Red Hat。只需你运行你的包管理器并安装“fslint”包就行。这个工具默认提供了一个简单的图形化界面，同样也有包含各种功能的命令行版本。不要担心FSlint的图形化界面太复杂。默认情况下，它会自动选中Duplicate窗格，并以你的家目录作为搜索路径。要安装fslint，若像我这样运行的是Ubuntu，这里是默认的命令：$ sudo apt-get install fslint 这里还有针对其他发行版的安装命令：Debian：svn checkout http://fslint.googlecode.com/svn/trunk/ fslint-2.45 cd fslint-2.45 dpkg-buildpackage -I.svn -rfakeroot -tc sudo dpkg -i ../fslint_2.45-1_all.deb Fedora：sudo yum install fslint OpenSUSE：[ -f /etc/mandrake-release ] && pkg=rpm [ -f /etc/SuSE-release ] && pkg=packages wget http://www.pixelbeat.org/fslint/fslint-2.42.tar.gz sudo rpmbuild -ta fslint-2.42.tar.gz sudo rpm -Uvh /usr/src/$pkg/RPMS/noarch/fslint-2.42-1.*.noarch.rpm 对于其他发行版：wget http://www.pixelbeat.org/fslint/fslint-2.44.tar.gz tar -xzf fslint-2.44.tar.gz cd fslint-2.44 (cd po && make) ./fslint-gui 要在Ubuntu中运行fslint的GUI版本fslint-gui, 使用Alt+F2运行命令或者在终端输入：$ fslint-gui 默认情况下，它会自动选中Duplicate窗格，并以你的家目录作为搜索路径。你要做的就是点击Find按钮，FSlint会自动在你的家目录下找出重复文件列表。点击按钮来删除任何你要删除的文件，并且可以双击预览。完成这一切后，我们就成功地删除你系统中的重复文件了。注意 ，命令行工具默认不在环境的路径中，你不能像典型的命令那样运行它。在Ubuntu中，你可以在/usr/share/fslint/fslint下找到它。因此，如果你要在一个单独的目录运行fslint完整扫描，下面是Ubuntu中的运行命令：cd /usr/share/fslint/fslint ./fslint /path/to/directory 这个命令实际上并不会删除任何文件。它只会打印出重复文件的列表-你需要自己做接下来的事。$ /usr/share/fslint/fslint/findup --help find dUPlicate files. Usage: findup [[[-t [-m|-d]] | [--summary]] [-r] [-f] paths(s) ...] If no path(s) specified then the current directory is assumed. When -m is specified any found duplicates will be merged (using hardlinks). When -d is specified any found duplicates will be deleted (leaving just 1). When -t is specfied, only report what -m or -d would do. When --summary is specified change output format to include file sizes. You can also pipe this summary format to /usr/share/fslin…