3.3 Linux常用命令
3.3.1 Linux命令行介绍
Linux Shell简介
Shell的意思是“外壳”,在Linux中它是一个程序,比如/bin/sh、/bin/bash等。它负责接收用户的输入,根据用户的输入找到其他程序并运行。比如我们输入“ls”并回车时,shell程序找到“ls”程序并运行,把结果打印出来。
Shell有很多种实现,我们常用bash。
Linux命令的提示符
在Ubuntu中打开终端后,即可看到类似下图的提示符:
提示符中各项含义在上图中都列出来了。
Linux命令的格式
Linux命令一般由三部分组成:
① command命令
② options选项
③ parameter参数
说明:
① [ ]中括号表示 该部分可选,可有可无,需要根据命令的实际需要而添加
② 命令、选项、参数都以空格分隔,不管几个空格都算一个空格
③ 命令输入完毕后,按回车“Enter”键启动
示例:
记住命令并不难, 先背几个单词
绝对路径和相对路径
Linux下的根目录为“/”,从根目录下出发可以找到任意目录、任意文件。从根目录开始表示目录或文件的方法称为“绝对路径”。比如:
/home/book /home/book/1.txt /bin/pwd
有时候使用绝对路径太过麻烦,可以使用相对路径。假设当前正位于/home/book目录下,那么:
./1.txt 表示当前目录下的1.txt,即 /home/book/1.txt;“.”表示当前目录 ../book/1.txt 表示当前目录的上一级目录里,book子目录下的1.txt “/home/book/..”就是”/home”目录,”..”表示上一级目录
3.3.2 目录/文件操作命令
pwd
cd
cd命令有些缩略用法:
$ cd - // 进入上次目录, 比如先进入a目录再进入b目录,执行此命令后即回到a目录 $ cd ~ // 进入家目录
mkdir
rmdir
ls
使用示例:
cp
复制目录时,常用如下命令:
$ cp -rfd dir_a dir_b r:recursive,递归地,即复制所有文件 f:force,强制覆盖 d:如果源文件为链接文件,也只是把它作为链接文件复制过去,而不是复制实际文件
rm
删除目录时,常用如下命令:
$ rm -rf dir_a r:recursive,递归地,即删除所有文件 f:force,强制删除
cat
touch
3.3.3 改变文件的权限和属性
chgrp:改变文件所属用户组
chown:改变文件所有者
chmod:改变文件的权限
chgrp
改变文件所属用户组
chgrp 【-R】 dirname/filename ...
-R : 进行递归的持续更改,也连同子目录下的所有文件、目录都更新成为这个用户组之意。常常用在更改某一目录内所有文件的情况。
范例:
chgrp hy install.log
将install.log文件的用户组改为hy用户组。注意hy用户组必须要在/etc/group 文件内存在才可以。
chown
改变文件的所有者
chown [-R] 账号名 文件或目录 chown [-R] 账号名:组名 文件或目录
-R:也是递归子目录。
范例:
chown bin install.log chown book:book install.log
改变文件所有者和用户组的这两个命令的应用场景:复制文件,由于复制行为会复制执行者的属性和权限,因此复制后需要改变文件所属用户、用户组等。
chmod
改变文件的权限
文件权限有两种设置方法:数字类型改变权限和符号改变权限。
首先说明各个权限对应的数字:
① r: 4或0
② w: 2或0
③ x: 1或0
这3种权限的取值相加后,就是权限的数字表示。
例如:文件a的权限为“-rwxrwx—”,它的数值表示为:
① owner = rwx = 4+2+1 = 7
② group = rwx = 4+2+1 = 7
③ others = — = 0+0 +0 = 0
所以在设置权限时,该文件的权限数字就是770。使用数值改变文件权限的命令如下:
chmod [-R] xyz 文件或目录
① xyz : 代表权限的数值,如770。
② -R : 以递归方式进行修改,比如修改某个目录下所有文件的属性。
范例:
chmod 777 .bashrc
将文件.bashrc这个文件的所有权限设置都启用。
符号类型改变文件权限方式
使用u、g、o三个字母代表user、group、others 3中身份。此外a代表all,即所有身份。
范例:
chmod u=rwx,go=rx .bashrc
也可以增加或去除某种权限,“+”表示添加权限,“-”表示去除权限:
chmod a+w .bashrc chmod a-x .bashrc
3.3.4 查找/搜索命令
find
在Windows中搜索文件,一般查找文件需要传入两个条件:
a. 在哪些目录中查找;
b. 查找的内容;
在Linux中,查找文件的也需要这两个条件,不同于Windows使用搜索框查找,Linux中使用find命令查找文件。
find命令格式为:
find 目录名 选项 查找条件
举例1:
$ find /home/book/dira/ -name " test1.txt "
说明:
a) /home/book/dira/指明了查找的路径。
b)“-name”表明以名字来查找文件 。
c)“test1.txt”,就指明查找名为“test1.txt”的文件。
举例2:
$ find /home/book/dira/ -name " *.txt "
说明: 查找指定目录下面所有以“.txt”结尾的文件,其中“*”是通配符。
举例3:
find /home/book/dira/ -name "dira"
说明: 查找指定目录下面是否存在“dira”这个目录或文件,“dira”是名称。
注意:
① 如果没有指定查找目录,则为当前目录。
$ find . -name " *.txt " //其中.代表当前路径。 $ find -name " *.txt " //没加路径,默认是当前路径下查找。
② find还有一些高级的用法,如查找最近几天(几个小时)之内(之前)有变动的文件
$ find /home/book -mtime -2 //查找/home目录下两天内有变动的文件。
grep
grep命令的作用是查找文件中符合条件的字符串,其格式如下:
grep [选项] [查找模式] [文件名]。
假设dira目录的test1.txt和dirb目录的test1.txt都含有如下内容:
aaa AAAAAA abc abcabcabc cbacbacba match_pattern nand->erase。
通过查找字符串,希望显示如下内容:
1)所在的文件名----grep查找时默认已经显示目标文件名
2)所在的行号------使用-n选项。
grep -rn “字符串” 文件名 r(recursive):递归查找 n(number):显示目标位置的行号
字符串:要查找的字符串
文件名:要查找的目标文件,如果是*则表示查找当前目录下的所有文件和目录。
举例:
//在test1.txt中查找字符串abc grep -rn "abc" * 在当前目录递归查找字符串abc $ grep -n "abc" test1.txt
注意:可以加入-w全字匹配。
可以在grep的结果中再次执行grep搜索,比如搜索包含有ABC的头文件,可执行如下命令:
$ grep “ABC” * -nR | grep “\.h”
上述命令把第1个命令“grep “ABC” * -nR”通过管道传给第2个命令。
即第2个命令在第1个命令的结果中搜索。
3.3.5 压缩/解压命令
压缩的目的
在网络传递文件时,可以先将文件压缩,然后传递压缩后的文件,从而减少网络带宽。 接收到文件后,解压即可。
压缩的类型有2种:有损压缩、无损压缩
有损压缩
如mp4视频文件,在压缩过程中减少了很多帧的数据,但是对观看者而言没有影响。当然mp3音乐文件也是有损压缩。
无损压缩
如普通文件的压缩,为了保证信息的正确传递,不希望文件经过压缩或解压后,出现任何差异。
后面讲解的都是无损压缩。
单个文件的压缩(解压)使用gzip 和bzip2 ,多个文件和目录使用tar。
gzip
gzip的常用选项:
-l(list) 列出压缩文件的内容。
-k(keep) 在压缩或解压时,保留输入文件。
-d(decompress) 将压缩文件进行解压缩。
举例:
1) 查看压缩文件
$ gzip -l pwd.1.gz
2) 解压文件
$ gzip -kd pwd.1.gz //该压缩文件是以.gz结尾的单个文件
3) 压缩文件
$ gzip -k mypwd.1 /得到了一个.gz结尾的压缩文件
注意:
1)如果gzip不加任何选项,此时为压缩
压缩完该文件会生成后缀为.gz的压缩文件,并删除原来的文件。
所以,推荐使用gzip -k来压缩源文件,这样会保留原来的文件。
2)相同的文件内容,如果文件名不同,压缩后的大小也不同。
3)gzip只能压缩单个文件,不能压缩目录。