linux每日一命令--cut

本文详细介绍了Linux下cut命令的使用方法,包括基本语法、参数解析及实际应用案例,展示了如何通过cut命令实现字段、字符和字节级别的数据提取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

--按文件大小排序 显示前100行 显示后五列

ll -Sh|head -n 100|cut -d ' ' -f 5-

 

一、基本语法
cut是一个选取命令,以行为单位,用指定分隔符将行切分为若干字段,选取所需要的字段。
1、语法格式
cut [option] files
option常用参数如下:
 

-d:用来定义分隔符,默认为tab键,一般与-f配合使用(如果分隔符是空格,必须是两个单引号之间确实有一个空格,是一个哦,不是支持多个)
-f:需要选取的字段,根据-d切分的字段集选取,下标从1开始
-s:表示不包括那些不含分隔符的行,用于去掉注释或者标题一类的信息
-c:以字符为单位进行分割,可以选取指定字符
-b:以字节为单位进行分割,可以选取指定字节,这些字节位置将忽略多字节字符边界(比如:汉字),除非同时指定了-n参数
-n:取消分割多字节字符,只能和-b参数配合使用,即如果字符的最后一个字节落在由-b参数列表指定的范围之内,则该字符将被选出,否则,该字符将被排除。
不难看出上面参数中,-f、-c、-b都是用来表示提取指定范围数据的,这个范围的表示方法如下:
 

N:只取第N项
N-:从第N项一直到行尾
N-M:从第N项到第M项(包括M项)
-M:从第一项到第M项(包括M项)
-:从第一项开始到结束的所有项
二、应用实例
1、基本用法
用-d与-f组合选取字段,这里以PATH为例说明之:
 

复制代码 代码示例:#echo $PATH
/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/changquan.scq/bin
 
(1)选取第2个路径:
 

复制代码 代码示例:#echo $PATH | cut -d: -f2
/usr/local/bin
 
(2)选取第2个开始后的所有路径:
 

复制代码 代码示例:#echo $PATH | cut -d: -f2-
/usr/local/bin:/bin:/usr/bin:/home/changquan.scq/bin
 
(3)选取第2到第4个路径,包括第4个路径:
 

复制代码 代码示例:#echo $PATH | cut -d: -f2-4
/usr/local/bin:/bin:/usr/bin
 
(4)选取从第1个到第4个路径,包括第4个路径:
 

复制代码 代码示例:#echo $PATH | cut -d: -f-4
/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin
 
(5)选取从第1个到最后一个路径的所有路径:
 

复制代码 代码示例:#echo $PATH | cut -d: -f-
/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/changquan.scq/bin
(6)选取第1个路径和第3个路径:
 

复制代码 代码示例:#echo $PATH | cut -d: -f1,3
/usr/kerberos/bin:/bin
 
(7)选取第1到第3个路径和第5个路径:
 

复制代码 代码示例:#echo $PATH | cut -d: -f1-3,5
/usr/kerberos/bin:/usr/local/bin:/bin:/home/changquan.scq/bin
2、字符定位
这里以who为例说明之:
 

复制代码 代码示例:#who
changquan.scq pts/02014-05-13 16:21 (10.62.50.159)
changquan.scq pts/12014-05-13 17:53 (10.62.50.159)
changquan.scq pts/22014-05-13 18:09 (10.62.50.159)
changquan.scq pts/32014-05-13 18:34 (10.62.50.159)
changquan.scq pts/42014-05-13 18:37 (10.62.50.159)
changquan.scq pts/52014-05-13 19:08 (10.62.50.159)
 
(1)提取每一行的第3个字节:
 

复制代码 代码示例:#who | cut -c3
a
a
a
a
a
 
(2)提取第1个字节开始到第3个字节,包括第3个字节:
 

复制代码 代码示例:#who | cut -c-3
cha
cha
cha
cha   
cha
 
(3)提取第3个字节开始到结束的所有字节,包括第3个字节:
 

复制代码 代码示例:#who | cut -c3-
angquan.scq pts/02014-05-13 16:21 (10.62.50.159)
angquan.scq pts/12014-05-13 17:53 (10.62.50.159)
angquan.scq pts/22014-05-13 18:09 (10.62.50.159)
angquan.scq pts/32014-05-13 18:34 (10.62.50.159)
angquan.scq pts/42014-05-13 18:37 (10.62.50.159)
angquan.scq pts/52014-05-13 19:08 (10.62.50.159)
 
(4)提取整行,第3个字节不会重叠:
 

复制代码 代码示例:#who | cut -c-3,3-
changquan.scq pts/02014-05-13 16:21 (10.62.50.159)
changquan.scq pts/12014-05-13 17:53 (10.62.50.159)
changquan.scq pts/22014-05-13 18:09 (10.62.50.159)
changquan.scq pts/32014-05-13 18:34 (10.62.50.159)
changquan.scq pts/42014-05-13 18:37 (10.62.50.159)
changquan.scq pts/52014-05-13 19:08 (10.62.50.159)
 
(5)提取每一行的第3到第5个字节和第8个字节:
 

复制代码 代码示例:#who | cut -c3-5,8
anga
anga
anga
anga
anga
 
3、字节定位
依然以who为例说明之:
提取每一行的第3到第5个字节和第8个字节:
 

复制代码 代码示例:#who | cut -b3-5,8
anga
anga
anga
anga
anga
 
咋一看-b与-c没什么区别,其实不然,二者在单字节字符(字母)上基本一样,而在多字节字符(汉字)上有很大区别,这里以汉字提取为例说明之:
 

