常用的Linux小技巧

832 阅读3分钟

本文正在参与 “走过Linux三十年”话题征文活动

1 Linux下 cp 复制强制覆盖的方法

问题

cp覆盖时,无论加什么参数-f之类的还是提示是否覆盖,当文件比较少的时候还可以按Y确认,当很多文件的时候就不好说了。

Linux下cp复制强制覆盖的方法

-r 的意思是递归复制,也就是复制文件夹及其下所有文件

-f的意思是遇到同名的文件时不提示,直接覆盖。

但是为什么加上-f了,还出现overwrite的提示呢?

这是因为系统为防止我们误操作,覆盖了不该覆盖的文件,而使用了命令的别名。

使用alias命令查看一下:

[root@VM-1-14-centos ~]# 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 -i命令。其他几个命令,如llls, mvrm等也使用了别名。

解决方法一

cp前加上一个``符号就不使用别名运行了,如下:

Linux下cp复制强制覆盖的方法

解决办法二

编辑文件,注释掉别名

# .bashrc# User specific aliases and functionsalias rm='rm -i'
#alias cp='cp -i'
alias mv='mv -i'# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

Linux下cp复制强制覆盖的方法

2 Linux history命令显示操作时间

编辑/etc/bashrc,添加一下内容

export HISTSIZE=3000
export HISTTIMEFORMAT="%F %T "
export PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
unset HISTCONTROL
[root@VM-1-14-centos ~]# source /etc/bashrc
 1507  2021-09-15 22:58:59 ls
 1508  2021-09-15 22:59:07 alias
 1509  2021-09-15 23:00:52 vim .bashrc
 1510  2021-09-15 23:02:22 vim /etc/bashrc
 1511  2021-09-15 23:02:36 history 

3 Linux命令之watch

介绍

watch命令以周期性的方式执行给定的指令,指令输出以全屏方式显示。

watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行。

语法

watch (选项) (参数)

选项

-n:指定指令执行的间隔时间(秒);
-d:高亮显示指令输出信息不同之处;
-t:不显示标题。

参数

指令:需要周期性执行的指令。

示例

# watch uptime
# watch -t uptime
# watch -d -n 1 netstat -ntlp
# watch -d 'ls -l | fgrep goface'     //监测goface的文件
# watch -t -differences=cumulative uptime
# watch -n 60 from                    //监控mail
# watch -n 1 "df -i;df"               //监测磁盘inode和block数目变化情况

监控TIME_WAIT连接数,每秒刷新一次

watch -n 1 'netstat -ant |grep TIME_WAIT |wc -l'

Linux命令之watch

4 fg、bg让进程在前后台之间切换

Linux下的fg和bg命令是进程的前后台调度命令,即将指定号码(非进程号)的命令进程放到前台或后台运行。比如一个需要长时间运行的命令,我们就希望把它放入后台,这样就不会阻塞当前的操作;而一些服务型的命令进程我们则希望能把它们长期运行于后台。

进程前后台操作用到以下命令或按键:

Ctrl+C

终止并退出前台命令的执行,回到SHELL

Ctrl+Z

暂停前台命令的执行,将该进程放入后台,回到SHELL

jobs

查看当前在后台执行的命令,可查看命令进程号码

&

运行命令时,在命令末尾加上&可让命令在后台执行

fg N

将命令进程号码为N的命令进程放到前台执行,同%N

bg N

将命令进程号码为N的命令进程放到后台执行

fg、bg、jobs、&、ctrl + z 都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的。