linux常用命令

 

查看linux版本

lsb_release -a

-bash-4.1$ lsb_release -a
LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: CentOS
Description: CentOS release 6.7 (Final)
Release: 6.7
Codename: Final

cat /proc/version

得到:

Linux version 2.6.32-573.18.1.el6.toav2.x86_64 (root@localhost.localdomain) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC) ) #1 SMP Sun Jul 17 12:44:29 CST 2016

 

查看硬件信息

内存:free -m

硬盘:df -h

cpu: lscpu 或 cat /proc/cpuinfo

显卡:nvidia-smi

 

vim相关

vimtutor 现场操作

跳行

1 调到首行和尾行

命令模式下gg 首行,G尾行

2 跳转到第250

命令模式输入250gg, 或者:250回车

删除

2 删除第20~30行

命令模式输入 20,30d

3从当前行开始删除10行

 10dd

dw 删除一个词

正则替换

4 在10~20 行首添加 # 号注释

:10,20 s/^/#/g

:10,$ s/^/#/g 第10行到最后一行

%s/txt/txt\r/g 在所有的txt后面增加一个换行(\r)

4.1 在所有行中把from替换为to

:%s/from/to/g

:%s/^ef4.*[0-9].*|//g 支持正则,把行首为 ef4*一个数字*| 的字符替换为空。

:%s/t\([aou]\)g/g\1t/g 把tag tog tug 替换成gat got gut。用括号\(\)分组,后面用\1表示括号中的内容

:%s/t\([aou]\)g/g\1t/g 把tag tog tug 替换成gat got gut。用括号\(\)分组,后面用\1表示括号中的内容

空白字符行换成空行::%s/^\s*$//g

\s代表空白字符

vim正则表达式:http://tanqisen.github.io/blog/2013/01/13/vim-search-replace-regex/

5 复制粘贴vim打开的特定文本

    按住ctrl,用光标选定一些行,y,光标移动到需要复制的地方,p

6 查看正在编辑的文件名

:ls

ctrl+g

7 撤销与重做

取消 u

重做 ctrl r

8 块操作

ctrl+v进入“可视块”模式,光标选取要操作的文本块,按d删除文本块,

删除空行:

:g/^$/d

:g/patten/cmd 按行找到patten,然后按cmd操作该行

删除文章中的空行

:g/^s*$/d

简单解释一下:

g :全区命令

/ :分隔符

^s*$ :匹配空行,其中^表示行首,s表示空字符,包括空格和制表符,*重复0到n个前面的字符,$表示行尾。连起来就是匹配只有空字符的行,也就是空行。

/d :删除该行

用set fileencoding命令得到文件编码,set fileencoding=utf-8转换文件编码

:s/[\uFEFF]//g vim删掉<feff>符号

显示不可见字符:

:set invlist

:set list

恢复 set nolist

缩进8变4

vim ~/.vimrc

set shiftwidth=4

set softtabstop=4

source ~/.vimrc

功能说明

set shiftwidth=4          (表示每一级缩进的长度)

set softtabstop=4      (表示在编辑模式的时候按退格键的时候退回缩进的长度)

ctags

ctags是一个vim用来查代码的好用的工具

yum install ctags

使用前首先需要生成tags,在源码所在目录执行 ctags -R *

然后执行 vim -t main

这样就会找到当前源码的main的出处,并跳转到那里

在打开vim后,输入 :ta main 跳转到main的出处

编码问题:

在~/.bashrc中,有定义解码顺序

在vim打开一个文本后

:set fileencodings

fileencodings=ucs-bom,utf-8,cp936

这个说明vim会按照会依次尝试以ucs-bom,utf-8,cp936的方式解码,如果某种方式解码成功,则认为是对于的编码方式。

:set encoding

查看当前文件编码的方式。

以下参考:https://forum.ubuntu.com.cn/viewtopic.php?p=2498184

分屏:(参考:https://www.cnblogs.com/bugutian/p/4498326.html

split(水平)与vsplit(竖直)

vim a.cpp 打开一个文件

:split b.cpp 水平打开文件b.cpp

:split c.cpp 同屏打开文件c.cpp

然后ctrl + w + w就可以在各窗口切换,也可以ctrl + w + h左j下k上l右 进行窗口切换

:close 可以关闭窗口,quit退出窗口

使用分屏的好处是:可以同时查看多文件代码并方便地拷贝复制

:! 命令

挑出vim执行命令,然后任何按键就可以回到vim

set nowrap 不折叠

ctags:支持多语言,tab键长度?windows下的tab贴到linux有问题,长度不一样

ctrl+o 上一次跳转

shift+*选中变量、查找?N上搜、n下搜,调试跳转

shift+*,shift+#,上下查找;shift+%,查找括号;

就能使用Ctrl+] 或 g Ctrl+] 来实现跳转了。g Ctrl+]可以跨目录,当有多个定义时会提示,并使用数字标示,输入数字后回车可跳转到相应定义处。

 

awk

awk命令:

awk对列求和:

ls score/|awk -F '---' '{sum+=$1};END{print sum}'

对ori.txt进行排序,按照每行长度排序,给出长度在最前面

gawk '{print length($0),$0}' ori.txt | sort -n -k 1 >post.txt

不给出长度在最前,保证----不存在train.txt中

awk '{print length($0),"----"$0}' train.txt | sort -n -k 1 | awk -F '----' '{print $2}'

计算input.txt每行空格隔开的字符串数量(NF 当前记录字段个数)

awk -F ' ' '{print NF}' input.txt

打印文件score.txt中第二列>0.8的行

awk ' $2 > 0.8 {print $0}' score.txt

根据文件名生成听测表:

ls score/|awk -F"---" '{print $2 "," $1 ",=HYPERLINK(\"output\/" $2 ".wav\")" }'|sort > listen_table_$1.csv

awk搜索含有“ ng”的行:

awk '/ ng/' training/train.txt_new.txt

挑选不包含“ ng”串的行(取反):

awk '!/ xx/' tmp

awk搜索含有“ ng”的行,对满足要求的行打印分列后的第一列:

awk '/ ng/ {print $1}' training/train.txt_new.txt

把1.txt文件的行删掉所有数字,然后打印第2/3字段、并且排序+去重。gsub(/正则串/,"替换结果")

cat 1.txt | awk -F'\t' '{gsub(/[0-9]/,"");print "\""$2" "$3"\","}'|sort|uniq >3.1

 

find

删除查找到的所有文件:

find -name searcher.h|xargs rm

递归查找当前目录下的searcher.h文件,并且删除。 | xargs为管道传参 

find -name "*.cpp"|xargs grep "extern \""

递归查找当前目录下的*.cpp文件,并且在找到的cpp文件中寻找 extern "。

find -regex "^.*step-[0-9][0-9][04268]000-align\.png"

按照正则表达式查找包含 “step2个数字一个偶数000-align.png”的文件

find . -name ".svn" -type d

递归查找当前目录(find后面直接跟查找目录,再跟-name一类的参数)下的 .svn目录

 find -iname "*.png" -o -iname "*.bmp"

查找png文件 或者bmp文件,且不区分大小写。 -iname 不区分大小写, -o 逻辑或

查找当前目录下的某类文件(.wav)并转移到某处./wave

--用-I {} 指示一个替换字符串 ref http://man.linuxde.net/xargs

find -name *.wav|xargs -I {} mv {} ./wave/

find -name "*.txt"|xargs -I {} cat {} >> df18.txt 把所有的txt合并起来

:s/[\uFEFF]//g vim删掉<feff>符号

 

查看历史命令:

history

查看目录占用磁盘大小 du(disk use)

du

du -a 查看目录及文件占用大小

du -m -a 以M byte为单位显示所有文件大小

du -h --max-depth=2 以查看当前目录下个目录的大小,递归查看的目录层级设为2

 

查看磁盘使用情况:

df -h

查看文件的头部尾部100行,查看文件行数

head -n 100 dataprocess.sql

tail -n 100 dataprocess.sql

wc -l dataprocess.sql

定时刷新查看文件,比如tail用tailf、head用headf

tailf -n 100 dataprocess.sql

tail -f 1 train.log 每隔1s中显示一下 train.log的内容。

 

命令帮助,如ps命令:

man ps

ps --help

跳转到上次的目录

cd -

远程拷贝文件,本地复制到远程 

scp

scp fileSrc remote_username@remote_ip: remote_folder

scp fileSrc remote_username@remote_ip:remoter_file  

远程到本机

scp huangzhiqiang03@168.182.44.20:beijing_dum.sql hzq_dum.sql

远程机器168.182.44.20的huangzhiqiang03用户的主目录下有个文件hzq_dum.sql,把它转移到本地来。

scp -rp  huangzhiqiang03@168.182.44.20:/data1/hzq ./

把远程机器168.182.44.20的huangzhiqiang03用户的/data1/hzq目录拷贝到本机当前目录下,r表示递归,p表示备份模式。

如果不是默认的22端口(scp走的ssh端口,需要指定端口号 如8022端口号)

scp -r -P 8022 ef4_6k_files/ef4_6k hzq@10.91.40.132:/home/hzq/

同步:

rsync  -ravPu src_path hzq@192.168.1.21dst_path

ps

查看进程 process status

ps -u root 显示root用户启动的进程

ps -ef 显示所有进程,连同命令行

ps -ef|grep ssh 显示特定进程,如保函ssh名字的进程

ps aux 列出当前正在内存当中的程序

ps aux>ps001.txt 将ps aux的结果转存到文件ps001.txt中

ps -p 33101 -o lstart 查看进程号为33101的进程的启动时间

重命名:

mv oldfile newfile

获取linux下url形式的文件:

curl -O "http://195.188.28.57:8081/fileserver?method=getfile&hzqid=B1DAEBA416DAA0F6378A21B33D5"

建立多层目录:

mkdir -p process-center/hzq

删除output目录及内部所有内容,r表示递归删除,f表示强制删除,删除的时候不提示信息。

