栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Linux 目录

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux 目录

目录用途
/               根目录
/root           root用户的家目录
/home/username  普通用户的家目录

/etc            配置文件目录

/bin            命令目录
/sbin           管理命令目录
/usr/bin        系统预装的其他命令
/usr/sbin       系统预装的其他命令
目录操作

查看当前所在目录

pwd

查看当前目录下的文件

ls

切换目录

cd

新建空白目录(新建空文件夹)

mkdir 

删除空白目录(删除空文件夹,若目录下有内容[哪怕只是有空的目录/文件夹]则无法删除)

rmdir

删除目录(无论目录是否为空)

rm -r 

复制目录、文件

cp 源目录 目的目录

移动目录、文件/重命名目录、文件

mv 源目录 目的目录

批量操作通配符

* 不定字符(0~n个)
? 单个字符
[xyz] 匹配xyz任意一个字符
[a-z] 匹配一个范围
[!xyz]或[^xyz] 不匹配xyz

打包

tar 选项 目的文件(打包后的文件) 源目录(待打包的目录)

tar cf targetfile.tar originfile    # 打包originfile成 targetfile

tar tf targetfile.tar               # 查看targetfile包内容

tar xf targetfile.tar               # 解包targetfile

压缩、解压缩

# 如果希望在 tar 打包的同时,实现压缩,需要添加z选项(使用gzip)或j选项(使用bzip2)。

tar czf targetfile.tar.gz originfile    # 打包压缩originfile成targetfile,使用gzip压缩方式。

tar cjf targetfile.tar.bz2 originfile   # 打包压缩originfile成targetfile,使用bzip2压缩方式。

tar xf targetfile.tar.gz                # 解压缩
tar xf targetfile.tar.bz2               # 解压缩


ls(列出目录文件) -l:长格式
[kevin@localhost /]$ ls -l
total 24
drwxr-xr-x.   3 root root   21 Dec 21 17:16 app
lrwxrwxrwx.   1 root root    7 Jul 20 07:56 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096 Jul 20 00:05 boot
drwxr-xr-x.  19 root root 3280 Dec 24 01:01 dev
drwxr-xr-x. 144 root root 8192 Dec 24 01:01 etc
drwxr-xr-x.   3 root root   19 Jul 20 00:05 home
lrwxrwxrwx.   1 root root    7 Jul 20 07:56 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 Jul 20 07:56 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 Apr 10  2018 media
drwxr-xr-x.   2 root root    6 Apr 10  2018 mnt
drwxr-xr-x.   3 root root   16 Jul 20 00:00 opt
dr-xr-xr-x. 217 root root    0 Dec 24 01:01 proc
dr-xr-x---.   4 root root  246 Dec 21 17:20 root
drwxr-xr-x.  42 root root 1220 Dec 24 01:39 run
lrwxrwxrwx.   1 root root    8 Jul 20 07:56 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 Apr 10  2018 srv
dr-xr-xr-x.  13 root root    0 Dec 24 01:01 sys
drwxrwxrwt.  33 root root 4096 Dec 24 01:39 tmp
drwxr-xr-x.  13 root root  155 Jul 20 07:56 usr
drwxr-xr-x.  21 root root 4096 Jul 20 00:05 var

解析

文件类型和权限包含多少个文件目录文件所属用户(属主)文件所属用户组(属组)文件大小(单位:字节)文件最后修改时间文件名称
drwxr-xr-x.3rootroot21Dec 21 17:16app

目录文件:即便内容为空,也会包含两个目录文件(.与..),因此,目录文件至少包含2个文件

文件类型和权限(10个字符):

第一个字符[-dlbcfs]:为文件类型

-:文件d:目录l:符号链接(类似windows的快捷方式)b:块特殊文件【设备】:如移动硬盘,插入移动硬盘后,linxu会把移动硬盘看成是块特殊文件来进行操作。c:字符特殊文件【设备】:如终端f:命名管道【进程相关】s:套接字文件【通信相关】 后面9个字符:文件权限

从左往右:

1~3 文件所属用户的权限4~6 文件所属用户组的权限(文件所属用户并不一定存在于文件所属组,只是创建文件时,会将用户以及其初始组作为新文件的的所属用户以及所属用户组)7~9 除了所属用户和所属用户组外,其他的用户及用户组的权限

注意:不同类型的文件,权限的rwx的含义是不同的。

普通文件:

r:读w:写x:执行

数字权限的表示方法:

r=4w=2x=1

其实就是100、010、001 八进制的表示方式。

-rw-r-xr-- 1 tom yesgroup mtime test1

