Linux命令删除文本文档内容中,连续几行连续几列内容?

Linux命令删除文本文档内容中,连续几行连续几列内容?,第1张

linux 下vim中关于删除某段,某行查看《Linux就该这么学》中有命令大全

先打开vim

设置显示行号

在 vim 里执行(在普通模式下直接按冒号,并输入下面的命令)

:set number

1.按键盘上的Esc按键进入vi的命令行模式

2.点击Ctrl和v按键

3.按上下左右键选中要删除的内容

4.按d即可删除选中的列

用vi打开编辑,dd是删除一行,其他快捷 *** 作有:\x0d\x0a光标控制命令\x0d\x0a命令光标移动\x0d\x0ah或^h向左移一个字符\x0d\x0aj或^j或^n向下移一行\x0d\x0ak或^p向上移一行\x0d\x0al或空格向右移一个字符\x0d\x0aG移到文件的最后一行\x0d\x0anG移到文件的第n行\x0d\x0aw移到下一个字的开头\x0d\x0aW移到下一个字的开头,忽略标点符号\x0d\x0ab移到前一个字的开头\x0d\x0aB移到前一个字的开头,忽略标点符号\x0d\x0aL移到屏幕的最后一行\x0d\x0aM移到屏幕的中间一行\x0d\x0aH移到屏幕的第一行\x0d\x0ae移到下一个字的结尾\x0d\x0aE移到下一个字的结尾,忽略标点符号\x0d\x0a(移到句子的开头\x0d\x0a)移到句子的结尾\x0d\x0a{移到段落的开头\x0d\x0a}移到下一个段落的开头\x0d\x0a0或|移到当前行的第一列\x0d\x0an|移到当前行的第n列\x0d\x0a^移到当前行的第一个非空字符\x0d\x0a$移到当前行的最后一个字符\x0d\x0a+或return移到下一行的第一个字符\x0d\x0a-移到前一行的第一个非空字符\x0d\x0a\x0d\x0a在vi中添加文本\x0d\x0a命令插入动作\x0d\x0aa在光标后插入文本\x0d\x0aA在当前行插入文本\x0d\x0ai在光标前插入文本\x0d\x0aI在当前行前插入文本\x0d\x0ao在当前行的下边插入新行\x0d\x0aO在当前行的上边插入新行\x0d\x0a:rfile读入文件file内容,并插在当前行后\x0d\x0a:nrfile读入文件file内容,并插在第n行后\x0d\x0aescape回到命令模式\x0d\x0a^vchar插入时忽略char的指定意义,这是为了插入特殊字符\x0d\x0a\x0d\x0a在vi中删除文本\x0d\x0a命令删除 *** 作\x0d\x0ax删除光标处的字符,可以在x前加上需要删除的字符数目\x0d\x0anx从当前光标处往后删除n个字符\x0d\x0aX删除光标前的字符,可以在X前加上需要删除的字符数目\x0d\x0anX从当前光标处往前删除n个字符\x0d\x0adw删至下一个字的开头\x0d\x0andw从当前光标处往后删除n个字\x0d\x0adG删除行,直到文件结束\x0d\x0add删除整行\x0d\x0andd从当前行开始往后删除\x0d\x0adb删除光标前面的字\x0d\x0andb从当前行开始往前删除n字\x0d\x0a:n,md从第m行开始往前删除n行\x0d\x0ad或d$从光标处删除到行尾\x0d\x0adcursor_command删除至光标命令处,如dG将从当产胆行删除至文件的末尾\x0d\x0a^h或backspace插入时,删除前面的字符\x0d\x0a^w插入时,删除前面的字\x0d\x0a\x0d\x0a修改vi文本\x0d\x0a每个命令前面的数字表示该命令重复的次数\x0d\x0a命令替换 *** 作\x0d\x0archar用char替换当前字符\x0d\x0aRtextescape用text替换当前字符直到换下Esc键\x0d\x0astextescape用text代替当前字符\x0d\x0aS或cctextescape用text代替整行\x0d\x0acwtextescape将当前字改为text\x0d\x0aCtextescape将当前行余下的改为text\x0d\x0acGescape修改至文件的末尾\x0d\x0accursor_cmdtextescape从当前位置处到光标命令位置处都改为text\x0d\x0a\x0d\x0a在vi中查找与替换\x0d\x0a命令查找与替换 *** 作\x0d\x0a/text在文件中向前查找text\x0d\x0a?text在文件中向后查找text\x0d\x0an在同一方向重复查找\x0d\x0aN在相反方向重复查找\x0d\x0aftext在当前行向前查找text\x0d\x0aFtext在当前行向后查找text\x0d\x0attext在当前行向前查找text,并将光标定位在text的第一个字符\x0d\x0aTtext在当前行向后查找text,并将光标定位在text的第一个字符\x0d\x0a:setic查找时忽略大小写\x0d\x0a:setnoic查找时对大小写敏感\x0d\x0a:s/oldtext/newtext用newtext替换oldtext\x0d\x0a:m,ns/oldtext/newtext在m行通过n,用newtext替换oldtext\x0d\x0a&重复最后的:s命令\x0d\x0a:g/text1/s/text2/text3查找包含text1的行,用text3替换text2\x0d\x0a:g/text/command在所有包含text的行运行command所表示的命令\x0d\x0a:v/text/command在所有不包含text的行运行command所表示的命令\x0d\x0a\x0d\x0a在vi中复制文本\x0d\x0a命令复制 *** 作\x0d\x0ayy将当前行的内容放入临时缓冲区\x0d\x0anyy将n行的内容放入临时缓冲区\x0d\x0ap将临时缓冲区中的文本放入光标后\x0d\x0aP将临时缓冲区中的文本放入光标前\x0d\x0adsfsd"(a-z)nyy复制n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行\x0d\x0a"(a-z)ndd删除n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行\x0d\x0a"(a-z)p将名字为圆括号的可命名缓冲区的内容放入当前行后\x0d\x0a"(a-z)P将名字为圆括号的可命名缓冲区的内容放入当前行前\x0d\x0a\x0d\x0a在vi中撤消与重复\x0d\x0a命令撤消 *** 作\x0d\x0au撤消最后一次修改\x0d\x0aU撤消当前行的所有修改\x0d\x0a.重复最后一次修改\x0d\x0a,以相反的方向重复前面的f、F、t或T查找命令\x0d\x0a重复前面的f、F、t或T查找命令\x0d\x0a"np取回最后第n次的删除(缓冲区中存有一定次数的删除内容,一般为9)\x0d\x0an重复前面的/或?查找命令\x0d\x0aN以相反方向重复前面的/或?命令\x0d\x0a\x0d\x0a保存文本和退出vi\x0d\x0a命令保存和/或退出 *** 作\x0d\x0a:w保存文件但不退出vi\x0d\x0a:wfile将修改保存在file中但不退出vi\x0d\x0a:wq或ZZ或:x保存文件并退出vi\x0d\x0a:q!不保存文件,退出vi\x0d\x0a:e!放弃所有修改,从上次保存文件开始再编辑\x0d\x0a\x0d\x0avi中的选项\x0d\x0a选项作用\x0d\x0a:setall打印所有选项\x0d\x0a:setnooption关闭option选项\x0d\x0a:setnu每行前打印行号\x0d\x0a:setshowmode显示是输入模式还是替换模式\x0d\x0a:setnoic查找时忽略大小写\x0d\x0a:setlist显示制表符(^I)和行尾符号\x0d\x0a:setts=8为文本输入设置tabstops\x0d\x0a:setwindow=n设置文本窗口显示n行\x0d\x0a\x0d\x0avi的状态\x0d\x0a选项作用\x0d\x0a:.=打印当前行的行号\x0d\x0a:=打印文件中的行数\x0d\x0a^g显示文件名、当前的行号、文件的总行数和文件位置的百分比\x0d\x0a:l使用字母"l"来显示许多的特殊字符,如制表符和换行符\x0d\x0a\x0d\x0a在文本中定位段落和放置标记\x0d\x0a选项作用\x0d\x0a{在第一列插入{来定义一个段落\x0d\x0a[[回到段落的开头处\x0d\x0a]]向前移到下一个段落的开头处\x0d\x0am(a-z)用一个字母来标记当前位置,如用mz表示标记z\x0d\x0a'(a-z)将光标移动到指定的标记,如用'z表示移动到z\x0d\x0a\x0d\x0a在vi中连接行\x0d\x0a选项作用\x0d\x0aJ将下一行连接到当前行的末尾\x0d\x0anJ连接后面n行\x0d\x0a\x0d\x0a光标放置与屏幕调整\x0d\x0a选项作用\x0d\x0aH将光标移动到屏幕的顶行\x0d\x0anH将光标移动到屏幕顶行下的第n行\x0d\x0aM将光标移动到屏幕的中间\x0d\x0aL将光标移动到屏幕的底行\x0d\x0anL将光标移动到屏幕底行上的第n行\x0d\x0a^e(ctrl+e)将屏幕上滚一行\x0d\x0a^y将屏幕下滚一行\x0d\x0a^u将屏幕上滚半页\x0d\x0a^d将屏幕下滚半页\x0d\x0a^b将屏幕上滚一页\x0d\x0a^f将屏幕下滚一页\x0d\x0a^l重绘屏幕\x0d\x0az-return将当前行置为屏幕的顶行\x0d\x0anz-return将当前行下的第n行置为屏幕的顶行\x0d\x0az.将当前行置为屏幕的中央\x0d\x0anz.将当前行上的第n行置为屏幕的中央\x0d\x0az-将当前行置为屏幕的底行\x0d\x0anz-将当前行上的第n行置为屏幕的底行\x0d\x0a\x0d\x0avi中的shell转义命令\x0d\x0a选项作用\x0d\x0a:!command执行shell的command命令,如:!ls\x0d\x0a:!!执行前一个shell命令\x0d\x0a:r!command读取command命令的输入并插入,如:r!ls会先执行ls,然后读入内容\x0d\x0a:w!command将当前已编辑文件作为command命令的标准输入并执行command命令,如:w!grepall\x0d\x0a:cddirectory将当前工作目录更改为directory所表示的目录\x0d\x0a:sh将启动一个子shell,使用^d(ctrl+d)返回vi\x0d\x0a:sofile在shell程序file中读入和执行命令\x0d\x0a\x0d\x0avi中的宏与缩写\x0d\x0a(避免使用控制键和符号,不要使用字符K、V、g、q、v、*、=和功能键)\x0d\x0a选项作用\x0d\x0a:mapkeycommand_seq定义一个键来运行command_seq,如:mapeea,无论什么时候都可以e移到一个字的末尾来追加文本\x0d\x0a:map在状态行显示所有已定义的宏\x0d\x0a:umapkey删除该键的宏\x0d\x0a:abstring1string2定义一个缩写,使得当插入string1时,用string2替换string1。当要插入文本时,键入string1然后按Esc键,系统就插入了string2\x0d\x0a:ab显示所有缩写\x0d\x0a:unastring取消string的缩写\x0d\x0a\x0d\x0a在vi中缩进文本\x0d\x0a选项作用\x0d\x0a^i(ctrl+i)或tab插入文本时,插入移动的宽度,移动宽度是事先定义好的\x0d\x0a:setai打开自动缩进\x0d\x0a:setsw=n将移动宽度设置为n个字符\x0d\x0an>使n行都向右移动一个宽度,例如3>>就将接下来的三行每行都向右移动一个移动宽度