复制代码 代码示例:#vi test.txt
星期一
星期二
星期三
#cut -b3 test.txt
?
?
?
#cut -c3 test.txt



 
从上面的例子不难看出,-c以字符为单位输出正常,而-b以字节为单位输出乱码。
当然-b在遇到多字节字符时也不是无药可救了,还有个参数-n可以配合使用来告诉cut不要将多字节字符拆开:
 

复制代码 代码示例:#cut -nb 2

#cut -nb 1,2,3


转载于:https://www.cnblogs.com/Hobbies/p/4527466.html

<think>好的,我现在需要回答用户关于Linux系统备份文件的最佳实践和命令的问题。首先,用户之前询问过如何在鲁班猫2上备份系统到SD卡,我提供了三种方法:dd命令、分区备份和图形化工具。现在用户转向更般的Linux文件备份,需要结合之前的回答和相关引用。 首先,回顾用户提供的引用,引用[2]提到了Linux系统备份与恢复,可能涉及文件系统类型检查,比如使用file命令。引用[1]关于rm命令的注意事项,可能在备份时需要注意删除操作的风险。引用[3]提到同步dotfiles,可能涉及rsync的使用。引用[4]是用户学习Linux的经历,可能不太相关,但可以忽略。 用户现在需要最佳实践和命令,所以需要综合之前的dd命令方法,但这次是文件备份而非全盘备份。可能需要引入其他工具如rsync、tar,以及考虑增量备份、压缩等。同时,用户可能希望步骤清晰,命令示例,注意事项。 在之前的回答中,已经详细介绍了dd命令,但dd更适合全盘或分区备份,而文件备份更灵活,应该推荐rsync和tar。结合引用[3]提到的同步配置文件,rsync非常适合,因为它可以增量同步,节省时间和空间。tar则适合打包压缩,便于归档。 需要注意最佳实践,比如定期备份、验证备份完整性、存储位置的安全性等。同时,引用[1]提到rm的高风险,所以在备份时可能建议使用--backup选项或避免误删。 可能的步骤包括:使用rsync进行增量备份,使用tar创建压缩包,验证备份,自动化备份(cron),以及安全措施。同时,要提到如何恢复备份,因为用户之前的问题涉及恢复时的错误处理。 需要检查是否有遗漏的工具或方法,比如dd的适用场景,或者结合文件系统快照(如LVM),但考虑到用户可能的基础,保持简单实用。可能还需要提到外部存储的使用,如SD卡、USB或网络存储。 最后,相关问题需要与文件备份相关,比如如何自动化,如何加密,如何验证完整性,增量备份策略等。</think>根据Linux系统特性和实际运维需求,以下是文件备份的六种核心方法及最佳实践指南,结合设备特性与安全考量: ### 、增量同步备份(推荐方案) ```bash rsync -avzh --progress --delete --backup --backup-dir=../backup_$(date +%Y%m%d) \ /home/user/documents/ /mnt/backup_drive/ 2>&1 | tee backup.log ``` *参数解析*: - `-avzh`:归档模式+压缩传输+保留属性 - `--backup`:创建版本控制备份,避免覆盖文件[^1] - `tee`:同时输出日志到文件和终端 ### 二、版本化压缩归档 ```bash tar -cvpzf "backup_$(date +%F).tar.gz" \ --exclude=*.tmp --exclude=cache /home /etc 2>/dev/null ``` *特性*: - 自动生成日期戳文件名:`backup_2023-12-01.tar.gz` - 排除临时文件(`--exclude`),压缩率比zip高约30%[^2] - 保留权限信息(`-p`参数) ### 三、Btrfs/ZFS快照方案 ```bash sudo btrfs subvolume snapshot -r /data /data/snapshots/$(date +%s) ``` *优势*: - 秒级创建COW快照,几乎不占存储空间 - 支持增量快照传输到远程服务器 ### 四、差异备份策略 ```bash find /var/log -mtime -7 -type f -print0 | xargs -0 tar -rf weekly_diff.tar ``` *应用场景*: - 配合`cron`实现每日/周差异备份 - `-mtime -7`:仅备份7天内修改文件 ### 五、云同步方案 ```bash rclone sync -P --transfers 8 --checkers 16 \ /mnt/backup_drive/ mydrive:backups/ --log-file=rclone.log ``` *配置建议*: - 使用`crypt`模块加密敏感数据 - 设置带宽限制避免影响网络:`--bwlimit 08:00,512 20:00,off` ### 六、系统级保护方案 ```bash sudo timeshift --create --comments "Manual Backup" --tags D ``` *特性*: - 支持Btrfs/ZFS/Ext4文件系统 - 自动保留多版本快照 - 可引导恢复模式 --- ### 最佳实践准则 1. **3-2-1原则**: - 至少3份副本 - 2种不同介质(如HDD+SD卡) - 1份异地存储(如云存储) 2. **完整性验证**: ```bash sha256sum origin_file | cut -d' ' -f1 > checksum.sha cmp <(sha256sum backup_file | cut -d' ' -f1) checksum.sha ``` 3. **安全存储规范**: - 敏感数据使用GPG加密: ```bash gpg --symmetric --cipher-algo AES256 backup.tar ``` - SD卡建议使用ext4/exFAT格式,避免FAT32的4GB限制[^3] 4. **自动化部署**: 创建`/etc/cron.daily/backup`: ```bash #!/bin/bash rsync -av --link-dest=/mnt/backup/last /data/ /mnt/backup/$(date +%F) ln -sfn $(readlink -f /mnt/backup/$(date +%F)) /mnt/backup/last ``` --- ### 应急恢复指南 ```bash # 从tar恢复 tar -xvpzf backup.tar.gz -C /restore_path --numeric-owner # rsync增量恢复 rsync -avHP --stats /mnt/backup/ corrupted_data/ # 快照回滚 sudo btrfs subvolume delete /data sudo btrfs subvolume snapshot /data/snapshots/20231201 /data ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值