Linux就应该这么学_每天一个命令day02

文件目录管理命令
1.touch 用于创建空白文件或设置文件的时间。

mtime文件内容的修改时间;ctime文件权限或属性的更改时间;atime文件的读取时间
-a 仅修改atime;-m 仅修改mtime;-d 同时修改 atime与mtimed

[root@localhost ~]# touch -a "2018-12-30 12:28" 6.txt 
2.mkdir 创建空白目录
-p 用来递归创建出嵌套叠层关系的文件目录
3.cp 用于复制文件或目录 格式为“cp [选项] 源文件 目标文件”。

如果目标文件是目录,则会把源文件复制到该目录中;
如果目标文件也是普通文件,则会询问是否要覆盖它;
如果目标文件不存在,则执行正常的复制操作。

-p 保留原始文件的属性
-d 若对象为“链接文件”,则保留该“链接文件”的属性
-r 递归持续复制(用于目录)
-i 若目标文件存在则询问是否覆盖
-a 相当于-pdr(p、d、r 为上述参数)
4.mv

用于剪切文件或将文件重命名 格式为“mv [选项] 源文件 [目标路径|目标文件名]”

剪切操作不同于复制操作,因为它会默认把源文件删除掉,只保留剪切后的文件。
在同一个目录中对一个文件进行剪切操作,其实也就是对其进行重命名

5.rm 令用于删除文件或目录 格式为“rm [选项] 文件”
-f 删除反复的确认信息
-r 递归删除,通常与-f连用
6.dd 用于按照指定大小和个数的数据块来复制文件或转换文件 格式为“dd [参数]”

if 输入的文件名称
of 输出的文件名称
bs 设置每个“块”的大小
count 设置要复制“块”的个数

/dev/zero的文件,不占用系统的存储空间,可以提供无穷无尽的数据。
从/dev/zero 设备文件中取出一个大小为 560MB 的数据块,然后保存成名为 560_file 的文件

[root@localhost ~]#dd if=/dev/zero of=560_file count=1 bs=560M

将光驱设备中的光盘制作成 iso 格式的镜像文件,

[root@linuxprobe ~]# dd if=/dev/cdrom of=RHEL-server-7.0-x86_64-LinuxProbe.Com.iso
7.file

查看文件的类型 格式“file 文件名”

2.8 打包压缩与搜索
1.tar 用于对文件进行打包压缩或解压,格式为“tar [选项] [文件]”

-c 创建压缩文件
-x 解开压缩文件
-t 查看压缩包内有哪些文件
-z 用 Gzip 压缩或解压
-j 用 bzip2 压缩或解压
-v 显示压缩或解压的过程
-f 目标文件名
-p 保留原始的权限与属性
-P 使用绝对路径来压缩
-C 指定解压到的

把/etc 目录通过 gzip 格式进行打包压缩,并把文件命名为 etc.tar.gz

[root@linuxprobe ~]# tar -czvf etc.tar.gz /etc

将上面打包后的压缩包文件指定解压到/root/etc 目录中(先使用 mkdir 命令来创建/root/etc 目录)

[root@linuxprobe ~]# mkdir /root/etc
[root@linuxprobe ~]# tar xzvf etc.tar.gz -C /root/etc
2.grep 用于在文本中执行关键词搜索 格式为“grep [选项] [文件]”

-b 将可执行文件(binary)当作文本文件(text)来搜索
-c 仅显示找到的行数
-i 忽略大小写
-n 显示行号
-v 反向选择—仅列出没有“关键词”的行

查找/etc/passwd用户信息中包含/sbin/nologin,查找出当前系统中不允许登录系统的所有用户信息

[root@linuxprobe ~]# grep /sbin/nologin /etc/passwd
3.find

令用于按照指定条件来查找文件,格式为“find [查找路径] 寻找条件 操作”

-name 匹配名称
-perm 匹配权限(mode 为完全匹配,-mode 为包含即可)
-user 匹配所有者
-group 匹配所有组
-mtime -n +n 匹配修改内容的时间(-n 指 n 天以内,+n 指 n 天以前)
-atime -n +n 匹配访问文件的时间(-n 指 n 天以内,+n 指 n 天以前)
-ctime -n +n 匹配修改文件权限的时间(-n 指 n 天以内,+n 指 n 天以前)
-nouser 匹配无所有者的文件
-nogroup 匹配无所有组的文件
-newer f1 !f2 匹配比文件 f1 新但比 f2 旧的文件
–type b/d/c/p/l/f 匹配文件类型(后面的字母参数依次表示块设备、目录、字符设备、管道、链接文件、文本文件)
-size 匹配文件的大小(+50KB 为查找超过 50KB 的文件,而-50KB 为查找小于 50KB 的文件)
-prune 忽略某个目录
-exec …… {}; 后面可跟用于进一步处理搜索结果的命令(下文会有演示)

获取/etc目录中所有以host开头的文件列表

[root@linuxprobe ~]# find /etc -name "host*" -print

搜索权限中包括SUID权限的所有文件

[root@linuxprobe ~]# find / -perm -4000 -print

在/下找出所有归属于linuxprobe用户的文件并复制到/root/findresult目录
重点“-exex {} ;”参数,其中{}表示find命令搜索出的每一个文件,并且命令结尾必须是“\;”

[root@linuxprobe ~]# find / -user linuxprobe -exec cp {} /root/findresult/ \;