快照功能:记录当前的硬盘的状态。刚建快照时快照占用内存为0,标记了当前硬盘的存储状态。当虚拟机对快照标记的内容改写时,会将改写的内容存储进快照,与未改写的部分整合得到完整的快照。当快照标记的部分被完全改写,那么快照存储空间完整记录了当时拍摄时的内存状态。

参数形式

第一种:参数用一横的说明后面的参数是字符形式。

第二种:参数用两横的说明后面的参数是单词形式。

第三种:参数前有横的是 System V风格。

第四种:参数前没有横的是 BSD风格。

cat、more、less、head、tail命令的比较:

cat命令可以一次显示整个文件,如果文件比较大,使用不是很方便;

more命令可以让屏幕在显示满一屏幕时暂停,按空格往前翻页,按b往后翻页。

less命令也可以分页显示文件,和more命令的区别就在于: 支持上下键卷动屏幕、查找;不需要在一开始就读取整个文件,打开大文件时比more、vim更快。

head命令用于查看文件的前n行。

tail命令用于查看文件的后n行,加上-f命令,查看在线日志非常方便,可以打印最新增加的日志。

一般模式:

编辑模式:

命令模式:

编码

多行 *** 作(列编辑模式)

插入:ctrl+v进入列编辑模式,上下移动光标选择需要插入的位置,然后输入大写I,输入需要文本,最后按esc键退出,就会发现文本会在选择的多行中插入。