test1这个文件是普通文件(rwx分别为读、写、执行)rw-:tom 对 test1 有读、写的权限

r读:如catw写 r-x:yesgroup用户组的用户对 test1 有读、执行的权限。

r读:如catx执行:像ls、cat本身就是文件,只是可以当作命令来执行,这就是文件的可执行。 r–:除了tom以及yesgroup用户组中的所有用户外,其他的用户对 test1 有读的权限。

其实vim对文件的写,并非是真正的直接将内容写入到文件。底层实际上,复制一个以点开头的文件(隐藏文件),所有写入的内容是写入到这个隐藏文件中。当进行保存并且退出时,隐藏文件会替换原有的文件。【因此vim并非直接往文件中写入,因此对文件的写权限,不要用vim来进行测试,可以使用echo xxx > 该文件 来测试】

若用户对文件只有读权限,没有写权限,也可以通过vim来成功对该文件进行写入保存,但是使用echo写入则会报错说“没有权限”。

若用户对文件连读的权限都没有(用vim打开也看不到内容),也仍然可以用vim成功进行写入保存(保存关闭后也看不到内容,但用root可以看到这个文件内容被新写入内容覆盖了[而非将新写入内容追加到文件尾])。

-a:显示所有(包含隐藏文件/目录)

隐藏文件/目录:以点“.”开头文件/目录

-r:以逆向方式排序显示

默认是以文件名来进行逆向显示。

-t:以时间来排序显示

-rt则为以时间逆序来显示

-R:递归显示 -h:文件大小使用可读性更强的单位

-l 默认返回的的文件大小的单位为字节,有时候会因为文件比较大,字节数比较多,可读性比较差。结合 -h 选项,文件大小会按大小以合适的单位来标出,如大一点用“K”,再大一点用“M”,甚至用“G”。

-d:列出目录本身,而非目录内的文件

建议配合 -l 使用。否则就只打印这个目录而已。
如果该文件不是目录文件而是普通文件,也不会报错,效果和直接 ls 这个普通文件一样。


cd(切换目录)

-:与之前打开的目录来回切换(两个目录间跳转)

cd /home/kevin
cd /
cd -
# pwd 返回 /home/kevin
cd -
# pwd 返回 /

~:回到用户的 home 目录

cd ~
或者省略“~”,直接 cd
# 会回到当前用户的 home 目录
# 如 root 用户,会切换到 /root 路径下 
# kevin 用户,会切换到 /home/kevin 路径下

相对路径

# 如果已经在 home 目录,可以采用相对路径进入 kevin 目录
cd ./kevin
或者
cd kevin

进入上一级目录

# 如果已经在 /home/kevin 目录,要进入上一级目录
cd ..
# pwd 返回 /home

mkdir -p:如果路径中有目录不存在则顺便创建该目录,且不报错
# 如 /home/kevin/Downloads 下没有 testmkdir 目录
# mkdir /home/kevin/Downloads/testmkdir/test 会报错

mkdir -p /home/kevin/Downloads/testmkdir/test
# 则会不会因为 testmkdir 不存在而报错,而是会创建testmkdir,再在其下创建 test 目录

# 如果已存在目录路径 /a/b/c/d/e
mkdir -p /a/b
# 并不会报错,并且不会清空 b 下面的 c/d/e

相对路径

# 如已经在 /home/kevin/Downloads 目录下,创建 test 目录
# 可以不输入完整路径 mkdir /home/kevin/Downloads/test
mkdir ./test
# 或者
mkdir test

同时创建多个目录

mdkir atest btest ctest

、# 如果当前目录已存在 atest,则会报错 atest已存在,但不影响 btest 和 ctest 两个目录的生成

rm:删除目录、文件 -r或-R:递归删除(用于删除目录)
# 递归删除 atest目录 及其下目录,但会逐级都询问
rm -r atest

# 递归删除 atest目录 及其下目录,并且不会询问
rm -rf atest
-f:强制,无询问提醒,无报错 删除多个目录
rm -r atest btest

注意-f是非常危险的选项,因为不进行提示,可能会导致灾难性后果,比如你原本是想删除/a,但是你现在写成/ a,中间手抖多了一个空格,那么

rm -rf / a

就会被系统视作递归删除/与当前目录下的a目录,rm -rf / 那就会把整个系统都删除掉。


cp:复制目录、文件
# 当前目录中创建文件 afile
touch afile

# 将文件 afile 复制到当前目录下,并命名为 bfile
cp afile bfile

