日期:2014-05-16  浏览次数:20606 次

Linux常用命令及技巧
在Linux的世界里,有太多的细节需要去记住:Bash命令,常用的配置,一些实用的小技巧。。。这些知识非常细碎,但却会时不时地用到。虽然从各种各样的Linux书籍中可以找到相关的内容,但这些细节过于庞杂,完全用脑子记住比较困难,而翻阅书本又比较的消耗时,因此集中总结在这里,并于今后不断补充,方便查阅。

批量替换文件中的字串,介绍两种不同的方法

#!/bin/sh
for file in $(find . -type f -name <filename>)
do
cat $file | sed "s/text_to_replace/replacement/g" > $file.new
mv $file.new $file
done


sed -ie "s/text_to_replace/replacement/g" `find . -type f -name <filename>`


注意:sed在Linux下是用-i,在Unix/Macos下是 -ie

写个脚本,把data目录下,所有size为0,但是文件名不是以.a结尾的文件,移到别的目录

find . -size 0 ! -name '*.a' -print0 | xargs -0 -I FILE mv FILE <otherdir>


统计项目的java代码总行数

wc -l $(find . -type f -name '*.java')


将用户usera分配进用户组groupa

usermod -a -G groupa usera


使用DHCP

修改相应的网卡配置文件,假设网卡名称为eth0,那么文件名为:/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
USERCTL=no
ONBOOT=yes
BOOTPROTO=dhcp
BROADCAST=192.168.1.255
NETWORK=192.168.1.0
NETMASK=255.255.255.0
IPADDR=192.168.1.5


将ONBOOT设为yes,将BOOTPROTO设为dhcp

设置BASH快捷键

把常用的,同时字符比较多的命令绑定到快捷键上。比如经常用到的:

ps -ef | grep <process_name>


将上述命令绑定到CTRL+B:首先确保BASH环境为emacs模式,而不是vi]模式:

set -o emacs


然后在~/.inputrc中添加下述内容:

$if mode=emacs
"\C-b": "ps -ef | grep " 
$endif


最后输入下述命令使配置生效:

source ~/.inputrc


在BASH下设置网络代理

export http_proxy=http://<your_proxy>:<your_proxy_port>


从机器A登录至机器B,使用SSH进行无密码登录

在机器A上生成个人证书:

ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (~/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in ~/.ssh/id_rsa.
Your public key has been saved in ~/.ssh/id_rsa.pub.
The key fingerprint is: ...
The key's randomart image is: ...


将生成的公钥id_rsa.pub里面的内容,复制到机器B的~/.ssh/authorized_keys中。

写一行命令,统计出/usr/bin目录中的bash脚本和每个脚本的代码行数,并排序

wc -l $(file /usr/bin/* | grep "script" | grep -v perl | cut -d: -f1) | sort


使MacOS的ls命令显示颜色

编辑~/.profile:

alias ls="ls -G"