Linux文件系统和管理2文件操作命令(上)[操作系统入门]

编程

文件操作命令

文件

文件也包括目录

目录是一种特殊的文件

目录

一个目录名分成两部分

  • 所在目录 dirname 父目录的路径
  • 文件名 basename

    本身就是两个命令

[[email protected] misc]# type dirname

dirname is /usr/bin/dirname

[[email protected] misc]# type basename

basename is /usr/bin/basename

相对路径和绝对路径

  • 绝对路径 从根开始,完整的路径 必须以正斜杠/即根目录开始
  • 相对路径 相对于当前工作目录 不以/开始

显示当前路径

pwd printing working directory 打印工作目录

换目录或路径

cd change directory 改变目录

  • 切换至父目录: cd ..
  • 切换至当前用户主目录: cd . 点可以不写
  • 切换至以前的工作目录: cd - $OLDPWD记着呢,系统自带的变量

[[email protected] boot]# echo $OLDPWD

/bin

[[email protected] boot]# cd /

[[email protected] /]# echo $OLDPWD

/boot

根的根就是根

一个点 . 是自己 当前文件夹

两个点 .. 是父目录

波浪符 ~ 回到对应id的家目录

[[email protected] /]# ls -a

. bin dev home lib64 misc net proc run srv tmp var

.. boot etc lib media mnt opt root sbin sys usr

列出目录内容

ls

ls 命令可以列出当前目录的内容或指定目录

ll 是ls -l 的别命

[[email protected] boot]# type ll

