Linux常用命令学习记录

Linux常用命令学习记录

在工作学习中经常会用到的一些linux命令集合,不定时添加。


curl

curl可以看成命令行浏览器。 —— [ curl命令详解 ]

常用 option

option含义例子
直接访问网页curl http://www.linuxidc.com
-o直接将网页保存curl -o page.html http://www.linuxidc.com
-O下载访问内容curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen1.JPG
简单正则表达curl -o #2_#1.jpg http://cgi2.tky.3web.ne.jp/~{zzh,nick}/[001-201].JPG
-x指定http访问所使用的proxy服务器及其端口curl -x 123.45.67.89:1080 -o page.html http://www.linuxidc.com

awk

行处理命令 —— awk常用命令

三种调用方式

1.命令行方式
awk [-F field-separator] ‘commands’ input-file(s)

其中,commands 是真正awk命令,[-F域分隔符]是可选的。 input-file(s) 是待处理的文件。
在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格。

2.shell脚本方式
将所有的awk命令插入一个文件,并使awk程序可执行,然后awk命令解释器作为脚本的首行,一遍通过键入脚本名称来调用。
相当于shell脚本首行的:#!/bin/sh
可以换成:#!/bin/awk

3.将所有的awk命令插入一个单独文件,然后调用:
awk -f awk-script-file input-file(s)

其中,-f选项加载awk-script-file中的awk脚本,input-file(s)跟上面的是一样的。

内置变量

变量含义
ARGC命令行参数个数
ARGV命令行参数排列
ENVIRON支持队列中系统环境变量的使用
FILENAMEawk浏览的文件名
FNR浏览文件的记录数
FS设置输入域分隔符,等价于命令行 -F选项
NF浏览记录的域的个数
NR已读的记录数
OFS输出域分隔符
ORS输出记录分隔符
RS控制记录分隔符


示例

awk ‘BEGIN{FS=”\n”;RS=”“;ORS=”“}{for(x=1;x<=NF;x++){print $x”\t”} print “\n”}’ ./t.txt

sed

sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作。

—— linux之sed用法

—— linux sed命令详解

sed命令行格式

sed [-nefri] ‘command’ 输入文本

常用选项

-n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来;
-e∶直接在指令列模式上进行 sed 的动作编辑;
-f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
-r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法);
-i∶直接修改读取的档案内容,而不是由萤幕输出。

常用命令

a ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
c ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行
d ∶删除,因为是删除啊,所以 d 后面不接其他东西
i ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)
p ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作
s ∶取代,通常这个 s 的动作可以搭配正规表示法,例如 1,20s/old/new/g

grep

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。—— linux grep命令

grep [option] parttern filename

主要参数

-I :忽略大小写
-c :打印匹配的行数
-l :从多个文件中查找包含匹配项
-v :查找不包含匹配项的行
-n:打印包含匹配项的行和行标

RE(正则表达式)

\ 忽略正则表达式中特殊字符的原有含义
^ 匹配正则表达式的开始行
$ 匹配正则表达式的结束行
\< 从匹配正则表达式的行开始
> 到匹配正则表达式的行结束
[ ] 单个字符;如[A] 即A符合要求
[ - ] 范围 ;如[A-Z]即A,B,C一直到Z都符合要求
. 所有的单个字符
* 所有字符,长度可以为0

sed awk grep小结

gerp 查找, sed 编辑, awk 根据内容分析并处理。

awk(关键字:分析&处理) 一行一行的分析处理

awk ‘条件类型1{动作1}条件类型2{动作2}’ filename

相对于sed常常用于一整行处理, awk则比较倾向于一行当中分成数个”字段”(区域)来处理, 默认的分隔符是空格键或tab键
例如:last -n 5 | awk ‘{print $1 “\t” $3}’
这里大括号内$1”\t”$3 之间不加空格也可以, 不过最好还是加上个空格, 另外注意”\t”是有双引号的, 因为本身这些内容都在单引号内。$0代表整行,$1代表第一个区域, 依此类推。

awk的处理流程是:
1. 读第一行, 将第一行资料填入变量 $0, $1… 等变量中
2. 依据条件限制, 执行动作
3. 接下来执行下一行
所以, AWK一次处理是一行, 而一次中处理的最小单位是一个区域
另外还有3个变量, NF: 每一行处理的字段数, NR 目前处理到第几行, FS 目前的分隔符。

