重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
; linux不保存退出的命令是什么呢,下面就让我们来看看吧。
成都一家集口碑和实力的网站建设服务商,拥有专业的企业建站团队和靠谱的建站技术,10余年企业及个人网站建设经验 ,为成都成百上千客户提供网页设计制作,网站开发,企业网站制作建设等服务,包括成都营销型网站建设,品牌网站制作,同时也为不同行业的客户提供成都做网站、网站制作的服务,包括成都电商型网站制作建设,装修行业网站制作建设,传统机械行业网站建设,传统农业行业网站制作建设。在成都做网站,选网站制作建设服务商就选创新互联公司。
linux不保存退出的命令是q!,具体操作如下。
1、打开linux系统,在linux的桌面的空白处右击。
2、在弹出的下拉选项里,点击打开终端。
3、在终端窗口输入vi+文件名打开需要编辑的文件。
4、通过vi更改文件后,按ESC键退出insert模式,接着输入冒号(:),在冒号后面输入q!命令,回车即可不保存退出。
以上就是的分享,希望能帮助的大家。
本文章基于ThinkpadE15品牌、centos7系统撰写的。
1.如图,vi 文件名,接着按回车即可打开对应的文件,如果没有对应的文件,那么vi命令就会自动创建一个新的。
2.如图,vi打开文件后是命令模式状态,要用i或者a命令才可进入可编辑的状态哟。这里我就按a进入了编辑模式了哦。
3.如图,在编辑模式的情况下敲完内容,这个时候就应该保存文件了。保存文件要按esc,这样就会退回vi的命令模式喔。
4.按完esc后输入冒号(英文的),然后就转换到了末行模式了,末行模式决定是否保存文件。
5.如图所示,末行模式下可以按x来保存,x命令可以保存编辑好的文件哟。
6.也可以用到wq来保存,如果是q!则不保存哦,这点要自己谨记在心,这里我就保存一下vi编写的文件。
7.然后查看,查看用到了cat 文件名哦。
8.如图所示,vi编写的内容可以看到,这表明保存成功。
(ALL:ALL)表示的是前一个表示用户,后一个表示用户所在群组,如test0 ALL=(test1:test2)的意思是,第一个ALL表示用户test0可以登陆的主机,可以限定为localhost等,ALL表示允许所有来源;test0在执行sudo命令后,获取到属于test2群组的test1的操作权限。最后一个ALL表示的是可以执行的指令,可以用命令的绝对路径来限定可以执行的操作,ALL的话就是允许所有操作。
这个设置是debian版本里面的visudo设置,可能跟centos,ubuntu其他的一些版本不太一样
题主你好,
写在前面:
题主的代码写的其实有点问题, 第2行的第1个字符,冒号,和第2个字符,美元符号,之间是有空格的,正确的写法是:
: ${YN:=yes}
不同的语言语法限制程度不一样, 在shell脚本中,对空格的限制就比较严格, 同样的代码, 你不加空格就是错的, 加上才对. 相同的用法在test命令的简写形式[]中也比较常见(就不具体展开了,题主有需要可以追问)
---------------------
下面解释题主的代码:
其实题主的代码逻辑很简单:
从标准输入中读取值赋给变量YN //这是第一行代码的作用
然后检测第一行的变量YN是否真的有值,如果有值,则跳过, 没值的话则将yes作为变量值赋给YN. 这里题主可能会问, 第一行代码不是已经从标准输入读取值赋给YN了嘛,怎么第2句还要检测YN是否有值呢? 这是因为如果第一句代码执行后, 你没有从键盘输入值,而是直接按的回车,则YN就没有值. 将第1句和第2句要连起来看, 就是:
"当我们没有从标准输入赋值给YN时, YN的默认值是yes" //这就是第二行代码的作用
至于第三行代码就没啥说的了, 就是看$YN和下面给定的哪个值相匹配,则执行哪个值下的语句,因为第三句这里也没写全,就先说到这里
---------------------
上面只是解释了一下这三行代码的意思, 下面再来说一下题主问题中 "第2行代码中两个冒号的意思"
先说第2个冒号吧, shell脚本中有一个概念叫替换运算符, 我们常见的变量赋值的形式是:
变量名=值
另外shell脚本还提供了一组稍复杂一点的处理变量的运算符, " := "就是其中一个, 这么说可能有点不对, 完整的语法是:
${变量名:=值}
而上面这个语法的处理逻辑是: 先看看 " 变量名 "是否存在并且非空, 如果是,则返回" 变量名 "的值. 举例来说:
name="zhangsan"
echo ${name:=lisi}
上面第一行代码是给变量name赋值为zhangsan, 第2行代码是用echo 输出${name:=lisi}的返回值, 而${name:=list}具体是啥值,上面也说了判定逻辑, 看看name是否存在且非空, 因为上面定义了name="zhangsan", 所以这里name肯定是存在且非空的, 所以${name:lisi}的返回值是name变量的值,即zhangsan. 因此 echo ${name:=lisi}也就变成了我们常见的形式: echo zhangsan, 即echo ${name:=lisi}输出的值为zhangsan.
上面是" 变量名 "存在的情况, 下面再来说" 变量名 "不存在的情况. 举例来说:
echo ${name:=lisi}
就上面这一行代码, 这里就简单说了, 因为name上面没有定义, 所以name是不存在的, 因此会将lisi赋给变量name, 返回值为lisi, 因此echo ${name:=lisi}变成了echo lisi, 所以最后的输出值为: lisi.
下面再来第2行代码的第一个冒号, 如果没有第1个冒号, YN的值会被作为命令去执行, 也就是说,
如果你只写 ${YN:=yes} , 则当YN之前有值,且为no时,则这句执行后, 返回值为no,然后no会被被作为一个命令执行, 因为系统里没有no这个命令,所以会报错, 说no这个命令没发现; 而当YN之前没有值时, 该命令执行后,返回值为yes, 同样,yes也会被作为命令执行, 会不断的输出y(这就是一种特殊性, 因为yes是linux中的一个命令,并且它没有参数的时候也不会报错, 但会重复输出y,因此你不会看到报错信息, 而是不断输出的y,如果你换一个值,比如${YN:=666},则执行后,就会输出666命令没发现).
因此最简单的记第1个冒号的作用是:
"它只评估后面的参数,而忽略参数的返回值"
写在最后: 上面洋洋洒洒说了一堆, 有些地方逻辑不是太严谨,有错误的地方也请题主指正.
希望可以帮到题主, 欢迎追问.
命令行模式command,mode下,按一下冒号键进入Lastlinemode。
wq是vi的编辑命令,vi编辑命令中命令最后输入回车键执行,找一个LINUX入门的书,学习一下简单的vi命令就可以编辑程序了。