🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # Linux文件与目录管理 ## 1 目录的相关操作 ### 1.1 `cd`:切换目录 ### 1.2 `pwd`:显示当前目录 ### 1.3 `mkdir`:新建一个新的目录 ### 1.4 `rmdir`:删除一个空的目录 ## 2 文件与目录管理 ### 2.1 `ls`:查看文件与目录 ### 2.2 `cp`:复制文件 ### 2.3 `rm`:移除文件/目录 ### 2.4 `mv`:移动/更名文件/目录 ### 2.5 `scp`: 远程拷贝文件 两台机器IP分别为:A.104.238.161.75,B.43.224.34.73。 在A服务器上操作,将B服务器上/home/lk/目录下所有的文件全部复制到本地的/root目录下,命令为: `scp -r root@43.224.34.73:/home/lk /root`。 具体过程为: ~~~ [root@XX ~]# scp -r root@43.224.34.73:/home/lk /root root@43.224.34.73's password: k2.sql 100% 0 0.0KB/s 00:00 k.zip 100% 176 0.2KB/s 00:00 .bash_history 100% 32 0.0KB/s 00:00 .bash_logout 100% 18 0.0KB/s 00:00 .bashrc 100% 231 0.2KB/s 00:00 k3.sql 100% 0 0.0KB/s 00:00 .bash_profile 100% 193 0.2KB/s 00:00 [root@XX ~]# ls ~~~ 在A服务器上将/root/lk目录下所有的文件传输到B的/home/lk/cpfile目录下,命令为: `scp -r /root/lk root@43.224.34.73:/home/lk/cpfile`。 具体过称为: ~~~ [root@XX lk]# scp -r /root/lk root@43.224.34.73:/home/lk/cpfile root@43.224.34.73's password: k2.sql 100% 0 0.0KB/s 00:00 k3.sql 100% 0 0.0KB/s 00:00 .bash_profile 100% 193 0.2KB/s 00:00 .bash_logout 100% 18 0.0KB/s 00:00 .bash_history 100% 32 0.0KB/s 00:00 k.zip 100% 176 0.2KB/s 00:00 .bashrc 100% 231 0.2KB/s 00:00 [root@XX lk]# ~~~ scp在夸机器复制的时候为了提高数据的安全性,使用了ssh连接和加密方式,如果机器之间配置了[ssh免密码登录](http://www.cnblogs.com/likui360/p/6012035.html),那在使用scp的时候密码都不用输入。 1.命令格式: `scp \[参数\] \[原路径\] \[目标路径\]` 2.命令功能: `scp`是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。linux的scp命令可以在linux服务器之间复制文件和目录。 3.命令参数: `-1`  强制scp命令使用协议ssh1   `-2`  强制scp命令使用协议ssh2   `-4`  强制scp命令只使用IPv4寻址   `-6`  强制scp命令只使用IPv6寻址   `-B`  使用批处理模式(传输过程中不询问传输口令或短语)   `-C`  允许压缩。(将-C标志传递给ssh,从而打开压缩功能)   `-p` 保留原文件的修改时间,访问时间和访问权限。   `-q`  不显示传输进度条。   `-r`  递归复制整个目录。   `-v` 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。    `-c cipher`  以cipher将数据传输进行加密,这个选项将直接传递给ssh。    `-F ssh_config`  指定一个替代的ssh配置文件,此参数直接传递给ssh。   `-i identity_file`  从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。     `-l limit`  限定用户所能使用的带宽,以Kbit/s为单位。      `-o ssh_option`  如果习惯于使用ssh\_config(5)中的参数传递方式,    `-P port`  注意是大写的P, port是指定数据传输用到的端口号    `-S program`  指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。 ## 3 文件内容查看 ### 3.1 直接查看文件内容 #### 3.1.1 `cat`:在屏幕上正序显示文件所有内容 ~~~Linux # cat [-AbEnTv] fileName ~~~ #### 3.1.2 `tac`:在屏幕上倒序显示文件所有内容 ~~~Linux # tac fileName ~~~ #### 3.1.3 `nl`:在屏幕上正序显示文件所有内容,添加行号 ~~~Linux # nl [-bnw] fileName ~~~ ### 3.2 翻页查看文件内容 #### 3.2.1 `more`:往后一页一页翻看 ~~~Linux # more fileName ~~~ 在more这个程序的运行过程中,有几个按键可以按 * `空格键(Space)`:向下翻一页 * `Enter`:向下滚动一行 * `/字符串`:在当前显示的内容中,向下查询"字符串"这个关键字 * `n`:重复前一个查询 * `:f`:立刻显示出文件名以及目前显示的行数 * `q`:立刻离开more,不再显示该文件内容 * `b`或`[ctrl]-b`:往回翻页,不过这操作只对文件有用,对管道无用。 #### 3.2.2 `less`:往前、后一页一页翻看 ~~~Linux # less fileName ~~~ 同样,在less这个程序的运行过程中,也有几个按键可以按 * `空格键(Space)`或`[PageDown]`:向下翻一页 * `[PageUp]`:向上翻一页 * `/字符串`:向下查询"字符串"这个关键字 * `?字符串`:向上查询"字符串"这个关键字 * `n`:重复前一个查询(与`/`或`?`有关) * `N`:反向重复前一个查询(与`/`或`?`有关) * `q`:立刻离开less,不再显示该文件内容 ### 3.3 简单选取文件内容 #### 3.3.1 `head`:取出前面几行 ~~~Linux # head [-n number] fileName ~~~ 默认显示头10行。 #### 3.3.2 `tail`:取出后面几行 ~~~Linux # tail [-n number] fileName ~~~ 默认显示尾10行。 ### 3.4 `od`:显示非纯文本文件 ~~~Linux # od [-t TYPE] fileName ~~~ TYPE的类型: * `a`:利用默认的字符来输出 * `c`:使用 ASCII字符来输出 * `d[size]`:利用十进制(decimal)来输出数据,每个整数占用size bytes * `f[size]`:利用浮点数(floating)来输出数据,每个数占用 size bytes * `o[size]`:利用八进制(octa1)来输出数据,每个整数占用size bytes * `x[size]`:利用十六进制(hexadecimal)来输出数据,每个整效点用size bytes. ### 3.5 `touch`: 创建新文件或修改文件时间 ~~~Linux # touch [-acdmt] fileName ~~~ 参数: * `-a`:仅修改访问时间 * `-c`:仅修改文件的时间,若该文件不存在则不创建新文件 * `-d`:后面可以接欲修改的日期而不用目前的日期,也可以便用--date="日期或时间" * `-m`:仅修改 mtime * `-t`:后面可以接欲修改的时间而不用目前的时间,格式为\[YYMMDDhhmm]. 每个文件在linux下面都会记录许多的时间参数,有三个主要的变动时间 * modification time ( mtime) 当文件的“内容数据”更改时,就会更新这个时间。内容数据指的是文件的内容,而不是文件的属性或权限。 * status time ( ctime) 当该文件的“状态”(status)改变时,就会更新这个时间,举例来说,像是权限与属性被更改了,都会更新这个时间。 * access time (atime) 当"该文件的内容被取用"时就会更新这个读取时间(access)。举例来说,我们使用cat去读取/etc/man.config,就会更新该文件的atime了。 ### 3.6 `umask`: 新建文件/目录时的默认去除权限值 在默认权限的属性上,目录与文件是不一样的。`x`的权限对于目录时很重要的,但一般文件创建时是不应该有的(一般文件通常用于数据的记录,只需要`r`和`w`)。所以默认情况下: * `文件`:默认权限为`-rw-rw-rw-`,数值为“666” * `目录`:默认权限为`drwxrwxrwx`,数值为“777” 1. 查询`umask`的值, :-: ![root的`umask`值](https://box.kancloud.cn/4d6e76761c1c7ea25226b7c8f9537ccc_269x61.png) :-: root的`umask`值 若root新建文件/目录的权限如下: * 新建`文件`权限:文件默认权限(`-rw-rw-rw-`)-`umask`值(-----w--w-)==>`-rw-r--r--` * 新建`目录`权限:目录默认权限(`drwxrwxrwx`)-`umask`值(-----w--w-)==>`drwxr-xr-x` 2. 设置`umask`的值 :-: ![root设置`umask`值](https://box.kancloud.cn/30e5048a1b2894af7822930b1c6ae1c1_269x81.png) :-: root设置`umask`值 ### 3.7 `chattr` /`lsattr` : 文件隐藏属性的设置/显示 ### 3.8 `SUID` /`SGID` : 二进制文件的特殊权限 ### 3.9 `SBIT`: 目录的特殊权限 ### 3.9 `file`:查看文件类型 如果想要知道某个文件的基本数据,例如是属于ASCII或者是data文件,或者是binary,其中有没有使用到动态函数库(share library)等等的信息,就可以利用这个命令来查看。 ### 3.10 命令与文件的查询 #### 3.10.1 `which`:寻找执行文件 `which`:寻找“执行文件” `which`查找的范围是当前用户的PATH变量内所规范的目录。 #### 3.10.2 `whereis`:寻找特定文件 #### 3.10.3 `locate`:寻找特定文件 #### 3.10.4 `find`:寻找特定文件