linux命令小结积累0508

linux命令无穷尽,把遇到的给查清楚了,记下来。

致谢:感谢公司mentor爽哥指点。

目录

linux命令积累... 1

wc 命令... 1

cd. 2

重定向>与>>命令... 2

rm命令... 3

语法... 3

选项... 3

参数... 3

mv命令... 4

文件改名... 4

文件移动... 5

cp复制命令... 5

grep命令... 6

规则表达式(可以熟悉下)... 6

选项(遇到了就记住,根据需求来). 7

awk命令... 9

cut命令... 9

语法... 10

实例... 10

指定字段的字符或者字节范围... 12

cat命令... 12

tail命令... 13

nohup命令... 14

jobs. 15

truncate命令... 15

sort 命令... 15

 

 

           linux命令积累

 

0508上午

wc 命令

wc -l logfile0508morningafterIndex3.log   查看logfile.log文件的行数

wc命令含义:

统计指定文件中的行数、单词数(字符串组)、字节数、,并将统计结果显示输出。

后面所接的参数:

-c # 统计字节数,或--bytes——chars:只显示Bytes数;。

-l # 统计行数,或——lines:只显示列数;。

-m # 统计字符数。这个标志不能与 -c 标志一起使用。

-w # 统计字数,或——words:只显示字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。

-L # 打印最长行的长度。

-help     # 显示帮助信息

--version # 显示版本信息

其他example

查看文件的字节数、字数、行数

wc test.txt

# 输出结果

7     8     70     test.txt

行数 单词数 字节数 文件名

ex3

wc -l *       # 统计当前目录下的所有文件行数

wc -l *.js    # 统计当前目录下的所有 .js 后缀的文件行数

find  . * | xargs wc -l # 当前目录以及子目录的所有文件行数

wc test.txt   # 查看文件的字节数、字数、行数

 

用来统计当前目录下的文件数

ls -l | wc -l
# 输出结果
8

参考:https://wangchujiang.com/linux-command/c/wc.html

 

cd

cd命令 用来切换工作目录至dirname 其中dirName表示法可为绝对路径或相对路径。

cd空格直接enter  进入自己的home目录。或者cd ~也表示为home directory的意思

cd空格+/  进入整个服务器的根目录

注意一个服务器的根目录只会有一个,但是因为可能存在多个用户,每个用户都会有一个home目录,所以一个服务器可能会有多个home目录。

 

语法:

cd (选项) (参数)

.则是表示目前所在的目录,..则表示目前目录位置的上一层目录。

cd# 返回进入此目录之前所在的目录;

cd ..  # 返回上级目录(若当前目录为“/“,则执行完后还在“/"".."为上级目录的意思);

cd ../..  # 返回上两级目录;

cd !$  # 把上个命令的参数作为cd参数使用。

参考:https://www.cnblogs.com/peida/archive/2012/10/24/2736501.html

 

重定向>与>>命令

content > file

content的输出重定向到某个文件。如果该文件不存在,则需要创建它。如果它已经存在,通常会毫无预兆地丢失现有内容。(注意需要有权限)

cntent >> file

content输出重定向到某文件。同样地,您必须拥有该文件的写权限。如果该文件不存在,则需要创建它。如果它已经存在,输出会被附加到现有文件。

 

rm命令

rm -rf \(\)   删除文件名为()的文件夹,对于名字有符号的文件夹,要用反斜杠\标识转义,让其识别。

语法

rm (选项)(参数)

选项

-d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
-f:强制删除文件或目录;
-i:删除已有文件或目录之前先询问用户;
-r-R:递归处理,将指定目录下的所有文件与子目录一并处理;
--preserve-root:不对根目录进行递归操作;
-v:显示指令的详细执行过程。

参数

递归删除

文件:指定被删除的文件列表,如果参数中含有目录,则必须加上-r或者-R选项

rm 命令删除目录

