(k8s-king-king)文件系统常用管理命令
2.1 目录操作管理命令
利用文件目录,可以分门别类的组织安排文件。日常文件系统管理中,常用的目录操作命令有pwd、cd、ls、mkdir和rmdir等。
(1)列出文件目录ls命令
在Linux系统中,使用ls命令可以列出当前目录中所有的子目录和文件信息。该命令语法格式为:
ls [选项] [目录或文件名称]
常用选项:
● -a:列出当前目录下所有文件,连同以“.”开头的隐藏文件。
● -d:仅列出目录本身,而不是列出目录内的文件数据。
● -l:长数据串列出,包含文件的属性与权限等数据。
● -R:显示指定目录及子目录下的文件。
(2)创建和删除目录mkdir、rmdir命令
① 创建目录
在Linux系统中,可以使用mrdir命令创建新目录,该命令语法格式为:
mkdir [选项] 目录名
● -m 模式:在建立目录时按照后面的模式强制设置新目录的权限。
● -p:创建目录时,如果父目录不存在,则同时创建该目录及该目录的父目录。
不加任何选项参数时只能创建单层目录。
使用mkdir命令创建目录实例如图2-1所示:
图2-1 创建目录
② 删除目录
Linux系统中使用rmdir命令可以删除已有的目录,一般情况下要删除的目录必须为空目录,如果目录不为空,则会报错。其语法格式为:
rmdir [-p] 目录名称
● -p:在删除目录时,一并删除父目录,同时也要求父目录中没有其他目录或文件。
使用rmdir命令删除空目录实例如图2-2所示:
图2-2 删除目录
(3)显示和切换工作目录
① Linux系统中,pwd命令用于显示当前所在的目录,语法格式为:
pwd [-p]
选项说明:
● -p:显示出当前路径,而非使用连接(link)路径。
不加任何选项的pwd命令,只单纯显示出当前的工作目录,用法如图2-3所示。
图2-3 pwd命令使用结果示例
② 切换工作目录
在Linux系统中,切换当前工作目录使用cd命令,其语法格式为:
cd [相对路径或绝对路径]
如果没有指定目录,就返回到用户主目录。cd命令与特殊目录结合在一起使用可以达到更高效的目的,主要用法如下:
● cd .:切换到当前工作目录,单纯一个“.”没有什么意义,但与目录或文件名相结合会很有用,尤其当不知道工作目录的绝对路径时。
● cd …:切换到上一层目录。
● cd -:切换到前一个工作目录(注意:不一定是上一层目录)。
● cd ~:切换到目前用户身份所在的主文件夹。
● cd ~account:切换到account该用户的主文件夹,其中account是账户名称。
● 绝对路径:其表示方法由根目录/写起,例如:/usr/share/test1。
● 相对路径:其表示不是由/写起,例如由/usr/share/test1到/usr/share/test2目录下时,可以使用cd …/test2。
2.2 文件操作命令
在Linux系统中有很多文件操作命令,按照功能进行划分,包括类型查看、文件建立、复制、删除、移动等多种类型,下面介绍几种常用的文件操作命令。
(1)查看显示文件内容命令
Linux系统中查看文件内容常用的命令有cat、more、less、head、tail等。
① cat命令
cat命令的功能是由第一行开始显示文件内容,cat是一个文本文件查看和连接工具,可以合并文件。语法格式为:
cat [选项] [文件] …
常用选项说明:
● -n:对输出的所有行编号。
● -b:对非空输出行编号,开始为1。
● -s:将相连的多个空行用一个空行代替。
● -v:列出一些看不到的特殊符号。
● -E:将结尾的断行字符$显示出来。
● -e:在每行末尾显示$符号,等价于-vE。
● -T:将Tab按键以 ^I 显示出来。
● -A:显示不可打印字符,行尾显示$,等价于-vET。
实例:显示test.txt文件内容,同时显示行号。输入命令cat -n test.txt,查看结果如图2-4所示。
图2-4 cat命令查看结果
② more命令
more命令的功能与cat命令类似,它适合显示长文件内容,可以在终端按一页一页的方式显示文件内容,按空格键space继续显示下一页,按退格键Backspace显示上一页,同时还有搜寻字串的功能。其语法格式为:
more [选项] 文件
常用选项说明:
● +num:从第num行开始显示;
● -num:num为一次显示的行数,即一次显示几行内容的意思;
● -c:从顶部清屏然后显示;
● -d:用于提示用户,在屏幕下方显示“Press space to continue, ‘q’ to quit”(按Space键继续,按Q键退出),禁用响铃功能;
● -p:通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似;
● -s:将连续的多个空行显示为一行;
● +/pattern:在每个文件显示前搜索pattern字符串,然后从该字符串前两行之后显示。
more命令常用操作:
● =:输出当前行的行号;
● q:退出more命令;
● Ctrl+F:向下滚动一屏;
● Space键:向下滚动一屏;
● Ctrl+B:返回上一屏。
实例:设置第2行开始显示 text.txt 文件内容,可以使用命令more +2 test.txt。设置每屏1行显示test.txt文件内容,可以使用命令more -1 test.txt。
显示结果如图2-5所示:
图2-5 more显示结果
我们列一个目录下的文件,由于内容太多,则可配合more命令来分页显示,如ls –l|more。
③ less命令
less命令也是对文件或其它输出进行分页显示的工具,应该说是Linux正统查看文件内容的工具,功能极其强大。其语法格式:
less [选项] 文件
常用选项说明:
● -e:当文件显示结束后,自动离开;
● -f:强制打开特殊文件,例如外围设备代号、目录和二进制文件;
● -i:忽略搜索时的大小写;
● -m:显示类似more命令的读取百分比;
● -M:显示读取文件的百分比、行号及总行数;
● -N:显示每行行号;
● -s:显示多个连续空行为一行。
less命令常用操作:
● /字符串:向下搜索字符串功能;
● ?字符串:向上搜索字符串功能;
● b:向前翻一页;
● d:向后翻半页;
● q:退出less命令;
● Space键:向后翻一页;
● ↑键:向上翻动一行;
● ↓键:向下翻动一行。
实例:显示test.txt文件时显示行号,可以使用命令less -N test.txt,显示结果如图2-6所示。
图2-6 less显示结果
④ head命令
head命令主要是用来显示文件的开头至标准输出中,默认head命令打印其相应文件的开头10行。其语法格式为:
head [选项] 文件
常用选项说明:
● -n:设置显示的行数;
● -c:设置显示的字节数;
● -q:隐藏文件名;
● -v:显示文件名。
实例,显示test.txt文件的前2行,可使用如下命令:
[root@localhost ~]# head -n 2 test.txt
Welcome to Linux!
This is a test!
⑤ tail命令
tail命令主要用于显示指定文件末尾内容。常用查看日志文件。其语法格式:
tail [选项] 文件
常用选项说明:
● -n:设置显示的行数;
● -c:设置显示的字节数;
●-f:循环读取;
● -q:不显示处理信息;
● -v:显示处理信息。
实例,显示test.txt文件的最后2行,可使用如下命令:
[root@localhost ~]# tail -n 2 test.txt
This is a test!
This is a new filet!
⑥ stat命令
stat命令主要用于显示文件或文件系统的详细信息,包括inode、atime(访问时间)、mtime(修改时间)、ctime(状态改动时间)。其语法格式为:
stat [选项]
常用选项说明:
● -f:不显示文件本身的信息,显示文件所在文件系统的信息;
● -t:简洁模式,只显示摘要信息;
例如,使用stat命令查看test.txt文件的详细信息,操作命令及结果如下:
[root@localhost ~]# stat test.txt
File: ‘test.txt’
Size: 54 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 67146832 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2021-02-21 07:13:50.471833354 -0500
Modify: 2021-02-01 09:08:29.414099751 -0500
Change: 2021-02-01 09:08:29.414099751 -0500
Birth: -
[root@localhost ~]# stat -t test.txt
test.txt 54 8 81a4 0 0 fd00 67146832 1 0 0 1613909630 1612188509 1612188509 0 4096 unconfined_u:object_r:admin_home_t:s0
[root@localhost ~]#
使用ls、stat命令不会改变文件的atime。
⑦ cut命令
cut命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。其语法格式为:
cut [选项] …
常用选项说明:
● -b:提取指定字节,这些字节位置忽略多字节字符边界,除非指定了-n标志;
● -c:提取指定字符,可以是以逗号分隔的数字的列表,也可以是以连字符分隔的数字的范围;
● -d:指定分隔符,默认为制表符Tab;
● -f:提取指定字段;
● -n:与-b选项一起使用,不分割多字节字符。如果字符的最后一个字节落在由-b标志的List参数指示的范围之内,该字符将被写出;否则,该字符将被排除。
● 参数file:表示指定进行内容过滤的文件,如果不指定file参数,cut命令将读取标准输入。cut命令必须指定-b、-c或-f标志之一。
cut命令可以将一串字符作为列来显示,字符字段的范围表示:
● N-:从第N个字节、字符、字段到结尾;
● N-M:从第N个字节、字符、字段到第M个字节、字符、字段;
● -M:从第1个字节、字符、字段到第M个字节、字符、字段。
例如,打印当前目录下test.txt文件中每行的前两个字符,命令及结果如下:
[root@localhost ~]# cut -c-2 test.txt
We
Th
Th
(2)文件内容统计命令——wc命令
Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。其语法格式:
wc [选项] 文件…
该命令中如果没有指定文件,或者文件为“-”,则从标准输入读取数据。wc命令中常用的选项说明如下:
● -c:统计字节数;
● -l:统计行数;
● -m:统计字符数,不能与-c同时使用;
● -w:统计单词数;
● -L:打印最长长度
这些选项可以组合使用,输出列不受选项和数目的影响,总是按下述顺序显示行数、字数、字节数、文件名。
例如,显示当前目录中test.txt文件的统计信息执行命令及结果如下:
[root@localhost ~]# wc -lcw test.txt
3 12 54 test.txt
(3)排序命令——sort命令
sort命令将文件的每一行作为一个单位,相互比较。比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。其语法格式为:
sort [选项] 文件
常用选项说明:
● -m:将几个排序好的文件进行合并;
● -c:检查文件是否已经按照顺序排序,如未排序,会提示从哪一行开始乱序,最后返回1;
● -u:忽略相同行,对排序后相同的重复行只留其中的第一行;
● -o :将排序后的结果存入指定的文件;
● -r:按逆序输出排序结果,及按降序输出;
● -f:将小写字母都转换为大写字母来进行比较,亦即忽略大小写;
● -b:忽略每行前面开始的空格字符,从第一个可见字符开始比较;
● -d:只根据英文字母、数字及空格排序,忽略其他的字符;
● -i:只排序可打印字符,忽略非打印字符;
sort会读取参数指定的文件,如果未给定文件,则读取标准输入,再将排序好的数据写至标准输出。
例如,对test.txt文件按照字典顺序进行排序,命令及结果如下:
[root@localhost ~]# sort -d test.txt
This is a new file.
This is a test!
Welcome to Linux!
(4)比较文件内容命令
① comm命令
comm命令用于比较两个有序文件,并将其结果显示出来。其语法格式:
comm [选项]
其中file1和file2是已排好序的文件,如果用“-”表示file1或fiie2,则表示标准输入。
选项说明:
● -1:不显示,只在第1个文件里出现的行;
● -2:不显示,只在第2个文件里出现的行;
● -3:不显示,同时出现在两个文件中的行。
选项1、2、3可以单独使用也可以组合使用,用来限定列显示。例如,comm-12表示只显示两个文件中都出现的行内容;comm -13表示只显示出现在文件2中的行内容;如果没有指定任何选项,则会把结果分成3列显示:第一列仅显示在file1中出现的行,第二列仅显示在file2中出现的行,第三列显示在file1、file2中都出现的行。comm应用实例如图2-7所示。
图2-7 comm命令结果
② diff命令
diff命令用来逐行比较两个文件,列出他们的不同之处,并且告诉用户为了使两个文件一致,需要修改哪些行;如果两文件完全一致,则该命令不显示任何输出。如果file1或file2是目录,那么diff将使用该目录中的同名文件进行比较。其语法格式:
diff [选项]
常用选项说明:
● -a:将所有文件当作文本文件来处理;
● -b:忽略空格,如果两行进行比较,多个连续的空格会被当作一个空格处理,同时会忽略掉行尾的空格差异;
● -B:忽略空白行;
● -i:忽略两个文件中大小写的不同;
● -y:输出两列,一个文件一列;
● -e:将比较的结果保存成一个ed脚本,之后ed程序可以执行该脚本文件,从而将file1修改成与file2的内容相同,这一般在patch的时候有用。
例如,使用diff命令比较aaa.txt和bbb.txt两个文件,结果如图2-8所示。
图2-8 diff比较结果
(5)字符替换/删除命令——tr命令
tr命令用来从标准输入中通过替换或删除操作进行字符转换。其语法格式:
tr [选项]
常用选项说明:
● -c:用所有不属于字符集1的字符替换此字符集,字符集要求为ASCII;
● -d:删除字符集1中所有输入字符;
● -s:把连续重复的字符压缩为一个字符表示;
● -t:先删除字符集1比字符集2多出的字符。
● 参数-字符集1:指定要转换或删除的原字符集。
● 参数-字符集2:指定要转换成的目标字符集。
在当执行转换操作时,必须使用参数“字符集2”指定转换的目标字符集;但执行删除操作时,不需要参数“字符集2”。
指定字符集1或字符集2的内容时,只能使用单字符或字符串范围或列表,如:[a-z]、[A-Z]、[0-9]
例如,将test.txt文件中所有小写都转换为大写,命令如下所示:
[root@localhost ~]# cat test.txt|tr '[a-z]' '[A-Z]'
WELCOME TO LINUX!
THIS IS A TEST!
THIS IS A NEW FILE.
(6)创建文件——touch命令
Linux中touch命令有两个功能:一是用来创建新的空文件;二是改变已有文件的时间戳属性。其语法格式为:
touch [选项]
常用的选项说明:
● -a:只更改存取时间;
● -m:只更改变动时间;
● -c:不建立任何文件;
● -d:使用指定的日期时间,而非现在的时间;
● -t:使用指定的日期时间,而非现在的时间;
● -f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题;
● -r:把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同。
例如,在当前目录下新建文件testfile,可以使用命令:
[root@localhost ~]# touch testfile
(7)文件复制、移动、删除命令
① 文件复制命令——cp命令
Linux中的cp命令用于复制文件或目录,其语法格式为:
cp [选项] 源文件 目标文件
cp [选项] 源文件组 目标目录
常用选项说明:
● -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容,其作用等于dpR参数组合;
● -b:覆盖已存在的文件目标前将目标文件备份;
● -d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
● -f:覆盖已经存在的目标文件而不给出提示;
● -i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答“y”时目标文件将被覆盖;
● -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中;
● -R/r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件;
● -l:不复制文件,只是生成链接文件。
如果把一个文件复制到一个目标文件中,而目标文件已经存在,那么,该目标文件的内容将被破坏。此命令中所有参数既可以是绝对路径名,也可以是相对路径名,常会用到“.”或“…”的形式。
例如,将当前目录下的test.txt文件复制到home目录下。命令及结果如下:
[root@localhost ~]# ls /home
testfile yyx
[root@localhost ~]# cp test.txt /home/test1.txt
[root@localhost ~]# ls /home
test1.txt testfile yyx
② 文件移动命令——mv命令
mv命令的功能是移动或重命名文件,是Linux系统下常用的命令,经常用来备份文件或者目录。其语法格式:
mv [选项]
mv [选项]
主要选项参数说明:
● -b:当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份;
● -f:强制执行模式,如果指定移动的源目录或文件与目标的目录或文件同名,不询问直接覆盖;
● -i:如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖,输入y表示直接覆盖,输入n表示取消该操作;
● -n:不要覆盖任何已存在的文件或目录;
● -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
当第二个参数类型是文件时,mv命令可以完成文件重命名,此时,源文件只能有一个,它将指定的源文件或目录重命名为给定的目标文件名;当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。
例如,将当前目录下test1.txt文件更改为test2.txt,操作命令如下:
[root@localhost ~]# mv test1.txt test2.txt
将当前目录下test.txt、test1.txt文件移动到home目录下,如果需要覆盖时询问。操作命令如下:
[root@localhost ~]# mv -i test.txt test1.txt /home
mv: overwrite ‘/home/test.txt’? y
mv: overwrite ‘/home/test1.txt’? y
③ 文件删除命令——rm命令
rm命令其功能是删除一个或多个文件或目录,且一旦删除不可恢复,rmdir 只能删除目录但不能删除文件,要想删除一个文件,则需要用rm命令。其语法格式如下:
rm [选项] 文件列表
常用选项说明:
● -f :指定强行删除模式,即直接删除,不需提示确认;
● -i :指定交互模式,当执行删除命令之前逐一提示确认,输入y 确认删除,否则取消删除操作;
● -r :当删除指定目录时,加该选项,如果不加该选项rm不能删除目录。
● 参数-文件列表:表示要删除的文件列表,多个文件之间用空格隔开,可以包括目录名。默认情况下rm命令能删除指定的文件,不能删除目录;但是如果给定了选项“-r”,就可以删除指定的整个目录及其所包含的子目录与文件。
例如,删除home目录下的test.txt文件,并提示询问。执行命令如下:
[root@localhost ~]# rm /home/test.txt
rm: remove regular empty file ‘/home/test.txt’? y
④ dd命令
dd命令其功能是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。其语法格式如下:
dd
参数说明:
● if=文件名:输入文件名,缺省为标准输入,即指定源文件。
● of=文件名:输出文件名,缺省为标准输出,即指定目的文件。
● ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
● obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
● bs=bytes:同时设置读入/输出的块大小为bytes个字节。
● cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
● skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
● seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。
● count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
● conv=conversion:用指定的参数转换文件,其中conversion表示的类型如下:
a) ascii:转换ebcdic为ascii;
b) ebcdic:转换ascii为ebcdic;
c) ibm:转换ascii为alternate ebcdic;
d) block:把每一行转换为长度为cbs,不足部分用空格填充;
e) unblock:使每一行的长度都为cbs,不足部分用空格填充;
f) lcase:把大写字符转换为小写字符;
g) ucase:把小写字符转换为大写字符;
h) swab:交换输入的每对字节;
i) noerror:出错时不停止;
j) notrunc:不截短输出文件;
k) sync:将每个输入块填充到ibs个字节,不足部分用NUL字符补齐。
注意:dd命令中指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512;c=1;k=1024;w=2。
例如,将test.txt文件中的所有英文字母转换为大写,然后转成为test1.txt文件,可以使用命令:
[root@localhost ~]# dd if=test.txt of=test1.txt conv=ucase
0+1 records in
0+1 records out
54 bytes (54 B) copied, 0.0176795 s, 3.1 kB/s
[root@localhost ~]# cat test1.txt
WELCOME TO LINUX!
THIS IS A TEST!
THIS IS A NEW FILE.
[root@localhost ~]# cat test.txt
Welcome to Linux!
This is a test!
This is a new file.
2.3 文件和目录的权限管理文件目录权限管理命令功能及应用.mp4
Linux是多用户操作系统,其文件和目录是根据不同用户来划分的,其中每个用户和目录都包含访问权限,这些权限决定了哪些用户能访问和如何访问这些目录和文件。
(1)权限的表示
① 用户基础概念
在Linux中,将使用系统资源的用户分为4类:超级用户、文件或目录的属主、属主的同组人和其他人员。每个用户必须属于一个组,每个文件都由所有者、所在组、其它组的概念。
● 所有者(owner):拥有该文件的用户,一般拥有该目录和文件的所有权限。
● 所在组(group):用户所在组,该文件所在组就是用户所在组,一般来说组内用户同时具有某些权限。
● 其它组(others):除了文件所有者和所在组的用户外,系统其它用户都是文件的其它组,一般比前两者的权限小。
② 基本的权限表示
文件和目录的权限总体来讲,可分为三种:读“r”、写“w”和执行“x”。三种权限的具体含义如下:
● r(read):读取权限,说明可读取此文件或目录的内容,对目录来讲表示可以列出目录中的内容。
● w(write):写入权限,可以编辑、新增或修改文件,对目录来讲表示可以对目录进行删除、重命名等操作。
● x(execute):执行权限该文件具有被执行的权限,对于目录来讲,表示可在目录中进行搜索。
三种权限的组合表示了系统中该文件或目录的使用权限,由r、w和x三个顺序组成一组,共分三组来表示文件或目录的权限,没有相应权限就使用“-”代替,如图2-9示。
图2-9 当前目录信息
图2-9中,每一行表示一个文件或目录的信息。第一个字符表示该行是文件还是目录,“d”表示目录,“-”表示文件。紧接其后的九个字符指定了不同用户对文件或目录的权限,前三个字符表示所有者的权限;中间三个字符表示所在组其他成员的权限;后面三个字符表示系统中其他人的权限。例如在图2-9中目录test1的权限信息rwxrwxr-x表示所有者yyx具有可读写执行权限,组yyx中其他人具有可读写执行权限,系统中其他人只具有读取和执行权限。文件file1的权限信息rw-rw-r–表示所有者yyx具有可读写权限,组yyx中其他人具有可读写权限,系统中其他人只具有读取权限。
三种权限还可以用数字表示:读取权限r是4,写w权限是2,执行权限x是1,没有权限用0表示。文件和目录的权限可以用三组权限的数字和来表示,如:
● rwxrwxr-x:可以用数字775(4+2+1,4+2+1,4+0+1)表示;
● rw-rw-r–:可以用数字664(4+2+0,4+2+0,4+0+0)表示。
(2)更改权限
① 更改文件或目录权限
Linux系统中,修改文件或目录的权限可以使用chmod命令,其语法格式为:
chmod [权限数字表示] 文件或目录名
例如,修改文件file1的权限为rwxr–r--:
[yyx@localhost ~]$ chmod 744 file1[yyx@localhost ~]$ ls -l file1-rwxr--r--. 1 yyx yyx 0 Feb 7 06:08 file1
② 更改用户的所有者、所在组
改变文件所有者可以使用chown命令,语法格式为:
chown 用户名 文件或目录名
注意:目标用户必须在/etc/passwd下存在。
改变文件用户组可以使用chgrp命令,语法格式为:
chgrp 用户组名 文件或目录
注意:要改变的组名必须在/etc/group下存在。
- 点赞
- 收藏
- 关注作者
评论(0)