前情提要,最近选修一门Linux,故而留存一遍笔记,方便以后来看,纯自用,大佬们轻喷。 每次更新都会填充内容,会记录细节,但不会面面俱到。 想要学习的可以也参考教程链接:(本文也会以该课程的顺序,记录一些命令。)
课程相关链接
0.前提芝士
- linux 大小写敏感,在文件名取名时需要注意,hello.sh 和hello.Sh 是两个文件。
- linux 不以文件名后缀识别文件类型。
- linux 的根目录为 /,根目录下的所有文件和文件夹均以 / 开头。
- 文件名不能以 / 开头。
- 想到了再补充。
1.查看目录 - ls
1.1有关文件的一些零碎芝士
以 . 开头的文件和目录是隐藏文件或隐藏目录,它们在正常情况下不会被 ls 命令直接列出。这些文件和目录通常包含系统配置文件、用户设置文件或者其他程序需要的数据文件等。
- .: 单独的一个 . 表示当前目录,它是一个特殊的链接,指向当前目录本身。
- ..: 两个连续的 .. 表示父目录,它也是一个特殊的链接,指向当前目录的上一级目录。
1.2仅显示文件名称
ls -x 显示隐藏文件,ls -a 显示全部文件
ls -x
ls -a
1.3显示文件详细信息
ls -l
ls -all
其中 ls -l会显示总用量,ls -all会显示隐藏文件,这是二者不同的地方。
1.4解读文件信息
从左到右依次解读信息为:
文件类型 - 权限 - 文件链接数 - 文件所有者 - 文件所属组 - 文件大小 - 文件最后修改时间 - 文件名
- d: 表示这是一个目录(文件夹)。
- r: 表示读权限。如果这个权限被设置,用户可以读取文件的内容或者查看目录中的文件列表。
- w: 表示写权限。如果这个权限被设置,用户可以修改文件的内容,或者在目录中创建、删除或重命名文件。
- x: 表示执行权限。对于文件来说,这表示用户可以执行它,对于目录来说,这表示用户可以进入目录并访问其内容。
- -:表示该用户不具备相应的权限。
在 Linux 中,文件和目录的权限以一长串字符的形式表示,通常为 10 个字符,分为四个部分:
- 1.文件类型: 第一个字符指示了文件的类型,常见的类型包括普通文件(-)、目录(d)、符号链接(l)、管道(p)、套接字(s)等。
- 2.所有者权限: 接下来的三个字符表示了文件所有者的权限,分别是读取(r)、写入(w)和执行(x)权限。
- 3.所属组权限: 紧随所有者权限之后的三个字符表示了文件所属组的权限,也是读取、写入和执行权限。
- 4.其他用户权限: 最后三个字符表示了其他用户(非文件所有者且不属于文件所属组的用户)的权限,同样也是读取、写入和执行权限。
权限的数字表示法(一般为三位数): x 权限为1;w 权限为2;r权限为4,拥有多个权限则将权值相加。 从左到右依次为:所有者权限、所属组权限、其他用户权限 举例:754 表示为 rwxr-xr-- 举例:777 表示为 rwxrwxrwx
1.5想要知道某个命令的更多信息
推荐使用第一个,可以上下滑动,比较方便。
man ls
# 也可以有 man cd、 man date 等
ls --help
# 也可以有 cd --help、 date --help 等
2.打印 - echo
以下对输出的内容统称为字符串,这是一种不严谨的说法,本人也未去查证,仅仅为了方便理解。
2.1 简单的打印
echo hello world
2.2 原样输出&有关空格
如果输出的字符串有超过一个空格,或是想要原样输出的话,需要在字符串外加上双引号或单引号
echo hello world
#不加双引号输出 hello world(中间只有一个空格)
echo "hello world"
#输出 hello world(中间有六个空格)
2.3 输出换行(字符串中有转义字符)
-e 表示开启转义字符,字符串外必须加上单引号或双引号
echo -e "hello\nworld"
#输出为
#hello
#world
2.4 输出echo命令的路径
which echo
3.显示此刻时间 - date
date
#输出 2019年1月1日 星期一 15:36:47 CST 的类似格式
4.创建目录 - mkdir
4.1 创建在当前目录下创建目录
mkdir 目录名
4.2 mkdir -p 说明
该命令既可以创建多级目录,也可以不在当前目录下创建目录,取决于 -p 后的参数怎么写。
mkdir -p /try/test
#在根目录下创建 try 文件夹,然后在 try 文件夹中创建 test 文件夹
4.3 mkdir -m 说明
该命令可以创建多级目录,且指定权限。
mkdir -m 777 /try/test
#在根目录下创建 try 文件夹,然后在 try 文件夹中创建 test文件夹,并指定test文件夹的权限为 777(rwxrwxrwx)
5. 创建文件 - touch
5.1 基础用法
如果是创建多个文件,在后面加上空格,再写文件名即可。
touch 文件名1 文件名2
另一种批量创建文件的方法如下,注意数字之间必须只有两个点。
touch test{1..3}
#创建 test1 test2 test3 三个文件
5.2 更改文件的修改时间,感觉日常用不到,先占个坑,有空再写。
6.参数解释-由于后面部分的参数都是重复的,所以先总结一下。(后面提及会打*)
- -b:对文件操作会,如果遇到同名文件会备份如(mv,cp命令)
- --backup:同上,但有交互式询问。
- -i:interactive,交互式,在命令执行之前,会对用户发起询问,y执行,n不执行。
- -f:force,强制执行命令。
- -v:verbose,显示命令执行的详细信息。
- -r: recursive,递归执行命令,一般是对目录以及其子目录的整体执行命令。
7.移动文件 - mv
7.1 基础用法
在移动的时候也可以给文件重命名,但是要注意,重命名后文件名不能包含 /。
mv 源文件名 目标文件名
*7.2 mv --backup/mv -b
- --backup 会询问用户是否备份(y是n否),-b 直接备份。
- 该命令可以备份:具体操作时,将原来的目标文件复制在目标文件目录,加一个~后缀区分,而将源文件内容则会写入目标文件中。
mv --backup /A/a.txt /B/b.txt
#解释:假设条件 /B目录下已经存有 b.txt 文件
#该命令将已存在的b.txt文件复制一份,命名为 b.txt~
#再将源文件 a.txt 写入 b.txt 中
*7.3 mv -f
强制移动文件,若目标文件已经存在,则直接覆盖。
*7.4 mv -i
如果目标文件已经存在,则询问是否覆盖。
7.5 mv -n
如果目标文件已经存在,则不覆盖。
如果前三个参数(-f -i -n)出现多个,则最后一个生效。
7.5 mv -u
如果目标文件已经存在,且源文件比目标文件新,则覆盖。
8.复制文件\目录 - cp
8.1 基础用法
cp 源文件名 目标文件名
*8.2 cp --backup/cp -b
*8.3 cp -f
*8.4 cp -i
*8.5 cp -r
8.6 cp -l
创建硬链接,而不复制文件内容。
解释链接
链接分为两种,一种为硬链接(Hard Link),一种为软链接(Symbolic Link)。
- 硬链接:可以有很多个文件名指向同一个文件,修改任何一个都会同步修改。但只有所有硬链接都被删除,该文件才会被删除。这个特性很好地避免了重要文件误删。
- 软链接:类似于 Windows 下的快捷方式,可以创建多个文件名指向同一个文件,修改任何一个都不会同步修改。它实际上是一个特殊的文件,这个文件存储了原文件的路径。
9.删除文件(包括目录)
9.1. rmdir
该命令只能删除空目录,如果目录不为空,则会报错。
rmdir /try
#删除根目录下的 try 文件夹
#报错信息:rmdir: failed to remove '/try': Directory not empty
*9.2 rm -i
该命令作用于文件,会提示是否要删除该文件。 如果删除的是目录,报错信息:rm: cannot remove ‘/try’: Is a directory
*9.3 rm -f
该命令作用于文件。如果删除的是目录,和上面报同样的错。
*9.4 rm -r
删除该目录和目录下的所有子文件。
9.5 rm -d
删除空目录。
9.6 rm -rf
删除所有文件和目录。
10.切换目录 - cd
10.1 切换到父目录
切换到当前目录的子目录时,可以使用相对路径,其余情况一般使用绝对路径,当然还有下面这些例外。
cd ..
10.2 切换到根目录
cd /
10.3 切换到当前用户目录
cd ~
11.显示当前工作目录 pwd
显示绝对路径
pwd
12.更改文件权限 - chmod
12.1 基础用法
chmod abc 文件名
#这里的abc是权限的数字表示法,上面已经提及,不赘述。
12.2 还有其他方法,但异曲同工,一种基本够用,有空再补。
13.查看文件内容
13.1 cat
把文件的所有内容全部打印出来,如果文件内容过长,可能会显示不全,只显示最下面的部分:D。
cat 文件名
13.2 more
13.2.1 more -d
分页查看文件内容,进入了界面之后的操作解释如下:
- 空格键:下一页,到达最后一页会自动退出
- 回车键:下一行
- =:显示当前行号
- q:退出more命令
13.2.2 more -p
在显示下一页之前清除屏幕,而不是在当前页面的底部显示下一页的内容