Linux文件目录
/bin
binary的缩写,存放着最经常使用的命令
/boot
存放着启动Linux的核心文件,包括连接文件和镜像文件
/dev
device的缩写,存放的是Linux的外部设备
/home
用户的主目录
/lib
这个目录存放着系统最基本的动态连接共享库
/media
Linux自动识别的设备,例如U盘、光驱等识别后会把识别的设备挂载到这个目录下
/root
该目录为系统管理员用户的主目录
/usr
用户的很多应用程序和文件都放在这个目录下
/etc
这个目录用来存放所有系统管理所需要的配置文件和子目录
/var
存放着不断扩充着的东西,习惯将经常被修改的目录放在这个目录下,包括各种日志文件
命令笔记
man + 命令 返回跟在man指令后面的指令的使用文档
例:显示ls指令的使用文档
man ls
ls + 文件 返回ls指令后文档的内容 ,不加文件默认显示当前文档内容
例:返回根目录下的内容
ls /
pwd 打印出当前所在目录
例:打印当前目录
pwd
cd + 绝对路径/相对路径 到路径指定的文件内
例:
(1)到/usr/bin文件内(通过绝对路径)
cd /usr/bin
(2)在/user文件内,通过相对路径到etc文件内
cd etc
./ 当前目录 ../上级目录
例:在/usr/bin目录下,回到/usr目录
cd ../
mkdir+目录路径 创建一个目录
当前在/home/rirsa目录下
例1:新创建test目录
mkdir test
例2:新创建test/test1/test2目录
mkdir -p test/test1/test2 注意:在test1没有创建的情况下,如果直接创建test2会出现报错,所以需要使用mkdir的-p参数,进行递归创建目录,直到创建到需要的目录
rmdir+目录路径 删除一个目录
当前在/home/rirsa目录下,且已经新建了test/test1/test2目录
例1:删除test2目录
rmdir test/test1/test2
例2:删除test2和它的父目录
rmdir -p test/test1/test2 注意:rmdir命令的-p参数和mkdir类似,也是有递归的意思,这个命令会在删除test2目录的同时删除test1目录、删除test目录。也有不能删除的情况,比如test目录下除了test1还有一个test3,则此时这个命令会在删除test2、test1后报错,因为test目录中还有一个test3目录,不能删除test目录。
rm -r 目录路径 或 rm 文件路径 删除目录或文件
当前在/home/rirsa目录下,且已经新建了test/test1/test2目录,并在test目录下除了test1另新建了一个test3目录
例1:删除test目录
rm -r test 注意:前面已经知道,如果用rmdir删除还有子目录的目录会报错,但是用rm可以不管该目录有没有内容直接删除目录,但是需要使用-r参数标识这是要删除一个目录而不是文件。
cat/tac+文件名 显示文件内容
例:显示/etc/passwd文件的内容
cat /etc/passwd
groupadd [-g gid] goupname 添加用户组,中间参数是可以手动设置用户组组号,如果缺省则使用系统自动补起的组号
例1:增加一个名为grouptest1的用户组
groupadd grouptest1
例2:增加一个名为grouptest1且指定为1002号组号的用户组
groupadd -g 1002 grouptest1
groupdel groupname 删除用户组,无特殊参数
例:删除grouptest1用户组
groupdel grouptest1
useradd [-u uid]|[-g gid]|[-d home]|[-M]|[-s] username 添加用户,其中可以通过-u和-g指定userid和groupid,groupid可以指定该用户属于哪个组,-d参数可以用于自定义该用户的家目录,通过-M参数可以让该用户不建立家目录,-s参数可以自定义shell
例1:创建一个普通用户
useradd usertest1
例2:指定在groupid为102的grouptest1用户组创建一个用户
useradd -g 1002 usertest1
userdel [-r] username 删除一个用户名为username的用户,-r参数可以在删除该用户的同时删除该用户的home目录
例:删除usertest1用户,同时删除对应的home目录
userdel -r usertest1
passwd [username] 更改/创建用户密码,后面不带用户名则为更改当前用户的密码
su - [username] 切换用户,如果后面带着用户名则切换到对应用户,不带用户名默认切换到root用户
visudo 打开sudo权限编辑器,只能通过root用户编辑,root用户可在这个编辑器中为其他用户加上sudo权限,只有被加入sudo权限后的用户才能进行一些需要权限的操作
cp 源文件 目标文件 将源文件复制到目标文件中,如果目标文件不存在,则会自动创建并将内容复制过去,如果目标处填写的是一个路径,如果该路径存在,则保留文件名将文件复制到该路径下,如果该路径只有最后一层不存在,则将该路径最后一层作为一个文件创建并将内容复制进去。
注意:centos中,cp命令默认不会提示覆盖内容,即如果出现cp file1 file2,file1和file2中都有数据,则该命令会直接将file2中的数据覆盖,如果需要提示覆盖内容,需要使用-i参数
例:将file1的内容复制到file2中,如果file2中有内容则进行提示
cp -i file1 file2
mv 源文件 目标文件/目标路径 如果目标是文件,其实相当于给源文件重命名的作用,系统会将源文件重命名为目标文件名,然后直接移动过去覆盖掉目标文件;如果目标文件不存在,就只是重命名然后移动过去;如果目标是路径,路径存在则源文件不变直接移动过去,只有最后一层不存在则将源文件重命名为最后一层的文件名然后移动过去
同样,mv命令也是默认不会提示直接覆盖内容,如果需要提示覆盖内容需要使用-i参数。
more/less + 文件名 显示文件内容
相比cat,more和less来进行文件内容的阅读更合适,cat是不管文件内容多少将所有内容显示在屏幕上,相对来说:
- more 可以将文件内容分页,可以通过enter或空格进行翻页阅读,但是只能往下翻,翻完就退出,可以通过按下q键提前退出
- less 可以将文件内容分页,可以通过enter或空格进行翻页,同时可以通过按j下翻、按k上翻、按q退出、按/或?+word在文件内对word字段进行搜索定位
head/tail [-n N] 文件 显示文件前/后n行内容
对比上面的more/less/cat,head和tail命令是为了只看某文件最开头/结尾部分数据的命令,参数n可以指定行数,如果不指定默认显示10行
tail还有一个-f参数,可用于设置动态显示文件最后几行的内容
find [路径]|[参数] 可通过不同的路径和参数查找文件
其中的参数有几个应用比较多的:
- -atime+n a为access的缩写,表示访问时间大于n天的文件
- -ctime+n c为create的缩写,表示写入、更改所有者、权限、连接的时间大于n天的文件
- -mtime+n m为modified的缩写,表示文件内容修改的时间大于n天的文件
- -name + name 通过文件名查找文件,用的比较多的查找方式
- -type + type 通过文件类型查找文件
Linux文件属性
在一个目录下调用ls -l时,会在显示当前目录下的文件的同时显示每个文件的属性。
例:在/usr/sbin目录下新建一个test.sh,然后调用ls -l:
-rw-r–r– 1 root root 0 12月 27 21:25 test.sh
可见以空格为界,共显示了9列内容。
第一列
包含该文件类型和所属主、所属组以及其他用户对该文件的权限。
第一列共有10位,第一位用来描述该文件的类型,可见上例中第一位为-,表示文件类型为普通文件。
具体文件类型如下:
- d 目录
- ‘-’ 普通文件
- l Linuxfile,连接文件
- b 块设备文件,比如磁盘分区
- c 串行端口设备,比如键盘、鼠标
- s socket套接字文件,用于进程间通信
后面的9位每三个一组,均为rwx的组合,其中r代表可读,w代表可写,x代表可执行。
第一个三位代表所属主的权限,中间三位代表所属组的权限,最后三位代表其他用户的权限。
比如上面的列子中,第一列的10位为 -rw-r–r– ,通过第一位看出这个文件是一个普通文件,第一个三位表示该文件的所属主拥有对该文件的读写权限,中间三位表示该文件所属组有对该文件的读权限,最后三位表示其他用户拥有对该文件的读权限。
对目录来讲,打开一个目录即为执行这个目录,所以任何一个目录必须要有x权限才能打开并查看。
第二列
表示为连接占用结点
第三列
表示该文件的所属主
第四列
表示该文件的所属组
第五列
表示该文件的大小
第六、七、八列
该文件的创建或修改时间
第九列
该文件的名称,如果前面有个.则说明该文件为隐藏文件
更改文件权限
更改所属主
chown 【-R】 账户名 文件名
这里的-R选项只作用域目录,作用是级联更改,不仅更改当前目录,连目录里的目录和文件全部更改。
更改所属组
- chgrp 组名 文件名
更改用户对文件的rwx权限
在Linux中,为了方便更改这些权限,Linux用数字去代表rwx,其中r用4代替,w用2代替,x用1代替,-用0代替,所以上面的例子中的权限-rw-r–r–用数字表示就是644。
Linux中,默认一个目录的权限为755,一个文件的权限为644
更改权限的命令就是
chmod 【-R】 xyz 文件名
这里的-R和chown里一样,可以级联更改,xyz是代表权限的三个数字
还可以通过u(user),g(group),o(other)对rxw的+(增加),-(去除),=(设定)来进行对对应对象的rwx三种权限的操作
chmod u-x test.sh
if判断中的参数
- 【-a/-e file】 file存在即为真
- 【-b file】 file为块文件即为真
- 【-c file】 file为字符文件即为真
- 【-d file】 file 存在且为一个目录即为真
- 【-f file】 file存在且为一个普通文件即为真
- 【-g file】 file存在且已经设置了SGID则为真
- 【-h file】 file存在且为一个符号连接即为真
- 【-r file】 file可读则为真
- 【-s file】 file存在且大小不为零则为真
- 【-w file】 file存在且为可写的则为真
- 【-x file】 file存在且为可执行的则为真
- 【-S file】 file存在且为一个套接字则为真
- 【-z STRING】 “STRING”的长度为0则为真
- 【-n STRING】 “STRING”的长度为not zero则为真
- 【-a】 与
- 【-o】或
- 【!】非
压缩与打包
Windows常见的压缩文件有.rar,但在Linux下这种格式是不能用的,它有自己的压缩工具,但是.zip格式在Windows和Linux下都可以识别。
Linux下的压缩文件和对应的压缩工具有:
.gz gzip压缩工具压缩的文件
.bz2 bzip2压缩工具压缩的文件
.tar tar打包程序打包的文件(注意是打包,tar并没有压缩功能,只是把一个目录合并成一个文件)
.tar.gz 可以理解为先用tar打包后再用gzip压缩
.tar.bz2 同上,用tar打包后再用bzip2压缩
gzip
gzip [-d#] filename
-d参数 用于解压缩
-#参数 #是一个1-9的数字,表示压缩等级,1最差,9压缩的做好,6为默认
要注意的是gzip不能压缩目录
bzip2
bzip 【-dz】 filename
-d 同样用于解压缩
-z 用于压缩,可以省略
tar
tar 【-zjxcvfpP】 filename
-z 是否同时使用gzip压缩
-j 是否同时使用bzip2压缩
-x 解包或者解压缩
-t 查看tar包里面的文件
-c 建立一个tar包或者压缩文件包
-v 可视化
-f 后面跟文件名filename,如果压缩时-f,则压缩后文件名为filename,解压缩时-f,则解压缩后文件名为filename
-pP 不常用