Linux学习(续)

环境变量与文件查找

通常我们会涉及到的变量类型有三种:

  • 当前 Shell 进程私有用户自定义变量,只在当前 Shell 中有效。

  • Shell 本身内建的变量。

  • 从自定义变量导出的环境变量。

文件打包与解压缩

  • zip:

    打包 :zip something.zip something (目录请加 -r 参数)

    解包:unzip something.zip

    指定路径:-d 参数

  • tar:

    打包:tar -cf something.tar something

    解包:tar -xf something.tar

    指定路径:-C 参数

命 令说 明
set显示当前 Shell 所有变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量。
env显示与当前用户相关的环境变量,还可以让命令在指定环境中运行。
export显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量。

两个重要文件 /etc/bashrc(有的 Linux 没有这个文件) 和 /etc/profile ,它们分别存放的是 shell 变量和环境变量。还有要注意区别的是每个用户目录下的一个隐藏文件:.profile

这个 .profile 只对当前用户永久生效。而写在 /etc/profile 里面的是对所有用户永久生效,所以如果想要添加一个永久生效的环境变量,只需要打开 /etc/profile,在最后加上你想添加的环境变量就好啦。

如何让环境变量立即生效?

可以使用source命令来让其立即生效,也可以用.来代替source

搜索文件

  1. whereis 简单快速

  2. locate 快而全

  3. which 小而精

  4. find 精而细

注意 find 命令的路径是作为第一个参数的, 基本命令格式为 find [path] [option] [action] 。

查看磁盘和目录的容量

  1. 使用 df 命令查看磁盘的容量

  1. 使用 du 命令查看目录的容量
    # 只查看1级目录的信息
    $ du -h -d 0 ~
    # 查看2级
    $ du -h -d 1 ~
    du -h #同--human-readable 以K,M,G为单位,提高信息的可读性。
    du -a #同--all 显示目录中所有文件的大小。
    du -s #同--summarize 仅显示总计,只列出最后加总的值。

创建虚拟磁盘

使用dd命令创建虚拟镜像文件

dd if=/dev/zero of=virtual.img bs=1M count=256

使用 mkfs 命令格式化磁盘(我们这里是自己创建的虚拟磁盘镜像)

sudo mkfs.ext4 virtual.img

使用 mount 命令挂载磁盘到目录树

使用mount来查看下主机已经挂载的文件系统:

sudo mount

mount [options] [source] [directory]
mount -o loop -t ext4 virtual.img /mnt 
# 也可以省略挂载类型,很多时候 mount 会自动识别
# 以只读方式挂载
mount -o loop --ro virtual.img /mnt
# 或者mount -o loop,ro virtual.img /mnt

使用 umount 命令卸载已挂载磁盘

# 命令格式 sudo umount 已挂载设备名或者挂载点,如:
$ sudo umount /mnt

使用 fdisk 为磁盘分区

# 查看硬盘分区表信息
$ sudo fdisk -l

使用 losetup 命令建立镜像与回环设备的关联

$ sudo losetup /dev/loop0 virtual.img
# 如果提示设备忙你也可以使用其它的回环设备,"ls /dev/loop*"参看所有回环设备
# 解除设备关联
$ sudo losetup -d /dev/loop0

内建命令与外部命令

一个是天生自带的天赋技能,一个是后天得来的附加技能。

#得到这样的结果说明是内建命令,正如上文所说内建命令都是在 bash 源码中的 builtins 的.def中
xxx is a shell builtin
#得到这样的结果说明是外部命令,正如上文所说,外部命令在/usr/bin or /usr/sbin等等中
xxx is /usr/bin/xxx
#若是得到alias的结果,说明该指令为命令别名所设定的名称;
xxx is an alias for xx --xxx
  1. help 命令

    ls --help不管是内建还是外部命令都可以

  1. man 命令

    man ls

man没有内建与外部命令的区分,因为 man 工具是显示系统手册页中的内容,也就是一本电子版的字典,这些内容大多数都是对命令的解释信息,还有一些相关的描述。通过查看系统文档中的 man 也可以得到程序的更多相关信息和 Linux 的更多特性。

在这里,“ LS ”表示手册名称,而“(1)”表示该手册位于第一章节。这个章节又是什么?在 man 手册中一共有这么几个章节

章节数 说明 1 Standard commands (标准命令) 2 System calls (系统调用) 3 Library functions (库函数) 4 Special devices (设备说明) 5 File formats (文件格式) 6 Games and toys (游戏和娱乐) 7 Miscellaneous (杂项) 8 Administrative Commands (管理员命令) 9 其他(Linux特定的), 用来存放内核例行程序的文档。

  1. info 命令

    info ls

Linux任务计划crontab

crontab 的使用

#启动它
sudo cron -f & 
#添加一个计划任务
crontab -e
#确定我们的 cron 是否成功的在后台启动
ps aux | grep cron
#查看到执行任务命令之后在日志中的信息反馈
sudo tail -f /var/log/syslog
#去删除任务
crontab -r
#查看我们添加了哪些任务
crontab -l 

挑战:备份日志

小明是一个服务器管理员,他需要每天备份论坛数据(这里我们用 alternatives.log 日志替代),备份当天的日志并删除之前的日志。而且备份之后文件名是 年-月-日 的格式。alternatives.log 在 /var/log/ 下面。

目标

  1. 为 shiyanlou 用户添加计划任务

  2. 每天凌晨 3 点的时候定时备份 alternatives.log 到 /home/shiyanlou/tmp/ 目录

  3. 命名格式为 年-月-日,比如今天是2017年4月1日,那么文件名为 2017-04-01

方法

sudo cron -f &
crontab -e
#添加内容
0 3 * * * sudo rm /home/shiyanlou/tmp/*
0 3 * * * sudo cp /var/log/alternatives.log /home/shiyanlou/tmp/$(date +\%Y-\%m-\%d)

顺序执行多条命令

sudo apt-get update;sudo apt-get install some-tool;some-tool

有选择的执行命令

which cowsay>/dev/null && echo "exist" || echo "not exist"

cut 命令,打印每一行的某一字段

grep 命令,在文本中或 stdin 中查找匹配字符串

wc 命令,简单小巧的计数工具

sort 排序命令

uniq 去重命令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值