1、文件系统与目录结构
在不重启的情况下,磁盘扫描搜索新增加的磁盘的方法:
echo '- - -' > /sys/class/scsi_host/host2/scan
centos6和centos7 根目录差别:
run目录是centos7新增加的
除了/\以及nul以外,理论上其他字符都可以用作文件名:
touch "a b" 创建了叫a b的文件
touch /root/-a 创建了叫-a的文件
但不建议这样做,避免引起不必要的误读和操作麻烦
命令: lsblk = list block 列出块设备的意思
dd if=/dev/zero of=/data/bigfile bs=1m count=1024
以上命令实现在data目录下生成一个1G的bigfile文件,从dev目录中用0填满bigfile
pwd -P 绝对路径
显示当前目录或文件夹真实路径
../ ./ 相对路径
../ 表示父目录 ./表示当前目录
命令:basename 文件路径
只查看路径的基名
命令: dirname 文件路径
只查看路径的基目录,不要文件
du -sh /*
查看并列出根目录下各文件大小(如此类推)
*文件系统如果是NTFS格式,则linux系统默认是无法识别的
cd ~tiny
直接进tiny用户的家目录
cd -
回到刚才离开的目录
echo $OLDPWD
$OLDPWD记录上一次进入过的文件夹路径
2、ls 命令
ls -R
递归显示文件夹内的所有文件
ls -ld (ls -l 相当于 ll)
显示当前文件夹内各文件(或文件夹)的详细列表,不显示递归子文件
ll /bin 与ll /bin/ 效果不一样 /bin实际上是个软链接
ls /data -1
文件名优先级排列顺序:
数字 > 字母(不区分大小写) > 字母+数字
ls -S
按文件大小排序(默认从大到小)
ls -Sr
按文件大小排序(从小到大)
ls -t
按修改时间(mtime)排序(从最新到最旧)
ll --time=atime /data/file
查看读文件/data/file的时间
ll --time=ctime /data/file
查看/data/file文件的元数据的变化时间
stat /data/file
查看/data/file文件的三个时间,数据修改时间,读取时间,元数据修改时间
ls -ltu
按atime从新到旧,详细列表排序
ls -U
按创建时间从新到旧 排序
ls -X
按文件后缀排序
ls -d */
只显示当前文件夹的内容,不显示子文件夹内容
3、文件通配符
通配符 * 代表文件名的字符(不代表文件内容)
ls ?
查看文件名是单个字符的文件
ls ~-/file
查看上个浏览过的文件的file文件夹
ls file[1..20]
显示名称是1到2和0的file前缀文件夹,..在里面没用
ls file [137]
表示显示file文件名包含1或者3或者7的文件
ls file[1-7] 或者ls file{1..7} (花括号内这样书写获得顺序)
显示文件名包含1234567顺序的文件
笛卡尔积的ls文件查看,按照ASCII码规则显示文件
ls f[wang]
表示查看文件名f +w或 a或 n或 g 四个字符的f文件
ls f[^wang]
表示查看不包含w a n g 四个字符的f文件
ls -d .* (也可以 l. )
只显示当前目录的隐藏文件
ls -R .[^.]* (排除 ..)
显示当前目录的隐藏子文件
4、touch命令
touch 路径/新建文件名
如果文件名已经存在,touch命令并不会新建并覆盖原有文件,但会把原有文件的三时间刷新到现在。
touch -t 201910200830.50 /etc/hosts
指定了/etc/hosts文件的atime和mtime的时间戳
touch -c f2
如果f2文件不存在,则不创建 (多用来刷新文件的三时间)
touch `date -d "-1 day" +%F`.log
反向单引号嵌套日期命令,创建指定日期的.log文件名文件
5、cp命令
cp etc/hosts ~tiny/
被复制到的地址,tiny家目录后没有明确文件名,则自动生成同名hosts文件,如果tiny家目录下已经有hosts文件,则直接覆盖,如果在管理员账户下,系统询问你是否覆盖。
为什么呢?
在root账号里,cp命令并不是真cp,而是别名 cp -i ,将会询问你是否覆盖
cp 文件1 文件2 目标文件目录
当多个文件复制到一个文件目录下时,目标文件必须是文件夹,否则报错
cp -r 文件夹 目标文件目录
必须加-r才可以复制文件夹
如果以上操作再一次执行,那么文件夹会直接被复制进新建的文件夹底下,成了子文件夹
cp -a (包含-d -p -r ,保留软链接,保留文件原有属性,递归复制子文件)
可用于完整文件复制,相当于文件备份
cp -av
可以看到复制过程(但容易造成死机)
cp -u
只复制新文件到旧同名文件,旧文件不会覆盖新同名文件
cp --backup=numbered 复制文件 被复制文件
以上命令,被复制文件会被覆盖,但事先会生成一份备份,可避免误操作
cp /data/* /data/f1
以上复制命令,*表示data目录下的所有文件,但是有个问题要注意,*并不包含.后缀的隐藏文件。
cp -a /dev/sda /data
复制设备文件,加-a ,只复制设备文件的属性
rename "conf" "conf.bak" file*
rename命令,批量改名,将原来带.conf后缀的file.conf文件名,增加后缀.bak,变成file.conf.bak
6、mv命令
mv a b
没有指明路径,则表示将a文件改名为b,对于文件夹也适用
mv downloads/ D
改文件夹名字为D
mv -t 移入的目录 移出的目录
移出目录与移入目录的位置对调
在root管理员下,mv rm 都是别名,会询问你是否覆盖或者是否删除
7、rm命令
rm -r 文件
递归删除文件
rm -rf 文件
强行删除文件(慎用)
rm -rf / --no-preserve-root
强行删除根目录下所有文件(非常危险)
出于安全起见,可以把rm定义成别名,别名实际是mv
lsof | grep deleted
以上命令可查看部分已经被删除了的文件,但还未释放空间。有的时候当一个用户删除了一个文件,但同时另一个终端的用户在占用这个文件,就会出现这类情况。
> file
rm -f file
使用以上方法删除大文件file,可确保空间立即被释放。
8.tree命令
centos7系统默认没有安装tree程序包:
输入:rpm -ivh /run/media/root/CentOS\ 7\ x86_64/Packages/tree-1.6.0-10.el7.x86_64.rpm
可进行安装。
mkdir -p /data/dir1/dir2/dir3/dir4
自动判断并创建子目录dir1/dir2/dir3/dir4
rmdir /data/dir1
删除子目录(目录必须是空的才可以删)相比rm命令,rmdir相对安全,只能删除空目录
rmdir -p /data/dir1
递归删除子目录(只要递归的目录是空的就可以删)
cp /etc/hosts{,.bak}
以上命令利用花括号构成参数组合,等价于:
cp /etc/hosts /etc/hosts.bak
表示对hosts文件在本地etc文件夹复制一份进行备份hosts.bak
9、索引节点
inode --》节点编号
ls -i
可以查看当前文件夹下各文件的节点编号
节点编号在同一个磁盘分区下,是唯一的
直接指针最大容量为48K=12X4k
间接指针通过不断生成间接指针表,一个表4k,一个表指针4字节,则一个表可以接受1024个间接指针,如此类推,4字节X1024X1024X1024。。。
df -i
以上命令 查看各磁盘空间内的节点编号存量
**如果系统遇到显示磁盘空间满,但是实际上查询空间没有满的情况,这个问题很可能就是节点编号被消耗干净了,创建空文件也会占用节点编号。
当命令参数过多时:
echo file{1..100000} | xargs rm
以上命令可以批量删除花括号组合文件(参数过多时使用)
对于目录的文件结构:
要访问f1 ,f2 文件,首先要查看目录的节点编号,再通过节点编号找到目录的数据内容,目录的数据内容就是所存放的f1,f2两个文件名以及各自的节点关系,如:f1对应1000号节点 ,f2对应2000号节点。
**当系统删除文件f1时,系统实际上是删除了f1的节点空间。实际的数据内容空间,并未第一时间删除。等待新的数据对它进行覆盖
*shred -zv hosts
*shred -zv -n 6 hosts (覆盖6次)
以上命令是利用其它字符覆盖hosts的内容,真正删除文件数据内容
10、软链接和硬链接
ln f1 f2
创建硬链接,f1和f2 两个节点编号相同
**硬链接本质上是同一个文件,起了多个名字。
**假如用rm删除了f2,对读写f1不受影响
**硬链接和windows里面的快捷方式,有区别
**硬链接的创建,不能跨分区
**硬链接不支持目录的创建
ln -s f2 f2link
创建软链接,f2和f2link 节点编号不同
**软链接之间的文件大小毫无关系
**如果软链接的原文件f2被删除,则链接不能访问f2
**软链接可以跨分区创建
**软链接可以创建目录链接
** ll -i 查看的链接数不会增长
以上创建f2的软链接时出现红色错误。要避免创建错误,输入的f2路径必须是相对于目标位置/root/的路径,而不能是相对于当前目录data下的路径。也可以直接键入f2的绝对路径。
readlink 文件名
直接查看文件的软链接
11、file命令
file 文件
例: file tree.txt
以上命令可以查看文件属于什么类型(文本、压缩、可执行程序),而判断文件类型的方式是看该文件的头部信息,叫magic number