# 复制目录
cp -r atest btest
[root@localhost test]# ll
total 0
-rw-r--r--. 1 root root 0 Dec 27 19:24 afile
drwxr-xr-x. 2 root root 6 Dec 27 18:16 atest
-rw-r--r--. 1 root root 0 Dec 27 19:25 bfile

# 可以看到时间复制的文件(bfile)与源文件(afile)的最后修改时间是不一样的,
# 如果想最后修改时间一样,可以用 -p 选项
-p:保留时间戳、模式、ownership(所有权)
cp -p afile cfile

[root@localhost test]# ll
total 0
-rw-r--r--. 1 root root 0 Dec 27 19:24 afile
drwxr-xr-x. 2 root root 6 Dec 27 18:16 atest
-rw-r--r--. 1 root root 0 Dec 27 19:25 bfile
-rw-r--r--. 1 root root 0 Dec 27 19:24 cfile
-a:比-p更极端,保留原时间戳等所有属性 -v:显示复制过程
mv:移动文件目录、重命名文件目录
# 把 afile文件 重命名为 bfile
mv afile bfile

# 把 atest目录 重命名为 btest
mv atest btest

# 把 afile文件 移动到并重命名为 /tmp/bfile
mv afile /tmp/bfile

# 把 atest目录 移动到并重命名为 /tmp/btest
mv atest /tmp/btest

注意:如果是移动/重命名文件时目的文件已经存在,会询问是否覆盖此文件;但如果移动/重命名的目的目录已经存在,并不会报错,而是会把目录不换名字移动到该已存在的目录下

# 已存在/tmp/btest
mv atest /tmp/btest
# 此时并不是把 atest 移动到 /tmp/ 下并命名为 btest,而是把 atest 移动到了 /tmp/btest/ 下。

通配符:批量操作 *

*:匹配所有abc*:匹配abc打头的所有(如abc、abcd、abc3、abcde、abc3d)*abc:匹配abc结尾的所有(如abc、daabc、eabc)

对 ls、cp、mv等命令适用

# 如当前目录下有 dira、dirb、dirc、test
mv dir* test 
# 会把 dira、dirb、dirc 都移入 test

mv * test
# 会报错,因为test也在当前目录下,不能把自己移入自己目录下,但是即便报错,并不影响移动其余的文件目录,当前目录下除了test之外,都会移动到 test 下面
? :匹配单个字符

abc?:匹配abc打头,后跟一个字符的目录文件(如abcd、abc3,但不匹配abc、abcde、abc3b等)?abc:匹配abc结尾,以任何一个字符开头(共4个字符)的文件目录(如aabc、dabc、3abc)abc??:匹配abc打头,后跟两个个字符的目录文件(如abcde、abc3b) [xyz]匹配xyz任意一个字符

# 假设目录下有 dira、dirb、dirc、dirabc
ls dir[abc]
# 会展示 dira、dirb、dirc,但不会展示dirabc
[^xyz]或[!xyz]不匹配xyz(仍然只是匹配一个字符)
# 假设目录下有 dira、dirb、dirc、dirabc
ls dir[^c] 或 ls dir[!c] 
# 会展示dirc,但不会展示 dira、dirb、dirabc
[a-z]匹配一个范围(仍然只是匹配一个字符)
# 假设目录下有 dira、dirb、dirc、dirabc
ls dir[a-c]
# 会展示 dira、dirb、dirc,但不会展示dirabc
# 若想匹配dirabc,可以如下
ls dir[a-c][a-c][a-c]
# 则会只匹配到 dirabc,不会匹配到 dira、dirb、dirc

打包与压缩、解压缩

linux 中,一个文件夹要进行压缩,需要先进行打包,然后再压缩。

打包

打包是把多个文件或单个/多个文件夹(目录)合并成一个文件,这个过程原则上并不进行压缩。但打包也可能会造成文件占用存储空间表少,那是由于磁盘存储文件的方式。

参考:https://zhidao.baidu.com/question/10179074.html

文件打包,有可能仅仅是将多个文件连接成1个文件,并不进行压缩处理。有时候也可能看起来文件变小,那是因为多个文件储存可能造成多余的空间浪费,究其原因是文件储存方式中,分块 族 造成的。1个族1次只能被1个文件使用,虽然1个文件能使用多个族,但最后1个族未必能填满。因此,n个文件就会造成很多浪费。而连接成1个文件后,只会浪费1个族。

压缩就不一样了,它不但把文件连在一起,还进行特定算法的压缩。对于txt这类很“松”的文件,可以大大减小文件的大小

linux 中打包命令为 tar。

tar 的选项可以省略掉前面的-引导(当然保留-也是可以的)

