Linux文件类型和文件相关命令

文件类型

ll后可以看到文件详情:

-:常规文件(内部类型是什么,用file命令)

d:directory,目录文件

b:blobk device,块设备文件,支持以“block”为单位进行随机访问

  • major number:主设备号,用来表示设备类型,进而确定要加载的驱动程序
  • minor number:次设备号,用于表示同一类型中的不同设备。

如下图的1,3 、1,5

c:character device,字符设备文件,支持以”character”为单位进行线性访问

l:symbolic link,符号链接文件(软连接文件)

p:pipe,命名管道

s:socket,套接字文件


路径

绝对路径:以斜线开始的,从/开始的路径。

  • /etc/syscofnig/network-scrpits
    绝对路径分为两段,dirname和basename:

1

2

3

4


[[email protected] app]# dirname /etc/sysconfig/network-scripts/ifcfg-ens192

/etc/sysconfig/network-scripts

[[email protected] app]# basename /etc/sysconfig/network-scripts/ifcfg-ens192

ifcfg-ens192

相对路径:不以斜线开始的路径。

  • xxx/yyy :当前目录下的xxx子目录的yyy子目录
  • .:当前目录
  • ..:上级目录
  • ~:用户的家目录
  • -:切换上次输入的目录,和命令配合使用

tips:-原理,系统记住上一个工作目录,存储在环境变量OLDPWD,可以用echo $OLDPWD查看到。


常用命令:

1. pwd:显示工作目录

printing working directory

2. cd:切换目录

change directory

  • cd:切换到家目录
  • cd ~:切换到家目录
  • cd ~USERNAME:切换到用户USERNAME的家目录
  • cd -:在上一次所在目录与当前目录来回切换(PWD to OLDPWD)
  • cd ..:切换到上级目录
  • cd /path/to/directory 切换到一个绝对目录
  • cd path/to/directory:切换到一个相对目录

3. ls:列出内容

list(用/var目录做例子)

  • -a, --all:列出所有文件包含隐藏文件
  • -A--almost-all:列出除...之蛙所有的文件
  • -F:-F参数在目录名后加了正斜线(/),以方便用户在输出中分辨它们。类似地,它会在可执行 文件(比如上面的my_script文件)的后面加个星号,以便用户找出可在系统上运行的文件。

  • l--long:长格式信息,列出文件的详细属性,命令可以简写为llalias ll=‘ls -l --color=auto‘
  • -h--human-readable:size用人类可读的格式表示
  • -d--directory:查看目录本身而非内部的文件详情
  • -r--reverse:反转排序(降序)
  • -R--recursive 递归显示(基本不用这个,递归显示用tree命令更直观)
  • -t:按修改时间排序

4. cat:文本文件输出到终端

concatenate 拼接

可以单独cat:cat /etc/issue

可以连接多个文件显示cat /etc/issue /etc/redhat-release


1

2

3

4

5

6

7

8

9


[[email protected] app]# cat /etc/issue

CentOS release 6.9 (Final)

Kernel \r on an \m

[[email protected] app]# cat /etc/issue /etc/redhat-release

CentOS release 6.9 (Final)

Kernel \r on an \m

CentOS release 6.9 (Final)

参数:

  • cat -s file:删除多余的空白行(多行空白行,删除到只剩一行空白行)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19


$ cat multi_blanks.txt

line 1

line2

line3

line4

$ cat -s multi_blanks.txt #压缩相邻的空白行

line 1

line2

line3

line4

  • cat -T file:将制表符显示为^I

用来看脚本里的制表符,通常我们写脚本要避免用制表符,而用多个空格。所以此命令通常用来查询哪里用了制表符。

  • cat -n file:显示行号

1

2

3

4

5

6

7

8

9


$ cat lines.txt

line

line

line

$ cat -n lines.txt

1 line

2 line

3 line

5. tac: 跟cat相反,从后面行往前面行输出

stat 查看文件状态

可以看到atime(Access)mtime(Modify)Ctime(Change),还有文件的权限,文件拥有者和拥有组,还有文件大小相关的内容。


1

2

3

4

5

6

7

8

9

10


[[email protected] ~]# stat /etc/issue

