Linux学习进程(一)常用命令

目录

Linux常用命令

一 ,文件与目录的创建与删除

1.文件与目录的创建

2.文件与目录的删除

二,路径的改变与当前目录的查看

1.路径的改变

2.当前目录的查看

三,文件与目录的移动与拷贝

1.文件与目录的移动

2.文件与目录的拷贝

四,文件的搜索与查看

1.文件的搜索

2.文件的查看

五,权限命令

六,创建文件链接-ln


Linux常用命令

一 ,文件与目录的创建与删除

1.文件与目录的创建

1)touch在当前目录下创建文件

touch 命令不光可以用来创建文件(当指定操作文件不存在时,该命令会在当前位置建立一个空文件),此命令更重要的功能是修改文件的时间参数(当文件存在时,会修改此文件的时间参数)。 Linux 系统中,每个文件主要拥有 3 个时间参数(通过 stat 命令进行查看),分别是文件的访问时间、数据修改时间以及状态修改时间: 访问时间(Access Time,简称 atime):只要文件的内容被读取,访问时间就会更新。例如,使用 cat 命令可以查看文件的内容,此时文件的访问时间就会发生改变。 数据修改时间(Modify Time,简称 mtime):当文件的内容数据发生改变,此文件的数据修改时间就会跟着相应改变。 状态修改时间(Change Time,简称 ctime):当文件的状态发生变化,就会相应改变这个时间。比如说,如果文件的权限或者属性发生改变,此时间就会相应改变。

touch 命令的基本格式如下:
[root@localhost ~]# touch [选项] 文件名
选项:
-a:只修改文件的访问时间;
-c:仅修改文件的时间参数(3 个时间参数都改变),如果文件不存在,则不建立新文件。
-d:后面可以跟欲修订的日期,而不用当前的日期,即把文件的 atime 和 mtime 时间改为指定的时间。
-m:只修改文件的数据修改时间。
-t:命令后面可以跟欲修订的时间,而不用目前的时间,时间书写格式为 YYMMDDhhmm。
​
当对已经创建的文件使用touch时,默认修改文件的访问时间

2)mkdir创建目录

操作功能
mkdir dir1创建一个叫做 ‘dir1’ 的目录’
mkdir dir1 dir2同时创建两个目录
mkdir -p /tmp/dir1/dir2创建一个目录树
mkdir -m创建文件夹模式(读/写)

2.文件与目录的删除

文件的删除:

rm [options] name...

options:

  • -i 删除前逐一询问确认。

  • -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。

  • -r 将目录及以下之档案亦逐一删除。


目录的删除:

rmdir [-p] dirName

options:

  • -p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。

二,路径的改变与当前目录的查看

1.路径的改变

操作功能
cd进入个人的主目录
cd ~user1进入个人的主目录
cd /home进入 ‘/ home’ 目录’
cd …返回上一级目录
cd …/…返回上两级目录
cd -返回上次所在的目录
pwd显示工作路径

2.当前目录的查看

操作功能
ls查看目录中的文件
ls -F查看目录中的文件
ls -l显示文件和目录的详细资料
ls -a显示隐藏文件
ls -R递归显示当前目录下包含的子文件

三,文件与目录的移动与拷贝

1.文件与目录的移动

mv [options] source dest
mv [options] source... directory

options:

针对目标文件或目录存在时作相关讨论

  • -b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。

  • -i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。

  • -f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。

  • -n: 不要覆盖任何已存在的文件或目录。

  • -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

命令格式运行结果
mv source_file(文件) dest_file(文件)将源文件名 source_file 改为目标文件名 dest_file
mv source_file(文件) dest_directory(目录)将文件 source_file 移动到目标目录 dest_directory 中
mv source_directory(目录) dest_directory(目录)目录名 dest_directory 已存在,将 source_directory 移动到目录名 dest_directory 中;目录名 dest_directory 不存在则 source_directory 改名为目录名 dest_directory

2.文件与目录的拷贝

cp [options] source dest
cp [options] source... directory

options:

  • -a:相当于 -d、-p、-r 选项的集合,这几个选项我们一一介绍;

  • -d:如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接;

  • -i:询问,如果目标文件已经存在,则会询问是否覆盖;

  • -l:把目标文件建立为源文件的硬链接文件,而不是复制源文件;

  • -s:把目标文件建立为源文件的软链接文件,而不是复制源文件;

  • -p:复制后目标文件保留源文件的属性(包括所有者、所属组、权限和时间);

  • -r:递归复制,用于复制目录;

  • -u:若目标文件比源文件有差异,则使用该选项可以更新目标文件,此选项可用于对文件的升级和备用。

1)文件的复制

[root@localhost ~]# touch cangls
#建立源文件
[root@localhost ~]# cp cangls tmp
#把源文件不改名复制到 tmp 目录下

如果需要改名复制,则命令如下:

[root@localhost ~]# cp cangls tmp/bols
#改名复制

如果复制的目标位置已经存在同名的文件,则会提示是否覆盖,因为 cp 命令默认执行的是“cp -i”的别名


2)目录的复制

[root@localhost ~]# mkdir movie
#建立测试目录
[root@localhost ~]# cp -r root/movie tmp
#目录原名复制

3)保留源文件属性复制

我们发现,在执行复制命令后,目标文件的时间会变成复制命令的执行时间,而不是源文件的时间。而当我们执行备份、曰志备份的时候,这些文件的时间可能是一个重要的参数,这就需执行 "-p" 选项了。这个选项会保留源文件的属性,包括所有者、所属组和时间。

4)"-l"和"-s"选项

我们如果使用 "-l" 选项,则目标文件会被建立为源文件的硬链接;而如果使用了 "-s" 选项,则目标文件会被建立为源文件的软链接。