# 以下命令不是对文件目录原地操作,而是会产生新的文件目录

# 格式
tar 选项 目的文件(打包后的文件) 源目录(待打包的目录)
源目录可以是多个目录、文件,如:
tar cf test.tar afile bfile cfile
会将 afile bfile cfile 打包成 test.tar


# 把 /etc 目录打包
tar cf /tmp/etc-backup.tar /etc
# 顺序写成fc 也不影响“目的文件”和“源目录”的位置
# 但注意,如果不用“-”来引导选项时,c和f就要写到一起,分开来的话会有很奇怪的现象出现
# 另外注意:如果目的文件已存在,不会有报错提醒或覆盖询问
# 也可以写成(效果一样)
tar -cf /tmp/etc-backup.tar /etc

查看包文件内容

# 类似 ls -a,但没有 "." ".." 两个目录。
tar tf /tmp/etc-backup.tar  

# 更详细,类似 ll -a 或 ls -al,但没有 "." ".." 两个目录。
tar tvf /tmp/etc-backup.tar 

解包

# 以下命令不是对文件目录原地操作,而是会产生新的文件目录
tar xf /tmp/etc-backup.tar  # 默认解压到当前目录(pwd)
tar xf /tmp/etc-backup.tar  -C ./foo # 注意这里是大写 C, 解压到指定目录下,但foo得存在,否则报错

tar 命令选项参考:

-c 创建
-f 指定文件名
-t 查看     # 无论包是否压缩了都能查看包里有哪些文件
-v 显示     # cvf 可以看到打包时涉及哪些文件; tvf 可以详细显示包里有什么文件 
-x 解包
-z gzip压缩
-j bzip2压缩
压缩与解压缩

压缩

压缩会将文件大小变小,方便备份存储;解压缩则是把压缩的文件还原为压缩前的状态。

linux 中压缩命令为 gzip 与 bzip2,解压缩命令一样为 gzip 与 bzip2。

# 以下命令对文件目录进行原地操作,不另外生成目录文件
# 对已经进行压缩的后缀名为 gz、tgz(.tar.gz的缩写)、bz2(bzip2的简写)、tbz2(.tar.bz2的缩写),不会进行进一步的压缩操作(即便只是改后缀名为bz2,而实际上没有压缩的文件)
# 解压时,gzip只认识.gz、.tgz(.tar.gz的简写),bzip2只认识.bz2、.tbz2(.tar.bz2的简写)
# gzip 压缩的不能用 bizp2 来解压,即便把文件后缀名改了也不行,反之 bzip2 压缩的命令也无法用 gzip 来解压。

gzip xxx.tar        # 压缩
gzip -d xxx.tar.gz  # 解压缩

bzip2 xxx.tar        # 压缩
bzip2 -d xxx.tar.bz2  # 解压缩

但实际上 tar命令已经把 gzip 与 bzip2 集成了进去了。

bzip2方式比gzip方式对文件压缩得更小,但也更耗时。

如果希望在 tar 打包的同时,实现压缩,需要添加z选项(使用gzip)或j选项(使用bzip2)。

tar czf /tmp/etc-backup.tar /etc
# 注意仍然使用tar后缀名是可以的,仍然会生成得是压缩后的打包文件,但是这样别人无法知道这个文件是不是经过压缩的,所以一般会用双扩展名:

tar czf /tmp/etc-backup.tar.gz /etc

tar cjf /tmp/etc-backup.tar.bzip2 /etc  # 尽量不要用.bzip2,因为bzip2命令本身识别不了这个后缀(虽然也能解压,但生成.out文件,即便重命名也是一个文件而非可以打开的目录,还得用tar来解压,等于少了一种解压途径)
tar cjf /tmp/etc-backup.tar.bz2 /etc


用tar来压缩的话,后缀名是无所谓的,tar czf xxx.aaa /etc
都没有问题,aaa后缀名不影响 tar xf xxx.aaa 的解压缩。但是会影响其他用户,不知道xxx.aaa是什么压缩方式,也就无法知道另外去调用gzip还是bzip2来正常解压(实际上都不行)。

解压缩

tar xf xxx.gz
tar xf xxx.bz2

当然也可以用z和j选项来区分,加入z、j选项来解压,并不认文件后缀名,而认文件格式内容:

假如 xxx.aaa 是由gzip方式压缩而成,tar xzf xxx.aaa是没问题的;
假如 xxx.bz2 是由gzip方式压缩而成,然后改了后缀名,还是试用 tar xzf才能解压成功,用tar xjf 是会报错的。

但真的没有必要加z、j参数,直接tar xf 就好。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/725474.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号