linux常用命令
一、常见目录
- /根目录
- /boot 启动目录,启动相关文件
- /dev 设备文件
- /etc 配置文件
- /home 普通用户的家目录,可以操作
- /lib 系统库保存目录
- /mnt 移动设备挂载目录
- /media 光盘挂载目录
- /misc 磁盘机挂载目录
- /root 超级用户的家目录,可以操作
- /tmp 临时目录,可以操作
- /proc 正在运行的内核信息映射,主要输出进程信息、内存资源信息和磁盘分区信息等等
- /sys 硬件设备的驱动程序信息
- /var 变量
- /bin 普通的基本命令,如ls,chmod等,一般的用户也可以使用
- /usr/bin 是你在后期安装的一些软件的运行脚本
- /usr/sbin 放置一些用户安装的系统管理的必备程序
二、文件处理命令
```
[[email protected] ~]#
```
- root表示当前登录用户
- localhost表示主机名
- ~表示当前用户的家目录
- # 提示符,超级用户是#,普通用户是$
1. 命令格式
- 命令 [选项] [参数]
- 当有多个选项时,可以写在一起
- 一般参数有简化和完整两种写法,比如-a 与 --all等效
2. ls
- 查询目录中的内容
- ls[选项][文件或目录]
- 选项
- -a显示所有文件,包含隐藏文件,是--all的缩写
- -l显示详细信息
- -d查看目录本身的属性而非子文件
```
比如 当前目录下有test,test下有1.txt,即:
当前目录>text>1.txt
然后在当前目录输入:
ls test
显示的是1.txt,也及时test的子目录
在当前目录输入:
ls -d text
显示的是text,也就是只查看text的,不看子目录的
```
- -h 人性化的方式显示文件大小
- 比如ls -lh与ls -l,这两者的区别就是:假如大小是2034,前者就显示人性化的为2.0k,后者就是2034
- -i 显示inode,也几岁时i节点,每个节点都有ID号
```
912132 -rw-r--r--. 1 root root 41364 1月 3 2019 install.log
```
- 912132就是inode
- 默认当前文件下的文件列表
2.1 -l 显示详细信息
912132 -rw-r--r--. 1 root root 41364 1月 3 2019 install.lo
详细信息 |
912132 |
drwxr-xr-x |
. |
1 |
root |
root |
41364 |
1月 3 2019 |
logs |
代表含义 |
inode(i节点) |
文件类型和权限 |
ACL权限 |
硬链接引用计数 |
所有者 |
所属组 |
文件大小 |
最后修改时间 |
文件名 |
解释说明 |
|
详见下面的1.文件权限 |
|
|
|
|
字节数 |
|
|
- 文件权限
- 分类:
- 所属者的权限
- 所属组的权限
- 其他人的权限(既不是所属者也不是所属组)
- 举例:drwxr-xr-x
- d这个位置表示文件类型,d为文件夹
- rwx 表示所有者权限
- r-x 表示其他人的权限
3. mkdir
- 创建目录
- mkdir -p [目录名]
- -p 递归创建
3.1 注意
- mkdir a/b 如果没有a,那么b就无法创建。也就是说必须要父级存在
- mkdir -p a/b 如果没有a,则先创建a再创建b。可以没有父级。这就是所谓的递归创建。
4. cd
- 切换所在目录
- cd [目录]
- ~家目录
- root用户的家目录就是/root
- 普通用户的家目录就是/home/用户名
- $OLDPWD 返回上次所在的目录
- -返回上次所在的目录
- .当前目录
- ..上级目录
5. pwd
- 显示当前目录
6. mkdir
- 删除空目录 remove empty directory
- rmdir [目录名]
- 如果不是空目录,不能删除,会报错
7. rm
- 删除文件或目录 remove
- rm [操作][文件或目录]
- -r 删除目录或文件
- -f 强制删除
- rm -rf [文件或目录]
- 递归强制删除所有目录或文件
8. cp
- copy 拷贝,默认只拷贝文件,要拷贝目录加-r
- copy [操作][源文件或目录][目标文件或目录]
- -r 拷贝目录,不加-r默认拷贝文件
- -p 连带文件属性拷贝
- -d 若源文件为链接文件,则拷贝链接属性
- -a 相当于-rpd
9. mv
- 移动文件或改名
- mv [源文件或目录][目标文件或目录]
10. ln
- 链接命令,生成链接文件 link
10.1 硬链接特征(一般不使用)
- 拥有相同的i节点和存储block块,可以看作是同一个文件
- 可以通过i节点访问
- 不能跨分区
- 不能针对目录使用
- 一般不使用
- 删除硬链接产生的文件,不影响源文件或其他硬链接产生的文件
- 删除源文件,同样不影响其他硬链接产生的文件
- 举例:
```
ln a.txt newa.txt
ls -li
显示:
534850 -rw-r--r--. 2 root root 0 6月 30 23:55 a.txt
534850 -rw-r--r--. 2 root root 0 6月 30 23:55 newa.txt
除了文件名,其他都一样
```
10.2 软链接特征
- ln -s [源文件][目标文件]
- -s创建软链接
- 类似Windows快捷方式
- 软链接拥有自己的i节点和Block块,但是数据块中只保留源文件的文件名和i节点号,并没有实际的文件数据
- lrwxrwxrwx | 软链接 软链接的文件权限都是 777
- 删除源文件,软链接不能使用
- 删除软链接,源文件不影响
- 软连接源文件必须使用绝对路径
- 不管改源文件还是软链接文件,另外一个也会跟着变
- 举例:
```
ln -s 1.txt ln1.txt
这样就产生了软连接ln1.txt
于是,ls -li,得到:
932283 -rw-r--r--. 1 root root 5 7月 16 08:29 1.txt
932278 lrwxrwxrwx. 1 root root 5 7月 16 08:30 ln1.txt -> 1.txt
```
三、文件搜索命令
1. locate
- 使用方式:
- locate 1.txt
- 使用注意:
- 如果报错,说没有/var/lib/mlocation.db文件,则使用updatedb命令更新下数据库后再搜索即可
- 原理:
- 后台数据库会保存所有文件的信息(包含文件名、位置和索引),然后搜索文件其实就是在这个数据库中按文件名搜索,速度比较快
- 特点:
- 数据保存在/var/lib/mlocate 这个后来数据库中,默认每天更新一次
- 如果想立刻更新数据库,就使用updatedb
- 只能搜索文件名
- 有一个建立索引的配置文件,使用locate命令搜索文件名,会根据这个文件的配置来搜索
- 文件位置和名称:/etc/updatedb.conf
- 配置内容:
- PRUNE_BIND_MOUNTS="yes"全局生效,开启搜索限制
- PRUNEFS 不搜索的文件系统
- PRUNENAMES 忽略的文件类型
- PRUNEPATHS 忽略的路径
2. whereis
- 搜搜命令所在的路径以及帮助文档所在路径
- whereis 命令名称
- 举例: whereis ls
- 代表搜索ls这个命令所在的路径以及帮助文档所在的路径
- -b 只查找可执行文件
- -m 只查找帮助文件
3. which
- 可以看到别名
- 比如 which ls
- 能看到的都是外部安装的命令
- 无法查看Shell自带的命令,比如:which cd就不行
4. 环境变量
```
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
```
- 定义的是系统搜索命令的路径
- echo $PATH 输出系统命令存放的路径
5. find
- 文件搜索命令
- find[搜索范围][搜索条件]
5.1 按名称搜索
- 避免大范围的搜索,会非常消耗系统资源
```
find / -name aaa.log
```
5.2 通配符
- find是在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配
- 通配符
- * 匹配任意内容
- ? 匹配任何一个字符
- [] 匹配任何一个中括号内的字符
```
find . -name "ab[cdef"
```
5.3 忽略大小写 -i
```
find / -iname A.log
```
5.4 按所有者进行搜索 -user
```
find /root -user root 找/root目录下用户为root的文件
```
5.5 按时间搜索
```
find /nginx/access.log -mtime +5
```
参数 |
含义 |
atime |
文件访问时间 |
ctime |
文件属性改变的时间 |
atime |
文件内容改变的时间 |
参数 |
含义 |
-5 |
5天内修改的文件 |
5 |
5天前当天修改的文件 |
+5 |
5天前修改的文件 |
5.6 按大小搜索
```
find . -size 100k
```
参数 |
含义 |
-8k |
小于8k |
8k |
等于8k |
+8k |
大于8k |
+8M |
小于8M |
- 注意:k小写,M大写
5.7 按i节点搜索
```
find . -inum 123456
```
5.8 综合应用
```
find /tmp -size +10k -a -size -20k
```
- 上述指令含义:查找/tmp目录下大小大于10l,并且大小小于20k的文件
- -a 表示and的意思,逻辑与,两个条件都满足
- -o 表示or的意思,逻辑或,两个条件满足一个就可以
- exec 对上个命令的结果进行操作
```
find /tmp -size +10k -a -size -20k exec ls -lh {} \;
```
5.9 grep
- 在文件当中匹配符合条件的字符串
- grep "10" access.log
- -i 忽略大小写
- -v 排除指定字符串
- find命令,在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配
- grep命令,在文件中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式时包含匹配
- 举例:
```
grep yuhua 1.txt //在1.txt中搜索yuhua这个字符串,返回这一行
cat 1.txt | grep yuhua //将|前的结果传到|后的指令中,也就是在1.txt的内容中搜搜yuhua,返回yuhua所在的行
cat 1.txt | grep -i Yuhua//不区分大小写
cat 1.txt | grep -v yuhua//不包含yuhua的
```
未完待续