删除:ctrl+v进入列编辑模式,上下移动光标选中需要删除的部分,然后按d,就会删除选中的内容。

①head:显示文件头部内容

②tail:输出文件尾部内容

注意:用vim和vi修改内容会删除源文件并生成新文件,所以tail -f会失效。需要用到

追加和覆盖语句(>或>>),才能被tail -f监视到。

一般用于查看小文件

查看压缩文件中的文本内容

例:

①more:文件内容分屏查看器

②less:分屏显示文件内容,效率比more高

1、简单读取

运行脚本如下

测试结果为:

2、-p 参数,允许在 read 命令行中直接指定一个提示。

运行脚本如下

测试结果为:

echo [选项] [输出内容] (输出内容到控制台)

输出给定文本的sha256加密后的内容

①显示当前时间信息

②显示当前时间年月日

③显示当前时间年月日时分秒

④显示昨天

⑤显示明天时间

⑥显示上个月时间

需要注意的是取下个月的命令存在bug,执行如下命令会得到21-10,但是正常应该得到21-09,需要注意

date -d "2021-08-31 +1 month" +%y-%m

⑦修改系统时间

⑧获取当前时间戳

获取秒时间戳: date +%s

获取毫秒时间戳:$[ (date +%s%N) /1000000]

查看日历

