一、目录操作
cd:切换工作目录
cd + 目录 #进入该目录
cd ../ #进入上层目录
cd [~/ ] #进入当前用户的主目录
cd - #进入前一个工作目录
在使用命令行时一定要记得使用tab键,因为它真的太强大了
pwd:显示当前所在的目录
mkdir:新建目录
创建目录时,要一层一层的创建,但是也可以使用-P参数递归创建,但不推荐使用因为可能会手滑打错字
在创建目录时,我们可以选择加入-m属性并跟权限属性为文件夹创建属性
rmdir:删除!!!空!!!目录
rmdir只能删除空的目录,如果文件夹下有内容,系统会提示文件不为空,无法进行该操作,如果要删除文件夹下所有的文件可以使用rm命令,具体用法找man,上图test*的*表示匹配所有字符,这样就可以同时删除test和test1
二、环境变量
linux下也有和windows类似的环境变量属性,我们可以思考为什么可执行文件放在/bin下就可以直接运行,不需要进入/bin这个工作目录,这就是环境变量的功能;环境变量就是一系列的目录联结起来的一个变量,在我们输入一个命令时,系统根据环境变量自动在这些目录中去寻找合适的可执行文件,先找的先执行,因此我们在写环境变量的时候有必要考虑这个问题,比如两个版本的python:2.7和3.6,我希望每次输入python时都调用python3,可以将python3的路径放在2前
echo $PATH:打印出当前用户的环境变量
可以看到很多的目录,每个目录之间用:隔开,也就是说,我把自己写的程序放在以上任意的一个文件夹下,就可以在终端直接运行我的程序而不需要切换工作路径,当然,不能随便放置,因为有FHS标准。不同的用户的环境变量也是不同的,命令也是要放在合适的文件夹下才能更高效的运行的,但最好不要把PATH无限的放大,因为这样会降低查询速度
PATH="$PATH":/root 修改环境变量
三、文件、目录管理
ls命令是linux中最常用的几个命令之一,但一般我们只会用到比如ls -al或ll这样的命令,所以详细信息查看man或info
cp:复制文件
cp 选项 源文件 目标文件
默认情况下,cp的源文件和目标文件的权限是不同的,目标文件的所有者一般是命令操作者,这是我们就要注意,如果我们进行备份,就需要将文件的属性、权限一起拷贝过来,加上-a或-p这样的参数
rm:删除文件或目录
这个命令有三个参数,-f表示强制删除,-i表示询问是否删除、-r表示递归删除,建议每次使用rm都加上-i属性保证自己不会误操作,喜欢作死的话可以选择sudo rm -rf /命令(删除整个根目录!)
mv:移动文件与目录或更名
因为mv的用法和cp很相似,所以在此演示它的改名用法,在 linux中有专门的改名命令叫rename,它命令用于给多个文件改名
要注意的是,如果最后的参数不只三个,那么改命令自动把最后一个参数视为文件夹
basename:取得文件名 dirname:取得路径名称
四、文件查阅
cat:由第一行开始显示文件内容
tac:由最后一行开始显示文件内容(=cat倒着写)
nl:输出行号的显示
more:一页一页的显示
less:与more相似,但是可以往前翻页
head:只看头几行
tail:只看结尾几行
od:二进制形式显示文件
cat、tac、nl的用法都差不多,只是参数上的区别,不做介绍
more和less可以翻页查看,并且查看的进度将打印在命令行底端,比较方便
有趣的是head和tail命令,它们可以规定显示多少行:
head和tail默认显示10行,可以用-n参数+行数规定显示多少行,如果我想打印第11到20行,就应该输入head -n 20 word.txt | tail -n 10,意思是先取出20行,再取后十行得到我想要的结果。|的含义之后再加入。
od文件可以打印二进制文件:
当然了如果是文本文件的话,我们可以直接使用gedit打开编辑,非常方便
五、创建文件
在linux中文件有三个时间参数:mtime(内容更改的时间)、stime(状态更改的时间)、atime(文件被调用的时间)
当我们使用ll去查看一个文件的时间参数时打印出来的默认为mtime。
touch 参数 文件名:
默认显示mtime,如果复制word.txt的所有属性,再次查看
六、文件与目录的默认权限与隐藏权限
默认权限:umask指当前用户在新建文件或目录时候的权限默认值,可以使用umask命令查看
因为当前用户创建,那么当前用户一定可以rwx,所以这里省略,有用的信息是后面的022,我们在分辨时,要用777(目录,因为目录必须具有可执行性才有意义,所以属性为rwx,777)或666(文件,文件默认不具备可执行性,所以为rw-,666)-022得到755或644才是我们应该认为的权限,所以默认情况下为u:rwx,go:rx,或u:rw-,gor--
更改umask的方法也很简单,只需要在umask后跟数字就好,比如:
隐藏属性:chattr,lsattr
chattr:设置文件的隐藏属性,文件的隐藏属性有很多,包括,A,S,a,c,d,i,s,u等,它们的详细用法可以使用man查看
a:设置这个属性之后,这个文件只能增加数据不能删除和修改数据
i:可以让一个文件无法被删除、改名,设置连接也无法写入或者添加数据
lsattr:显示文件的隐藏属性:
可以看到在设置了i属性之后就无法进行rm操作
七、文件特殊权限
set UID
当s这个标志出现在文件所有者的x权限上时,就被称为set UID,简称为SUID的特殊权限,他有这样的功能:
1、SUID只对二进制程序有效;
2、执行者对于该程序具有x的可执行权限
3、本权限仅在执行该程序的过程中有效
4、执行者将具有该程序所有者的权限
比如说,wangyize这个普通用户想要修改自己的密码,需要调用/usr/bin/passwd这个命令。但是修改密码的操作还需要写入/etc/shadow文件内,而这个文件是root用户强制写入的,按理说wangyize这个普通用户无法完成修改密码这个操作。但事实上,因为passwd这个二进制文件有set UID属性,且对其有可执行权限,因此在wangyize调用这个命令期间会暂时获得root用户的权限。
set GID
当s这个标志出现在文件用户组的x权限上时,就被称为set GID,简称SGID的特殊权限,他有这样的功能:
1、可以对文件和目录进行设置,对比SUID只能对二进制文件设置
2、程序执行者对于该程序来说应该具备x权限
3、执行者在执行的过程中将会获得该程序用户组的支持
sticky BIT
该权限仅对目录有效,当用户对此目录具有w和x权限时,即具有写如的权限时,用户在此目录下创建的文件和目录,只有用户自己和root可以删除该目录,该权限展现在其他人的x权限位置
4表示SUID,2表示SGID,1表示SBIT,在设置这些权限时,将对应的数字加在后面的三个数字前面,比如chmod 4755 ..表示增加SUID权限,如果对应的位置上没有x权限,这时也可以设置SUID、SGID和SBIT,但是S和T会大写,表示权限为空
查看文件类型
使用file命令查看文件的类型,得到directory,说明这是一个目录
八、查找文件
which:(查找可执行文件)
这个命令可以帮助我们知道当我们在终端输入命令的时候是哪个文件在运行
whereis:根据文件名查找一个文件
whereis在数据库中查找,不去遍历硬盘,所以比较快,但有时数据库不会及时更新,所以我们会发现可能会找到刚创建的文件可能找不到或者已经被删除的文件又被找到了,这很正常
locate:
太多了,只要名字中有passwd的文件都会被列举出来,locate查找时会在已经创建好的数据库中进行查找,/var/lib/mlocate内的数据文件,这个数据文件根据系统不同会有不同的更新时间,如果你查找文件找不到却又的确创建了文件时,可以使用updatedb手动更新数据库,但这会消耗一些时间,而且需要在root下执行或加sudo
find:find 路径 选项 参数
比如 find /var -mtime 4表示在4天之前的一天之内更改过的文件
find /var -mtime +4表示在4天之内不包含第4天本身改过的文件
find /var -mtime -4表示在4天之内包含第4天改过的文件