File: ‘/etc/issue’

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

Device: 802h/2050d Inode: 134320235 Links: 1

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

Context: system_u:object_r:etc_t:s0

Access: 2017-05-22 09:07:34.832999490 +0800

Modify: 2016-11-30 02:12:59.000000000 +0800

Change: 2017-05-17 16:53:20.670996867 +0800

Birth: -

6. 文件通配符(globbing)

  • * :匹配零个或多个字符
  • ? :匹配任何单个字符
  • ~ :当前用户家目录
  • ~longdream :用户longdream的家目录
  • ~+ :当前工作目录
  • ~-:前一个工作目录
  • [0-9]:匹配数字范围,匹配一个
  • [a-z]或[A-Z]:字母,不区分大小写

    tips:因为不区分大小写,[a-d]代表的就是匹配AaBbCcDd中的一个

  • [a-z0-9]:字母或数字
  • [wang]:匹配列表中的任何的一个字符,匹配wang
  • [^wang] 匹配列表中的所有字符以外的字符,除了wang

只显示隐藏文件:

预定义的字符类:man 7 glob

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

[:lower:]:任意小写字母

[:upper:]: 任意大写字母

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

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

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

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

[:punct:]:标点符号

[:print:]:可打印字符

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

[:graph:]:图形字符

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

练习
练习1:显示/var/log目录下所有以l开头,以一个小写字母结尾,且中间出现一位任意字符的文件或目录。

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

练习3:显示/etc目录下,以非字母开头,后面跟一个字母及其他任意长度任意字符的文件或目录。

练习4:复制/etc目录下,所有以m开头,以非数字结尾的文件或目录到/tmp/test目录。

练习5:复制/usr/share/man目录下,所有以man开头,后跟一个数字结尾的文件或目录至/tmp/test/man目录下。

练习6:复制/etc目录下,所有以.conf结尾,且以m,n,r,p开头的文件或目录到/tmp/conf.d/目录下。

答案:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15


ls -d /var/l?[[:lower:]]

ls -d /etc/[0-9]*[^0-9]

ls -d /etc/[^a-z][a-z]*

mkdir /tmp/test

cp -r /etc/m*[^0-9] /tmp/test/

mkdir /tmp/test/man

cp -r /usr/share/man/man[0-9] /tmp/test/man

mkdir /tmp/conf.d

cp -r /etc/[mnrp]*.conf /tmp/conf.d/

7. touch

touch [OPTION]... FILE...

-a :仅改变 atime和ctime

-m :仅改变 mtime和ctime

-t [[CC]YY]MMDDhhmm[.ss]:指定atime和mtime的时间戳

-c :如果文件不存在,则不予创建

9. cp

cp :copy

cp /etc/fstab /app :复制单个文件到目录下面。
cp /etc/{fstab,issue} /app/dir/cp /etc/fstab /etc/bashrc /app/dir/:复制多个文件到某目录下。
cp /etc/fstab /app/1.txt :复制并覆盖目标文件(没有则创建)。