逻辑判断 > < >= <= == !== , 赋值直接使用=

例 cat /etc/passwd | awk ‘{FS=”:”} $3<10 {print $1 “\t” $3}’
首先定义分隔符为:, 然后判断, 注意看, 判断没有写在{}中, 然后执行动作, FS=”:”这是一个动作, 赋值动作, 不是一个判断, 所以不写在{}中。

BEGIN END , 给程序员一个初始化和收尾的工作, BEGIN之后列出的操作在{}内将在awk开始扫描输入之前执行, 而END{}内的操作, 将在扫描完输入文件后执行。
awk ‘/test/ {print NR}’ abc 将带有test的行的行号打印出来, 注意//之间可以使用正则表达式。
awk {}内, 可以使用 if else ,for(i=0;i<10;i++), i=1 while(i < NF)
可见, awk的很多用法都等同于C语言, 比如”\t” 分隔符, print的格式, if, while, for 等等。

sed(关键字: 编辑) 以行为单位的文本编辑工具 sed可以直接修改档案, 不过一般不推荐这么做, 可以分析 standard input

sed [-nefi] ‘[动作]’ [输入文本]

-n : 安静模式, 一般sed用法中, 来自stdin的数据一般会被列出到屏幕上, 如果使用-n参数后, 只有经过sed处理的那一行被列出来
-e : 多重编辑, 比如你同时又想删除某行, 又想改变其他行, 那么可以用 sed -e ‘1,5d’ -e ‘s/abc/xxx/g’ filename
-f : 首先将 sed的动作写在一个档案内, 然后通过 sed -f scriptfile 就可以直接执行 scriptfile 内的sed动作 (没有实验成功, 不推荐使用)
-i : 直接编辑, 这回就是真的改变文件中的内容了, 别的都只是改变显示. (不推荐使用)

动作

a 新增, a 后面可以接字符串, 而这个字符串会在新的一行出现. (下一行)
c 取代, c 后面的字符串, 这些字符串可以取代 n1,n2之间的行
d 删除, 后面不接任何东西
i 插入, 后面的字符串, 会在上一行出现
p 打印, 将选择的资料列出, 通常和 sed -n 一起运作 sed -n ‘3p’ 只打印第3行
s 取代, 类似vi中的取代, 1,20s/old/new/g
q 退出, 匹配到某行退出, 提高效率,[line-address]q
r 读取, 匹配到的行读取某文件,[line-address]r 例如: sed ‘1r qqq’ abc , 注意, 写入的文本是写在了第1行的后边, 也就是第2行
w写入, 匹配到的行写入某文件,[line-address]w file, 例如: sed -n ‘/m/w qqq’ abc , 从abc中读取带m的行写到qqq文件中, 注意, 这个写入带有覆盖性.

举例:
sed ‘1d’ abc 删除 abc 档案里的第一行, 注意, 这时会显示除了第一行之外的所有行, 因为第一行已经被删除了(实际文件并没有被删除,而只是显示的时候被删除了)
sed -n ‘1d’ abc 什么内容也不显示, 因为经过sed处理的行, 是个删除操作, 所以不显示
sed ‘2,$d’ abc 删除abc中从第二行到最后一行所有的内容, 注意, $符号正则表达式中表示行末尾, 但是这里并没有说那行末尾, 就会指最后一行末尾, ^开头, 如果没有指定哪行开头, 那么就是第一行开头
sed ‘$d’ abc 只删除了最后一行, 因为并没有指定是那行末尾, 就认为是最后一行末尾
sed ‘/test/d’ abc 文件中所有带 test 的行, 全部删除
sed ‘/test/a RRRRRRR’ abc 将 RRRRRRR 追加到所有的带 test 行的下一行,也有可能通过行 sed ‘1,5c RRRRRRR’ abc
sed ‘/test/c RRRRRRR’ abc 将 RRRRRRR 替换所有带 test 的行, 当然, 这里也可以是通过行来进行替换, 比如 sed ‘1,5c RRRRRRR’ abc