(1)查看当前月的日历

(2)查看2017年的日历

例:

对比gzip/gunzip,zip/unzip可以压缩文件和目录且保留源文件。

①zip:压缩

②unzip:解压缩

只能压缩文件不能压缩目录,不保留原来的文件。

gzip 文件 (只能将文件压缩为*.gz文件)

gunzip 文件.gz(解压缩文件命令)

例: crontab -e

(1)进入crontab编辑界面。会打开vim编辑你的工作。

(2)每隔1分钟,向/root/bailongma.txt文件中添加一个11的数字

*/1 * * * * /bin/echo ”11” >>/root/bailongma.txt

(3)可以用tail -f 目标文件来实施监控追加的内容

查看日志

可以用tail -f /var/log/cron.log观察

Cron表达式见文章: https://www.jianshu.com/writer#/notebooks/46619194/notes/75177408

ls [选项] [目录或是文件]

cd [参数]

例: cd -P $(dirname $p1) ; pwd 先跳转到文件的所在目录,再打印$p1文件的实际路径

概述

①cp(copy):只能在本机中复制

②scp(secure copy):可以复制文件给远程主机

scp -r test.sh hxr@hadoop102:/root

③rsync(remote sync):功能与scp相同,但是不会改文件属性

rsync -av test.sh test.sh hxr@hadoop102:/root

