目录
一、创建文件、文件夹
1.创建文件
touch 指令 创建空文件
基本语法:
touch 文件名称
2.创建文件夹
mkdir
mkdir 指令用于创建目录(make directory)
基本语法: mkdir [选项] 要创建的目录
常用选项:
-p :创建多级目录
二、删除文件/文件夹
1、rm命令(常用)
使用 rm
命令删除文件夹的时候,一定要记得加上 -r
或 -R
选项,否则会报错。该选项表示递归删除文件夹,可以将该文件夹下的文件全部删除。加上 -f
选项将强制删除而不给任何提示。(慎用-f)
# 删除目录不加 -r 会报错
$ rm folder
rm: cannot remove ‘folder’: Is a directory
# 正确删除目录
$ rm -r folder
# 强制删除目录
$ rm -rf folder
例:
案例 1: 将 /home/aaa.txt 删除
案例 2: 递归删除整个文件夹 /home/bbb
强制删除不提示的方法:带上 -f 参数即可
2、 使用rmdir命令删除文件夹
rmdir命令是英文单词 remove directory
的缩写,主要作用是删除文件夹。但是请注意,该命令只能用于删除空文件夹,而如果文件夹非空的话,将会报错。
$ rmdir folder
rmdir: failed to remove ‘folder’: Directory not empty
所以如果需要使用 rmdir
命令删除一个文件夹的话,需要先将该文件夹清空再删除。
# 先清空文件夹
$ cd folder
$ rm -rf *
# 再使用 rmdir 命令删除该文件夹
$ cd ..
$ rmdir folder
三、Linux向文件中写入内容
echo命令:
1.覆盖写入
# 语法:echo '内容' > 文件名或路径
# 如向a.txt文件中输入i love u
# 如果没有这个文件则创建。如果有那么新内容代替原来的内容
echo 'i love u' > a.txt
2.追加写入
# 语法:echo '内容' >> 文件名或路径
# 向a.txt文件中输入i love u
# 如果没有这个文件则创建.如果有那么新内容追加在原来内容的后面
echo 'i love u' >>a.txt
3.窗口输出指定内容
echo "hello" # 窗口输出 hello
echo 'hello' # 窗口输出 hello
四、移动、复制文件及文件夹
1.移动
mv
mv 指令 :1.移动文件与目录 2.重命名
基本语法:
mv oldNameFile newNameFile (功能描述:重命名)
mv /temp/movefile /targetFolder (功能描述:移动文件或文件夹)
例:
案例 1: 将 /home/aaa.txt 文件 重新命名为 pig.txt
案例 2:将 /home/pig.txt 文件 移动到 /root 目录下
2.复制
cp
cp 指令 :拷贝文件到指定目录
基本语法:cp [选项] source dest
常用选项:
-i : 覆盖文件前提示
-r :递归复制整个文件夹
案例 1:
将 /home/aaa.txt 拷贝到 /home/bbb 目录下[拷贝单个文件]
案例 2: 递归复制整个文件夹,举例
将/home/test 整个目录拷贝到 /home/zwj 目录
强制覆盖不提示的方法:\cp
3、tree
-
tree 命令可以以树状图列出文件目录结构
五、查看、编辑文件
1.查看(ls、tail、cat、less)
ls
ls 指令 :显示当前目录下的文件及文件夹
基本语法:ls [选项] [目录或是文件]
常用选项:
-a :显示当前目录所有的文件和目录,包括隐藏的。
-l :以列表的方式显示信息
ls支持通配符:
通配符 含义
* 文件代表文件名中所有字符
ls te* 查找以te开头的文件
ls *html 查找结尾为html的文件
? 代表文件名中任意一个字符
ls ?.c 只找第一个字符任意,后缀为.c的文件
ls a.? 只找只有3个字符,前2字符为a.,最后一个字符任意的文件
[] [”和“]”将字符组括起来,表示可以匹配字符组中的任意一个。“-”用于表示字符范围。
[abc] 匹配a、b、c中的任意一个
[a-f] 匹配从a到f范围内的的任意一个字符
ls [a-f]* 找到从a到f范围内的的任意一个字符开头的文件
ls a-f 查找文件名为a-f的文件,当“-”处于方括号之外失去通配符的作用
\ 如果要使通配符作为普通字符使用,可以在其前面加上转义字符。“?”和“*”处于方括号内时不用使用转义字符就失去通配符的作用。
ls \*a 查找文件名为*a的文件
tail
tail 指令 :tail 用于输出文件中尾部的内容,默认情况下 tail 指令显示文件的后 10 行内容
基本语法:
tail 文件 (功能描述:查看文件后 10 行内容)
tail -n 5 文件 (功能描述:查看文件后 5 行内容,5 可以是任意行数)
tail -f 文件 (功能描述:实时追踪该文档的所有更新,工作经常使用)
cat
cat 指令 :查看文件内容,是以只读的方式打开
基本语法:cat [选项] 要查看的文件
常用选项:
-n :显示行号例:
查看 /etc/profile 文件内容,并显示行号
cat 只能浏览文件,而不能修改文件,为了浏览方便,一般会带上 管道命令 | more
cat 文件名 | more [分页浏览]
less
less 指令 :
less 指令用来分屏查看文件内容,它的功能与 more 指令类似,但是比 more 指令更加强大,支持
各种显示终端。less 指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示
需要加载内容, 对于显示大型文件具有较高的效率。
基本语法:less 要查看的文件
基本语法:less 要查看的文件
快捷键:
more
more 命令可以用于分屏显示文件内容,每次只显示一页内容
适合于 查看内容较多的文本文件
使用 more 的操作键:
操作键 | 功能 |
---|---|
空格键 | 显示手册页的下一屏 |
Enter | 键 一次滚动手册页的一行 |
b | 回滚一屏 |
f | 前滚一屏 |
q | 退出 |
/word | 搜索 word 字符串 |
grep
Linux 系统中 grep 命令是一种强大的文本搜索工具
安装:
#ubuntu
sudo apt-get install gedit
#centos
sudo yum install gedit
grep 允许对文本文件进行 模式查找,所谓模式查找,又被称为正则表达式。
选项 | 含义 |
---|---|
-n | 显示匹配行及行号 |
-v | 显示不包含匹配文本的所有行(相当于求反) |
-i | 忽略大小写 |
常用的两种模式查找
参数 | 含义 |
---|---|
^a | 行首,搜寻以 a 开头的行 |
ke$ | 行尾,搜寻以 ke 结束的行 |
2.编辑
我们想要对某个文件进行编辑时可以使用vi、vim编辑器
快捷键的使用案例:
1、拷贝当前行 yy , 拷贝当前行向下的 5 行 5yy,并粘贴(p)。
2、删除当前行 dd , 删除当前行向下的 5 行 5dd
3、在文件中查找某个单词 在正常模式下 /关键字 , 回车 查找 , 输入 n 就是查找下一个
4、设置文件的行号,取消文件的行号.[正常模式下 : set nu 和 :set nonu]
5、编辑 /etc/profile 文件,使用快捷键到底文档的最末行[G]和最首行[gg],注意这些都是在正常模式下执行的。
6、在一个文件中输入 “hello” ,然后又撤销这个动作,再正常模式下输入 u
3、gedit
也是一个文件编辑器
常用命令:
- CTRL-Z:撤销
- CTRL-C:复制
- CTRL-V:粘贴
- CTRL-T:缩进
- CTRL-Q:退出
- CTRL-S:保存
- CTRL—R:替换
- CTRL+Tab 切换
- CTRL+W 关闭选项卡
4、显示inode的内容:start
http://t.csdn.cn/HyTWg什么是inode:http://t.csdn.cn/HyTWg
stat [文件或目录]
六、文件访问权限
用户能够控制一个给定的文件或目录的访问程度,一个文件或目录可能有读、写及执行权限:
读权限(r) :对于文件,具有读取文件内容的权限;对于目录,具有浏览目录的权限。
写权限(w) :对于文件,具有修改文件内容的权限;对于目录,具有删除、移动目录内文件的权限。
可执行权限(x): 对于文件,具有执行文件的权限;对于目录,该用户具有进入目录的权限。
示例:
第1个字母代表文件的类型:
- “d” 代表文件夹
- “-” 代表普通文件
- “c” 代表硬件字符设备
- “b” 代表硬件块设备
- “s”表示管道文件
- “l” 代表软链接文件。
后9个字母分别代表三组权限:文件所有者、用户组、其他用户拥有的权限。
1、指令:chmod 设置文件的访问权限。
- +:增加权限
- -:取消权限
- u:拥有者
- g:拥有者同组用
- o:其它用户
- a:所有用户
使用比较简单,除了这种方法还有一个方式,这里可以把有权限当做1,没权限为0,那么三个二进制就是一个8进制。
三个8进制数赋权限,那么这里最大的权限是777,最小的是000。
2、更改文件所属者和拥有者:
更改拥有者和所属组要提高权限,要么使用root权限,要么使用sudo指令,不过这个指令要添加到配置文件才能使用。(文件拥有者也可以改,但是拥有者把拥有者改了,感觉很怪,结果还是要提高权限)
指令:chown(更改拥有者)
python@ubuntu:~/test$ ll h.txt
-rw------- 1 python python 4 11月 22 22:35 h.txt
python@ubuntu:~/test$ chown mike h.txt
chown: 正在更改'h.txt' 的所有者: 不允许的操作
python@ubuntu:~/test$ sudo chown mike h.txt
python@ubuntu:~/test$ ll h.txt
-rw------- 1 mike python 4 11月 22 22:35 h.txt
chgrp(更改所属组)
python@ubuntu:~/test$ ll h.txt
-rw------- 1 mike python 4 11月 22 22:35 h.txt
python@ubuntu:~/test$ sudo chgrp mike h.txt
python@ubuntu:~/test$ ll h.txt
-rw------- 1 mike mike 4 11月 22 22:35 h.txt
PS:没有更改其他人的指令,因为只要更改了拥有者和所属组相当于就更改了其他人了。
PS:如果自己同时有拥有者和所属组的权限,就只看拥有者不看所属者,因为这里权限值判断一次。
拓展:粘滞位
前面说了修改了目录文件的写权限,就可以删除目录下的文件,那么这里就有个问题,就是我自己写的文件,给别的用户开了权限后,别的用户就可以删除这个文件了,但是这是不好的,所以这里Linux引入了粘滞位的概念。
chmod +t 目录文件名 //添加粘滞位
chmod -t 目录文件名 //移除粘滞位
设置完粘滞位后会出现一个 t ,这样就可以让别的用户删除不了文件夹及其里面的文件了,但是自己可以删除自己的文件。
PS: 粘滞位只能给目录设置。 谁设置谁取消(root)。
七、文件链接
ln
每个文件都独自占用一个 inode,文件内容由 inode 的记录来指向;
如果想要读取文件内容,就必须借助目录中记录的文件名找到该文件的 inode,才能成功找到文件内容所在的 block 块;
ln 命令用于给文件创建链接,根据 Linux 系统存储文件的特点,链接的方式分为以下 2 种:
软链接:类似于 Windows 系统中给文件创建快捷方式,即产生一个特殊的文件,该文件用来指向另一个文件,此链接方式同样适用于目录。
硬链接:我们知道,文件的基本信息都存储在 inode 中,而硬链接指的就是给一个文件的 inode 分配多个文件名,通过任何一个文件名,都可以找到此文件的 inode,从而读取该文件的数据信息。
ln 命令的基本格式如下:
ln [选项] 源文件 目标文件
软链接:ln -s /home/myhome/test /home/myhome/tt
源 目标
在/home/myhome/下新建一个链接文件tt ,则tt文件夹了指向/home/myhome/test 文件,输入ls -l命令,可以查看到tt指向了test或者ln -s /home/myhome/test /home/myhome,在myhome下建立一个和test一样的名字的快捷方式
源 目标路径
在myhome下,可以看到test文件,,输入ls -l命令,可以查看到test指向了/home/myhometest
删除链接文件:rm -rf tt
写成 rm -rf tt/ ,这样会把链接源文件里的文件也删除掉的
选项:
-s:建立软链接文件。如果不加 “-s” 选项,则建立硬链接文件;
-f:强制。如果目标文件已经存在,则删除目标文件后再建立链接文件;
例 1】创建硬链接:
[root@localhost ~]# touch cangls
[root@localhost ~]# ln /root/cangls /tmp
例 2】创建软链接:
[root@localhost ~]# touch bols
[root@localhost ~]# In -s /root/bols /tmp
#建立软链接文件
**这里需要注意,软链接文件的源文件必须写成绝对路径,而不能写成相对路径(硬链接没有这样的要求);否则软链接文件会报错
软链接是可以链接目录的,**例如:
[root@localhost ~]# mkdir test
#建立源目录
[root@localhost ~]# ln -s /root/test/ /tmp/
要删除链接文件,输入:rm tmp -rf