linux_学习之路_6(啊啊啊啊啊啊啊啊啊啊我要硬薅Linux)
继续继续接上回:
#创建命令
root@yanxu:/# mkdir -pv /mnt/test/{a,d}_{b,c}
mkdir: created directory '/mnt/test/a_b'
mkdir: created directory '/mnt/test/a_c'
mkdir: created directory '/mnt/test/d_b'
mkdir: created directory '/mnt/test/d_c'
root@yanxu:/# tree /mnt/test
/mnt/test
├── a_b
├── a_c
├── d_b
├── d_c
├── x
│ └── m
└── y
8 directories, 0 files
删除命令:
rmdir (remove directory):只能删除空目录
举例:root@yanxu:/# rmdir /mnt/test
rmdir: failed to remove '/mnt/test': Directory not empty
r
root@yanxu:/# rmdir /mnt/test/a_b
root@yanxu:/# tree /mnt/test
/mnt/test
├── a_c
├── d_b
├── d_c
├── x
│ └── m
└── y
7 directories, 0 files
如果我使用rmdir -p 来删除,只能是删除指定目录,如果这个目录删除完了父目录是空目录则继续删除;
举例:
root@yanxu:/# rmdir -p /mnt/test/x/m
rmdir: failed to remove directory '/mnt/test': Directory not empty
root@yanxu:/# tree /mnt/test
/mnt/test
├── a_c
├── d_b
├── d_c
└── y
5 directories, 0 files
说明已经删除了x/m 这个单一目录
文件的创建和删除:
touch : touch - change file timestamps(改变文件时间戳)
touch a:如果文件不存在,touch后会创建一个空文件目录
stat:stat - display file or file system status:(显示文件或者文件系统状态)
stata
root@yanxu:/# stat a
File: a
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 8,32 Inode: 33554465 Links: 3
Access: (0755/drwxr-xr-x)Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2025-01-21 15:07:52.179993555 +0800
Modify: 2025-01-21 15:07:52.179993555 +0800
Change: 2025-01-21 15:07:52.179993555 +0800
Birth: 2025-01-19 06:58:05.298910966 +0800
Access是访问时间,Modify:修改时间,change:改变时间;
date一下当前时间:
root@yanxu:/# date
Tue Jan 21 15:11:20 CST 2025
然后touch一下a文件,再stat a得到:
root@yanxu:/# touch a
root@yanxu:/# stat a
File: a
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 8,32 Inode: 33554465 Links: 3
Access: (0755/drwxr-xr-x)Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2025-01-21 15:11:49.499996056 +0800
Modify: 2025-01-21 15:11:49.499996056 +0800
Change: 2025-01-21 15:11:49.499996056 +0800
Birth: 2025-01-19 06:58:05.298910966 +0800
touch -a 改变访问时间
touch -m改变修改时间
无法改变改变时间,
touch -t 修改为自己设置的时间eg:
root@yanxu:/# touch -mt 202401211527.30 a
root@yanxu:/# stat a
File: a
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 8,32 Inode: 33554465 Links: 3
Access: (0755/drwxr-xr-x)Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2025-01-21 15:21:33.640008348 +0800
Modify: 2024-01-21 15:27:30.000000000 +0800
Change: 2025-01-21 15:32:44.630029666 +0800
Birth: 2025-01-19 06:58:05.298910966 +0800
可以看到修改时间已经改回我们自己设置的时间
创建文件也可以使用文件编辑器创建:
ASCII:美国信息交换标准代码:有128个 不同的字符:
二进制需要2^7 => 0,127.
即000 0000 - 111 1111
一个字节8个位,
0000 1001 : 代表了一个字符;所以ASCII表标准化;
2^16次方:65536个,因此需要两个字节基本就可以存储所有汉字
0000 1001 0000 1110:这个如何看是ASCII码还是字符;字符转换器
产生标准:GB18030,GBK,GB1312,Unicode(世界上所有的字符都收录再这里),
汉字如何在显示器显示出来的(待解决)
nano: nano - Nano's ANOther editor, inspired by Pico nano的文本编辑器,灵感来自于pico
nano hello
^G Help ^O Write Out ^W Where Is ^K Cut ^T Execute ^C Location M-U Undo M-A Set Mark
^X Exit ^R Read File ^\ Replace ^U Paste ^J Justify ^/ Go To LineM-E Redo M-6 Copy
^代表的是ctrl键,ctrl+o保存文件ctrl+x:退出
root@yanxu:/# file hello
hello: ASCII text
如何删除文件:
rm +文件名
eg rm helloroot@yanxu:/# rm hello
rm -i :-i prompt before every removal-我在每次删除前提示
rm -f: -f, --force
ignore nonexistent files and arguments, never prompt,忽略不存在的文件和参数,从不提示,
rm -r:-r, -R, --recursive
remove directories and their contents recursively:递归删除目录及内容;
eg rm -rf:递归删除目录不提示;
rm -rf / :删除根目录以及根目录的所有文件
root@yanxu:/# rm -rf /mnt/test
root@yanxu:/# ls /mnt
cdfwslwslg
生产过程中:敲回车时候需要提前思考一下;
复制和移动文件:
cp -copy
命令 cp srcfile dstfile
将一个文件一次复制多个文件?
可不可以将多个文件复制到一个目录?
可不可以将多个文件复制为一个文件?
cp:SYNOPSIS
cp ... [-T] SOURCE DEST
cp ... SOURCE... DIRECTORY
cp ... -t DIRECTORY SOURCE...
copy file1 file2 file3 file4 file1,2,3都是源文件,file4是目标文件:
只能复制一个文件到一个文件,或者多个文件到某个目录;
egroot@yanxu:/# cp /etc/passwd/tmp/
root@yanxu:/# ls tmp
passwd
snap-private-tmp
systemd-private-f12a58575a9347f79537ff62a0352ae7-chrony.service-laFQ0y
systemd-private-f12a58575a9347f79537ff62a0352ae7-polkit.service-3kOvvP
systemd-private-f12a58575a9347f79537ff62a0352ae7-systemd-logind.service-WkTLy5
systemd-private-f12a58575a9347f79537ff62a0352ae7-systemd-resolved.service-a9EQEB
systemd-private-f12a58575a9347f79537ff62a0352ae7-wsl-pro.service-UH1cbq
root@yanxu:/#
cp /etc/passwd /tmp/test
多个文件赋值的时候,目标必须是目录,如果是单个源文件复制到目标,目标可以是目录也可以是文件名
cp命令默认是不会复制目录的,只复制文件,
如果要复制目录,
cp -R, -r, --recursive
copy directories recursively:递归复制目录;
eg:root@yanxu:/# cp -r /etc/init.d /tmp/hello
root@yanxu:/# ls /tmp/hello
apparmorconsole-setup.shkea-ctrl-agent kea-dhcp6-server nmbd samba-ad-dc uuidd
apport cron kea-dhcp-ddns-serverkeyboard-setup.shprocpssmbd vsftpd
chrony dbus kea-dhcp4-server kmod rsync unattended-upgradesx11-common
目标的目录若是不存在则会自动创建目录。只会将内容复制到新目录名称下
如果目标目录存在就只会复制源文件到目录下,此时会将父目录名称和子目录名称打包复制到存在的目录下。
如果源目录要复制到的目标是个文件则会爆出异常:
root@yanxu:/# cp -r etc/init.d /tmp/56
cp: cannot overwrite non-directory '/tmp/56' with directory 'etc/init.d'
r
cp -f :-f, --force
ifan existing destination file cannot be opened, remove it and try again (this option is ignored when
the -n option is also used):如果目标文件无法被打开,将会把目标文件删除。
cp -i:交互式复制,(复制目录的时候每项都询问)
cp -P: -P, --no-dereference
never follow symbolic links in SOURCE:不遵信源符号链接
cp-p: -p same as --preserve=mode,ownership,timestamps l类似于保留模式,保留模式(属主和属组),所有权和时间戳
cp -a: -a, --archive
same as -dR --preserve=all:保留文件所有的原来的属性
cp -d:-d same as --no-dereference --preserve=links:
cp -L: -L, --dereference
always follow symbolic links in SOURCE总是跟随源的符号链接(符号链接相当于快捷方式,文件并不存在,只是指向目标文件的路径)
eg:复制链接
root@yanxu:/tmp# cp /etc/vtrgb /tmp/hello
root@yanxu:/tmp# ls -l /tmp/hello/vtrgb
-rw-r--r-- 1 root root 158 Jan 21 20:07 /tmp/hello/vtrgb
直接使用cp 复制链接,复制过去的是(链接指向的)文件。
如果使用cp -L ,则会复制链接过去(非文件)
运行程序
设备管理
Linux 学习之路 6:文件与目录操作以及文件复制与移动
1. 创建目录
使用 mkdir -pv 创建嵌套目录:
root@yanxu:/# mkdir -pv /mnt/test/{a,d}_{b,c}
创建结果使用 tree 查看目录结构:
/mnt/test
├── a_b
├── a_c
├── d_b
├── d_c
├── x
│ └── m
└── y
---
2. 删除目录
- rmdir 只能删除空目录。
尝试删除非空目录时会报错:
root@yanxu:/# rmdir /mnt/test
rmdir: failed to remove '/mnt/test': Directory not empty
- 使用 rmdir -p 删除空目录并逐层向上检查:
root@yanxu:/# rmdir -p /mnt/test/x/m
# 剩余结构:
/mnt/test
├── a_c
├── d_b
├── d_c
└── y
---
3. 创建文件
- touch: 改变文件时间戳并创建空文件。
- 查看文件状态可使用 stat:
root@yanxu:/# touch a
root@yanxu:/# stat a
Access: 2025-01-21 15:11:49
Modify: 2025-01-21 15:11:49
Change: 2025-01-21 15:11:49
- 改变时间戳:
- 修改访问时间:touch -a a
- 修改修改时间:touch -m a
- 设置自定义时间:touch -mt 202401211527.30 a
---
4. 编辑器创建文件
- 推荐使用 nano 文本编辑器:nano hello
- Ctrl+O 保存文件
- Ctrl+X 退出编辑器
---
5. 删除文件
- rm 用于删除文件:
rm hello
rm -i hello # 删除前确认
rm -f hello # 强制删除
rm -r /mnt/test # 递归删除非空目录
注意: 小心使用 rm -rf /,这会删除根目录的所有文件。
---
6. 复制文件和目录
- 复制单一文件:
cp /etc/passwd /tmp/
- 复制多个文件到目录:
cp file1 file2 /target_dir
- 复制目录需要使用 -r 递归选项:
cp -r /etc/init.d /tmp/hello
自动创建不存在的目录。
- 保留文件属性:
- -p: 保留模式和时间戳
- -a: 保留所有属性
- -d: 保留符号链接
- -L: 跟随符号链接
示例:
cp -a /etc/init.d /tmp/hello
---
7. 符号链接复制
- 普通拷贝:
cp /etc/vtrgb /tmp/hello
结果是复制文件本身,而非链接文件。
- 跟随符号链接:
cp -L /etc/vtrgb /tmp/hello
结果是复制符号链接而非文件内容。
---
以上便是本节的内容,继续加油,Linux 知识点总能薅完! (警惕危险命令)。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]