参数

  • -f ,--force:强制覆盖目标文件。
  • -r-R`--recursive:递归复制目录 (-r == -R)。cp -r /var/log /app/log
  • -d:复制符号链接本身,而不是他指向的文件。cp -d /etc/system-release /app
  • -a--archive:归档,等同于-dr
  • -p:复制文件的原来属性,等同于下面的--preserv=[mode,ownership,timestamp]
  • --preserv[=ATTR_LIST]
    • mode:权限
    • ownership:属主属组
    • timestamp:时间戳
    • links:复制链接的源文件
    • xattr
    • context
    • all
  • -v--verbose:看到详细信息

练习:

1) 定义别名命令baketc,每天将/etc/目录下所有

文件,备份到/testdir独立的子目录下,并要求子目 录格式为 backupYYYY-mm-dd,备份过程可见

2) 创建/testdir/rootdir目录,并复制/root下所有 文件到该目录内,要求保留原有权限

解答:

1)


1

alias baketc=cp -av /etc/* /testdir/`date -u`

2)


1

cp -ap /root/* /testdir/rootdir

tips: 小技巧 利用通配符来复制:
cp -a /etc/passwd{,.bak}
相当于 cp -a /etc/passwd /etc/passwd.bak

10. mv

mv:move

  • -f 强制移动或覆盖

移动文件(不在同一目录下),重命名文件(在同一目录下)
移动目录或重命名目录

11. rename

重命名后缀

rename [options] expression replacement file...

选项


1

2

3

4

5

6

7

8

9

10

11


EXAMPLES

Given the files foo1, ..., foo9, foo10, ..., foo278, the commands

rename foo foo0 foo?

rename foo foo0 foo??

will turn them into foo001, ..., foo009, foo010, ..., foo278. And

rename .htm .html *.htm

will fix the extension of your html files.


1

2

3

4


mkdir test

cd text

touch {1,2,3,4,5}.txt

rename -v .txt .txt.bak *.txt


rm

rm: remove

删除文件
-i:interactive,交互式
-r 递归删除
-f 强制删除

rm -rf /(5是可以删除根的,6和7是不可以删除的)

我们可以留一个习惯:
不用的文件,不要直接删除,可以用mv move到某个专用目录(比如都移动到/tmp下)

12. tree

参数:

  • -d: 只显示目录
  • -L level:指定显示的层级数目
  • -P pattern: 只显示由指定pattern匹配到的路径

13. mkdir、rmdir

mkdir:make directory

  • -p 递归创建
  • -v :verbose,创建目录的详情
  • -m mode,权限

rmdir:remove empty directory(只能删除空目录)

练习1:创建test1/x/y1test1/x/y2test1/x/y1/atest1/x/y1/b

练习2: test2目录下面创建a_ca_d,b_cb_d

练习3:在test3目录下创建以下目录结构:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20


test3

├── bin

├── etc

│ └── sysconfig

│ └── network-scripts

├── sbin

├── usr

│ ├── bin

│ ├── lib

│ ├── lib64

│ ├── local

│ │ ├── bin

│ │ ├── etc

│ │ ├── lib

│ │ └── sbin

│ └── sbin

└── var

├── cache

├── log

└── run

练习3:创建/testdir/dir1/x/testdir/dir1/y, /testdir/dir1/x/a/testdir/dir1/x/b/testdir/dir1/y/a/testdir/dir1/y/b

练习4:创建/testdir/dir2/x/testdir/dir2/y/testdir/dir2/x/a/testdir/dir2/x/b

练习5:创建/testdir/dir3/testdir/dir4/testdir/dir5/testdir/dir5/dir6/testdir/dir5/dir7

答案:


1

2

3

4

5

6

7

8

9

10

11

12

mkdir -pv test1/x/{y1/{a,b},y2}

mkdir -pv test2/{a,b}{c,d}

mkdir -pv test3/{bin,sbin,etc/sysconfig/network-scripts,usr/{bin,sbin,local/{bin,sbin,etc,lib},lib,lib64},var/{cache,log,run}}

mkdir -pv /testdir/dir1/{x,y}/{a,b}

mkdir -pv /testdir/dir2/{x/{a,b},y}

mkdir -pv /testdir/dir{3,4,5/dir{6,7}}

14. 延伸

删除大文件的方法(没被释放删除,空间还占用的文件):

实验:
在一个会话下,dd if=/dev/zero of=bigfile bs=1M count=2048vim bigfile,在vim模式下不要退出。

打开另外一个会话窗口,删除文件,结果发现,文件是删除了,但是空间没有释放,因为vim占用着文件。

这时候我们就可以用>来搞定:


1

2


> bigfile3

rm -rf bigfile3

> 和>>开单章讲,在后面的IO和重定向部分。

原文地址:https://www.cnblogs.com/momenglin/p/8530653.html

时间: 2024-08-05 02:43:51

Linux文件类型和文件相关命令的相关文章

Linux之进程管理(2)相关命令之二

Linux之进程管理(2)相关命令之二 进程监控工具命令使用:uptime  top  vmstat  pmap  dstat uptime  命令 uptime - Tell how long the system has been running. 显示当前已经运行的时长及cpu核心处理状态 说明:显示系统当前时间,系统运行时长,以及当前上线人数,系统平均负载(一般按1.5.10分钟的平均负载,一般不会超过1). 选项及用法: uptime  [option] -p, --pretty  :

Linux之进程管理(2)相关命令之三

Linux之进程管理(2)相关命令之三 (IPC)进程间通信及信号控制命令 kill  killall   kill 命令 kill - terminate a process,Inter Process Communication 进程通信工具,默认为发送终止信号 选项及用法: kill  -l  #显示所有信号CODE及名称 kill  [-SIGNAL]  pid...#指定发送信号给对应pid的进程,不指定信号代码默认为15信号 常见的信号:(注:可以使用man 7 signal打开帮助

6.文件类型和文件权限管理

6.1.普通文件 (1)普通文件(- regular file)包括文本文件+二进制文件. (2)文本文件即文件中的内容是由文本构成的,文本即经过某种编码的字符(譬如ASCII码字符):所有文件的内容本质上都是数字,而文本文件中的数字本身应理解为该数字所对应的编码字符(譬如ASCII码对应的字符):常见的.c文件和.h文件和.txt文件等都是文本文件:文本文件的好处是可以被人轻松读懂和编辑,则文本文件天生就是为人类发明的. (3)二进制文件即文件中存储的内容本质上也是数字,但这些数字并非字符对应

Linux之进程管理(2)相关命令之四

Linux之进程管理(2)相关命令之四 设置或调整进程优先级命令: nice  rnice nice 命令 nice - run a program with modified scheduling priority 运行一个程序时修改调度其进程优先级 格式及用法: nice  [options]  [command [args]] -n  # :#表示要设置此程序nice值,-20到19,值越下,优先级越高 注:-20到19的每个nice值分别对应(Centos5中为100-139,CentO

Linux之进程管理(2)相关命令之一

Linux之进程管理(2)相关命令之一 procps工具命令对进程管理的使用:   ps   pgrep  pidof  pkill  pstree ps  命令 ps  (Process State)  :report a snapshot of the current processes. 查看当前进程的快照信息表 此命令支持3种风格: 1.SysV风格:选项前必须加-符号,如ps  -ef 2.BSD风格:选项前可以不加-符号,如ps  aux 3.GUN风格:之前两个-符号,类似长选项,

2.1/2.2 系统目录结构 2.3 ls命令 2.4 文件类型 2.5 alias命令

2.1 系统目录结构 1.系统目录 ssh的配置文件存放位置 [[email protected] ~]# ls /etc/ssh/sshd_config /etc/ssh/sshd_config 根下面都有哪些目录 tree -/   --查看根目录下都有哪些文件 man tree bin 环境变量-PATH boot dev etc目录-配置文件 home-用户家目录 lib-库文件 怎样看命令所依赖的库 2.2 系统目录结构 media --媒体目录 mnt--挂载点 opt--安装软件的

08-Linux基础入门(六)-文件和目录的属性及权限之文件类型、文件扩展名及文件权限基础

一.Linux中的文件类型在Linux系统中,可以说一切(包括目录.普通文件.设备文件等)皆为文件.文件类型包含有普通文件.目录.字符设备文件.设备文件.符号链接文件.管道文件等等,当执行ls -l 或ls - al命令后可显示当前目录下的所有文件及文件夹: [[email protected] ~]# ls -l 总用量 40 -rw-------. 1 root root 1140 2月 5 04:28 anaconda-ks.cfg -rw-r--r--. 1 root root 2173

Linux用户和用户组以及相关命令(下)

用户和组管理的相关命令介绍以及使用: 大体上涉及到的命令有:useradd,usermod,passwd,userdel,groupadd,groupmod,gpasswd,groupdel,chage,chsh,chfn,id,w, who,whoami,su,finger 1.useradd:create a new user or update default new user information. 用法: useradd [options] LOGIN          userad

linux基础篇-22,硬盘相关命令ln df mknod fdisk

MBR:Master Boot record主引导记录(512byte字节) bootloader:446byte 标示分区:16byte标示一个分区(一共64byte) 标示MBR是否有效:2byte Magic Number ################################################ ln ln [选项]... 目标         (第二种格式) -s, --symbolic        创建符号链接而非硬链接 -v, --verbose