保留左边第一个字符起的N个字符 :X 保留左边第X个字符起的N个字符 :0-X:N, 保留右边第X个字符起的N个字符 :0-X, 保留左边第一个字符起的N个字符 /a/b 用b替换第一个出现的...) echo ${var:0-5:3} # 保留var右边第5个字符起的3个字符 (t.n) echo ${var:0-5} # 截取var最后5个字符 (t.net...下一个搜索项 N 上一个搜索项 u 取消修改 U 取消当前行的修改 文本替换: 搜索规则 :n,$s/从第n行到结尾,类似正则表达式 :%s/ 全文搜索 搜索规则 :n,$s/从第n行到结尾,类似正则表达式...当前行所有src替换为dst) :%s/src/dst/g 文本替换(所有行第一个src替换为dst) :%s/src/dst/g 文本替换(所有行所有src替换为dst) 分屏 :He 上分屏浏览...或是【VU】 按【v】键进入选择模式,然后移动光标选择你要的文本,按【u】转小写,按【U】转大写 【ga】 – 查看光标处字符的 ascii 码 【g8】 – 查看光标处字符的 utf-8 编码
n :执行命令历史中的第n条命令 !-n:执行命令历史中的倒数第n条命令 !!:执行上一条命令 !string:执行命令历史中最近一次匹配的命令 引用前一个命令的最后参数 !...在shell定义的别名仅在当前生命周期中有效;别名的有效范围为当前shell进程。...alias 可以显示系统上所有的别名 ualias cmdalias 命令替换$(command) `command` 把命令中某个子命令替换为其执行结果的过程 file-2013-02-28-.../file-$(date +%F-%H-%M-%S).txt bash支持的引号: ``:命令替换 "":弱引用,可以实现变量替换 '':强引用,不完成变量替换 文件名通配,gloobbing *:...:匹配任意单个字符 []:匹配指定范围内的单个字符 [abc] [a-z] [A-Z] [0-9] [a-zA-z] [^]:匹配指定范围内之外的任意单个字符 touch a b touch
命令,示例如下: 一般一个变量只能在一个子程序中运行,export命令可以将变量变为环境变量,从而可以在其它子程序中运行,示例如下: 使用set命令可以查看当前环境所有变量(包含环境变量和自定义变量...在Bash中,任何命令(包括管道命令)加上反单引号``之后都可以直接作为变量引用,其值为命令运行结果,可以为变量赋值,例如我们列出目录下所有txt文档并将其储存在变量txt里面: 这一点对于以后的Shell...2.文本编辑 ⑴基本编辑 Linux平台的大多数文件均是ASCII的纯文本文件,在Linux中Vi/Vim是强大的文本处理工具,Vim可以看成Vi的升级版。...+内容”来搜索想查找的内容: 按键“n”或者“N”(即Shift+n)可以向下或向上查找内容。在命令行进行查找替换。...查找第2行到第4行的第一个is并替换为ia,其命令为:2,4s/is/ia/: 其中s为替换的意思,若是第三行全部is替换为ia,则为:2,4s/is/ia/g: 若是最后一行行号可以用“$”来表示
* 4.引用第 n 个参数 描述:对于引用上一条命令中的参数,我们甚至可以要求 Shell 精确到具体的第几个。...:n* 这种表示让我们能够从上一条命令中引用从第 n 个到最后的参数 #示例1.下面允许我将 hosts 和 hostname 同时打开进行编辑。...bash在每个命令后检查窗口大小,如果有必要,就更新LINES和COLUMNS的值 cmdhist on #bash试图将一个多行命令的所有行保存在同一个历史项中.这是的多行命令的重新编辑更方便...pushd -N # 将栈内元素循环左移,直到将(从右边数)第N个元素移动到栈顶,由0开始计。 pushd -n dir # 将目录入栈,但不改变当前元素,即将目录插入栈中作为第二个元素。...popd -N # 删除栈中(从右边数)第N个元素,由0开始计。
内置变量 语法格式 解释 $0 打印行所有信息 $1 - $n 打印行的第 1 到 n 个字段的信息 NF (Number Field) 处理行的字段个数 NR (Number Row) 处理行的行号...Bash Copy 以浮点数格式打印 /etc/passwd 中的第 3 个字段,以 “:” 作为分隔符 > awk 'BEGIN{FS=":"}{printf "%f \n",$3}' passwd...Copy 以:为分隔符,匹配 /etc/passwd 文件中第 7 个字段不为 /bin/bash 的所有行信息 > awk 'BEGIN{FS=":"}$7!...str) 转换为小写 转换后的小写字符串 toupper(str) 转换为大写 转换后的大写字符串 substr(str,m,n) 从 str 的 m 个字符开始,截取 n 位 截取后的子串 split...,str) 在 str 中搜索符合 RE 的字串,将其替换为 RepStr;(只替换第一个) 替换的个数 gsub(RE,RepStr,str) 在 str 中搜索符合 RE 的字串,将其替换为 RepStr
-type f -user root -exec chown weber {} \; //将当前目录下的所有权变更为weber 注:{}是一个特殊的字符串,对于每一个匹配的文件,{}会被替换成相应的文件名...-n 打印匹配的行号 -i 搜索时忽略大小写 -l 只打印文件名 在多级目录中对文本递归搜索(程序员搜代码的最爱): grep "class" ....-n:指定每行显示的字段数 xargs参数说明 -d 定义定界符 (默认为空格 多行的定界符为 \n) -n 指定输出为多行 -I {} 指定替换字符串,这个字符串在xargs扩展时会被替换掉,用于待执行的命令需要多个参数时...N- 第N个字段到结尾 -M 第1个字段为M N-M N到M个字段 cut 取的单位 -b 以字节为单位 -c 以字符为单位 -f 以字段为单位(使用定界符) eg: cut -c1-5 file //...for word in $line;do echo $word;done 迭代每一个字符 ${string:start_pos:num_of_chars}:从字符串中提取一个字符;(bash文本切片)
-type f -user root -exec chown weber {} \; //将当前目录下的所有权变更为weber 注:{}是一个特殊的字符串,对于每一个匹配的文件,{}会被替换成相应的文件名...-n 打印匹配的行号 -i 搜索时忽略大小写 -l 只打印文件名 在多级目录中对文本递归搜索(程序员搜代码的最爱): grep "class" ....-n:指定每行显示的字段数 xargs参数说明 -d 定义定界符 (默认为空格 多行的定界符为 \n) -n 指定输出为多行 -I {} 指定替换字符串,这个字符串在xargs扩展时会被替换掉,用于待执行的命令需要多个参数时...7、cut 按列切分文本 截取文件的第2列和第4列: cut -f2,4 filename 去文件除第3列的所有列: cut -f3 --complement filename -d 指定定界符...迭代每一个字符 ${string:start_pos:num_of_chars}:从字符串中提取一个字符;(bash文本切片) ${#word}:返回变量word的长度 for((i=0;i<${#word
-type f -user root -exec chown weber {} ; //将当前目录下的所有权变更为weber 注:{}是一个特殊的字符串,对于每一个匹配的文件,{}会被替换成相应的文件名...-n 打印匹配的行号 -i 搜索时忽略大小写 -l 只打印文件名 1 在多级目录中对文本递归搜索(程序员搜代码的最爱): grep "class" ....指定每行显示的字段数 xargs参数说明 -d 定义定界符 (默认为空格 多行的定界符为 ) -n 指定输出为多行 -I {} 指定替换字符串,这个字符串在xargs扩展时会被替换掉,用于待执行的命令需要多个参数时...取的范围 N- 第N个字段到结尾 -M 第1个字段为M N-M N到M个字段 cut 取的单位 -b 以字节为单位 -c 以字符为单位 -f 以字段为单位(使用定界符) eg: cut -c1-5 file...迭代每一个字符 ${string:startpos:numof_chars}:从字符串中提取一个字符;(bash文本切片) ${#word}:返回变量word的长度 for((i=0;i<${#word
-type f -user root -exec chown weber {} ; //将当前目录下的所有权变更为weber 注:{}是一个特殊的字符串,对于每一个匹配的文件,{}会被替换成相应的文件名...-n 打印匹配的行号 -i 搜索时忽略大小写 -l 只打印文件名 1 在多级目录中对文本递归搜索(程序员搜代码的最爱): grep "class" ....指定每行显示的字段数 xargs参数说明 -d 定义定界符 (默认为空格 多行的定界符为 ) -n 指定输出为多行 -I {} 指定替换字符串,这个字符串在xargs扩展时会被替换掉,用于待执行的命令需要多个参数时...取的范围 N- 第N个字段到结尾 -M 第1个字段为M N-M N到M个字段 cut 取的单位 -b 以字节为单位 -c 以字符为单位 -f 以字段为单位(使用定界符) eg: cut -c1-5 file...迭代每一个字符 ${string:startpos:numof_chars}:从字符串中提取一个字符;(bash文本切片)${#word}:返回变量word的长度 for((i=0;i<${#word}
* 4.引用第 n 个参数描述:对于引用上一条命令中的参数,我们甚至可以要求 Shell 精确到具体的第几个。...bash在每个命令后检查窗口大小,如果有必要,就更新LINES和COLUMNS的值 cmdhist on #bash试图将一个多行命令的所有行保存在同一个历史项中.这是的多行命令的重新编辑更方便...(*jpg) #删除文件名不以jpg结尾的文件: rm -rf *@(jpg|png) #删除文件名以jpg或png结尾的文件,此处@表示限定: rm -rf file[1-3] #删除当前目录下所有...pushd -N # 将栈内元素循环左移,直到将(从右边数)第N个元素移动到栈顶,由0开始计。 pushd -n dir # 将目录入栈,但不改变当前元素,即将目录插入栈中作为第二个元素。...popd -N # 删除栈中(从右边数)第N个元素,由0开始计。
查找文件 which -a 执行文件 whereis -bmsu 文件名或者目录名 locate filename find path -option -action -atime n 在n天之前的...如果想永久保存路径或者变量应在文件中设置,如 系统设置文件 /etc/profile 所有用户都会使用到这个文件 个人设置值 ~/.bash_profile 只在登录时读取一次 个人设置值 ~/...对单个任意字符进行匹配(除换行符) [str] 对str中的任意单个字符进行匹配 [^str] 对任意不在str中的单个字符进行匹配 [a-b] 对a到b之间的任何字符进行匹配 \ 抑止后面的一个字符的特殊含义...的一行 (6)[ ] 行为一致 正则表达式在vi 中的使用: 在当前行中删除从aa到zz的所有字符。 :s/aa.*zz// 在整个文件用and代替所有的&字符。...:1,$s/&/and/g // g是全局替换,也就是一行中多次出现都要替换 :1,$s/\$/and/ // $是特殊字符 在每一行的行首插入字符串new :1,$s/^/new/ 在第2行到第5
Bash是在类UNIX系统中,是Bourne shell(sh)使用的最成功的其中一个shell的改进版本。 当shell被交互使用时,它将显示一个字符串时,它从用户等待一个命令。...//清空命令历史 -d OFFSET [n] //删除指定位置的命令历史 -w //保存命令历史至历史文件~/.bash_history中...n //执行命令历史中的第n条命令 !-n //执行命令历史中倒数第n条命令 !!...,引用前一个命令的最后一个参数 //tab键命令和路径补全 在命令行输入命令时,如果只记得命令的开头几个字母,可使用tab键补全命令;如果有多个命令都是以某字母开头,按两次tab,可以列出所有以该字母开头的命令...//命令替换 把命令中某个子命令替换为其执行结果的过程被称作命令替换。
选项 -n:由 1 开始对所有输出的行数编号 -b:和 -n 相似,只不过对于空白行不编号。 -s:当遇到有连续两行以上的空白行,就代换为一行的空白行。 -A:显示控制字符。...参数 -f:循环读取 -q:隐藏文件名,默认隐藏 -v:显示文件名 -c:显示的字节数 -n:显示文件的尾部 n 行内容 -s:与-f合用,表示在每次反复的间隔休眠S秒 实例 查看文件anaconda-ks.cfg...的文件中找出有root的行 [root@xwz ~]# grep '^root' /etc/passwd # 在/etc/passwd中找出root开头的行 [root@xwz ~]# grep 'bash...$' /etc/passwd # 在/etc/passwd中找出bash结尾的行 文本文件编辑 在Linux中只掌握文本查看是远远不够的,我们还需要掌握编辑文本文件 Linux上也有图形化的文本编辑器,...复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用) y1G 复制游标所在行到第一行的所有数据 yG 复制游标所在行到最后一行的所有数据 y0 复制光标所在的那个字符到该行行首的所有数据
输出列的顺序和数目不受选项的顺序和数目的影响。 总是按下述顺序显示并且每项最多一列。 行数、字数、字节数、文件名 如果命令行中没有文件名,则输出中不出现文件名。...对所选行以外的所有行应用命令 s 用一个字符串替换另一个 g 在行内进行全局替换 w 将所选的行写入文件 x 交换暂存缓冲区与模式空间的内容 y 将字符替换为另一字符(不能对正则表达式使用...不同的是,sed使用的正则表达式是括在斜杠线”/”之间的模式。 如果要把正则表达式分隔符”/”改为另一个字符,比如o,只要在这个字符前加一个反斜线,在字符后跟上正则表达式,再跟上这个字符即可。...最多可以定义9个标签,从左边开始编号,最左边的是第一个。此例中,对第1到第20行进行处理,you被保存为标签1,如果发现youself,则替换为your。...sed ‘1,20y/hrwang12/HRWANG^$/’ datafile #将1到20行内,所有的小写hrwang转换成大写,将1转换成^,将2转换成$。 #正则表达式元字符对y命令不起作用。
内置变量 语法格式 解释 $0 打印行所有信息 $1 - $n 打印行的第 1 到 n 个字段的信息 NF (Number Field) 处理行的字段个数 NR (Number Row) 处理行的行号...中的第 7 个字段,以 “:” 作为分隔符 > awk 'BEGIN{FS=":"}{printf "%s \n",$7}' passwd /bin/bash /sbin/nologin /sbin/nologin...str1 中查找 str2 的位置 返回值为位置索引,从 1 计数 tolower(str) 转换为小写 转换后的小写字符串 toupper(str) 转换为大写 转换后的大写字符串 substr(str...在 str 中按照 RE 查找,返回位置 返回索引位置 sub(RE,RepStr,str) 在 str 中搜索符合 RE 的字串,将其替换为 RepStr;(只替换第一个) 替换的个数 gsub(RE...,RepStr,str) 在 str 中搜索符合 RE 的字串,将其替换为 RepStr;(替换所有) 替换的个数 以:为分隔符,返回 /etc/passwd 中每行中每个字段的长度 > awk '{
本次我们来介绍一下Linux中的bash所具有的特性 bash的特性: (1)命令行编辑 (2)命令历史 (3)命令别名 (4)命令替换 (5)文件名通配 (6)管道和 重定向 (7)变量 (8)编程...n:执行命令历史的第n条命令 ②!-n:执行命令历史中的倒数第n条命令 ③!!:执行上一条命令 ④!$:引用前一个命令的最后一个参数;与其相同的命令还有:按住[Esc]后松开按[.]...(1)反引号:`命令` (2)():(命令) 即:命令替换是把命令中某个子命令(pwd)替换为其(echo)执行结果的过程 五、文件名通配 (1)* :匹配任意长度的任意字符(包括0个字符) eg:...[0-9].log #查询以“.log”结尾且“.log”前只有两个字符的文件且第二个字符是数字 ② [root@c ]# ls [a-zA-Z] #只查询字母文件,且文件名仅为单字母 (4)[^]...eg:执行下面的 who 命令,它将命令的完整的输出重定向在用户文件中(users): 执行后,并没有在终端输出信息,这是因为输出已被从默认的标准输出设备(终端)重定向到指定的文件。
“text” filename -n 打印匹配的行号 -i 搜索时忽略大小写 -l 只打印文件名 在多级目录中对文本递归搜索(程序员搜代码的最爱): grep "class" ....-n:指定每行显示的字段数 xargs参数说明 -d 定义定界符 (默认为空格 多行的定界符为 n) -n 指定输出为多行 -I {} 指定替换字符串,这个字符串在xargs扩展时会被替换掉,用于待执行的命令需要多个参数时...filename -d 指定定界符 cat -f2 -d";" filename cut 取的范围 N- 第N个字段到结尾-M 第1个字段为MN-M N到M个字段 cut 取的单位...-b 以字节为单位-c 以字符为单位-f 以字段为单位(使用定界符) 示例: cut -c1-5 file //打印第一到5个字符 cut -c-2 file //打印前2个字符 截取文本的第5...迭代每一个字符 ${string:start_pos:num_of_chars}:从字符串中提取一个字符;(bash文本切片) ${#word}:返回变量word的长度 for((i=0;i<${#word
/old/new/将每行的第一个old替换为new s/old/new/3将每行的第三个old替换为new s/old/new/g 将所有的old替换为new 替换操作的分割符/可改为其他字符,如# $...-n ‘n;p’ a.txt 输出偶数行 sed -n '10,$' 输出第10行到结尾的所有偶数行 sed -n ‘$=’ 输出文件的行数 删除文本 sed '3,5d' a.txt删除第3-5行 sed...将每行的第3个xml替换为XML sed 's/xml/XML/g' a.txt 将所有的xml替换为XML sed ‘s/xml//g’ a.txt 将所有的xml都删除 sed 's/doc.../' a.txt 将文件中每行的第一个和第二个字符互换 sed -r 's/^(.)(.)(.*)/\2\1\3/' a.txt 将文件中每行的第一个和第二个单词互换 sed -r 's/([a-Z]+...sed文本块处理动作 i 行前插入文本:2iYY 在第二行之前插入文本行‘YY’ 4,7iYY 在第4-7行的每一行前添加文本 a 行后插入文本:2aYY 在第2行之后添加文本 /^XX/aYY 在以
-r: 逐层遍历目录查找 -C: 显示匹配行前后多少行 -l:只列出匹配的文件名 -L:列出不匹配的文件名 -e: 使用正则匹配 -E:使用扩展正则匹配...4个字符 # cut -c1-4 1.txt 截取文件中每行的1-4个字符 # cut -c4-10 1.txt # cut -c5- 1.txt 从第5个字符开始截取后面所有字符 3、tr 字符转换...-t :分隔符 -k :第N列 -b :忽略前导空格。...-p 当每次执行一个argument的时候询问一次用户。 -n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。 -t 表示先打印命令,然后再执行。...n 同理为什么把文件中的所有行按一行输出呢,原因就是默认输出所有 [root@zutuanxue ~]# xargs -a 1 -n3 1 2 3 4 5 6 7 8 9 10 [root@zutuanxue
「X」:大写的X,每按一次,删除光标所在位置的”前面”一个字符。 「#X」:例如,「20X」表示删除光标所在位置的”前面”20个字符。 「dd」:删除光标所在行。 ...B) 跳到文件中的某一行 「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。...o 插入新的一行,从行首开始输入 ESC 从输入状态退至命令状态 x 删除光标后面的字符 #x 删除光标后的#个字符 X (大写X),删除光标前面的字符 #X 删除光标前面的#个字符 dd...放弃所有修改,退出vi set nu 显示行号 /或? 查找,在/后输入要查找的内容 n 与/或?一起使用,如果查找的内容不是想要找的关键字,按n或向后(与/联用)或向前(与?...那么你可以把你要添加的环境变量添加到你主目录下面的.profile或者.bash_profile,如果存在没有关系添加进去即可,如果没有生成一个。 Mac配置环境变量的地方 1.
领取专属 10元无门槛券
手把手带您无忧上云