④nc(netcat):监听端口,可以实现机器之间传输文件。

nc -lk 7777 (-l表示listen,-k表示keep)

强制覆盖不提示的方法:\cp

例:scp -r test.sh hxr@bigdata1:/root

例:rsync -av test.shhxr@bigdata1:/root

例:

nc -lp 10000 >nc_test.txt

nc -w 1 hadoop102 <nc_test.txt

远程登录时默认使用的私钥为~/.ssh/id_rsa

生成密钥对

将公钥发送到本机

将密钥发送到需要登录到本机的服务器上

修改密钥的权限

远程登陆

如果有多个节点需要远程登陆,可以在.ssh下创建config并输入

再次登陆

①正向代理:

②反向代理:

所谓“反向代理”就是让远端启动端口,把远端端口数据转发到本地。

HostA 将自己可以访问的 HostB:PortB 暴露给外网服务器 HostC:PortC,在 HostA 上运行:

那么链接 HostC:PortC 就相当于链接 HostB:PortB。

使用时需修改 HostC 的 /etc/ssh/sshd_config 的一条配置如下,不然启动的进程监听的ip地址为127.0.0.1,即只有本机可以访问该端口。

相当于内网穿透,比如 HostA 和 HostB 是同一个内网下的两台可以互相访问的机器,HostC是外网跳板机,HostC不能访问 HostA,但是 HostA 可以访问 HostC。

那么通过在内网 HostA 上运行 ssh -R 告诉 HostC,创建 PortC 端口监听,把该端口所有数据转发给我(HostA),我会再转发给同一个内网下的 HostB:PortB。

同内网下的 HostA/HostB 也可以是同一台机器,换句话说就是 内网 HostA 把自己可以访问的端口暴露给了外网 HostC。

例: 比如在我的内网机192.168.32.244上有一个RabbitMQ的客户端,端口号为15672。现在我希望在外网上访问固定ip的云服务器chenjie.asia的6009端口,通过跳板机192.168.32.243来转发请求到192.168.32.244:15672,从而实现在外网访问内网服务的功能,即内网穿透。

①在192.168.32.244上启动RabbitMQ服务

②将chenjie.asia云服务器的私钥复制到跳板机192.168.32.243的~/.ssh下,并重命名为id_rsa。通过如下命令看是否可以远程登陆到云服务,可以登陆则进行下一步。

③修改chenjie.asia服务器的ssh配置文件 /etc/ssh/sshd_config ,允许其他节点访问

然后重启sshd服务

④在跳板机192.168.32.243启动ssh反向代理

这个进程在关闭session时会停止,可以添加启动参数 -CPfN

例:

以 root 身份执行的程序有了所有特权,这会带来安全风险。Kernel 从 2.2 版本开始,提供了 Capabilities 功能,它把特权划分成不同单元,可以只授权程序所需的权限,而非所有特权。

例如:linux不允许非root账号只用1024以下的端口,使用root启动命令nginx,会导致nginx权限过高太危险。所以用setcap命令

sudo setcap cap_net_bind_service=+eip /bigdata/nginx/sbin/nginx

正确的关机流程为 :sync >shutdown >reboot >halt

(1)sync (功能描述:将数据由内存同步到硬盘中)

(2)halt (功能描述:关闭系统,等同于shutdown -h now 和 poweroff)

(3)reboot (功能描述:就是重启,等同于 shutdown -r now)

(4)shutdown [选项] [时间]

安装

yum install -y telnet-server telnet

ls -i 显示文件的节点号

find -inum 节点号 -delete 删除指定的节点即可删除对应的文件

启动一个服务: systemctl start postfix.service

关闭一个服务: systemctl stop postfix.service

重启一个服务: systemctl restart postfix.service

