Linux 目录和文件指令

目录

一、目录操作命令

1、pwd  显示当前工作目录的绝对路径 

2、mkdir  创建目录

3、cd  更改工作目录路径

4、ls  列出目录和文件

5、rmdir   删除空目录

6、rm   

二、文件操作命令

(一)文件基本操作

1、touch  创建空文件、更改文件时间

扫描二维码关注公众号,回复: 10749433 查看本文章

2、cp 复制文件和目录

3、mv 文件和目录改名、移动文件和目录路径

4、find 用于查找文件或目录

5、 which/whereis  查找文件或目录

(二)文件内容操作

1.cat 显示本文文件、连接文件内容

2.   more  分页显示文本文件

3.head 显示指定文件的前若干行

4.tail 查看文件末尾数据

5.  grep    在文件中搜索与字符串匹配的行输出

(三)文件链接与文件压缩

1、ln 文件链接

2、tar 文件打包、压缩

3、chmod设置基本权限

4、chown :修改文件的拥有者和从属用户组属性

5、ACL权限:给任何的用户或用户组设置任何文件/目录的访问权限


一、目录操作命令

首先区别一下根目录和家目录:

/  根目录,所有目录的起点

/home  初root以外的用户主目录都在这里

~  指代每个用户的主目录(/home/用户名)

1、pwd  显示当前工作目录的绝对路径 

注意:①绝对路径:指从根目录(/)开始到当前目录(文件)的路径;②相对路径:指从当前目录到其下子目录(文件)的路径,一般是 . (当前目录)或 .. (上一级目录)开始

❗ 以~开头的家目录下的路径其实是绝对路径

2、mkdir  创建目录

命令格式:  mkdir  [选项]  [目录]

  • 同时创建多个目录:mkdir d1,d2,d3(同时创建d1,d2,d3三个目录)
  • 创建包含子目录的目录:mkdir -p letter/important (创建名为 letter 的目录,在它的目录下包含有子目录 important)
  • 创建包含多个子目录的目录:mkdir -p ./folder/{fd1,fd2} (新建一个folder目录,folder下再新建两个目录fd1,fd2)

3、cd  更改工作目录路径