这两个选项和 "-d" 选项是不同的,"d" 选项要求源文件必须是软链接,目标文件才会复制为软链接;而 "-l" 和 "-s" 选项的源文件只需是普通文件,目标文件就可以直接复制为硬链接和软链接。

四,文件的搜索与查看

1.文件的搜索

find   path   -option   [-print ]   [-exec  -ok   command ]   {} \;

-print:将查找到的文件输出到标准输出 -exec command {} \; 将查找的文件执行command操作({}和\之间有空格,;必须加上)

-ok与exec相同,不过在操作之前要询问用户

options:

  • -mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件

  • -amin n : 在过去 n 分钟内被读取过

  • -anewer file : 比文件 file 更晚被读取过的文件

  • -atime n : 在过去n天内被读取过的文件

  • -cmin n : 在过去 n 分钟内被修改过

  • -cnewer file :比文件 file 更新的文件

  • -ctime n : 在过去n天内被修改过的文件

  • -empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name

  • -ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写

  • -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写

  • -size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。

  • -type c : 文件类型是 c 的文件。

    • d: 目录

    • c: 字型装置文件

    • b: 区块装置文件

    • p: 具名贮列

    • f: 一般文件

    • l: 符号连结

    • s: socket

将当前目录及其子目录中的所有文件列出:
# find . -type f
查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们:
# find /var/log -type f -mtime +7 -ok rm {} \;

2.文件的查看

操作功能
cat -s test.c终端多个空行合并成一个空行显示test.c内容
cat -b test.c终端加行号显示test.c内容
nl test.c查看文件直接显示行号
head test.c默认显示前10行内容
head -n test.c显示前N行内容
tail test.c默认显示后10行内容
tatil -n test.c显示后N行内容
tac test.c从最后一行开始反向查看文件内容
more test.c正向查看一个长文件的内容
less test.c反向查看
df -T打印文件系统类型

五,权限命令

Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。

img

只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号模式指定文件的权限。


chmod [-cfvR] [--help] [--version] mode file...
mode:权限字符串,格式如下:
[ugoa...][[+-=][rwxX]...][,...]
可以设置多个项目,每个项目的设置以逗号隔开
  • u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。

  • + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。

  • r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。

options:

  • -c : 若该文件权限确实已经更改,才显示其更改动作

  • -f : 若该文件权限无法被更改也不要显示错误讯息

  • -v : 显示权限变更的详细资料

  • -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)

  • --help : 显示辅助说明

  • --version : 显示版本

六,创建文件链接-ln

链接也分软硬

我们先来介绍一下软链接和硬链接的概念。

软链接,全称是软链接文件,英文叫作 symbolic link。这类文件其实非常类似于 Windows 里的快捷方式,这个软链接文件(假设叫 VA)的内容,其实是另外一个文件(假设叫 B)的路径和名称,当打开 A 文件时,实际上系统会根据其内容找到并打开 B 文件。

而硬链接,全称叫作硬链接文件,英文名称是 hard link。这类文件比较特殊,这类文件(假设叫 A)会拥有自己的 inode 节点和名称,其 inode 会指向文件内容所在的数据块。与此同时,该文件内容所在的数据块的引用计数会加 1。当此数据块的引用计数大于等于 2 时,则表示有多个文件同时指向了这一数据块。一个文件修改,多个文件都会生效。当删除其中某个文件时,对另一个文件不会有影响,仅仅是数据块的引用计数减 1。当引用计数为 0 时,则系统才会清除此数据块。

个人理解为:软链接是指将某个文件的路径和名称存在另一个文件中,而这个文件就叫做软链接,系统会自己根据路径和名称找到文件。而硬链接相当于是一个指针,直接指向该文件内容所在的内存数据块。


 ln [参数][源文件或目录][目标文件或目录]
 默认创建硬链接
 ln -s创建软链接

options:

  • b 删除,覆盖以前建立的链接

  • -d 允许超级用户制作目录的硬链接

  • -f 强制执行

  • -i 交互模式,文件存在则提示用户是否覆盖

  • -n 把符号链接视为一般目录

  • -s 软链接(符号链接)

  • -v 显示详细的处理过程

可以为文件创建硬链接和软链接,只能为目录创建软连接

为什么 ln 不允许硬链接到目录

Linux 系统中的硬链接有两个限制:

  1. 不能跨越文件系统。

  2. 不允许普通用户对目录作硬链接。

至于第一个限制,很好理解,而第二个就不那么好理解了。

我们对任何一个目录用 ls-l 命令都可以看到其链接数至少是 2,这也说明了系统中是存在基于目录的硬链接的,而且命令 ln-d(-d选项表示针对目录建立硬链接)也允许 root 用户尝试对目录作硬链接。这些都说明了系统限制对目录进行硬链接只是一个硬性规定,并不是逻辑上不允许或技术上不可行。那么操作系统为什么要进行这个限制呢?

这是因为,如果引入了对目录的硬连接就有可能在目录中引入循环链接,那么在目录遍历的时候系统就会陷入无限循环当中。也许有人会说,符号连接不也可以引入循环链接吗,那么为什么不限制目录的符号连接呢?

原因就在于,在 Linux 系统中,每个文件(目录也是文件)都对应着一个 inode 结构,其中 inode 数据结构中包含了文件类型(目录、普通文件、符号连接文件等)的信息,也就是说,操作系统在遍历目录时可以判断出其是否是符号连接。既然可以判断出它是否是符号连接,当然就可以采取一些措施来防范进入过大过深的循环层次,于是大部分系统会规定在连续遇到 8 个符号连接后就停止遍历。但是对于硬链接,由于操作系统中采用的数据结构和算法限制,目前是不能防范这种死循环的。

基于这样的考虑,系统不允许普通用户建立目录硬链接。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值