rm -r output

rm -rf framework   

压缩解压:

压缩:

tar -zcvf db.gz  /home/test/user/hzq/outdir/*.db

zip jcdw.zip .ttf*

zip -r cxl.zip ./* 

解压tar包特定文件:

tar -tvf df18_20k.tar|grep df18_20k.txt

-rw-r--r-- zhanghuisonach/10000 3147220 2016-10-17 17:29 df18_20k/prosodylabeling/df18_20k.txt

tar -xvf df18_20k.tardf18_20k/prosodylabeling/df18_20k.txt

 将当前目录下的所有文件和文件夹全部压缩成cxl.zip文件,-r表示递归压缩子目录下所有文件

解压:

tar -zxvf processworker.tar.gz

tar -jxvf processworker.tar.bz2   

unzip jcdw.zip

 

显示详细文件信息

ls -l 或者用 ll

查找进程,进程信息中(执行路径、程序名称)包含”processworker_check“

按时间查看:

1) ls -lt  时间最近的在前面

2) ls -ltr 时间从前到后

ps -ef|grep processworker_check

 

杀掉(-9强制)某个进程

kill 进程号

kill -9 进程号

暂停与恢复某个进程

kill -STOP 进程号 

kill -CONT 进程号

文件上传到linux

rz       默认文本形式传输

rz -be   二进制传输

文件从linux到本地下载

sz 文件名

 

查找文件,在当前目录及其子目录下 名称包含860439的文件或目录:

find ./ -name "*860439*"

在当前目录及其子目录下的文件中查找vocoder字符串的

grep -r "vocoder"

搜索cpp文件并在搜索结果中查找vocoder字符串的

find -name "*.cpp"|xargs grep "vocoder"

更多参考:http://blog.chinaunix.net/uid-25266990-id-199887.html

 

文件转码:iconv

在vim下用set fileencoding命令得到文件编码,用iconv将文件ef4.txt由latin1转码为utf-8形式到文件ef4_utf8.txt中

iconv -f latin1 -t utf-8 ef4.txt > ef4_utf8.txt

iconv -c -f utf-16le -t cp936 input/bug.txt > bug_gbk.txt (加-c忽略无效字符)

查看环境变量:

export

gdb查看core文件:

gdb exe core.67842

core.67842为core文件,exe为core对应的可执行文件

跟踪调试正在运行的进程 44179为进程号。

gdb exe 44179

拷贝目录:(output/output为原目录,hzq为目标目录)

cp -r output/output/ hzq/

拷贝目录加覆盖提示 h2的内容考入h1中:

 cp -ri h2/* h1/

重定向输出 > ,文件尾部附加>>:

pg_dump -h120.199.54.43 -Upg -p8900 jcdw_hzq -tpoi > dump_poi.sql

cat in.sh > in2.sh

./exe > output.txt

ps >> output.txt

下载文件到本地:

sed 字符串替换:

sed -i “s/bm201505221419551075775969_copy_rw/hzq/g” haidian.sql

在haidian.sql文件中进行字符串替换

grep原字符串 -rl ./|xargs sed -i "s/原字符串/新字符串/g"

在当前目录下的文件中进行字符串的查找替换

curl 为文件传输工具

curl -o a.html http://www.baidu.com  从http://www.baidu.com  抓取页面内容到一个文件中,下载百度主页并保存为 网页a.html

curl -O "http://142.118.28.57:8081/fileserver?method=getfile&hzqid=OOOOOXXXXXXFFFFFB33D5" 下载特定ip的特定文件

 

 

参考:http://www.cnblogs.com/gbyukg/p/3326825.html

linux 查看cpu、内存等信息:

查看文本文件

vim haidian.sql   ---slow

cat haidian.sql  从前显示,fast

tac haidian.sql 从后面显示,fast

head -n 20 haidian.sql 显示文件的前20行,fast

tail -n 20 haidian.sql 显示文件的后20行,fast

top

参考:http://www.cnblogs.com/Wen-Man/archive/2011/04/04/2373771.html

shell小脚本:

find

#!/bin/sh
str="*$1*"
find ./ -name $str
res=$(find ./ -name $str)
vim $res

./find 日志号

以前试的一些语法 http://user.qzone.qq.com/459125872/blog/1342751492

ldd 打印可执行文档依赖的共享库文件。

是glibc的一部分`

ldd multi_thread_test

libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb71ea11000)

libcrypto.so.10 => not found

libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fb71e68e000)

libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb71e385000)

libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fb71e16f000)

libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb71dda5000)

/lib64/ld-linux-x86-64.so.2 (0x0000564b3820d000)

 

查看一个进程的cpu、内存使用情况:

top -p 进程号

 

查看MD5值

md5sum filename

window下用certutil -hashfile filename MD5

 

树形显示dirname目录结构

tree dirname

树形显示,显示深度为2

tree -L 2 dirname

 

以前试的一些语法 http://user.qzone.qq.com/459125872/blog/1342751492

 

linux命令连接(以前)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值