1、文件管理
<1>查看文件信息:ls
ls是list的简写,其功能为列出目录的内容,是最常用的命令之一,类似于dos下的dos
ls常用参数
快捷键 | 功能 |
---|---|
-a | 显示指定目录下所有子目录与文件,包括隐藏文件 |
-l | 以列表方式显示文件的详细信息 |
-h | 配合 -l 以人性化的方式显示文件大小 |
通配符
通配符 | 含义 |
---|---|
* | 文件代表文件名中所有的字符 |
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的文件 |
<2>输出重定向命令:>
用法:ls /bin >a.txt(如果a.txt存在则直接覆盖,如果不存在,则创建)
另外一个用法:ls >>b.txt(如果文件不存在则创建,如果文件存在则以追加的方式写入)
注意点:>输出重定向会覆盖原有文件内容,>>输出重定向会追加写入到文件的尾部
<3>分屏显示:more
用法类似cat,如:more 1.html
显示效果如下:
此时使用more命令,每次只显示一页,按下空格键可以显示下一页,按q键退出,h键获得帮助。
平时我们使用cat命令较多一些,通常文件内容很少的时候使用cat命令,一次显示所有内容,当文件内容比较多的时候使用more命令
<4>管道:|
管道:一个命令的输出可以通过管道作为另一个命令的输入
用法:
python@ubuntu:/bin$ ls -lh | more
显示效果如下:
同样的,也是每次只显示一页,按下空格键可以显示下一页,按q键退出,h键获得帮助。
<5>清屏:clear
这个非常简单常用,不再介绍
<6>切换工作目录: cd
需要注意的地方:linux所有的目录和文件名对大小写敏感
命令 | 含义 |
---|---|
cd | 切换到当前目录的主目录(/home/用户目录),用户登陆的时候默认的目录就是用户的主目录,cd后边不加目录相当于cd ~命令 |
cd ~ | 切换到当前用户的主目录(/home/当前用户目录) |
cd . | 切换到当前目录 |
cd .. | 切换到当前目录的上级目录 |
cd - | 切换到上次目录,同时显示跳转后所在的路径 |
注意点:如果路径是从根路径开始的,则路径的前面需要加上"/",如"/usr"
另外就是cd -命令跳转路径后会显示跳转之后的路径,相当于其他cd命令+pwd
<7>显示当前路径:pwd
非常简单常用的命令,不再介绍
<8>创建目录: mkdir
通过mkdir命令可以创建一个新的目录。参数-p可递归的创建目录。
注意:新创建的目录的名称不能与当前目录中的目录或文件同名,并且目录创建者必须对当前目录具有写权限。
<9>删除目录 :rmdir
可使用rmdir命令删除一个目录。必须离开目录,并且目录必须为空目录,否则提示失败。这个命令几乎不用,可用rm命令加-r 参数实现
<10>删除文件: rm
可通过rm命令删除文件或目录。使用rm命令要小心,因为文件一旦删除不能恢复。为了防止文件误删除可加参数-i使用交互模式逐个确认要删除的文件。
参数 | 含义 |
---|---|
-i | 以交互方式进行,类似于windows中删除文件时弹出的提示 |
-f | 强制删除,忽略不存在的文件,无需提示 |
-r | 递归的删除目录下的内容,删除文件夹时必须使用这个参数,非常常用 |
<11>建立链接文件:ln
linux链接文件类似于windows下的快捷方式。
分为软连接和硬链接。
软连接:软链接不占用磁盘空间,源文件删除则软链接失效。
硬链接:硬链接只链接普通文件,不能链接目录。删除源文件,链接文件依然存在。
使用格式:
ln 源文件 链接文件/链接路径
ln -s 源文件 链接文件/链接路径
注意:如果软链接文件和源文件不在同一个目录,源文件要使用绝对路径,不能使用相对路径。
用法举例,配置某些文件的时候常常会用到软链接,如配置nginx,链接名为路径,并且创建的是硬链接具体用法请点击
另外需要联想下ls -lah命令显示内容中文件权限后边的数字为引用数,如引用为0则文件自动被删除,具体的机制以后再详细阐述。
ln命令需要注意的地方:需要区分链接名是链接文件还是链接的路径,如果链接的是文件名,那么这个文件名必须是不存在,链接之后自动创建该文件名并写入内容,如果存在则提示该文件已经存在无法创建。如果是链接名是路径,那么自动在该路径下创建与源文件的同名文件
链接的删除,建立软链接,删除源文件之后,链接文件无效;建立硬链接,删除源文件之后,链接文件依然存在并且内容依然与源文件一致
建立链接之后,修改任一文件内容另一文件同时被修改。更准确的说,物理内存保存的只有一个文件,通过文件名指向内存中保存的文件,软链接指向的是源文件的文件名,删除源文件只是删除的源文件名,链接文件找不到源文件名而失效,当内存中保存的文件的引用数为0时,则被删除。硬链接指向的是内存中所保存的文件,删除源文件,但链接文件依然指向的内存中所保存的文件,所以依然有效
通过下图可以更好的理解这一概念,其中源文件名为1.txt,文件的内容为haha,保存在内存中
<12>查看或者合并文件内容:cat
<13> 文本搜索:grep
linux系统中grep命令是一种强大的文本搜索工具,grep允许对文本文件进行模式查找。如果找到匹配模式,grep打印包含模式的所有行。
用法:grep [-选项] "搜索的内容" 文件名
例如在a.txt文件中查找包含1的内容
grep常用选项说明:
选项 | 含义 |
---|---|
-v | 显示不包含匹配文本的所有行(相当于求反) |
-n | 显示匹配行及行号 |
-i | 忽略大小写 |
另外grep搜索内容串可以是正则表达式
参数 | 含义 |
---|---|
^a | 行首,搜寻以 m 开头的行;grep -n '^a' 1.txt |
ke$ | 行尾,搜寻以 ke 结束的行;grep -n 'ke$' 1.txt |
[Ss]igna[Ll] | 匹配 [] 里中一系列字符中的一个;搜寻匹配单词signal、signaL、Signal、SignaL的行;grep -n '[Ss]igna[Ll]' 1.txt |
. | (点)匹配一个非换行符的字符;匹配 e 和 e 之间有任意一个字符,可以匹配 eee,eae,eve,但是不匹配 ee,eaae;grep -n 'e.e' 1.txt |
grep常用正则表达式 :
参数 | 含义 |
---|---|
^a | 行首,搜寻以 m 开头的行;grep -n '^a' 1.txt |
ke$ | 行尾,搜寻以 ke 结束的行;grep -n 'ke$' 1.txt |
[Ss]igna[Ll] | 匹配 [] 里中一系列字符中的一个;搜寻匹配单词signal、signaL、Signal、SignaL的行;grep -n '[Ss]igna[Ll]' 1.txt |
. | (点)匹配一个非换行符的字符;匹配 e 和 e 之间有任意一个字符,可以匹配 eee,eae,eve,但是不匹配 ee,eaae;grep -n 'e.e' 1.txt |
<14>查找文件:find
find命令非常强大,通常用来在特定的目录下搜索符合条件的文件,也可以用来搜索特定用户所属的文件
常用用法:
命令 | 含义 |
---|---|
find ./ -name test.sh | 查找当前目录下所有名为test.sh的文件 |
find ./ -name '*.sh' | 查找当前目录下所有后缀为.sh的文件 |
find ./ -name "[A-Z]*" | 查找当前目录下所有以大写字母开头的文件 |
find /tmp -size 2M | 查找在/tmp 目录下等于2M的文件 |
find /tmp -size +2M | 查找在/tmp 目录下大于2M的文件 |
find /tmp -size -2M | 查找在/tmp 目录下小于2M的文件 |
find ./ -size +4k -size -5M | 查找当前目录下大于4k,小于5M的文件 |
find ./ -perm 777 | 查找当前目录下权限为 777 的文件或目录 |
<15>拷贝文件:cp
cp命令的功能是将给出的文件或目录复制到另一个文件或目录中,相当于DOS下的copy命令。
常用选项说明:
选项 | 含义 |
---|---|
-a | 该选项通常在复制目录时使用,它保留链接、文件属性,并递归地复制目录,简单而言,保持文件原有属性。 |
-f | 已经存在的目标文件而不提示 |
-i | 交互式复制,在覆盖目标文件之前将给出提示要求用户确认 |
-r | 若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名。 |
-v | 显示拷贝进度 |
<16>移动文件:mv
用户可以使用mv命令来移动文件或目录,也可以给文件或目录重命名。
常用选项说明:
选项 | 含义 |
---|---|
-f | 禁止交互式操作,如有覆盖也不会给出提示 |
-i | 确认交互方式操作,如果mv操作将导致对已存在的目标文件的覆盖,系统会询问是否重写,要求用户回答以避免误覆盖文件 |
-v | 显示移动进度 |
如果mv移动前后的路径不同,那么这时是移动文件,如果前后路径都是当前路径,则为文件重命名
<17>归档管理:tar
计算机中的数据经常需要备份,tar是Unix/Linux中最常用的备份工具,此命令可以把一系列文件归档到一个大文件中,也可以把档案文件解开以恢复数据。
tar使用格式 :tar [参数] 打包文件名 文件
tar命令很特殊,其参数前面可以使用“-”,也可以不使用。
常用参数:
参数 | 含义 |
---|---|
-c | 生成档案文件,创建打包文件 |
-v | 列出归档解档的详细过程,显示进度 |
-f | 指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后 |
-t | 列出档案中包含的文件 |
-x | 解开档案文件 |
注意:除了f需要放在参数的最后,其它参数的顺序任意。
用法举例:
打包文档
tar -cvf a.tar *.py
如打包当前目录下的所有文档可以使用*
tar -cvf a.tar *
解包文档
tar -xvf a.tar
<18>文件压缩解压:gzip
tar与gzip命令结合使用实现文件打包、压缩。 tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz。
gzip使用格式如下:
gzip [选项] 被压缩文件
常用选项:
选项 | 含义 |
---|---|
-d | 解压 |
-r | 压缩所有子目录 |
tar这个命令并没有压缩的功能,它只是一个打包的命令,但是在tar命令中增加一个选项(-z)可以调用gzip实现了一个压缩的功能,实行一个先打包后压缩的过程。
压缩用法:tar cvzf 压缩包包名 文件1 文件2 ...
tar -zcvf a.tar.gz *
解压用法: tar zxvf 压缩包包名
tar -zxvf a.tar.gz
常用的压缩文件后缀为.tar.gz和.tar.bz2
这两种解压缩方式稍有区别
对于.tar.bz2的格式命令如下:
tar -jcvf a.tar.bz2 * #打包压缩文档为.gz2格式
tar -jxvf a.tar.bz2 # 解压文档格式为gz2的文档
对于.tar.gz文档和.tar.bz2文档,.tar.gz的压缩比更大一些,推荐使用.tar.gz,.tar.bz2的只需记住解压的命令即可
<19>文件压缩解压:bzip2
tar与bzip2命令结合使用实现文件打包、压缩(用法和gzip一样)。
tar只负责打包文件,但不压缩,用bzip2压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz2。
在tar命令中增加一个选项(-j)可以调用bzip2实现了一个压缩的功能,实行一个先打包后压缩的过程。
压缩用法:tar -jcvf 压缩包包名 文件...(tar jcvf bk.tar.bz2 *.c)
解压用法:tar -jxvf 压缩包包名 (tar jxvf bk.tar.bz2)
<20>文件压缩解压:zip、unzip
通过zip压缩文件的目标文件不需要指定扩展名,默认扩展名为zip。
压缩文件:zip [-r] 目标文件(没有扩展名) 源文件
解压文件:unzip -d 解压后目录文件 压缩文件
<21>查看命令位置:which
which命令很简单常用,不再介绍