关于linux命令 cp,rm,mv执行时是否询问的问题,不同用户有不同的别名设置

三种命令的详细参考以下连接

http://c.biancheng.net/view/746.html

http://c.biancheng.net/view/744.html

http://c.biancheng.net/view/749.html

个人在不使用任何选项执行cp命令的时候,如果目标文件已经存在,有时会询问是否覆盖,而有时不会询问。

感到比较困惑,特意调查了一下。原来是因为执行用户的原因

当使用普通用于执行时不会询问,而使用超级用户root执行时会询问,这是因为两者别名的设置不同,如下所示

普通用户

[[email protected] test1]$ alias
alias egrep=‘egrep --color=auto‘
alias fgrep=‘fgrep --color=auto‘
alias grep=‘grep --color=auto‘
alias l.=‘ls -d .* --color=auto‘
alias ll=‘ls -l --color=auto‘
alias ls=‘ls --color=auto‘
alias vi=‘vim‘
alias which=‘alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde‘

超级用户别名

[[email protected] test1]$ sudo su
[[email protected] test1]# alias
alias cp=‘cp -i‘
alias egrep=‘egrep --color=auto‘
alias fgrep=‘fgrep --color=auto‘
alias grep=‘grep --color=auto‘
alias l.=‘ls -d .* --color=auto‘
alias ll=‘ls -l --color=auto‘
alias ls=‘ls --color=auto‘
alias mv=‘mv -i‘
alias rm=‘rm -i‘
alias which=‘alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde‘

可以看出,普通用户执行cp时,因为没有设置别名,所以默认是没有选项的,所以不会询问

而超级用户执行cp时,因为设置了别名  alias cp=‘cp -i‘  ,所以默认是带 -i 选项的,所以会询问

同样,rm和mv命令也是如此

那么如何在使用root用户执行脚本中的cp命令不询问呢,可以在脚本中使用unalias命令删除别名

unalias cp

在代码中使用 alias 命令定义的别名只能在当前 Shell 进程中使用,在子进程和其它进程中都不能使用。当前 Shell 进程结束后,别名也随之消失。

同样,代码中使用 unalias 命令删除的别名也只能在当前 Shell 进程中使用,在子进程和其它进程中都不能使用。

测试

[[email protected] test1]# cp text2.txt text1.txt  //进程1,root用户
cp: overwrite ‘text1.txt’? y    //询问是否覆盖
[[email protected] test1]# bash   //创建进程2(子进程)
[[email protected] test1]# cp text2.txt text1.txt
cp: overwrite ‘text1.txt’? y
[[email protected] test1]# unalias cp   //删除别名
[[email protected] test1]# cp text2.txt text1.txt   //当前进程中没有询问,因为删除了别名
[[email protected] test1]# bash    //在子进程2中再创建子进程3
[[email protected] test1]# cp text2.txt text1.txt
cp: overwrite ‘text1.txt’? y    //在子进程3中发生了询问,可见在父进程2中删除了别名在子进程3中无效
[[email protected] test1]# exit  //退出子进程3,返回子进程2
exit
[[email protected] test1]# cp text2.txt text1.txt
[[email protected] test1]# exit  //退出子进程2,返回进程1
exit
[[email protected] test1]# cp text2.txt text1.txt  //发生询问,可见在子进程中删除别名对父进程无效
cp: overwrite ‘text1.txt’? 

原文地址:https://www.cnblogs.com/gaoBlog/p/12335031.html

时间: 2024-08-06 08:22:52

关于linux命令 cp,rm,mv执行时是否询问的问题,不同用户有不同的别名设置的相关文章

菜鸟学Linux命令:cd rm mv cp pwd 目录操作

文件和目录操作是必须掌握的. pwd命令 pwd命令用于打印当前目录. cd命令 Linux最基本的操作. 命令格式cd [目录名] 切换当前目录至dirName 参数规则1.返回上一级目录cd ..2.返回系统根目录cd /3.进入当前用户主目录“当前用户主目录”和“系统根目录”是两个不同的概念.进入当前用户主目录有两个方法.直接使用 cd或者 cd ~4.跳转到指定目录跳转到指定目录,从根目录开始,目录名称前加 / cd /data/jdk7/当前目录内的子目录直接写名称即可cd Music

Linux基础文件管理命令之rm,mv,cp,touch

在linux系统下,一切皆文件,就连光盘也看作文件,要使用光盘首先要先建立一个目录,然后通过挂载来操作这个光盘,就连鼠标,键盘都是被看作文件.所以学习文件的相关操作命令是很重要的. rm命令 rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除.对于链接文件,只是删除了链接,原有文件保持不变. 注:rm是一个危险的命令,使用的时候要特别小心,尤其对于新手,否则整个系统就会毁在这个命令,比如以root身份在根目录下执行rm * rf

Linux命令行下cp,rm,mv命令的使用

以下的内容来源于<鸟哥的私房菜> Linux命令行下的复制.删除与移动:cp,rm,mv cp(copy)复制        cp这个命令的用途很多,除了单纯的复制之外,还可以创建链接文件对比两文件的新旧而予以更新,        以及复制整个目录等        语法            cp [-adfilprsu] 源文件 目标文件                    源文件(source)                目标文件(destination)            选项

linux命令,文件与目录(cp,pwd,mkdir,rmdir;ls,cp,rm,mv,basename,dirname;cat,tac,more,less,head,tail,touch,umask,chattr,file,which,locate,find)

1.目录操作: (1)cd  (切换目录) cd ~   回到主目录 cd      回到主目录 cd ..   回到上层目录 cd -    回到刚才的目录 cd /var/spool/mail    绝对路径 cd ../mqueue     相对路径(由/var/spool/mail 转到/var/spool/mqueue这样写) (2)pwd (显示当前目录) pwd   显示当前目录 pwd -P   显示当前目录(不以连接文件的数据显示,而是显示正确的完整路径) (3)mkdir (

Linux cp/rm/mv 强制覆盖

一.Linux下的cp/rm/mv强制覆盖 (一).反斜杠(\)临时取消别名 [[email protected] ~]# \cp filename new/filename [[email protected] ~]# (二).unalias 取消别名 注意:这只是临时取消cp的别名,不是永久的 [[email protected] ~]# unalias cp   [[email protected] ~]# cp filename new/filename   [[email protec

Linux命令篇之mv命令和install命令

mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录. 1.命令格式:    mv [选项] 源文件或目录 目标文件或目录 2.命令功能:视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中.当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名.当第二个参数

linux 命令——5 rm(转)

昨天学习了创建文件和目录的命令mkdir ,今天学习一下linux中删除文件和目录的命令: rm命令.rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除.对于链接文件,只是删除了链接,原有文件均保持不变. rm是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令(比如在/(根目录)下执行rm * -rf).所以,我们在执行rm之前最好先确认一下在哪个目录,到底要删除什么东西,操作时保持高度清醒的头脑

Linux命令详解-mv

mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录. 1.命令格式: mv [选项] 源文件或目录 目标文件或目录 2.命令功能: 视 mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中.当第二个参数类型是文件时,mv命令完成文 件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名.当第二个参数

Linux命令行上程序执行的那一刹那!

转自:http://www.cppblog.com/cuijixin/archive/2008/03/14/44463.html by falcon<[email protected]>2008-02-15 (这一小节应该是作为<shell编程范例之进程操作>的一些补充性质的内容.) 当我们在Linux下的命令行输入一个命令之后,这背后发生了什么? 1.什么是命令行接口 用户使用计算机有两种常见的方式,一种是图形化的接口(GUI),另外一种则是命令行接口(CLI).对于图形化的接口