命令格式: cd  [目录]

  • cd  或 cd ~      <== 回到使用者的主目录/家目录
  • cd ~user         <== 回到user用户的家目录
  • cd ..                <== 回到上一层目录/上移到当前位置的父目录
  • cd ../..             <== 从当前位置上移两个级别
  • cd /home/flora/folder/fd2      <==绝对路径到fd2目录
  • cd ./folder/fd2                        <==相对路径到fd2目录
  • cd -                   <==返回上一次目录(如果不小心输入了cd并回车,到了主目录,则可使用此命令快速回到刚才执行的目录

   注意:家目录是login时所在的目录。

4、ls  列出目录和文件

命令格式: ls  [选项]  [目录] [文件]

  • 查看文件详情:ls -l 或 ll
  • 列出当前的位置(长格式)及隐藏文件:ls -la
  • 增强对文件大小易读性,以人类可读的形式显示文件大小: ls -lh
  • 按照时间顺序查看,从上到下时间越来越近(下面的是新文件): ls -ltr
  • 当前用户的主目录不是当前位置时,以最简单的语法列出该目录(长格式):ls –l ~
  • 查看文件对应的inode信息:ls -li

5、rmdir   删除空目录

命令格式:  rmdir  [选项]  [目录]

  • 删除空目录~/test1/test2 :rmdir -p test1/test2

6、rm   

删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是断开了链接,原文件保持不变。

命令格式:rm [选项] 文件/目录

选项说明:

-f    -force      直接强行删除,不作任何提示

-i    --interactive    进行交互式地删除,删除前逐一询问确认

-r | -R  --recursive     递归式地删除列出的目录下的所有目录和文件

-v      --verbose    详细显示进行的步骤

-rf                                           子目录及子目录中所有档案删除,并且不用一一确认

※注意,rm 命令是一个具有破坏性的命令,因为 rm 命令会永久性地删除文件或目录,这就意味着,如果没有对文件或目录进行备份,一旦使用 rm 命令将其删除,将无法恢复,因此,尤其在使用 rm 命令删除目录时,要慎之又慎。

  • 同时删除多个文件:rm   <filename1>   <filename2>
  • 如果删除具有相同字母开头的多个文件,可以用通配符。例如:rm  song? 
  • 要删除第一个字符为‘-’的文件 (例如‘-foo’),请使用以下其中一种方法:rm -- -foo 或  rm ./-foo
  • 删除work目录下的所有文件,但是不删除work目录本身:rm work/*

二、文件操作命令

(一)文件基本操作

1、touch  创建空文件、更改文件时间

命令格式: touch  [选项文件

  •  创建空文件file1file2 file3file4 :touch file1 ; touch file{2,3,4}
  • 将文件file1的时间记录改为3121930分 : touch -c -t 03121930 file1
  • 创建六个文件,以filmX.avi形式取名;(X编号从1-6):touch film{1..6}.avi
  • 创建3个隐藏文件 : touch .{a..c} 

2、cp 复制文件和目录

命令格式: cp  [选项]  [源文件|目录]  [目标文件|目录]

 

  • /etc/passwd文件复制到当前家目录的test文件夹中:cp   /etc/passwd    ~/test
  • 生成一个passwd_new文件,要求内容与passwd文件内容相同:① cd test  ② cp passwd passwd_new
  • ~/test目录下的所有内容复制到当前家目录,命名为testnew : cp  -r  test   test_new
  • 将fd3目录下所有的隐藏文件复制到fdd中:cp -r fd3/.[^.]* fdd

3、mv 文件和目录改名、移动文件和目录路径

命令格式:mv  [选项] [源文件|目录]  [目标文件|目录]

 

  • ~/test目录下的所有后缀名为”*.png”的文件移动到~/pic目录下: mv   ~/test/*.png   ~/pic

4、find 用于查找文件或目录

命令格式:find  [查找范围]  [选项]  [查找条件]

※ 如果用户没有指定查找范围,则find命令从当前目录开始搜索查找

注意:find中可以运用 ①与(-a) ;②或(-o);③非(!) 三种逻辑运算符来连接查找条件。

  • /etc目录下查找大于1MB小于10MB的文件: [root@localhost ~]# find /etc -size +1M -a -size  -10M

  • 在/tmp目录下查找大小大于1k,小于10M,在30分钟内被修改过的普通文件:find /tmp \( -size +1k -a -size -10M -a -mmin -30 -a -type f \) -ls .(其中将所有连接条件用圆括号括起来并且将圆括号用反斜杠来转义)

  • 搜索在/etc/中所有以host开头的文件:   [root@localhost ~]# find /etc -name "host*" -type f

  • 搜索当前目录中文件属主具有读写权限,并且文件所属组及其他用户具有读权限的文件:  [root@localhost ~]# find . -perm 644  -type f -exec ls -l {} \;

  • 查找当前目录及子目录下的名字包含my字符串的5天以内访问的文件;①并将他们删除,删除前需要用户确认,且显示删除过程:find -name “my*” –atime -5 –ok rm –v {} \; ②并将他们复制到一个目标目录下:find -name “my*” –atime -5 –exec cp {} myfolder \; (-exec 后面的{}代表前面搜索到的结果,\;代表转义结束)

5、 which/whereis  查找文件或目录

1which的命令格式:   which  命令

主要用来搜索二进制文件、可执行文件或者shell命令行的位置。

2whereis的命令格式:  whereis 命令

主要用来搜索二进制文件的位置、源代码的位置和man帮助文件位置。

例如:

[flora@localhost ~]$ which find
/usr/bin/find
[flora@localhost ~]$ whereis find
find: /usr/bin/find /usr/share/man/man1/find.1.gz /usr/share/man/man1p/find.1p.gz /usr/share/info/find.info-1.gz /usr/share/info/find.info-2.gz /usr/share/info/find.info.gz

(二)文件内容操作

1cat 显示本文文件、连接文件内容

命令格式:cat  [选项]  [文件]

注意:选项-s:不显示多余一个的空行,即多个空行只显示一个空行。 

例如: 假设有file1file2file3三个文本文件,将这三个文本文件连接起来输出到文本文件file4

            [user@localhost ~]$ cat file1 file2 file3>file4

2.   more  分页显示文本文件

命令格式:more  [选项]  [文件]

3.head 显示指定文件的前若干行

命令格式:head   -n  行数值  [文件]

※ 默认缺省显示文件的前10行内容。

显示/etc/passwd文件的前5行:head  -5  /etc/passwd

4tail 查看文件末尾数据

命令格式:tail  -n  行数值 [文件]

※ 默认缺省显示文件的后10行内容

显示/etc/passwd文件的后5行:tail  -5  /etc/passwd

5.  grep    在文件中搜索与字符串匹配的行输出

命令格式:grep  [选项查找条件  源文件

  •  要查找的字符串用双引号括起来
  • ^……”表示以……开头
  • ……$表示以……结尾
  • “^$”表示空行

★并且使用grep可以过滤其他命令的输出数据,也可用于在文件中进行检索   例如:ls -l|grep '3月'

  • grep "^$" test :筛test文件中的空行
  • grep -v "^$" test :将所有非空行输出,即不显示空行

eg:搜素/etc/passwd中指定以小写字母开头的行

ps: 若搜素以非小写字母开头的行:[flora@localhost file]$ grep -n -E "^[^a-z]" /etc/passwd (n:标示出行号,E:使用正则表达式)

(三)文件链接与文件压缩

1、ln 文件链接

 Linux系统中,内核为每一个新创建的文件分配一个inode号,文件属性保存在inode,访问文件时,inode被复制到内存里,从而实现文件的快速访问。

链接分为硬链接和软链接,命令格式:ln [选项源文件 [目标]

(1) 硬连接:

  • 链接文件和被链接文件必须位于同一个文件系统(分区)中(因为在不同的文件系统中,inode 号是重新计算的),并且不能建立指向目录的硬链接因为如果给目录建立硬链接,那么不仅目录本身需要重新建立,目录下所有的子文件,包括子目录中的所有子文件都需要建立硬链接,这对当前的 Linux 来讲过于复杂。)
  • 默认情况下,不加参数,ln产生硬链接两个文件具有相同的inode。
  • 建立硬链接文件,如果目标文件没有写文件名,会和原名一致

(2) 软连接: 

  • 符号连接可以用来建立在不同的文件系统之上,并且可以对目录建立符号连接.
  • 符号连接等价于建立了快捷方式。ln命令加参数 –s产生符号链接。
  • 软连接文件的原文件必须写成绝对路径

示例:t1是原文件,t2是硬链接文件,t3是软连接文件 

注意:

  • 修改原文件和硬链接、软连接中的任一个,另一个都会改变。
  • 如果删除原文件,不影响硬链接,但是符合链接文件失效。
  • 如果删除了原文件再重新给一个同路径同名文件,符合链接文件又会恢复,但是这个新文件与之前的硬链接却不同。 
  • 如果原文件改名,则符号链接失效(因为用的是文件名),硬链接不失效(因为是同一个inode号)。

2、tar 文件打包、压缩

Linux中常用的压缩文件格式为*.tar*.tar.gz*.tar.bz2其中.tar表示使用tar命令打包数据但是没有压缩.tar.gz表示使用tar命令打包文件并进行gzip压缩;.tar.bz2表示使用tar命令打包文件并进行bzip2压缩。

命令格式:tar  [参数打包文件名 文件

参数还可以是 ① --delete ,删除打包文件中的某个特定文件;② -A 合并两个打包文件

 

示例:

  • 将当前目录下的file.c文件添加到打包文件myfile.tar中:[user@localhost ~]$ tar  rvf  myfile.tar  file.c

  • 删除samplefile.tar中的file1文件 :tar -f samplefile.tar --delete file1  

  • 将my2.tar打包文件合并到my1.tar中去:tar -f my1.tar -A my2.tar

  • 将当前用户目录下的目录文件myfile包括的所有文件用tar命令打包,然后用gzip命令压缩,打包压缩后的文件名为 myfile.tar.gz   ==>  [user@localhost ~]$ tar -zcvf myfile.tar.gz myfile/

  • 查看myfile.tar.gz压缩文件的内容: [user@localhost ~]$ tar -ztvf myfile.tar.gz

  • tar命令解压经过bzip2压缩的tar文件(由于使用bzip2压缩,所以要加上j这个参数),将压缩文件myfile.tar.bz2解压到当前目录下。: [user@localhost ~]$tar -jxvf myfile.tar.bz2

3、chmod设置基本权限

※ 在Linux系统中,文件有三种访问权限:读read(r)、写write(w)和执行execute(x)。

(1)对于文件:

r: 读权限允许查看某个文件。

w:写权限允许你修改或删除某个文件。

x:执行权限允许你执行某个文件,执行权限只对可执行文件起作用,比如可执行的二进制文件或者是脚本文件,对其他格式的文件,执行许可没有任何作用。

(2)对于目录:

r:读权限允许你可以读出这个目录的内容,即可以使用Is命令来列出这个目录下的所有内容。

w:写权限表明你可以在这个目录下建立、删除和修改文件

X:执行权限是你可以搜索这个目录,可进入。因此,如果你没有对目录的执行权限,那么就不能使用ls -l命令来列出目录下的内容或者使用cd命令来切换目录

※ 只有系统管理员root用户和文件/目录的所有者才可以更改目录和文件的权限,使用chmod命令可以更改文件或目录的权限,一般有字符法和数字法两种。

1)字符法

chmod   [ugoa]  [+-=]  [rwx]  [文件或目录]

  • $chmod o+w my.txt       //my.txt文件的其他人增加读权限
  • $chmod ug+w,o-w my.txt  //my.txt文件的属主和属组增加写权限,其他人去除写权限
  • $chmod +w my.txt        //my.txt文件的所有用户增加写权限

2)数字法

chmod  nnn  [文件或目录]

nnn3位八进制数

  • 如数字777表示为111 111 111 rwxrwxrwx664表示为110 110 100  rw-rw-r

[flora@localhost fd3]$ ll test10.my
-rw-rw-r--. 1 flora flora 3001 3月  13 07:00 test10.my
[flora@localhost fd3]$ chmod 777 test10.my  //为所有用户添加所有权限
[flora@localhost fd3]$ ll test10.my
-rwxrwxrwx. 1 flora flora 3001 3月  13 07:00 test10.my

[flora@localhost fd3]$ ll test12.my
-rw-rw-r--. 1 flora flora 0 3月  13 06:18 test12.my
[flora@localhost fd3]$ chmod o+w test12.my  //为其他人添加写权限
[flora@localhost fd3]$ ll test12.my
-rw-rw-rw-. 1 flora flora 0 3月  13 06:18 test12.my

实例:开辟一个公共子目录/home/public,让它被所有的用户共享,而且拥有所有权限,但不能被非属主删除 

[root@localhost ~]#mkdir   /home/public

[root@localhost ~]#chmod  o+rwxt   /home/public

也可使用命令#chmod  777   /home/public #chmod  o+t   /home/public#chmod 1777  /home/public

//其中t为粘滞位,粘滞位主要用途:为公共目录(例如,权限为777的)设置,权限字符为“t 用户不能删除该目录中其他用户的文件。

4、chown :修改文件的拥有者和从属用户组属性

 必要参数:

    -c 显示更改的部分的信息

    -f 忽略错误信息

    -h 修复符号链接

    -R 处理指定目录以及其子目录下的所有文件

    -v 显示详细的处理信息

    -deference 作用于符号链接的指向,而不是链接文件本身

实例:

  • 将文件 file1.txt 的拥有者设为 runoob,群体的使用者 runoobgroup :   chown runoob:runoobgroup file1.txt
  • 将当前目录下的所有文件与子目录的拥有者皆设为 runoob,群体使用者 runoobgroup:  chown -R runoob:runoobgroup *

5、ACL权限:给任何的用户或用户组设置任何文件/目录的访问权限。

详细信息可以查看该链接https://www.cnblogs.com/sparkdev/p/5536868.html

发布了136 篇原创文章 · 获赞 54 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/Flora_SM/article/details/104562058