用着用着就发现,linux的每个命令都是那么的深奥而富有技巧,实用而淫荡。。真可谓奇技淫巧....
初学的真不易掌握。。。
!eventid 重复历史事件id eventid
!!重复上一个
^aa^bb --- 不需要空格
ls b* 理出b* 目录下的文件
!so 重复最近以so开始的命令
!! & 会在最后一个命令的末尾加上& (可以加上任意内容)
!:0 挑选出命令的名称,而不是整行!:3 第参数
!^ 第一个参数!$ 最后一个参数
sudo 这个也是非常难懂难掌握的命令。。
sagtax:
1
sudo -h │ -K │ -k │ -L │ -l │ -V │ -v
2 --- 通过-u制定用户
sudo [-bEHPS] [-p prompt] [-r role] [-t type] [-u username│#uid] [VAR=value]
{-i │ -s │ command}
sudo !!
Once a user has been authenticated, a timestamp is updated and the user may
then use sudo without a password for a short period of time (5 minutes unless overridden in sudoers).有的地方写着每次执行sudo都需要输入密码——只能执行一次啊,有的地方说可以有5分钟空闲idle。。。 我测试是后者
man sudo:
Once a user has been authenticated, a timestamp is updated and the user may
then use sudo without a password for a short period of time (5 minutes unless overridden in sudoers).
1 从非root用户切换到root权限 ———— 这个时候不需要密码
2 从root用户切换到非root权限 ———— 这也是完全可以的!! 第一次需要 目标用(如root)的密码!、idle5分钟需要密码
5)配置权限配置权限的格式如下:USER_FLAGHOST_FLAG=(RUNAS_FLAG) COMMAND_FLAG如果不需要密码验证的话,则按照这样的格式来配置USER_FLAGHOST_FLAG=(RUNAS_FLAG) NOPASSWD:COMMAND_FLAG
mv
语 法:mv [-bfiuv][--help][--version][-S <附加字尾>][-V <方法>][源文件或目录][目标文件或目录]
补充说明:mv移动文件或目录或更改文件或目录名称
参 数:
-b或--backup 若需覆盖文件则覆盖前先行备份 -f或--force 若目标文件或目录与现有文件或目录重复则直接覆盖现有文 件或目录 -i或--interactive 覆盖前先行询问用户 -S<附加字尾>或 --suffix=<附加字尾> 与-b参数并使用指定备份文件所要附加字尾 -u或--update 移动或更改文件名时若目标文件已存且其文件日期比源文件新则覆盖目标文件 -v或--verbose 执行时显示详细信息
测试
# mv -iv aaa/* aab
mv: overwrite `aab/aaa.txt'? y`aaa/aaa.txt' -> `aab/aaa.txt'
# mv -b aaa/* aab
linux:/opt/software/lktest/aa # ll aab/total 0-rw-r--r-- 1 root root 0 Mar 12 16:00 aaa.txt-rw-r--r-- 1 root root 0 Mar 12 18:11 aaa.txt~
如果出现cannot overwrite directory b/a' with non-directory , 则加-f参数可以解决,
可如果出现mv: cannot move `ac/aab' to `ae/aab': Directory not empty 则,比较麻烦。。
我测试发现默认情况下(不加bifu之类的参数)mv是会覆盖文件的,但是不会覆盖目录(空目录,自然,也是可以的 ):
mv ac/* ae
mv: cannot move `ac/aa' to `ae/aa': Directory not emptymv: cannot move `ac/aab' to `ae/aab': Directory not emptymv -f ac/* ae
mv: cannot move `ac/aa' to `ae/aa': Directory not emptymv: cannot move `ac/aab' to `ae/aab': Directory not emptymv -u ac/* ae
mv: cannot move `ac/aa' to `ae/aa': Directory not emptymv: cannot move `ac/aab' to `ae/aab': Directory not emptymv -b ac/* ae -- 加b参数就好了!
ll -r ae --- 但是它备份了,我想要是不是备份,而是直接覆盖,怎么办?
total 16-rw-r--r-- 1 root root 0 Mar 12 15:57 asf.txtdrwxr-xr-x 3 root root 4096 Mar 12 18:32 aa~drwxr-xr-x 2 root root 4096 Mar 12 18:32 aab~drwxr-xr-x 2 root root 4096 Mar 12 18:22 aab-rw-r--r-- 1 root root 0 Mar 12 16:00 aaa.txtdrwxr-xr-x 3 root root 4096 Mar 12 16:04 aa
实在是无能为力,---mv本身不支持这样,我搞再久都没事白搭。 (我本以为这么简单的功能,linux 应该有提供的吧,就不断尝试,结果,2小时过去了。。。还是。。)
应该学会变通! ___ 先cp -r aa/* ab; 然后rm -rf aa ---- cp有覆盖已重复文件、文件夹的功能!!
对于cp -r aa/ ab 效果和 cp -r aa ab 是一样的! 只是把aa放置到了ab下面———— 我现在需要的是aa目录下面所有放置到ab目录下面 ,所以cp -r aa/* ab ~!!
—— 对于mv也一样:如果aa是目录,aa和aa/是一个意思。
mv 没有r 选项!!