linux 常用命令总结(一)
1. 字符串常用命令:
替换:
1). %s/*/*/g 中,替换当前界面的所有符合规则的内容。
2). 替换文件中的字符串内容:
find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g'
3). 替换多个文件夹中的字符串:
sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在目录`
详见:http://www.cnblogs.com/Jtianlin/p/4210680.html
统计:
1). 统计文件中含有某个字符串的行数:grep -c 'str' filename // c 是count 的意思
2). 统计文件中某个字符串出现的次数:grep -o 'str' filename | wc -l // grep -o ‘str’表示打印符合规则的内容,wc -l 统计行数
查找:
1). 在指定目录或文件中查找指定的字符串:
find <directory> -type f -name "*.c" | xargs grep "<strings>"
<directory>是你要找的文件夹;如果是当前文件夹可以省略
-type f 说明,只找文件
-name "*.c" 表示只找以.c结尾的文件。也可以不写,表示找所有文件
<strings>是你要找的某个字符串
2). 文本打开状态下(vi,more),输入命令:/ ,然后输入要查找的内容,按enter键开始查找。再按N键查找下一个。
3). grep "被查找的字符串" 文件名
a. 从文件内容查找与正则表达式匹配的行:
$ grep –e “正则表达式” 文件名
b. 查找时不区分大小写:
$ grep –i "被查找的字符串" 文件名
c. 查找匹配的行数:
$ grep -c "被查找的字符串" 文件名
d. 从文件内容查找不匹配指定字符串的行:
$ grep –v "被查找的字符串" 文件名
*可以代表任意字符,任意数量,但不能放最前面。
转义:getPushMessageRecordCount\\[39\\]
find /opt/data/logs/car-league-app -name "info.log" | xargs grep "StoreInfoController.*stStore" > ./cqtest.txt
linux 正则表达式查找可参考:http://www.cnblogs.com/cnsanshao/archive/2013/08/27/3285396.html
编辑:
vi // 编辑文本;按 i 进入编辑模式;按Esc 退出编辑模式;非编辑模式下,按 q 退出,若有修改,按 wq 保存退出,按 q! 退出不保存
2. 文件处理常用命令:
1). linux统计文件行数:wc [选项] 文件 // wc -l filename 统计文件行数
wc (word count)
2). 清空正在运行的文件:
cat /dev/null > filename // 可以简写为:> fileName
cp /dev/null filename // 貌似说效率更高,但没感觉。更喜欢第一个。
3. 解压和压缩:
zip文件:unzip **.zip
jar文件:jar -cvfM0 game.war ./ 0这个是阿拉伯数字,只打包不压缩的意思
jar -xvf game.war 解压到当前目录
tar文件:在linux打tar.gz包的时候,如果有文件在变化,可能会出错。可以考虑先拷贝一份,然后再打tar包。
tar -czvf **.tar.gz 需要压缩的文件(夹)名称 // 压缩文件到当前目录。
tar -czvf /MyTest/**.tar.gz 需要压缩的文件(夹)名称 // 压缩文件到MyTest目录。
tar -xzvf **.tar.gz // 解压文件到当前目录
tar -xzvf **.tar.gz -C 指定目录 // 解压文件到指定目录,change to directory DIR
4. 查看目录及磁盘使用情况:
du -sh dirname/file // 查看指定文件或目录大小,s:sum , h:human
df –h // 查看各主目录容量大小
du -sh * |sort -n // 计算当前目录下文件及文件夹大小,并排序。排序规则是按文件大小数字,不含单位。
du的英文为:disk usage,含义是磁盘空间使用情况,功能是逐级进入指定目录的每一个子目录并显示该目录占用文件系统数据块的情况,如果没有指定目录,则对当前的目录进行统计。
5. 修改日期和时间:
# date -s "20131215 09:02:25"
修改日期:
时间设定成2009年5月10日的命令如下:
#date -s 05/10/2009
修改时间:
将系统时间设定成上午10点18分0秒的命令如下。
#date -s 10:18:00
6. 文件夹操作:
复制:cp –ir /home/abc /home/abcd // r 表示递归处理,将指定目录下的文件与子目录一并处理。
移动:mv /home/abc /home/abcd // mv命令可以用于移动和改名目录或文件
删除:rm -rf /home/abc // rm:remove ; r:regular,递归删除;f:force 强制
新建:mkdir -p /home/abc // p:parent,表示如果有父目录使用;如果没有,新建父目录,即创建多层目录。
linux下拷贝(cp)到当前目录,当前目录用 ”.”表示。如:cp /app/test.txt .
7. 查看程序运行情况:
1). 通过top找到哪个程序占用CPU最多
2). 通过ps –ef|grep pid 来找到具体程序
3). kill -9 pid 强制终止。(标准的kill命令通常都能达到目的。终止有问题的进程,并把进程的资源释放给系统。然而,如果进程启动了子进程,只杀死父进程,
子进程仍在运行,因此仍消耗资源。kill -9 pid 强制终止。)
8. 将ISO文件设置成yum源:
1). 新建目录:mkdir –p /media/iso
2). 设置ISO为yum源:
mount your-iso-file.iso /media/iso/ -t iso9660 -o loop
或
mount -t iso9660 -o loop your-iso-file.iso /media/iso
注:iso9660 是一种格式
3). 在/etc/ yum.repos.d 目录下编辑一个库脚本,如:iso.repo;内容如下:
[rhel-source]
name=ISO
baseurl=file:///media/iso
enabled=1
gpgcheck=0
enabled=1:启用当前yum源,如果设为0则表示禁用。默认值为1。
gpgcheck=1:指定在安装yum源中的软件包之前是否检查RPM软件包的数字签名,1表示检查,0表示不检查。
4). 映像卸载:umount /media/iso
9. 多服务器之间操作:
1). 跳转:ssh 远程服务器IP
2). 服务器间复制文件:
scp local_file remote_username@remote_ip:remote_folder
服务器之间复制文件夹:
scp -r local_folder remote_username@remote_ip:remote_folder
从远程服务器复制到本地服务器
从远程复制到本地的scp命令与上面的命令雷同,只要将从本地复制到远程的命令后面2个参数互换顺序就行了。
例如:
scp root@www.mydomain.com:/home/linux/soft/scp.zip /home/linux/others/scp.zip
scp www.mydomain.com:/home/linux/soft/ -r /home/linux/others/
10. 防火墙开启和关闭:
开启防火墙:chkconfig iptables on
关闭防火墙:chkconfig iptables off
上述两条命令均要重启系统才能生效。
如果不想通过重启系统而即时生效的话
可以用“service”命令。缺点是重启系统后设置会丢失。
开启防火墙:service iptables start
关闭防火墙:service iptables stop
要在防火墙中设置某些端口的开关,可修改编辑/etc/sysconfig/iptables文件,比如开启SSH 端口22,可以加上如下内容:
-A RH-Firewall-1-INPUT -m state ――state NEW -m tcp -p tcp ――dport 22 -j ACCEPT
11. 配置环境变量可以在/etc/profile.d 中新建一个*.sh文件,里面加入配置的环境变量内容。一般不去修改/etc/profile文件。
如 java.sh:
export JAVA_HOME=/usr/local/java/default
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/jt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
12. grep多个关键字“与”和“或”
1). 或操作
grep -E '123|abc' filename // 找出文件(filename)中包含123或者包含abc的行
egrep '123|abc' filename // 用egrep同样可以实现
awk '/123|abc/' filename // awk 的实现方式
2). 与操作
grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。
3). 其他操作
grep -i pattern files :不区分大小写地搜索。默认情况区分大小写,
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),
grep -C number pattern files :匹配的上下文分别显示[number]行
参见:http://find11.blog.163.com/blog/static/68162432011111233330578/