补充:
1、A命令(echo)既有可能是内部命令也有可能是外部命令,例如命令A既有可能在bash上也有可能在csh上,为了防止A在某些shell程序里不起作用,可以将A命令设置为外部命令(环境变量路径上),起到双重保险的作用。
2、每个磁盘里的Innode号是有限的,所以可能会出现硬盘空间还有剩余,但是不能存储文件的情况,因为innode号用完了。
3、ls - i命令补充,表示显示文件及文件夹的innode号。
[root@localhost ~]# ls -i
134578157 1 77911 k 134578197 pp68051240 a 202635130 l 202635111 text68051206 aa 134311844 original-ks.cfg 134578311 text2
134311845 anaconda-ks.cfg 77902 p 77912 tt
4.通过\可以将别名(alias cp="cp -i")cp重新使用。
1.0Linux基础命令
cp: 复制文件命令
cp -i:复制文件时,如果遇到同名文件会有覆盖提示
[root@localhost ~]# cp -i /home/pipi/aa ./
cp: overwrite ‘./aa’? y
cp -f: 复制文件时遇到覆盖提示直接覆盖
cp -r: 复制目录时必须使用此选项,表示递归复制目录下的所有文件及子目录
cp -p: 复制时保留原有文件的属主、权限、时间标记等属性不变
cp -a: 递归复制并保留原有属性
cp -ur:增量备份,从a文件夹中复制b文件夹没有的部分到b文件夹
[root@localhost ~]# cp -ur a/* b/ a.b文件夹在同一文件夹下
复制到同一文件夹时,cp源文件到当前目录需要改名
复制到不同文件夹时,cp源文件到目标目录可以改名也可以不改名
将多个文件复制的时候,目标一定是其他目录
[root@localhost ~]# cp -a aa ./a2
同个目录下文件夹的复制要记得-r或-pr或-a,复制文件的时候可以不带选项
[root@localhost ~]# ls
1 a a2 aa anaconda-ks.cfg k l original-ks.cfg p pp text text2 tt
[root@localhost ~]# cp -af aa ./
cp: ‘aa’ and ‘./aa’ are the same file
文件夹的复制必须改名,无法覆盖
df -h: 查看系统内磁盘空间使用情况
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 13M 3.8G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda3 92G 4.2G 88G 5% /
/dev/sda1 297M 163M 134M 55% /boot
tmpfs 781M 36K 781M 1% /run/user/1000
tmpfs 781M 0 781M 0% /run/user/0
rm: 删除文件或者目录
rm -r: 递归删除,用于删除目录
rm -f: 强制删除,没有提示信息
rm-i: 交互,有提示信息
rm -rf常配合使用,表示强制递归删除,没有提示信息
mv: 移动
mv -f: 如果文件已经存在,强制覆盖
mv -i: 如果文件已经存在,询问是否覆盖
mv -n: 如果文件已经存在,则不会覆盖,也不会询问用户
mv -v:显示移动信息
三种使用方式:
-
mv 文件名 不改变路径是改名
-
mv 文件名 改变路径是移动
-
mv 文件名 改变路径+改名
[root@localhost ~]# cd /home/pipi
[root@localhost pipi]# ls
abc Desktop Documents Downloads Music Pictures Public Templates test test1 Videos
[root@localhost pipi]# mv abc cba
将同目录下的abc文件夹改成cba文件夹[root@localhost pipi]# ls
cba Desktop Documents Downloads Music Pictures Public Templates test test1 Videos
[root@localhost pipi]# mv cba /root
[root@localhost pipi]# ls /root
1 a a2 aa abc anaconda-ks.cfg cba k l original-ks.cfg p pp text text2 tt
将pipi目录下的cba文件夹移动至/root下[root@localhost pipi]# mv /root/cba /home/pipi/abc
[root@localhost pipi]# ls
abc Desktop Documents Downloads Music Pictures Public Templates test test1 Videos
将/root下的cba移动到pipi目录下并改名为abc
rename:重命名
[root@localhost abc]# touch {1..10}.txt
[root@localhost abc]# ls
10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt passwd
[root@localhost abc]# rename txt bak *
[root@localhost abc]# ls
10.bak 1.bak 2.bak 3.bak 4.bak 5.bak 6.bak 7.bak 8.bak 9.bak passwd
which: 查命令所在位置(type -a也有相同效果)
where is: 查命令所在位置
以上两种命令都是去固定的(文件夹)路径找命令
[root@localhost abc]# which ls
alias ls='ls --color=auto'/usr/bin/ls
[root@localhost abc]# type -a ls
ls is aliased to `ls --color=auto'
ls is /usr/bin/ls
[root@localhost abc]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
locate: 查找文件 (不是实时查找,有滞后性,去系统数据库中查找)
如果在某个目录中touch了一个文件,无法用locate实时找到它,因为去数据库中找文件有滞后性。
locate 查询系统上预建的文件索引数据库(相当于硬盘的目录),/var/lib/mlocate/mlocate.db,索引的构建是在系统较为空闲的时候自动进行(周期性任务),执行updatedb可以更新数据库,索引的构建需要遍历整个根文件系统,很消耗资源,locate和updatedb命令均来自mlocate包,因此locate适合去查一些历史文件,会比较快速。
dd if=/dev/zero of=100M count=1 bs=100M
删除100M文件后,df -h查看磁盘空间发现所占空间未发生变化,可能是因为文件在启动,和Windows操作系统不同的是,Linux在程序或者文件运行时可以删除文件。
dd if=/dev/zero of=100M count=1 bs=100M
dd是用于文件与I/O设备操作的实用命令
if=/dev/zero 输入文件(if)是特殊的设备文件,它提供无限的0字节,意味这从这个文件读取时,会得到无限的零。
of=100M 输出文件of是100M 这将创造一个名为100M的新文件,并将数据写入其中,如果不指定路径,该文件将被创建在当前目录下
count=1 读取次数=1
bs=100M 一次读取的大小为100M
find:查找文件(实时查找,去硬盘里找,选项多,精确查找)
find的通式:find 范围 选项 表达式 处理结果
- mtime(-atime -ctime) | 按天数查找 |
- mmin(-amin -cmin) | 按分钟查找 |
- links | 按链接数查找 |
- inum | 按innode号找人 |
-user/group/uid/gid/nouser/mogroup | 按所属用户/所属组/用户ID号/组ID号/无所属用户/无所属组查找 |
-iname | 根据文件名查找,不区分大小写 |
- maxdepth 2 -mindepth 2 | 将你的文件以分级的形式表示(只查找第二级) |
find -name "p*" -type f -mtime +30 -size 5k/5M/5G -user root -delete
在当前目录下查找p开头,30天以上,(4k,5k]大小,所属root用户的普通文件用于删除选项 表达式 与 选项 表达式之间可以用连接符 “-a(and,可省略)” “-o(or)”"!(取反,表示除了)"连接!可以搭配 -empty 例如:find -type d ! -empty(查找目录文件且该文件非空文件)
或与且的优先级,且的优先级高于或,所以多输入-ls的时候其实是省略了一个-a,所以与运算优先进行,只统计了软链接的数量,若想将软链接与目录数量一起统计,需要加上括号,\( \)
处理动作 | 作用 |
打印(默认) | |
-delete | 删除 |
-ls | 显示找到文件的属性 |
-ok | 连接符号 |
-exex | 连接符号 |
例题:找到/var/log文件夹下,30天以上,大于10G,log结尾的普通文件删除或移动到/mnt/文件夹下
[root@localhost ~]# find /var/log -mtime +30 -size +1G -name "*log" -type f -exec mv {} /mnt/ \;
find /var/log -mtime +30 -size +1G -name "*log" -type f -delete