目录
Linux的目录
-
上面展示的是在你输入命令前,一定出现的信息,而这三个部分都有不同的含义:
-
红色:用户名
黄色:主机名
紫色:当前所在目录
所以,这三个信息非常重要,在输入命令的时候,一定要注意自己所在的目录,不要犯操作错目录这种低级错误。
-
而在Linux中,目录有很多,其中有两个比较特殊:
-
/
:根目录
~
:家目录
Linux 中根目录就像是一栋公寓,拥有很多的房间;你拥有一间房子,在这间房子里可以为所欲为,这个房子可以看成是家目录;其他的只能望而却步,那些是其他目录;但是在这栋大楼中有一个神,root 管理员,他可以随意操控这座大楼里的任何事物;它的结构可以用如下图表示:
文件信息
在 Linux 中,有一个理念,就是一切皆文件,所以要会看懂一个文件的信息是十分重要的;那么我们在终端中输入:ll
,敲回车,就可以查看到文件详细信息;
-
在上图中,每一段都有不同的属性:
-
1:文件属性:
第一个字母表示文件所属类型,d
目录、-
文件、c
字符设备、b
设备文件、l
链接文件、p
管道文件、s
套接字文件;
第二个到第十个字母表示的文件权限,r
可读、w
可写、x
可执行,三组权限,顺序不同:d
(文件类型)rwx
(拥有者)r-x
(拥有者所在的组)r-x
(其他用户);
2:文件个数:如果是目录可能含有多个文件,如果是文件,则为一;:
3:文件拥有者:即创建文件的用户;
4:文件拥有者所属的组:如果没有创建新的组,那么会默认将用户名作为组名;
5:文件大小:单位是 byte;
6:创建时间;
7:文件名;
基础指令:
1、文件显示
ls
:显示当前目录下文件;ls -a
:浏览所有文件,包括隐藏文件( Linux 下,隐藏文件名字是以.
开头);ls -l
:显示详细信息,显示结果和上面的文件信息内容一样;
2、文件信息
ll
:显示当前目录下文件详细信息,和ls -l
效果一样;stat 文件名/目录名
:显示文件 / 目录的详细信息,这个比上面的ll
更详细,如文件大小、时间属性(A-最后一次访问时间,C-最后一次状态改变时间,M-最后一次修改时间)、所属者等等;
3、清空屏幕
ctrl+l
:清屏;clear
:清屏;
4、跳转目录
cd
目录:目录跳转;
cd /
进入根目录;cd ~
回到家目录;若直接使用cd
后回车,也可以直接回到家目录;
上面演示,注意红线部分,可以看出现在所处的位置,由此可以看出,cd
命令非常的灵活;
5、复制粘贴快捷键
ctrl+Insert
:复制;Shift+Insert
:粘贴;
6、创建文件
touch
:刷新文件的时间属性,若刷新的这个文件不存在,则会在当前目录创建这个文件;还有一些其他选项,可以刷新文件的指定时间;touch -d "指定时间" 文件名
:修改文件的最后一次访问时间和最后一次修改时间为指定时间;touch -a "指定时间" 文件名
:修改文件的最后一次访问时间为指定时间;touch -m "指定时间" 文件名
:修改文件的最后一次修改时间为指定时间;
7、写入
echo 内容 > 文件名
:向文件中写入内容,如果这个文件不存在,会先创建这个文件,再将内容写入;
8、读取文件
cat 文件名
:读取文件;
more 文件名
:分页显示文件内容,空格
向下翻页,q
退出;less 文件名
:分页显示文件内容,f
或空格
是向下翻页,b
是向上翻页;pgdown
向下按行滚动,pgup
向上按行滚动,q
退出;/string 字符串
:向下查找字符串,?string 字符串
:向上查找字符串,n
查找下一个head 文件名
:显示文件前十行;head -n 文件名
:显示文件前 n 行;tail 文件名
:显示文件后十行;tail -n 文件名
:显示文件后 n 行;命令1 | 命令2
:|
管道符,命令 2 处理命令 1 的执行结果;
9、删除
rmdir 目录名
:若指定目录为空,则删除;rmdir -p 目录名
:若指定目录为空,则删除,此时如果指定目录的父目录也为空了,也删除,然后继续照此规定向上递归删除;rm 文件名
:删除文件,默认只能删除普通文件;
rm -r 目录名
:删除目录,不管是否为空;rm -ri 目录名
:删除目录,增加提示信息;rm -rf 目录名
:删除目录,忽略提示信息,谨慎使用;
10、创建目录
mkdir 目录名
:创建目录;
mkdir -p 目录1/目录2/目录3
:递归多层级创建目录,哪一层不存在就创建那一层;
11、显示路径
pwd
:显示当前目录的绝对路径;
绝对路径:唯一路径,从根目录作为起始的路径叫做绝对路径;
相对路径:从某个相对位置,通常以当前路径作为起始的路径叫做相对路径;
每个目录下,都有两个比较特殊的目录:.
表示目录本身,..
表示目录的上一层路径;
12、移动
mv 原文件 目标文件
:给原文件更改名字;
mv 原目录 目标目录
:若目标目录不存在,则是给目录改名字;若存在,则移动原目录到目标目录下;mv 原文件 目录
:将原文件移动到指定目录中;
13、拷贝
-
cp 原文件 目标文件
:拷贝原文件到当前目录下,并改名为目标文件名字;
-
cp 原文件 目录
:拷贝原文件到指定目录下; -
cp -r 目录1 目录2
:拷贝目录 1 到目录 2 下;如果目录 2 不存在,则表示将目录 1 拷贝一份放到当前目录下,改名为目录 2;
14、重定向
- 输入重定向:
命令 < 文件
:将指定文件作为命令的输入设备;命令 << 分界符
:表示从标准输入设备(键盘)中读入,直到遇到分界符才停止(读入的数据不包括分界符),这里的分界符其实就是自定义的字符串;命令 < 文件1 > 文件2
:将文件 1 作为命令的输入设备,该命令的执行结果输出到文件 2 中;
- 输出重定向
命令 >> 文件
:追加重定向;将命令的正确输出写入到指定的文件中,追加到文件末尾;命令 > 文件
:清空重定向;将命令的正确输出写入到指定的文件中,但是会清空文件原有内容;命令 2>> 文件
:追加重定向;将命令的错误输出写入到指定的文件中,追加到文件末尾;命令 2> 文件
:清空重定向;将命令的错误输出写入到指定的文件中,但是会清空文件原有内容;命令 &>> 文件
:追加重定向;将命令的正确和错误输出都写入到指定的文件中,追加到文件末尾;命令 &> 文件
:清空重定向;将命令的正确和错误输出都写入到指定的文件中,但是会清空文件原有内容;
15、压缩解压
unzip 压缩包文件
:zip 格式的文件解压缩;zip 压缩包文件 文件1 文件2 文件3...
:zip 格式的打包压缩
Linux下最常用的打包解包工具:tar -xzaf
压缩包文件;
tar -czvf 压缩包文件 文件1 文件2 文件3...
:压缩文件,其中的 z 可以替换为 j,二者选一即可;tar -xzvf 压缩包文件
:解压文件,其中的 z 可以替换为 j,二者选一即可,亦或者是省略这两个都不写,在解压缩时系统会自动根据压缩的格式进行对应的解压缩;-c
:打包;-v
:显示详细信息;-z
:打包同时进行 gzip 格式压缩;-j
:打包同时进行 bzip2 格式压缩;-f
:指定压缩包名称;-x
:解包;-v
:显示详细信息;-z
:解包同时进行gzip格式解压缩;-j
:解包同时进行bzip2格式解压缩;-f
:指定压缩包名称;
16、查找匹配
grep 字符串
:不断从标准输入读取数据,然后和指定字符串进行匹配过滤;grep 字符串 文件名
:匹配并打印包含字符串的行:-n
:显示行号;-i
:忽略大小写;-v
:匹配不包含指定字符串的行;-R
:针对指定目录下的所有文件进行匹配操作,他的操作对象是一个目录,而不是文件;
grep -E 字母$ 文件名
:匹配指定文件以 字母 结尾的行;grep -E ^字母 文件名
:匹配指定文件以 字母 开头的行;find 目录 -name 文件名
:通过文件名查找;find 目录 -type 文件类型
:列出目录下的某类型文件;find 目录 -ctime -n
:列出最近 20 天内更新过的文件;find 目录 -name '文件名'
:通过文件名字查找指定目录下的文件;find 目录 -size +大小
:通过文件大小查找指定目录下大于大小的文件,单位有:c、b、w、k、M、G,具体可查看手册;find 目录 -size -大小
:通过文件大小查找指定目录下小于大小的文件,单位有:c、b、w、k、M、G,具体可查看手册;find 目录 -amin/cmin/mmin +/-数字
:查找指定目录下的大于/小于数字的,数字的单位是分钟,a–最后一次访问时间,c–最后一次状态改变时间,m–最后一次修改时间;find 目录 -atime/ctime/mtime +/-数字
:查找指定目录下的大于/小于数字的,数字的单位是天;
17、权限
su 用户名
:切换成指定用户,获取他的权限,前提是要知道密码;sudo 命令
:临时提权,让你拥有管理员权限,不过这需要管理员提前添加信任;
- 对于访问用户的分类:文件所有者–u,文件所属组–g,其他用户–o;
- 对于访问操作的分类:可读–r,可写–w,可执行–x;
- Linux 中文件权限的表示方式:
rwx rwx rwx
,分别和 u,g,o 相对应,如果不具备某个权限则以-
表示;- 在创建文件时,文件默认的权限是
rwx rwx r-x
,如果是普通文件,那就是rw- rw- r--
,因为普通文件是不可执行的;- 权限的默认值是多少就牵扯到了权限掩码,因为权限格式是固定的,所以我么可以将其使用二进制来表示,例如前面的默认权限可以表示成
111 111 101
,那就是 775;而权限掩码就是二进制表示的,默认权限值就是权限掩码的反码,也就是说默认权限掩码为 002;
-
umask
:查看权限掩码,以二进制显示,例如rw- rw- r--
显示就是 664,也就是110 110 100
;
-
umask -S
:查看权限掩码,以字母显示,例如显示为rw- rw- r--
;
-
umask 三位二进制
:修改默认权限掩码;
-
chmod a/u/g/o +/- r/w/x 文件名
:修改指定文件给 所有人/ 文件所有者/ 文件所属组/ 其他用户 增加/ 减少 可读/ 可写/ 可执行 权限; -
chmod 文件名 三位二进制
:给文件修改为指定的权限; -
chown 用户名 文件名
:修改文件的所有者为指定用户,需要管理员权限; -
chgrp 用户名 文件名
:修改文件的所属组为指定用户,需要管理员权限; -
chmod -t 目录名
:为文件设置沾滞位,限制其他用户在目录中不能删除其他人的文件;
18、Linux与Windows文件传输
- 前提:安装 lrzsz 软件包;
rz
:执行命令后可以从 Windows 下上传文件到 Linux 下;sz 文件名
:执行命令后可以将 Linux 下的文件传输到 Windows 下;- 注意事项:有些代码文件在转换的时候,可能会出现乱码问题,这是因为 Linux 下默认编码为 utf-8, Windows 下默认编码为 cp936,所以需要转换,具体方法请参照这篇博客:linux与windows编码转化
19、特殊指令和操作
man 指令
:帮助手册,查看指定指令的操作,十分详细;ifconfig
:显示网卡信息,也就是你想使用xshell链接你的虚拟机时,就要在虚拟机上敲此命令,才会显示出连接所需的信息;shotdown -h now/10
:立刻关机或者10分钟后关机;reboot
:重启;useradd -m 用户名
:创建一个用户;passwd 用户名
:设置密码;userdel -r 用户名
:删除一个用户;- 中断当前指令操作:
ctrl + c
- 文件名自动补全:输入文件名的一部分,然后按
tab
键即可完成自动补全;
总结
以上命令都是一些基础指令,能够使你尽快熟悉操作起来 Linux,但是能做的事情有限,而且 Linux 博大精深,不是一时半会就能学好的,我个人觉得学习这种操作性的东西,最好的方法就是多去实践,多去敲命令,当你遇到一个功能想去实现却不知道怎么做时,那就去查,去百度,去看别人写的博客总结,慢慢的,你就会发现不知不觉间,你已成大佬。