Typecho合集站

一个喜欢Typecho站长搭建的站点,为能服务更多typecho用户

Linux 文件和目录操作命令


[/ul]


(1)pwd:显示当前所在位置

  1. 注意pwd命令和后面的选项之间至少要有一个空格。
  2. 通常情况下,执行pwd命令不需要带任何参数。
optionps
-Llogical首字母缩写,表示显示逻辑路径(忽略软链接文件),取pwd系统环境变量的值
-Pphysical首字母缩写,表示显示物理路径时如果当前目录路径是软链接文件,则会显示软链接对应的源文件

PWD系统环境变量,可以用“$”符号输出其值,代码如下:

[root@iZ8vb11v8r15ng6q0eb8dzZ ~]# echo $PWD
/root

在Bash命令行显示当前用户的完整路径。

PS1变量ps
\d代表日期,格式为 weekday month date 例:“Mon Aug 1”
\H完整的主机名称
\h仅取主机的第一个名字
\t显示时间为24小时格式 HH:MM:SS
\T显示时间为12小时格式
\A显示时间为24小时格式 HH:MM
\u当前用户账号
\vBASH 的版本信息
\w显示完整路径,其中家目录以~代替
\W利用basename获得当前目录名称,所以只会列出最后一个目录
#执行的第几个命令
$提示字符,如果是root,则提示为#,如果是普通用户,则为$

[root@iZ8vb11v8r15ng6q0eb8dzZ home]# echo $PS1
[\u@\h \W]$

[root@iZ8vb11v8r15ng6q0eb8dzZ home]# PS1="[\u@\h \w]$"

[root@iZ8vb11v8r15ng6q0eb8dzZ /home]$cd /etc/sysconfig

[root@iZ8vb11v8r15ng6q0eb8dzZ /etc/sysconfig]$

  1. 编辑/etc/bashrc文件,找到以下内容