管道符、重定向与环境变量

3.1 输入输出重定向

标准输入重定向(STDIN,文件描述符为 0)
标准输出重定向(STDOUT,文件描述符为 1)
错误输出重定向(STDERR,文件描述符为 2)

输入重定向中用到的符号及其作用

  1. 命令 < 文件 将文件作为命令的标准输入
  2. 命令 << 分界符 从标准输入中读入,直到遇见分界符才停止
  3. 命令 < 文件 1 > 文件2 将文件 1 作为命令的标准输入并将标准输出到文件 2

输出重定向中用到的符号及其作用
1 命令 > 文件
将标准输出重定向到一个文件中(清空原有文件的数据)
2 命令 2> 文件
将错误输出重定向到一个文件中(清空原有文件的数据)
3 命令 >> 文件
将标准输出重定向到一个文件中(追加到原有内容的后面)
4 命令 2>> 文件
将错误输出重定向到一个文件中(追加到原有内容的后面)
5 命令 >> 文件 2>&1 或 命令 &>> 文件
将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)

通过标准输出重定向将man bash命令写入到readme.txt

[root@linuxprobe ~]# man bash > readme.txt
[root@linuxprobe ~]# cat readme.txt

以覆盖写入模式向readme.txt写入一行数据
然后追加一行数据

[root@linuxprobe ~]# echo "Welcome to LinuxProbe.Com" > readme.txt
[root@linuxprobe ~]# echo "Quality linux learning materials" >> readme.txt
[root@linuxprobe ~]# cat readme.txt

将正确信息输出到屏幕上,错误信息写入文件中

[root@linuxprobe ~]# ls -l linuxproe > /root/stdout.txt
[root@linuxprobe ~]# ls -l linuxproe 2> /root/stderr.txt

使用输入重定向把readme.txt文件导入给wc -l命令,统计下文件内容行数

[root@linuxprobe ~]# wc -l < readme.txt

上面命令相当于

[root@linuxprobe ~]# cat readme.txt | wc -l
3.2 管道命令符

“|” 把前一个命令原本要输出到屏幕的标准正常数据当作是后一个命令的标准输入

找出所以被限制登录系统的用户,统计文本行数

[root@linuxprobe ~]# grep "/sbin/nologin" /etc/passwd | wc -l

以翻页的形式查看/etc 目录中的文件列表及属性信息

[root@linuxprobe ~]# ls -l /etc/ | more

管道命令可以使用多次

命令A | 命令B | 命令C
3.3 命令行的通配符

星号(*)代表匹配零个或多个字符
问号(?)代表匹配单个字符,
[0-9]代表匹配 0~9 之间的单个数字的字符
[abc]代表匹配 a、b、c 三个字符中的任意一个字符

匹配所有/dev目录中且以sda开头的文件

[root@linuxprobe ~]# ls -l /dev/sda*

匹配sda后面某一个字符的相关信息

[root@linuxprobe ~]# ls -l /dev/sda?

匹配0~9之间的单个数字
匹配三个指定数字中的一个[135]
若没有匹配到,则不会显示出来

[root@linuxprobe ~]# ls -l /dev/sda[0-9]
[root@linuxprobe ~]# ls -l /dev/sda[135]
3.4 常用的转义字符

➢ 反斜杠(\):使反斜杠后面的一个变量变为单纯的字符串。
➢ 单引号(’’):转义其中所有的变量为单纯的字符串。
➢ 双引号(""):保留其中的变量属性,不进行转义处理。
➢ 反引号(``):把其中的命令执行后返回结果

定义一个变量,并输出

[root@linuxprobe ~]# PRICE=5
[root@linuxprobe ~]# echo "Price is $PRICE"

如果想显示“KaTeX parse error: Can't use function '\"' in math mode at position 9: ”,需要使用 "\̲"̲,两个"$"显示当前程序进程ID号码

[root@linuxprobe ~]# echo "Price is $$PRICE"
Price is 47PRICE
[root@linuxprobe ~]# echo "Price is \$$PRICE"
Price is 5

如果只需要某个命令的输出值时,可以使用命令

[root@linuxprobe ~]# echo `uname -a`
3.5 重要的环境变量

HOME 用户的主目录(即家目录)
SHELL 用户在使用的 Shell 解释器名称
HISTSIZE 输出的历史命令记录条数
HISTFILESIZE 保存的历史命令记录条数
MAIL 邮件保存路径
LANG 系统语言、语系名称
RANDOM 生成一个随机数字
PS1 Bash 解释器的提示符
PATH 定义解释器搜索用户执行命令的路径
EDITOR 用户默认的文本编辑器

Linux系统执行命令的过程
1.判断用户是否以绝对路径或相对路径方式(/bin/ls)输入命令,如果是直接执行
2.系统检查"别名命令" 格式 alias 别名=命令 取消别名 unalias 别名

[root@linuxprobe ~]# alias rm='rm -i'
[root@linuxprobe ~]# unalias rm

3.Bash解释器判断用户输入的是内部命令还是外部命令。可以使用type 命令名称来判断
4.系统在多个路径中查找用户输入的命令文件

[root@linuxprobe ~]# echo $PATH

export命令将局部变量提升为全局就是

[root@linuxprobe ~]# WORKDIR=/home/workdir
[root@linuxprobe ~]# echo $WORKDIR
[root@linuxprobe ~]# export WORKDIR
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值