显示一个服务的状态: systemctl status postfix.service

在开机时启用一个服务: systemctl enable postfix.service

在开机时禁用一个服务: systemctl disable postfix.service

注:在enable的时候会打印出来该启动文件的位置

列出所有已经安装的服务及状态:

systemctl list-units

systemctl list-unit-files

查看服务列表状态:

systemctl list-units --type=service

查看服务是否开机启动: systemctl is-enabled postfix.service

查看已启动的服务列表: systemctl list-unit-files | grep enabled

查看启动失败的服务列表: systemctl --failed

查看服务日志: journalctl -u postfix -n 10 -f

命令类似systemctl,用于 *** 作native service。

添加脚本为服务(需要指定启动级别和优先级): chkconfig --add [脚本]

删除服务: chkconfig --del [脚本]

单独查看某一服务是否开机启动的命令 : chkconfig --list [服务名]

单独开启某一服务的命令 : chkconfig [服务名] on

单独关闭某一服务的命令: chkconfig [服务名] off

查看某一服务的状态: /etc/intd.d/[服务名] status

启用服务就是在当前"runlevel"的配置文件目录 /etc/systemd/system/multi-user.target.wants 里,建立 /usr/lib/systemd/system 里面对应服务配置文件的软链接;禁用服务就是删除此软链接,添加服务就是添加软连接。

su 用户名称 (切换用户,只能获得用户的执行权限,不能获得环境变量)

su - 用户名称 (切换到用户并获得该用户的环境变量及执行权限)

echo $PATH打印环境变量

设置普通用户具有root权限

修改 /etc/sudoers 文件,找到下面一行(91行),在root下面添加一行,如下 所示:

或者配置成采用sudo命令时,不需要输入密码

修改完毕,现在可以用hxr 帐号登录,然后用命令 sudo ,即可获得root权限进行 *** 作。

以azkaban用户执行引号中的命令

gpasswd -d [username] [groupname] 将用户从组中删除

gpasswd -a [username] [groupname] 将用户加入到组中

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对 /etc/group文件的更新。

0首位表示类型 - 代表文件 d 代表目录l 链接文档(link file)

三种特殊权限suid、sgid、sticky

例子:

变更文件权限方式一

例:chmod u-x,o+x houge.txt

变更文件权限方式二

例:chmod -R 777 /mnt/ 修改整个文件夹的文件权限

在linux中创建文件或者目录会有一个默认权限的,这个默认权限是由umask决定的(默认为0022)。umask设置的是权限的“补码”,而我们常用chmod设置的是文件权限码。一般在/etc/profile 、~/.bashprofile 或者 ~/.profile中设置umask值。

umask计算

如root用户的默认umask为0022(第一个0 代表特殊权限位,这里先不考虑),创建的文件默认权限是644(即默认666掩上umask的022),创建的目录是755(即默认777掩上umask的022)。

对于root用户的umask=022这个来说,777权限二进制码就是(111)(111)(111),022权限二进制码为(000)(010)(010)。

上面就是一个umask的正常计算过程,但是这样实在是太麻烦了。我们使用如下的简单的方法快速计算。

上面的这个方法计算是非常方便的, 为何得到奇数要+1呢?

文件的最大权限是666,都是偶数,你得到奇数,说明你的umask有奇数啊,读为4,写为2,都是偶数,说明你有执行权限的。

就按照上面的umask=023为例,在计算其他用户权限的时候6-3=3 ,6是读写,3是写和执行,其实应该是读写权限减去读权限的得到写权限的,相当于我们多减去了一个执行权限。所以结果加1。

umask修改

如果想单独修改某个文件夹的新建文件的权限,可以使用setfacl命令。

例:递归改变文件所有者和所有组 chown -R hxr:hxr /mnt

例:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8984343.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-23
下一篇 2023-04-23

发表评论

登录后才能评论

评论列表(0条)

保存