[ “$PS1” = “\s-\v\$ " ] && PS1=”[\u@\h \W]\$ "

  1. 修改退出

[ “$PS1” = “\s-\v\$ " ] && PS1=”[\u@\h \w]\$ "

  1. 最后,注销并重新登录系统或直接执行source/etc/bashrc使得修改的信息生效

(2)cd:切换目录

  1. 注意cd命令以及后面的选项和目录,每个元素之间都至少要有一个空格。
  2. cd命令后面的选项和目录等参数都可以省略。默认情况下,单独执行cd命令,可切换到当前登录用户的家目录(由系统环境变量HOME定义)。
  3. cd是bash shell的内置命令,查看该命令对应的系统帮助需要使用help cd。
optionps
-P如果切换的目标目录是一个软连接,则会直接切换到软链接指向的真正的物理目标位置,和pwd命令的-P类似
-L功能与-P相反,如果切换目标是一个软链接,则会直接切换到软链接所在的目录,和pwd的-L选项类似
-从当前目录切换到系统环境变量OLDPWD对应值的目录路径,即当前用户上一次所在的目录路径
~从当前目录切换到系统变量HOME对应值的目录路径,即当前用户家目录所在路径
切换到当前目录的上一级目录所在路径

(3)tree:以树形结构显示目录下的内容

  1. 注意tree命令以及后面的选项和目录,每个元素之间都至少要有一个空格。
  2. tree命令后若不接选项和目录就会默认显示当前所在路径目录的目录结构。
optionps
-a显示所有文件,包括隐藏文件
-d只显示目录
-f显示每个文件的全路径
-L level遍历目录的最大层数,level为大于0的正整数
-F在执行文件、目录、Socket、符号连接、管道名称等不同类型文件的结尾,各自加上“*”、“/”、“-”、“@”、“|”号,类似ls指令的-F选项

rpm -qa tree

yum -y install tree

LANG=en_US.UTF-8

(4)mkdir:创建目录

  1. 注意mkdir命令以及后面的选项和目录,每个元素之间都至少要有一个空格。
  2. mkdir命令可以同时创建多个目录,格式为mkdir dir1dir2…

(5)touch:创建空文件或改变文件的间戳属性

  1. 是创建新的空文件
  2. 是改变已有文件的时间戳属性

语法

touch [option] [file]

  1. 注意区分touch和mkdir命令的功能,mkdir命令是创建空目录,而touch是创建空文件。
  2. 在Linux中,一切皆文件。虽然touch命令不能创建目录,但是可以修改目录的时间戳。
optionps
-a只改变指定文件最后访问时间
-d STRING使用字符串STRING代表的时间作为模板设置指定文件的时间属性
-m只更改指定文件最后的修改时间
-r file将指定文件的时间属性设置为与模板文件file的时间属性相同
-t STAMP使用[[CC]YY]MMDDhhmm[.ss]格式的时间设置文件的时间属性,格式的含义又从左到右依次为:世纪、年、月、日、时、分、秒

GNU/Linux的文件有3种类型的时间戳:

Access: 1985-11-05 15:33:34.991966181 +0800
Modify: 1985-11-05 15:33:34.991966181 +0800
Change: 1985-11-05 15:33:34.991966181 +0800

  1. Access 最后访问文件时间
  2. Modify 最后修改文件时间
  3. Change 最后改变文件状态时间

对应ls命令,查看上述时间戳的选项如下

  1. mtime: 最后修改时间(ls -lt) 修改文件内容,文件的修改时间(modify time)会改变。
  2. ctime:状态改变时间(ls -lc) 修改文件内容、移动文件或改变文件属性等,文件的change时间会改变。
  3. atime:最后访问时间(ls -lu) 查看文件内容时,文件的访问时间( access time)会改变。

(6)ls:显示目录下的内容及相关属性信息

  1. ls命令以及后面的选项和文件,每个元素之间都至少要有一个空格。
  2. 命令后面的选项和目录文件可以省略,表示查看当前路径的文件信息。
[root@hsforpyp /]$ls -lhi
total 20K
   24972 lrwxrwxrwx.   1 root root    7 May 11  2019 bin -> usr/bin
     147 dr-xr-xr-x.   5 root root 4.0K Nov 20 14:45 boot
    1026 drwxr-xr-x   19 root root 2.9K Dec 29 23:50 dev
     132 drwxr-xr-x.  94 root root 8.0K Jan  4 11:39 etc
50332430 drwxr-xr-x.   2 root root   23 Jan  4 11:59 home
   24976 lrwxrwxrwx.   1 root root    7 May 11  2019 lib -> usr/lib
     149 lrwxrwxrwx.   1 root root    9 May 11  2019 lib64 -> usr/lib64
     150 drwxr-xr-x.   2 root root    6 May 11  2019 media
16779732 drwxr-xr-x.   2 root root    6 May 11  2019 mnt
33614798 drwxr-xr-x.   2 root root    6 May 11  2019 opt
       1 dr-xr-xr-x  111 root root    0 Dec 29 23:50 proc
16777345 dr-xr-x---.   5 root root  228 Jan  4 11:39 root
   11624 drwxr-xr-x   30 root root  880 Dec 29 23:50 run
   24977 lrwxrwxrwx.   1 root root    8 May 11  2019 sbin -> usr/sbin
50332431 drwxr-xr-x.   2 root root    6 May 11  2019 srv
       1 dr-xr-xr-x   13 root root    0 Dec 30 07:50 sys
     148 drwxrwxrwt.   3 root root  126 Jan  4 12:21 tmp
16777371 drwxr-xr-x.  12 root root  144 Nov 20 14:36 usr
33575041 drwxr-xr-x.  21 root root 4.0K Nov 20 06:41 var

  1. inode索引节点编号
  2. 文件类型及权限
  3. 硬链接个数
  4. 文件或目录所属用户
  5. 文件或目录所属组
  6. 文件或目录的大小
  7. 文件或目录修改时间(7、8、9列)
  8. 实际的文件名或目录名

(7)cp:复制文件或目录

optionps
-P复制文件是保持源文件的所有者、权限信息及时间属性
-d如果复制的是符号链接、那么仅复制符号链接本身、而且保留符号链接所指向的目标文件或目录
-r递归复制目录、即复制目录下的所有层级的子目录及文件
-a等同于以上P、d、r三个选项之和
-i覆盖已有文件前提示用户确认
-t默认情况是“cp 源文件 目标文件”,使用-t可以颠倒顺序“cp -t 目标文件 源文件”

(8)mv:移动或重命名文件

(9)rm:删除文件或目录

optionps
-f强制删除。忽略不存在的文件、不提示确认
-i删除需要确认
-I删除超过三个文件或递归删除前要求确认
-r递归删除目录及其内容
  1. 用mv替代rm,不要急着删除,而是先移动到回收站/tmp。
  2. 删除前务必备份,最好是异机备份,若出现问题随时可以还原。
  3. 如果非要删除,那么请用find替代rm,包括通过系统定时任务等清理文件方法。
  4. 如果非要通过rm命令删除,那么请先切换目录再删除,能不用通配符的就不用通配符。对文件的删除禁止使用“rm-rf文件名”,因为“rm-rf”误删目录时并不会有提示,非常危险。最多使用“rm-f文件名”,推荐用“rm文件名”。

(10)rmdir:删除空目录

(11)ln:硬链接与软链接

optionps
无参数创建硬链接
-s创建软链接(符号链接)

链接分为硬链接(hard link)和软链接(符号链接,symbolic link)两种,它们的含义具体如下。

硬链接(Hard Link):创建语法为“ln源文件目标文件”,硬链接生成的是普通文件(-字符)。

软链接或符号链接(Symbolic Link or Soft Link):创建语法为“ln-s源文件目标文件(目标文件不能事先存在)”,软链接生成的是符号链接文件(l类型)。

硬链接是指通过索引节点(Inode)来进行链接。在Linux(ext2、ext3、ext4)文件系统中,所有文件都有一个独有的inode编号。在Linux文件系统中,多个文件名指向同一个索引节点(inode)是正常且允许的。这种情况下的文件就称为硬链接。硬链接文件相当于文件的另外一个入口。它的作用之一就是允许一个文件拥有多个有效路径名(多个入口),这样用户就可以建立硬链接到重要文件,以防止误删源数据。

  1. 具有相同inode节点号的多个文件互为硬链接文件。
  2. 删除硬链接文件或者删除源文件任意之一,文件实体并未被删除。
  3. 只有删除了源文件以及源文件所有对应的硬链接文件,文件实体才会被删除。
  4. 所有的硬链接文件及源文件被删除之后,再存放新的数据时会占用这个文件的空间,或者磁盘fsck检查的时候,删除的数据也会被系统回收。
  5. 硬链接文件就是文件的另外一个入口(相当于超市的前门后门)。
  6. 可以通过给文件设置硬链接文件,来防止重要文件被误删。
  7. 执行命令“ln源文件硬链接文件”,即可完成硬链接的创建。
  8. 硬链接文件可以用rm命令删除。
  9. 对于静态文件(没有进程正在调用的文件)来讲,当对应硬链接数为0(i_link)时,文件就会被删除。i_link的查看方法是ls-lih,查看结果的第三列,即硬链接数。

软链接或符号链接(Symbolic Link or Soft Link)有点像Windows里的快捷方式。

硬链接文件的类型是普通文件,而软链接是真正的链接文件(l)。

  1. 软链接类似于Windows的快捷方式(可以通过后面的readlink命令查看其指向)。
  2. 软链接类似于一个文本文件,里面存放的是源文件的路径,指向源文件实体。
  3. 即使删除了源文件,软链接文件也还是依然存在,但是无法访问指向的源文件路径内容了。
  4. 失效的时候一般是白字红底闪烁提示。
  5. 执行命令“ln-s源文件软链接文件”,即可完成创建软链接(软链接文件名事先不能存在)
  6. 软链接和源文件是不同类型的文件,也是不同的文件,inode号也不相同。
  7. 删除软链接文件可以使用rm命令。

(12)readlink:查看符号链接文件的内容

optionps
-f一直跟随符号链接,直到非符号链接的文件位置,但要保证最后必须存在一个非符号链接的文件

[root@iZ8vb11v8r15ng6q0eb8dzZ /]$ll -h /usr/bin/awk

lrwxrwxrwx. 1 root root 4 May 11 2019 /usr/bin/awk -> gawk

[root@iZ8vb11v8r15ng6q0eb8dzZ /]$readlink /usr/bin/awk

gawk

[root@iZ8vb11v8r15ng6q0eb8dzZ /]$readlink -f /usr/bin/awk

/usr/bin/gawk

(13)find:查找目录下的文件

  1. 注意find命令以及后面的选项和路径、操作语句,每个元素之间都至少要有一个空格。
  2. 注意子模块的先后顺序。

Linux  文件和目录操作命令

Linux  文件和目录操作命令

Linux  文件和目录操作命令

(14)xargs:将标准输入转换成命令行参数

optionps
-n指定每行最大参数量n,可以将标准输入的文本划分为多行,每行n个参数,默认空格分隔
-d自定义分隔符
-i以{}替代前面的结果
-I指定一个符号代替前面的结果,而不用-i参数默认的{}
-p提示让用户确认是否执行后面的命令,y执行,n不执行
-0(数字0)用 null 代替空格作为分隔符,配合find命令的-print0选项输出使用

(15)rename:重命名文件

  1. from:代表需要替换或处理的字符,一般是文件名的一部分,也包括拓展名
  2. to: 把前面的from代表的内容替换为to代表的内容
  3. file:待处理的文件,可以用“*”通配所有文件

使用范例

将所有文件的finished替换为空

rename “finished” “” *

将所有文件的.jpg替换为.png

rename .jpg .png *.jpg

(16)basename:显示文件名或目录名

去除路径部分,即只显示文件名

[root@iZ8 /home]$mkdir data/dir1 -p

[root@iZ8 /home]$touch data/dir1/file.txt

[root@iZ8 /home]$basename data/dir1/file.txt

file.txt

[root@iZ8 /home]$basename data/dir1/file.txt .txt

file

(17)dirname:显示文件或目录路径

只显示文件所在路径

[root@iZ8 /home]$dirname data/dir1/file.txt
data/dir1

给dirname一个相对路径,他也会返回相对路径(当前目录.)

[root@iZ8 /home]$cd data/dir1/

[root@iZ8 /home/data/dir1]$dirname file.txt
.

(18)chattr:改变文件的扩展属性

optionps
-R递归更改目录属性
-V显示命令执行过程


+增加参数
-移除参数
=更新为指定参数
A告诉系统不要修改这个文件的最后访问时间
a只能向文件中添加数据,而不能移除,多用于服务器日志文件安全
i设定文件不能删除、改名、写入或新增

设置只能往文件里追加内容,但不能删除文件。

chattr +a test

给文件加锁,使其只能是只读。

chattr +i file

chattr +a .bash_history

(19)lsattr:查看文件扩展属性

查看文件扩展属性

[root@iZ8 /home]$lsattr file.txt
-------------------- file.txt

[root@iZ8/home]$chattr +i file.txt

[root@iZ8 /home]$lsattr file.txt
----i--------------- file.txt

查看目录扩展属性

[root@iZ8 /home]$lsattr -d dir/

-------------------- dir/
[root@iZ8 /home]$chattr +i dir

[root@iZ8 /home]$lsattr -d dir/
----i--------------- dir/

(20)file:显示文件的类型

optionps
-b输出信息使用精简格式,不输出文件名

(21)md5sum:计算和校验文件的MD5值

optionps
-b二进制模式读取文件
-c从指定文件中读取MD5校验码,并进行校验
-t文本模式读取文件,这是默认模式
–quiet校验文件使用的参数,验证码通过不输出OK
–status校验文件使用的参数,不输出任何信息,可以通过命令的返回值来判断

利用md5sum命令来检验备份文件是否遭到损坏。

md5sum命令用于备份任务的指纹检查。每次在备份完成之后生成指纹文件,将备份和指纹文件发送到备份服务器上,在备份服务器上又会通过md5sum命令和校验文件校验备份是否正确。这样做的目的是为了在第一时间发现可能因为网络传输而造成的文件损坏。

(22)chown:改变文件或目录的用户和用户组

  1. 其中的 : 可以用 . 来代替
  2. 要授权的用户和组名,必须是Linux系统实际存在的。
optionps
-R递归更改目录的用户和用户组

# 更改文件所属用户属性

[root@iZ8 /home]$ll

total 0

-rw-r–r-- 1 root root 0 Jan 4 14:09 file.txt

drwx------ 2 testuser testuser 62 Jan 4 14:05 testuser

[root@iZ8 /home]$chown testuser file.txt

[root@iZ8 /home]$ll

total 0

-rw-r–r-- 1 testuser root 0 Jan 4 14:09 file.txt

drwx------ 2 testuser testuser 62 Jan 4 14:05 testuser

# 更改文件所属组属性

[root@iZ8 /home]$chown .testuser file.txt

[root@iZ8 /home]$ll

total 0

-rw-r–r-- 1 testuser testuser 0 Jan 4 14:09 file.txt

drwx------ 2 testuser testuser 62 Jan 4 14:05 testuser

(23)chmod:改变文件或目录权限

  • 选项

    optionps
    -R递归处理指定目录以及其子目录下的所有内容
  • [/ul]

    Linux  文件和目录操作命令

    Linux  文件和目录操作命令

    Linux  文件和目录操作命令

    (24)umask:显示或设置权限掩码

    创建文件默认最大的权限为666(-rw-rw-rw-),默认创建的文件没有可执行权限x位。

    对于文件来说,umask的设置是在假定文件拥有八进制666的权限上进行的,文件的权限就是666减umask(umask的各个位数字也不能大于6,比如077就不符合条件)的掩码数值,如果得到的3位数字其每一位都是偶数,那么这就是最终结果;如果有若干位的数字是奇数,那么这个奇数需要加1变成偶数,最后得到全是偶数的结果。

    1. umask 022 所有位为偶数

      6 6 6 # 文件的起始权限值

      0 2 2 - # umask 的值

      -----------

      6 4 4

    2. umask 045 其他用户组为奇数

      6 6 6 # 文件的起始权限值

      0 4 5 - # umask值

      6 2 1 # 计算出来的权限,由于umask最后一位是奇数5,所以,其他用户组位+1

      0 0 1 + # umask 对应的奇数位+1

      6 2 2 # 真实文件权限

    目录权限计算(没有奇偶之分)

    创建目录默认最大权限777(-rwx-rwx-rwx),默认创建的目录属主是有x权限的,允许用户进入。

    选项作用
    -p输出的权限掩码可直接作为命令来执行
    -S以字符方式输出权限掩码

    创建文件默认最大的权限为666(-rw-rw-rw-),默认创建的文件没有可执行权限x位。

    对于文件来说,umask的设置是在假定文件拥有八进制666的权限上进行的,文件的权限就是666减umask(umask的各个位数字也不能大于6,比如077就不符合条件)的掩码数值,如果得到的3位数字其每一位都是偶数,那么这就是最终结果;如果有若干位的数字是奇数,那么这个奇数需要加1变成偶数,最后得到全是偶数的结果。

    1. umask 022 所有位为偶数

      6 6 6 # 文件的起始权限值

      0 2 2 - # umask 的值

      -----------

      6 4 4

    2. umask 045 其他用户组为奇数

      6 6 6 # 文件的起始权限值

      0 4 5 - # umask值

      6 2 1 # 计算出来的权限,由于umask最后一位是奇数5,所以,其他用户组位+1

      0 0 1 + # umask 对应的奇数位+1

      6 2 2 # 真实文件权限

    目录权限计算(没有奇偶之分)

    创建目录默认最大权限777(-rwx-rwx-rwx),默认创建的目录属主是有x权限的,允许用户进入。

    对于目录来说,umask的设置是在假定文件拥有八进制777权限上进行,目录八进制权限777减去umask的掩码数值。


    上一篇 : Linux 基础命令
    下一篇 : Linux 系统自有服务基础

    发表新评论