Linux命令基本格式以及文件处理命令
编辑Linux命令基本格式以及文件处理命令
命令提示符的含义
[root@localhost ~]
-
其中
root
代表当前用户 -
localhost
主机名 -
~
当前所在的目录(家目录) -
家目录就是用户登陆的初始目录 ,超级管理员家目录为
/root
其他用户目录是/home/user1
(在创建用户的时候自动生成) -
#
超级用户提示符,普通用户提示符是$
命令格式
命令 [选项] [格式]
注意:个别命令使用不遵循此格式,当有多个选项时可以写在一起;简化选项与完整选项
-a == --all
查看目录中的内容 :ls
-
选项 :
- -a 显示所有文件,包括隐藏文件
- -l 显示详细信息;
- -d 查看目录属性
- -h 人性化显示文件大小
- -i 显示
inode
ls -l 相当于 ll
-
文件属性
-rw-r--r--. 1 root root 20 Dec 5 14:03 ntuser.ini
-
文件类型(-
文件d
目录l
软连接文件)rw-
u 所有者r--
所属组r--
其他用户rwx
分别对应文件的读写可执行权限.
代表ACL权限1
代表引用计数- 时间是文件的最后修改时间
Linux 的文件类型只有7种
- 文件
- 文件夹
- 软连接(快捷方式)
- 块设备文件
- 字符设备文件
- 套接字文件
- 管道文件
linux文件处理命令
-
查看当前所在的目录路径
pwd
英文原意 print working directory; -
建立目录
mkdir -p [目录名]
-p 递归创建(英文原意 make directories) -
切换所在目录
cd [目录名]
,英文原意切换所在目录 change directory -
简化操作
- 进入当前用户的家目录
cd ~
- 进入上次所在的目录
cd -
- 进入上一级目录
cd ..
- 进入当前目录
cd .
- 进入当前用户的家目录
-
删除空目录
rmdir [目录名]
-
删除文件或者目录
rm -rf [文件或者目录]
英文原意 remove-
选项
-
不带参数的就是删除文件会有交互提示
-
-r
删除目录(也可以删除文件,递归删除的意思),会有交互提示 -
-f
强制删除
-
注意:字符界面没有回收站选项,且linux识别
rm -rf /
命令
-
创建空文件
touch [文件名]
-
复制命令
cp [选项] [原文件] [目标目录]
英文原意copy
选项
-
-r
复制目录 -
-p
连带文件属性复制 ,(让目标文件和源文件的属性保持一致,时间权限等) -
-d
若源文件是链接文件,则复制链接的属性 -
-a
相当于-prd
-
剪切或者改名命令
mv [源文件] [目标目录]
英文原意move- -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
- -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
- -u :若目标文件已经存在,且 source 比较新,才会升级 (update)
绝对路径和相对路径
- 相对路径 :参考当前所在的目录进行查找
cd ../home/misty :进入当前目录的上一级目录下的home/misty文件夹下
- 绝对路径 :从根目录开始指定,一级一级递归查找,在任何目录下,都能进入指定的位置
cd /root/java 进入根目录下的root目录
常用目录的作用
-
/
根目录 -
/bin
命令保存目录(普通用户就可以读取的命令);sbin
存放超级管理员可以读取的命令; -
/boot
启动目录,启动相关文件 -
/dev
设备文件保存目录 -
/etc
配置文件保存目录 -
/home
普通用户的家目录,root
超级管理员的家目录 -
/lib
系统库保存目录 -
/mnt
系统挂载目录 -
/media
挂载目录 -
/misc
media, misc ,mnt
空目录用于挂载外接设备(因为linux的外接设备需要挂载才能使用)
tmp
临时文件目录proc
直接写入内存的sys
>proc 和sys
目录不能直接操作,这两个目录是保存内存的挂载点,该目录的内容直接写入内存/usr
系统软件资源目录
/usr/bin/
系统命令(普通用户)
/usr/sbin/
系统命令(超级用户)/var
系统相关文档目录
链接命令
-
ln -s [原文件] [目标文件]
英文原意link
-
功能描述: 生成链接文件,选项
-s
创建软链接 -
硬链接特征:
1.拥有相同的i节点和储存block块,可以看做是同一个文件,删除其中一个另一个可以照常使用,除非全部删除
2.可以通过i节点识别 ,ls -i
(ll -i
) 查看文件的i节点
3.不能跨分区
4.不能针对目录使用 -
软连接特征
-
类似windows的快捷方式
-
软链接拥有自己的I节点和block块,但是数据块中只保存源文件的文件名和I节点号,并没有实际的文件数据
-
lrwxrwxrwx
l软链接 ,软链接的文件权限都是lrwxrwxrwx
,实际权限和源文件权限一致 -
修改任意文件另一个都会改变
-
删除源文件,软链接不能使用
注意:软链接源文件一定要写绝对路径
软链接和硬链接的区别,终端实操
- 软链接的i节点和源文件不一致,软链接权限777
lrwxrwxrwx
但是实际的权限就是源文件权限,且标识为l
软链接
查看硬链接的i节点 ,确定是硬链接,相同的文件相同的存储block块
- 硬链接比较隐蔽,除了i节点,不容易区分硬链接
- 硬链接的限制比较多,并且不能跨分区,不能针对目录使用
终端操作小技巧
- Ctrl +L 清屏
- Tab 自动补全
其他的有用的命令
echo 666 >> niuniu.log
将666 写入到文件末尾
文件搜索命令
文件搜索命令locate
-
语法
locate 文件名
,搜索文件名; -
在后台数据库中按文件名搜索,搜索速度更快,占用系统资源少,但是功能单一只能搜索文件名
-
/var/lib/mlocate
locate所搜索的后台数据库 -
updatedb
更新数据库注意:这个数据库不是实时更新的,更新频率大概每天一次 ; 可以手动强制更新数据库 ;在不同的版本数据库名字可能有点区别
locate three
locate: can not stat () '/var/lib/mlocate/mlocate.db': No such file or directory
//执行一下 updatedb 即可加载相关库,就可以使用该命令了
/etc/updatedb.conf
配置搜索的筛选规则 ,配置文件含义
- 该配置不仅仅对locate命令生效而且对whereis与which也生效
PRUNE_BIND_MOUNTS="yes" //配置文件生效(开启搜索限制)
PRUNENAMES=".git .bzr .hg .svn" //不搜索的文件类型
PRUNEPATHS="/tmp /var/spool /media /home/.ecryptfs /var/lib/schroot" //不搜索的路径
PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre tmpfs usbfs udf fuse.glusterfs fuse.sshfs curlftpfs ecryptfs fusesmb devtmpfs"
//不搜索的文件系统
#### 命令搜索命令whereis与which
-
whereis [命令名]
搜索命令所在的路径以及帮助文档所在的位置-b
只查找可执行文件-m
只查找帮助文件
-
which [命令]
查看命令所在位置,如果命令有别名显示别名其他相关命令 :
whoami
查看当前用户whatis [命令关键字]
查看命令的作用Path环境变量:定义的是系统搜索命令的路径;
-
命令搜索的命令依赖path所定义的环境变量
//打印Path环境变量 root@DESKTOP-2IM4LQA:/mnt/f/test/one/three# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin root@DESKTOP-2IM4LQA:/mnt/f/test/one/three#
### 文件搜索命令find
* `find [搜索范围] [搜索条件]` 搜索文件
* `find / -name install.log` 在根目录下根据名字搜索 install.log文件(名字需要完全一样才行)
* 避免大范围搜索,会非常耗费系统资源;
* `find`是在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配 通配符是完全匹配
* `find /root -iname install.log` 查找文件不区分大小写
* `find /root -user root` 按照所有者搜索 ,在root目录下搜索用户root的文件
* `find /root -nouser` 查找指定目录中没有所有者的文件
* `find /var/log -mtime +10` 查找 十天前 修改的文件
* `-10` 十天内
* `10` 十天当天
* `+10` 十天前
* `atime` 文件访问时间 英文原意 `access`
* `ctime` 改变文件属性 英文原意 `change`
* `mtime` 修改文件内容 英文原意 `modify`
> 可以用于日志文件查询;可以支持按照分钟查找
* `find . -size 25k` 在当前文件夹下查找文件大小是25kb的文件
* `-25k` 小于25kb的文件
* `25k` 等于25kb的文件
* `+25k` 大于25kb的文件
>注意:这里的大小需要是整数;这里的表示`kb`单位用 `k` 如:25k,表示`MB`单位用 大写 `M`;不带单位的话默认参数是block扇区单位(block *512 才是实际字节数)
![img](https://gitee.com/iMist/Linux/raw/master/images/image7.png)
* `find . -inum 242422` 查找i节点是242422的文件
> 配套命令 `ls -i`查看文件的i节点
* 复杂的命令
![img](https://gitee.com/iMist/Linux/raw/master/images/image8.png)
* `find /etc -size +20k -a -size -50k` 查找`/etc`目录下 大于20kb并且小于50kb的文件
* `find /etc -size +5k -a -size -50k -exec ls -lh {} \;` 查找`/etc`目录下 大于20kb并且小于50kb的文件,并显示详细信息;
* `-exec/-ok 命令 {} \ ;` 对搜索结果执行操作 `{} \` 表示搜索结果
>注意 : `{}` 和 `\`的符号之间需要空格 ;并且一定要以分号结尾而且分号需要紧紧挨着 `\`
![img](https://gitee.com/iMist/Linux/raw/master/images/image9.png)
##### Linux 中的通配符
* `*` 匹配任意内容
* `find /mnt/f/MyRepository/ -name "*"` 查找当前目录下的所有内容
* `find /mnt/f/MyRepository/ -name "read*"`或者 `find /mnt/f/MyRepository/ -name readme*` 查找文件名匹配的项,这里感觉打不打`""` 没有影响
* `?` 匹配任意一个字符
* `find /mnt/f/test/one/find -name xix?.log`
* `[]` 匹配任意一个中括号内的内容
* `find /mnt/f/test/one/find -name *[s][h]` 查找以`sh`结尾的文件
> 注意:在实际操作过程中,可以不用带引号(环境是win10的linux子系统),另外通配符合一结合使用
### `grep` 搜索字符转的命令
* `grep [选项] 字符串 文件名` 在当前文件中匹配符合条件的字符串
* -i 忽略大小写
* -v 排除指定的字符串
### find命令与grep命令的区别
* `find命令`:在系统当中搜索符合条件的文件名,如果需要匹配则使用`通配符`进行匹配,通配符是`完全匹配`
* `grep命令` : 在文件当中搜索符合条件的字符串,如果需要匹配,则使用`正则表达式`进行匹配,正则表达式是`包含匹配`
> 查找文件使用完全匹配,查找文件内容使用包含匹配
- 0
- 0
-
分享