ll is aliased to `ls -l --color=auto‘

常见选项:

-a 包含隐藏文件

-d 显示目录本身的内容

-l 显示额外的信息

-R 目录递归 显示子目录

-ld 目录和符号链接信息 显示目录本身的内容

-1 文件分行显示

-S 按从大到小排序

-t 按mtime排序 每个文件都有三个时间

-u 配合-t选项,显示并按atime从新到旧排序

-U 按目录存放顺序显示

-X 按文件后缀排序

查看文件状态 stat

ll --time 太麻烦了,用stat直接看三个时间

文件相关信息:

  • metadata
  • data

每个文件有三个时间戳:

  • access time 访问时间,atime,读取文件内容
  • modify time 修改时间,mtime,改变文件内容(数据) 默认
  • change time 改变时间,ctime,元数据发生改变

Inode 每个为你结案的唯一标识

[[email protected] ~]# stat .bash_profile 

File: .bash_profile

Size: 207 Blocks: 8 IO Block: 4096 regular file

Device: fd00h/64768d Inode: 34011036 Links: 1

Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)

Context: system_u:object_r:admin_home_t:s0

Access: 2020-06-17 05:04:45.933534066 -0400

Modify: 2020-06-15 23:06:02.116855753 -0400

Change: 2020-06-15 23:06:02.117855758 -0400

Birth: -

确定文件内容

file

file 每个文件的格式类型不一样,文件的头不确定了文件的类型,file帮我们确定

Linux中文件的后缀要求并不严格。

file可以判断七种文件类型。

[[email protected] ~]# file .bash_profile 

.bash_profile: ASCII text

[[email protected] ~]# type file

file is hashed (/usr/bin/file)

[[email protected] ~]# file /usr/bin/file

/usr/bin/file: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=1aaef7e4e7e253a9191d2e7e43d5e7dd8c8ab1e8, stripped

[[email protected] ~]# file /dev/zero

/dev/zero: character special (1/5)

[[email protected] ~]# file /dev/sda

/dev/sda: block special (8/0)

Linux和Windows文件在底层是有一些差别的

[[email protected] ~]# ll

total 12

-rw-------. 1 root root 1184 Mar 16 01:56 anaconda-ks.cfg

-rw-r--r--. 1 root root 6 Jun 17 06:22 linux.txt

-rw-r--r--. 1 root root 7 Jun 17 06:21 win.txt

[[email protected] ~]# hexdump -C linux.txt

00000000 61 0a 62 0a 63 0a |a.b.c.|

00000006

[[email protected] ~]# hexdump -C win.txt

00000000 61 0d 0a 62 0d 0a 63 |a..b..c|

00000007

[[email protected] ~]# file linux.txt

linux.txt: ASCII text

[[email protected] ~]# file win.txt

win.txt: ASCII text, with CRLF line terminators

显示文件编码iconv

Linux一直使用UTF-8,早期的中文版windows使用ANSIC,到win10 才使用UTF-8

用iconv可以显示所有的编码格式

#显示编码列表

[15:34:50 [email protected] ~]#iconv -l

#将windows10上文本默认的编码转换成UTF-8

[15:34:50 [email protected] ~]#iconv -f gb2312 win.txt -o win2.txt

[15:34:50 [email protected] ~]#file linux.txt

linux.txt: ASCII text

[15:34:31 [email protected] ~]#file windows.txt

windows.txt: ASCII text, with CRLF line terminators

#将windows的文本格式转换成Linux的文本格式

[15:35:26 [email protected] ~]#dos2unix windows.txt

dos2unix: converting file windows.txt to Unix format...

[15:36:00 [email protected] ~]#file windows.txt

windows.txt: ASCII text

#将Linux的文本格式转换成windows的文本格式

[15:36:02 [email protected] ~]#unix2dos windows.txt

unix2dos: converting file windows.txt to DOS format...

[15:36:10 [email protected] ~]#file windows.txt

windows.txt: ASCII text, with CRLF line terminators

[15:33:05 [email protected] ~]#cat list.txt

/etc/

/bin

/etc/issue

[15:34:28 [email protected] ~]#file -f list.txt

/etc/: directory

/bin: symbolic link to usr/bin

/etc/issue: ASCII text

文件通配符模式 wildcard pattern

通配符就是为了搜索和匹配文件的时候更方便。

常见的通配符如下:

* 匹配零个或多个字符 但是匹配不了.开头的隐藏文件,*不包含隐藏文件

? 匹配任何单个字符

~ 当前用户家目录

~pang 用户pang家目录

~+和. 当前工作目录

~- 前一个工作目录

[0-9] 匹配数字范围

[a-z] 字母

[A-Z] 字母

[pang] 匹配列表中的任何的一个字符

[^pang] 匹配列表中的所有字符以外的字符

别外还有在Linux系统中预定义的字符类:man 7 glob

[:digit:]:任意数字,相当于0-9

[:lower:]:任意小写字母,表示 a-z

[:upper:]: 任意大写字母,表示 A-Z

[:alpha:]: 任意大小写字母

[:alnum:]:任意数字或字母

[:blank:]:水平空白字符

[:space:]:水平或垂直空白字符

[:punct:]:标点符号

[:print:]:可打印字符

[:cntrl:]:控制(非打印)字符

[:graph:]:图形字符

[:xdigit:]:十六进制字符

范例:

1、显示/etc目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录

#先创建一些符合条件的文件

[[email protected] ~]# touch /etc/l{0..9}bcd.test

#直接写l[0-9]表示l开头第二位是0-9的数字的文件或文件夹,所以不符合要求

[[email protected] ~]# ls /etc/l[0-9]

ls: cannot access ‘/etc/l[0-9]‘: No such file or directory

#需要配合*显示多个无所谓的字符

[[email protected] ~]# ls /etc/l[0-9]*

/etc/l0bcd.test /etc/l2bcd.test /etc/l4bcd.test /etc/l6bcd.test /etc/l8bcd.test

/etc/l1bcd.test /etc/l3bcd.test /etc/l5bcd.test /etc/l7bcd.test /etc/l9bcd.test

#在结尾一个字符出加上取值范围[a-z]即可

[[email protected] ~]# ls /etc/l[0-9]*[a-z]

/etc/l0bcd.test /etc/l2bcd.test /etc/l4bcd.test /etc/l6bcd.test /etc/l8bcd.test

/etc/l1bcd.test /etc/l3bcd.test /etc/l5bcd.test /etc/l7bcd.test /etc/l9bcd.test

#

2、显示/etc目录下以,任意一位数字开头,且以非数字结尾的文件或目录

#先创建一些符合要求的文件

[[email protected] ~]# touch /etc/{0..9}{a..c}.618bu-

[[email protected] ~]# ls /etc/[0-9]*[^0-9]

/etc/0a.618bu- /etc/1a.618buZ /etc/2b.618buY /etc/3c.618buy /etc/5a.618bu- /etc/6a.618buZ /etc/7b.618buY /etc/8c.618buy

…… /etc/9c.618buZ

3、显示/etc/目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录

[[email protected] ~]# ls /etc/[^[:alpha:]][[:alpha:]]*

4、显示/etc/目录下所有以rc开头,并后面是0-6之间的数字,其它为任意字符的文件或目录

[[email protected] ~]# ls -d /etc/rc[0-6]*

5、显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录

[[email protected] ~]# ls /etc/[mnrp]*.conf

/etc/man_db.conf /etc/mke2fs.conf /etc/nsswitch.conf /etc/resolv.conf /etc/rsyslog.conf

6、只显示/root下的隐藏文件和目录

[[email protected] ~]# ls -d .*

. .. .bash_history .bash_logout .bash_profile .bashrc .cshrc .tcshrc .viminfo

7、只显示/etc下的非隐藏目录

只列文件夹不列文件

[[email protected] ~]# ls -d /etc/*/

/etc/alternatives/ /etc/dbus-1/ /etc/kernel/ /etc/oddjob/ /etc/rc3.d/ /etc/sssd/

/etc/ansible/ /etc/dconf/ /etc/krb5.conf.d/ /etc/oddjobd.conf.d/ /etc/rc4.d/ /etc/sudoers.d/

……

Linux文件系统和管理-2文件操作命令(上)

原文:https://www.cnblogs.com/bpzblog/p/13160716.html

以上是 Linux文件系统和管理2文件操作命令(上)[操作系统入门] 的全部内容, 来源链接: utcz.com/z/517762.html

回到顶部