文件系统目录结构
Linux下的文件类型
普通文件
d 目录文件directory
b 块设备block
c 字符设备character
l 符号链接文件link
p 管道文件pipe
s 套接字文件socket文件操作命令
pwd 显示当前工作目录
pwd -P
显示真实物理路径-
绝对路径和相对路径
绝对路径:以/开始
相对路径:基名basename
目录名dirname
[root@localhost /bin]$ basename /etc/sysconfig/network
network
[root@localhost /bin]$ dirname /etc/sysconfig/network
/etc/sysconfig
cd 更改目录
[root@localhost /bin]$ cd ~ (回到home目录)
[root@localhost ~]$ cd - (切换至以前的上一个工作目录)
/bin
[root@localhost /bin]$ cd .. (切换至父目录)
[root@localhost /]$ cd /bin
[root@localhost /bin]$ pwd
/bin
[root@localhost /bin]$ cd -P /bin (切换至物理路径,而非链接路径)
[root@localhost /usr/bin]$ pwd
/usr/bin
[root@localhost /usr/bin]$ cd (切换至当前用户主目录)
[root@localhost ~]$
相关环境变量
[root@CentOS /etc]$ echo $PWD (当前目录路径)
/etc
[root@CentOS /etc]$ echo $OLDPWD (上一次目录路径)
/root
ls 列出目录内容
ls 【options】【files_or_dirs】
ls 查看不同后缀文件时的颜色由/etc/DIR_COLORS
和@LS_COLORS
变量定义 -a 包含隐藏文件
- -l 显示额外的信息 (别名alias ‘ll=ls -l’)
- -R 目录递归 -r 倒序排列
- -ld 目录和符号链接信息
- -1 文件分行显示
- -S 按从大到小排序
- -t 按mtime排序
- -u 配合-t选项,显示并按atime从新到旧排序
- -U 按目录存放顺序显示
-X 按文件后缀排序
[root@CentOS /etc]$ ls -Slr (按从大到小倒序排列)
total 1364
-rw-------. 1 root root 0 May 8 16:59 crypttab
-rw-------. 1 root root 0 Aug 9 2019 cron.deny
-rw-r--r--. 1 root root 1 Oct 31 2018 at.deny
drwxr-xr-x. 2 root root 6 Apr 11 2018 xinetd.d
drwxr-xr-x. 2 root root 6 Jun 10 2014 cron.monthly
lrwxrwxrwx. 1 root root 10 May 8 17:00 rc2.d -> rc.d/rc2.d
lrwxrwxrwx. 1 root root 10 May 8 17:00 rc0.d -> rc.d/rc0.d
lrwxrwxrwx. 1 root root 11 May 8 17:00 init.d -> rc.d/init.d
-rw-r--r--. 1 root root 11 May 8 17:09 hostname
lrwxrwxrwx. 1 root root 13 May 8 17:01 rc.local -> rc.d/rc.local
lrwxrwxrwx. 1 root root 14 May 8 16:59 system-release -> centos-release
-rw-r--r--. 1 root root 16 May 8 17:09 adjtime
stat 查看文件状态
[root@CentOS ~]$ stat zyysgdmn
File: ‘zyysgdmn’
Size: 88 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 203034404 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2021-07-19 13:22:48.830023994 +0800 (文件被读时间atime)
Modify: 2021-06-23 16:08:18.839938392 +0800 (内容修改时间mtime,默认)
Change: 2021-06-23 16:08:18.839938392 +0800 (属性发生更改时间ctime)
Birth: -
[root@CentOS ~]$ chown zhuyuany zyysgdmn (修改文件所有者,相当于修改了文件属性)
[root@CentOS ~]$ cat zyysgdmn
[root@CentOS ~]$ nano zyysgdmn
[root@CentOS ~]$ stat zyysgdmn
File: ‘zyysgdmn’
Size: 91 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 203034404 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/zhuyuany) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2021-07-21 23:33:51.122592703 +0800
Modify: 2021-07-21 23:35:18.615594250 +0800
Change: 2021-07-21 23:35:18.615594250 +0800
Birth: -
file 确定文件内容
-b 列出文件辨识结果时,不显示文件名称
-f filelist 列出文件filelist中文件名的文件类型
-F 使用指定分隔符号替换输出文件名后默认的”:”分隔符
-L 查看对应软链接对应文件的文件类型
—help 显示命令在线帮助[root@CentOS ~]$ file zyy (判断文件类型,Linu文件不挑后缀)
zyy: UTF-8 Unicode text
[root@CentOS ~]$ rz -E (windows和Linux中的回车和换行不一样)
rz waiting to receive.
[root@CentOS ~]$ file zyy-win.txt
zyy-win.txt: ISO-8859 text, with CRLF line terminators
[root@CentOS ~]$ hexdump -C zyy (每个字节显示为16进制和相应的ASCII字符)
00000000 7a 68 75 79 75 61 6e 79 75 61 6e 20 69 73 20 76 |zhuyuanyuan is v|
00000010 65 72 79 20 62 65 61 75 74 69 66 75 6c 0a e5 bd |ery beautiful...|
00000020 bc e5 a5 b3 e3 81 af e9 9d 9e e5 b8 b8 e3 81 ab |................|
00000030 e7 be 8e e3 81 97 e3 81 84 e3 81 a7 e3 81 99 0a |................|
00000040 e6 9c b1 e5 9b ad e5 9b ad e9 9d 9e e5 b8 b8 e6 |................|
00000050 bc 82 e4 ba ae 0a 0a |.......|
00000057
[root@CentOS ~]$ hexdump -C zyy-win.txt
00000000 7a 68 75 79 75 61 6e 79 75 61 6e 20 69 73 20 76 |zhuyuanyuan is v|
00000010 65 72 79 20 62 65 61 75 74 69 66 75 6c 0d 0a b1 |ery beautiful...|
00000020 cb c5 ae a4 cf b7 c7 b3 a3 a4 cb c3 c0 a4 b7 a4 |................|
00000030 a4 a4 c7 a4 b9 0d 0a d6 ec d4 b0 d4 b0 b7 c7 b3 |................|
00000040 a3 c6 af c1 c1 |.....|
00000045
[root@CentOS ~]$ sz zyy (将Linux中的文件拖到windows中可能会乱码无法查看)
[root@CentOS ~]$ cat zyy-win.txt (将windows中的文件拖到linux中也同样可能会乱码无法查看)
zhuyuanyuan is very beautiful
±̅®¤Ϸdz£¤̃$·¤¤¤Ǥ¹
·dz£Ư
[root@CentOS ~]$ iconv -f gb2312 zyy-win.txt -o zyy-win(转换编码格式:#将windows7上文本默认的编码ANSI(GB2312)转换成UTF-8)
[root@CentOS ~]$ cat zyy-win
zhuyuanyuan is very beautiful
彼女は非常に美しいです
朱园园非常漂亮
[root@CentOS ~]$ iconv -f utf8 -t gb2312 zyy -o windows2.txt(将UTF-8转换成windows10上文本默认的编码ANSI(GB2312))
[root@CentOS ~]$ sz windows2.txt
安装转换工具
dnf -y install dos2unix
将Windows的文本格式转换成的Linux文本格式:dos2unix win.txt
#将Linux的文本格式转换成Windows的文本格式:unix2dos win.txt
- 转换文件字符集编码
显示支持字符集编码列表:iconv -l
#windows7上文本默认的编码ANSI(GB2312)
文件通配符
(在Linux系统中预定义的字符类:man 7 glob)
[root@localhost ~]$ ls file[[:lower:]]
filea filec filee fileg filei filek filem fileo fileq files fileu filew filey
fileb filed filef fileh filej filel filen filep filer filet filev filex filez
[root@localhost ~]$ ls file[[:upper:]]
fileA fileC fileE fileG fileI fileK fileM fileO fileQ fileS fileU fileW fileY
fileB fileD fileF fileH fileJ fileL fileN fileP fileR fileT fileV fileX fileZ
[root@localhost ~]$ rm -f file*
touch 创建空文件和刷新时间
- 刷新时间
-a 仅改变 atime和ctime
-m 仅改变 mtime和ctime
-t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的时间戳
-c 如果文件不存在,则不予创建
- 创建文件
cp 复制文件和目录
格式:cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
-i 如果目标已存在,覆盖前提示是否覆盖
-n 不覆盖,注意两者顺序
-r, -R 递归复制目录及内部的所有内容
-a 归档,相当于-dR —preserv=all,常用于备份功能(-av 备份过程)
-d —no-dereference —preserv=links 不复制原文件,只复制链接名
—preserv[=ATTR_LIST]
mode: 权限
ownership: 属主属组
timestamp:
links
xattr
context
all
-p 等同—preserv=mode,ownership,timestamp 保留格式属性
-v —verbose 显示过程
-f —force
-u —update 只复制源比目标更新文件或目标不存在的文件
-b 目标存在,覆盖前先备份,默认形式为 filename~
,只保留最近的一个备份
—backup=numbered 目标存在,覆盖前先备份加数字后缀,形式为filename.~#~
,可以保留多个版
练习
1、将/etc/目录下所有文件,备份到/data独立的子目录下,并要求子目录格式为 backupYYYYmm-dd,备份过程可见 cp -av /etc/ /data/backup
date +%F`<br />2、创建/data/rootdir目录,并复制/root下所有文件到该目录内,要求保留原有权限<br />
cp -a /root /data/rootdir`
mv 移动和重命名文件(格式同cp)
mv source_file``(文件)`` dest_file``(文件)
将源文件名 source_file 改为目标文件名 dest_filemv source_file``(文件)`` dest_directory``(目录)
将文件 source_file 移动到目标目录 dest_directory 中mv source_directory``(目录)`` dest_directory``(目录)
目录名 dest_directory 已存在,将 source_directory 移动到目录名 dest_directory 中;不存在则 source_directory 改名为目录名 dest_directory
-i 交互式 (覆盖提醒,系统自带别名alias mv=’mv -i’)
-f 强制 (如果指定移动的源目录或文件与目标的目录或文件同名,不询问直接覆盖)
-b 当目标文件或目录存在时,覆盖前先备份
-n 不要覆盖任何已存在的文件或目录
-u 当源文件比目标文件新或者目标文件不存在时,才执行移动操作
*mv只能一次处理一个文件改名,而利用 rename 可以批量修改文件名
rename [options] ``<expression> <replacement>`` <file>...
rm 删除文件
rm [OPTION]... FILE...
-i 交互式 (删除前提示,系统自带别名alias rm=’rm -i’)
-f 强制删除,无提示
-r 或-R 递归 (删文件夹)
—no-preserve-root 强制删除/
- 回车前一定要仔细检查!慎重使用,建议使用mv作为别名代替 rm:
alias rm='DIR=/data/backup
date +%F%T;mkdir $DIR;mv -t $DIR'
删除特殊文件(例:将名为 “/data/-f” 的文件删除)
[root@centos8 data]#rm -f -f #此方式错误
[root@centos8 data]#rm -- -f
[root@centos8 data]#rm ./-f (绝对路径)
[root@centos8 data]#rm /data/-f
rm虽然删除了文件,但是被删除的文件仍然可能被恢复,在安全要求较高的场景下,可以使用
shred
安全删除文件
目录操作tree、mkdir、rmdir
- 显示目录树
tree
-d: 只显示目录
-L level:指定显示的层级数目
-P pattern: 只显示由指定wild-card pattern匹配到的路径
- 创建目录
mkdir
-p: 存在于不报错,且可递归自动创建所需的各目录
-v: 显示详细信息
-m MODE: 创建目录时直接指定权限(没有-m来强制配置属性系统会使用默认属性)
- 删除空目录
rmdir
-p 递归删除父空目录
-v 显示详细信息
#rmdir只能删除空目录,如果想删除非空目录,可以使用rm -r 命令,递归删除目录树