rm -r [目录名称] -r 表示递归地删除目录下的所有文件和目录。 -f 表示强制删除

rm -rf testdir
rm -r testdir

实例

交互式删除当前目录下的文件testexample

rm -i test example
Remove test ?n(不删除文件test)

删除命令,可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。

在删除文件之前,最好再看一下文件的内容,确定是否真要删除。rm命令可以用-i选项,这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项,系统会要求你逐一确定是否要删除。这时,必须输入y并按Enter键,才能删除文件。如果仅按Enter键或其他字符,文件不会被删除。

 

 

mv命令

mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。

1命令格式:

    mv [选项] 源文件或目录 目标文件或目录

2命令功能:

当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。

3命令参数:

-b :若需覆盖文件,则覆盖前先行备份。 

-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;

-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!

-u :若目标文件已经存在,且 source 比较新,才会更新(update)

          -t   --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。

文件改名

实例一:文件改名

可以实现文件改名:

命令:

mv test.log test1.txt

       将当前目录下的文件test.log 改名为test1.txt

 

将文件file1改名为file2,如果file2已经存在,则询问是否覆盖

命令:

mv -i log1.txt log2.txt

注意是-i,先询问。

 

将文件file1改名为file2,即使file2存在,也是直接覆盖掉。

命令:

mv -f log3.txt log2.txt

注意上面参数用了-f ,记忆f 即fugai覆盖

文件移动

实例二:移动文件

 mv test1.txt test3

说明

test1.txt文件移到目录test3

实例三 :多个文件移动到一个目录

命令:

mv log1.txt log2.txt log3.txt test3

将文件log1.txt,log2.txt,log3.txt移动到目录test3中,

 

 

mv -t /opt/soft/test/test4/ log1.txt log2.txt log3.txt 

命令又将三个文件移动到test4目录中去。注意用了-t,反转。

 

移动当前文件夹下的所有文件到上一级目录

mv * ../

 

把当前目录的一个子目录里的文件移动到另一个子目录里

命令:

mv test3/*.txt test5

test3目录下所有以.txt文件为后缀的移动到test5

参考:

https://www.cnblogs.com/peida/archive/2012/10/27/2743022.html

 

cp复制命令

cp命令用来复制文件或者目录

用法:cp [选项]... [-T] 源文件 目标文件

 或:cp [选项]... 源文件... 目录

 或:cp [选项]... -t 目录 源文件...

将源文件复制至目标文件,或将多个源文件复制至目标目录。
部分参数:
  -R, -r, --recursive                递归复制目录及其子目录内的所有内容

 

 

[root@localhost www]# cp -p test.rb /home/aa   #将test.rb copy到aa目录,并且保留原文件的属性

 

[root@localhost www]# cp -r Dir/ /home/test      #将Dir目录copy到test目录下

 

[root@localhost www]# cp -fr Dir/* /home/test    #将Dir下面的所有文件强制copy到test目录下

 

[root@localhost www]# cp test.rb{,.bak}          #备份test.rb,并在尾部加上.bak后缀

 

 

grep命令

grep global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用,使用上十分灵活。

grep -v 聊天回复: logfile0508morning-afterSystem.log >logfile0508morningafterChatReply.log

功能实现了删除log~System.log文件里每行的“聊天回复”这四个字,并将删除后得到的文件重定向到一个新建立的B文件中。实现了选择性提取的功能

原理是: grep 搜索 ,-v --revert-match # 反转查找, 不包含,

>,注意>前有个空格,这个是将显示在“屏幕上”的内容重定向到新建立的一个文件中,重定向

 

选项:(太多了,用到再记,放到最后面了)

输入命令的时候,注意字符串可以是中文,不用加引号,但是务必注意前后的空格也要在英文状态下。

 

example:

输出file除含有"match_pattern"之外的所有行 -v 选项:

grep -v "match_pattern" file_name

 

统计文件或者文本中包含匹配字符串"text"的行数 -c 选项:

grep -c "text" file_name

 

输出包含匹配字符串"text"的行数 -n 选项:

grep "text" -n file_name  #

cat file_name | grep "text" -n

grep "text" -n file_1 file_2  #多个文件

 

 

 

规则表达式(可以熟悉下)

^   # 锚定行的开始 如:'^grep'匹配所有以grep开头的行。    
# 锚定行的结束 如:'grep$' 匹配所有以grep结尾的行。
. # 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p    
*  # 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。    
.*  # 一起用代表任意字符。   
[] # 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grepgrep    
[^]# 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-RT-Z的一个字母开头,紧跟rep的行。    
\(..\) # 标记匹配字符,如'\(love\)'love被标记为1    
\<      # 锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。    
\>     # 锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。    
x\{m\}  # 重复字符xm次,如:'0\{5\}'匹配包含5o的行。    
x\{m,\}   # 重复字符x,至少m次,如:'o\{5,\}'匹配至少有5o的行。    
x\{m,n\}  # 重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10o的行。   
\w    # 匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p   
\W    # \w的反置形式,匹配一个或多个非单词字符,如点号句号等。   
\b    # 单词锁定符,如: '\bgrep\b'只匹配grep  

 

 

选项(遇到了就记住,根据需求来)

-a --text  # 不要忽略二进制数据。

-A <显示行数>   --after-context=<显示行数>   # 除了显示符合范本样式的那一行之外,并显示该行之后的内容。

-b --byte-offset                           # 在显示符合范本样式的那一行之外,并显示该行之前的内容。

-B<显示行数>   --before-context=<显示行数>   # 除了显示符合样式的那一行之外,并显示该行之前的内容。

-c --count    # 计算符合范本样式的列数。

-C<显示行数> --context=<显示行数>-<显示行数> # 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。

-d<进行动作> --directories=<动作>  # 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。

-e<范本样式> --regexp=<范本样式>   # 指定字符串作为查找文件内容的范本样式。

-E --extended-regexp             # 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。

-f<范本文件> --file=<规则文件>     # 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。

-F --fixed-regexp   # 将范本样式视为固定字符串的列表。

-G --basic-regexp   # 将范本样式视为普通的表示法来使用。

-h --no-filename    # 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。

-H --with-filename  # 在显示符合范本样式的那一列之前,标示该列的文件名称。

-i --ignore-case    # 忽略字符大小写的差别。

-l --file-with-matches   # 列出文件内容符合指定的范本样式的文件名称。

-L --files-without-match # 列出文件内容不符合指定的范本样式的文件名称。

-n --line-number         # 在显示符合范本样式的那一列之前,标示出该列的编号。

-q --quiet--silent     # 不显示任何信息。

-R/-r  --recursive       # 此参数的效果和指定“-d recurse”参数相同。

-s --no-messages  # 不显示错误信息。

-v --revert-match # 反转查找。

-V --version      # 显示版本信息。  

-w --word-regexp  # 只显示全字符合的列。

-x --line-regexp  # 只显示全列符合的列。

 

 

 

参考:https://wangchujiang.com/linux-command/c/grep.html

 

 

awk命令

awk是门编程语言,这个功能强大,但坑很深啊,看看它的解释就知道了,大神之路吧。我这啥都是小菜鸡的还是先遇见一个记一个吧,日后再来填坑吧。

awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。

 

已用到:

awk -F '\t' '{if($3!="0.000000") print $0}' logfile0508mgafterChatReply.log  >logfile058mIndex3.log

注意上面的命令’\t’与‘中间有空格符

此awk命令,按列的属性做筛选

将第一个文件中的第三列不含有0.000000的各行(列)内容重定向输出到新建立的文件2(文件2是此命令建立的)。实现了以相应列的内容选择性提取的功能。

白话意思可以理解为,将如果第三列有0.000000的那行不要。

-F fs fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:

‘\t’是指分割符为tab

$0是按行,后面的数字大于0,则就是按列,$3是指第三列。

'{if($3!="0.000000") print $0}'如果该行的第三列不等于0.000000,则打印输出该行。

 

awk -F '\t' '{print $1}' logfile0508morningsavechatreply.log  >logfile0508morningsaveIndex1

将file1中每行第一列的内容映射重定向到新建立的文件中。

 

日后再膜拜吧

awk 参考:https://wangchujiang.com/linux-command/c/awk.html

爽哥大佬推荐:gawk手册:https://www.gnu.org/software/gawk/manual/gawk.pdf,可以看前started部分。

http://www.ruanyifeng.com/blog/2018/11/awk.html

 

head logfile0508morningafterIndex3.log  输出文件的前10行

 

cut命令

cut -b 36- 100w.log >logfile0508morning.log

将100w.log文件中每行去除了前36个字符的内容提取到并建立新的logfile文件。

注意看下原文件中的内容是否变化了—伪变化

 

cut 命令 用来显示行中的指定部分,删除文件中指定字段。cut 经常用来显示文件的内容,类似于 type 命令。

说明:该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数 file 所指 明的文件,将它们的内容输出到标准输出上;

 cut命令用于显示每行从开头算起 num1 num2 的文字。

 

语法

cut(选项)(参数)

选项

-b :仅显示行中指定直接范围的内容;
-c:仅显示行中指定范围的字符;
-d:指定字段的分隔符,默认的字段分隔符为“TAB”
-f:显示指定字段的内容;
-n:与“-b”选项连用,不分割多字节字符;
--complement:补足被选择的字节、字符或字段;

参数

文件:指定要进行内容过滤的文件。

实例

例如有一个学生报表信息,包含 NoNameMarkPercent

[root@localhost text]# cat test.txt
No Name Mark Percent
01 tom 69 91
02 jack 71 87
03 alex 68 98

使用 -f 选项提取指定字段(这里的 f 参数可以简单记忆为 --fields的缩写):

[root@localhost text]# cut -f 1 test.txt
No
01
02
03
[root@localhost text]# cut -f2,3 test.txt
Name Mark
tom 69
jack 71
alex 68

--complement 选项提取指定字段之外的列(打印除了第二列之外的列):

由于从word复制过来乱码,所以删除了。可见参考
 

指定字段的字符或者字节范围

cut 命令可以将一串字符作为列来显示,字符字段的记法:

  • N- :从第 N 个字节、字符、字段到结尾;
  • N-M :从第 N 个字节、字符、字段到第 M 个(包括 M 在内)字节、字符、字段;
  • -M :从第 1 个字节、字符、字段到第 M 个(包括 M 在内)字节、字符、字段。

上面是记法,结合下面选项将摸个范围的字节、字符指定为字段:

  • -b 表示字节;
  • -c 表示字符;
  • -f 表示定义字段。

更多可以参考:
https://wangchujiang.com/linux-command/c/cut.html

 

删除提取功能

 

cat命令

cat sysprof_thrift_test.py.log* > 100w.log 

将多个文件的内容合并提取到一个新文件。将以sysprof_thrift_test.py.log为前缀(也可以后面没东西了)的所有文件合并提取到并建立一个新的100w.log文件里。

 

cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。 

 

1命令格式:

cat [选项] [文件]...

2命令功能:

cat主要有三大功能:

1.一次显示整个文件:cat filename

2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.

3.将几个文件合并为一个文件:cat file1 file2 > file

3命令参数:

-A, --show-all           等价于 -vET

-b, --number-nonblank    对非空输出行编号

-e                       等价于 -vE

-E, --show-ends          在每行结束处显示 $

-n, --number     对输出的所有行编号,由1开始对所有输出的行数编号

-s, --squeeze-blank  有连续两行以上的空白行,就代换为一行的空白行 

-t                       与 -vT 等价

-T, --show-tabs          将跳格字符显示为 ^I

-u                       (被忽略)

-v, --show-nonprinting   使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外

示例:

textfile1 的文档内容加上行号后输入 textfile2 这个文档里:

cat -n textfile1 > textfile2

textfile1 textfile2 的文档内容加上行号(空白行不加)之后将内容附加到 textfile3 文档里:

cat -b textfile1 textfile2 >> textfile3

 

参考:https://www.runoob.com/linux/linux-comm-cat.html

https://www.cnblogs.com/peida/archive/2012/10/30/2746968.html

 

tail命令

tail -f sysprof_thrift_test.py.log命令?查看正在改变的日志文件

tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。

tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。

 

命令格式:

tail [参数] [文件] 

参数:

  • -f 循环读取
  • -q 不显示处理信息
  • -v 显示详细的处理信息
  • -c<数目> 显示的字节数
  • -n<行数> 显示文件的尾部 n 行内容
  • --pid=PID -f合用,表示在进程ID,PID死掉之后结束
  • -q, --quiet, --silent 从不输出给出文件名的首部
  • -s, --sleep-interval=S -f合用,表示在每次反复的间隔休眠S

实例

要显示 notes.log 文件的最后 10 行,请输入以下命令:

tail notes.log

要跟踪名为 notes.log 的文件的增长情况,请输入以下命令:

tail -f notes.log

此命令显示 notes.log 文件的最后 10 行。当将某些行添加至 notes.log 文件时,tail 命令会继续显示这些行。 显示一直继续,直到您按下(Ctrl-C)组合键停止显示。

显示文件 notes.log 的内容,从第 20 行至文件末尾:

tail +20 notes.log

显示文件 notes.log 的最后 10 个字符:

tail -c 10 notes.log

实例1:显示文件末尾内容

命令:

tail -n 5 log2014.log

# tail -n 5 log2014.log 

2014-09

2014-10

2014-11

2014-12

说明:显示文件最后5行内容

 

nohup命令

用 nohup 命令,当需要在后台运行一个进程,而且在自己即使退出当前登录帐户时,该进程还能继续在后台执行

 

nohup python3.6 sysprof_thrift_test.py /data/liushuang/hei041220_041720_query.txt &

nohup 执行命令 &

将python的执行的命令放到后台服务器端跑,xshell端不显示这个命令的执行变化,这样当即使代码没有跑完而xshell又与服务器的连接断开时,后台仍然会继续跑。第二个文件.txt是作为前面被执行的python程序的一个参数传过去的。

可以在你退出帐户/关闭终端之后继续运行相应的进程。

jobs

但一个jobs命令 查看后台跑的进程(还是当前用户自后台跑的所有进程)?

使用 jobs 查看任务。

使用 fg %n 关闭。

truncate命令

truncate -s 0 sysprof_thrift_test.py.log 

将sysprof_thrift_test.py.log的文件大小清空为0 。0是设置的大小

用法:truncate 选项 文件

 

将文件缩减或扩展至指定大小。如果指定文件不存在则创建。如果指定文件超出指定大小则超出的数据将丢失。如果指定文件小于指定大小则用0 补足。
长选项必须使用的参数对于短选项时也是必需使用的。

  -c, --no-create  不创建文件

  -o, --io-blocks  将SIZE 视为IO 块数而不使用字节数

  -r, --reference=文件   使用此文件的大小

  -s, --size=大小  使用此大小

      --help                显示此帮助信息并退出

      --version             显示版本信息并退出
 

参考:http://linux.51yip.com/search/truncate

 

sort 命令

Linux中的命令

排序的,sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

 

将排序好的内容映射输出到新建Sortedlogfile0508morningsaveIndex1文件中

sort logfile0508morningsaveIndex1 >Sortedlogfile0508morningsaveIndex1

 

[rocrocket@rocrocket programming]$ cat seq.txt

banana

apple

pear

orange

[rocrocket@rocrocket programming]$ sort seq.txt

apple

banana

orange

pear

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值