grep(关键字: 截取) 文本搜集工具, 结合正则表达式非常强大

grep [option]要匹配的内容 文件名

主要参数 []
-c : 只输出匹配的行
-I : 不区分大小写
-h : 查询多文件时不显示文件名
-l : 查询多文件时, 只输出包含匹配字符的文件名
-n : 显示匹配的行号及行
-v : 显示不包含匹配文本的所有行(我经常用除去grep本身)
例如:
grep ‘test’ d* 显示所有以d开头的文件中包含test的行
grep ‘test’ aa bb cc 显示在 aa bb cc 文件中包含test的行
grep ‘[a-z]{5}\’ aa 显示所有包含字符串至少有5个连续小写字母的串

find

命令详解 —— 每天一个linux命令(22):find 命令的参数详解

常见用法总结 —— Linux中find常见用法示例

find path -option [-print ] [ -exec -ok command ] {} \;

pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } \;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

例:find . -name .svn | xargs rm -rf

-name filename #查找名为filename的文件
-perm #按执行权限来查找
-user username #按文件属主来查找
-group groupname #按组来查找
-mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime -n +n #按文件访问时间来查
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer f1 !f2 找文件,-n指n天以内,+n指n天以前
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer f1 !f2 #查更改时间比f1新但比f2旧的文件
-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size n[c] #查长度为n块[或n字节]的文件
-depth #使查找在进入子目录前先行查找完本目录
-fstype #查更改时间比f1新但比f2旧的文件
-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size n[c] #查长度为n块[或n字节]的文件
-depth #使查找在进入子目录前先行查找完本目录
-fstype #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount #查文件时不跨越文件系统mount点
-follow #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio %; #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount #查文件时不跨越文件系统mount点
-follow #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio #对匹配的文件使用cpio命令,将他们备份到磁带设备中
-prune #忽略某个目录

cat

cat命令参考

—— linux cat

—— linux下cat命令详解

cat主要有三大功能:
1.一次显示整个文件。 catfilename2. cat > filename
只能创建新文件,不能编辑已有文件.
3.将几个文件合并为一个文件: $cat file1 file2 > file

参数

-n 或 –number 由 1 开始对所有输出的行数编号
-b 或 –number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 –squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 –show-nonprinting

例:把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
cat -n textfile1 > textfile2

把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。
cat -b textfile1 textfile2 >> textfile3

把test.txt文件扔进垃圾箱,赋空值test.txt

cat /dev/null > /etc/test.txt

cut

cut命令参考

—— linux之cut命令的用法

cut [-bn] [file] 或 cut [-c] [file] 或 cut [-df] [file]

cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。

主要参数

-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的范围之内,该字符将被写出;否则,该字符将被排除。
但有一点要注意,cut命令如果使用了-b选项,那么执行此命令时,cut会先把-b后面所有的定位进行从小到大排序,然后再提取。

paste

paste命令参考

—— Linux Cut 命令 与 Paste命令&Join命令&tr命令

cut用来从文本文件或标准输出中抽取数据列或者域,然后再用paste可以将这些数据粘贴起来形成相关文件。

粘贴两个不同来源的数据时,首先需将其分类,并确保两个文件行数相同。paste将按行将不同文件行信息放在一行。缺省情况下, paste连接时,用空格或tab键分隔新行中不同文本,除非指定-d选项,它将成为域分隔符。
linux paste 命令详解
该命令主要用来将多个文件的内容合并,与cut命令完成的功能刚好相反。
功能说明:合并文件的列。
语  法:paste [-s][-d <间隔字符>][–help][–version][文件…]
补充说明:paste指令会把每个文件以列对列的方式,一列列地加以合并。

参数

-d<间隔字符>或–delimiters=<间隔字符>  用指定的间隔字符取代跳格字符。
-s或–serial  串列进行而非平行处理。
–help  在线帮助。
–version  显示帮助信息。

sort

sort [-bcfMnrtk][源文件][-o 输出文件]

sort命令是帮我们依据不同的数据类型进行排序,可针对文本文件的内容,以行为单位来排序。

—— linux之sort用法

参数

-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-f 排序时,忽略大小写字母。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
-k 选择以哪个区间进行排序。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值