Wednesday, February 22, 2017

Linux常用命令

grep是查找某个关键字或正则表达式在某个文件某一行的匹配,结果为匹配的及文件

返回含abc的匹配行:
zgrep "abc" application.log

在多个文件中查找:*.txt或者{}.txt
grep 'linux' {a,b}.txt

先返回含Exception的匹配行再返回含Hulu的匹配行,也就是同时含这两次的匹配行:
zgrep "Exception" */application*.log | grep "Hulu" 在application log中含Exception以及Hulu

按文件统计出现行数 -c
grep -c 'linux' *.txt

统计全部文件总行数=次数:
zgrep "Exception" */application*.log | grep "Hulu" | wc -l 数出现次数

关键词也可以为正则表达式:
vim中 /main 搜索main关键字,可以带正则表达式:如Time=[\d]{4,4}\.[\d]* ms
   按键盘n表示下一个搜索结果,按键盘N表示上一个搜索结果。
grep也可以带正则表达式:grep -c 'Time=[\d]{4,4}\.[\d]* ms' *service
grep 'linux\|win' a.txt

grep -c 'Time=[\d]{4,4}\.[\d]* ms' *service| sort | uniq -c | sort -rn |head 按文件统计词频且按大到小排序

grep是行匹配,而awk是词匹配(按空格)
打印所有行的第一个词(默认按空格划分),其他词不输出
awk '{print $1}' a.txt

自定义分隔符,如逗号
awk -F',' 'print $2' a.txt

排序
sort -r 递降排序结果
sort -u 去重且排序

进程操作
netstat -tupln | grep 1066得到要终结进程的id
kill -9 16085删除进程by id
ps aux | grep 1066查看谁在用1066端口
查找操作
grep -color=auto "the" foo.txt[文件内容]在某一个文件查找某字符串并打印结果行
-i 大小写敏感
-A 打印后几行
-B 前几行
-C 周围几行
-P 匹配正则表达式 "url=.*?;" 问号表示分号不加入匹配结果
-o 只显示匹配string
-c 匹配结果行数 或|wc -l
-v 不含某字符串
-n 显示行号
grep -r "the" * 递归在所有文件中查找某字符串
grep -A 3 -i "moon" foo.txt 在某一个文件查找一个字符串并打印紧接的3行
  | head 查看前10行
  | sed "s/my/your/" 替换(用your替my)
find . -iname "odin-get"[文件名]搜索文件名通过名字
find ./Test -user kk 搜索文件名通过用户
文件操作
less foo.txt高效率打开大文件。CTRL+F下一页,CTRL+B上一页. SHIFT+G文件底部
cat > foo.txt创建文件。CTRL+D保存文件
cat foo.txt查看文件
vim foo.txt创建/编辑一个文件
/main 搜索main关键字
i/insert 插入模式,ESC退出插入模式
:q 或者Ctrl+z+q不保存退出
:wq 保存退出
rm foo.txt删除文件
mv -i foo.txt Test/foo.txt移动/重命名文件
cp -i foo.txt Test/foo.txt复制一个文件
scp ~/a.txt jiajicen@vtasters.com:~/a.txt复制一个文件到另一个host
scp -r jiajicen@vtasters.com:~/test ~/test复制一个文件夹到另一个host. test文件夹不需要预先创建
tail -f app.log即时打印最新的log,方便同步debug
目录操作
cd ../root/Docements 绝对路径
./path 当前目录
../path 父目录
~/Desktop 根目录/Users/kk/Desktop
~john/bin 用户目录/Users/john/bin
ls -ltr-ltr 按时间排序
-lh 显示大小权限
-alh 显示隐藏文件
pwd显示当前目录
mkdir Test创建目录
rm -r Test删除目录
环境变量
export PATH="/home/Application/Java/bin:$PATH"加入环境变量到内存,然后执行source加入到硬盘再重启命令行。
一次性操作为export PATH=$PATH:/home/Application/Java/bin >> ~/.bash_profile
source ~/.bash_profile (Mac)加入到硬盘。Linux为~/.zshrc
echo $HOME打印某环境变量
which java得到某个命令如java路径,也是查找在~/.zshrc此命令的路径
系统操作
clear清屏
sudo reboot重启
sh abc.sh执行一个程序,可能需要先提高权限chmod +x abc.sh
有时需要加点如./mvn才能执行,通过加入到.bash_profile可以避免
su Javasu=sudo, 用超级用户执行程序。
ssh vtasters.com远程登录
nslookup通过IP查找其hostname


agrep 文件每个block以EOF结束,agrep可以block查找


zshrc文件:
~/.zshrc
alias vm01="ssh ubuntu@172.31.29.246"

然后
echo "alias vps='ssh -X user@example.com'" >> ~/. zshrc
source ~/.zshrc
就可以输入vm01登录

Linux文件权限:
Linux权限为读写执行r, w, x.
Linux权限粒度为拥有者u,群组g,其他组o。
4,2,1表示读、写、执行权限。rwx=4+2+1=7, rw=4+2=6, rx=4+1=5

chmod 777 file.txt (<=> chmod u=rwx, g=rwx, o=rwx)
chmod 600 file.txt (<=> chmod u=rw, g=---, o=---)

查看字符
先copy到这个网站得到它的ascii码
然后查找

ssh问题
尝试ssh到某个host得到此错误Could not resolve host name但可以ping
尝试用ssh <host> -o ProxyCommand=none

No comments:

Post a Comment