设为首页收藏本站
天天打卡

 找回密码
 立即注册
搜索
查看: 38|回复: 11

分享20个 Unix/Linux 命令技巧

[复制链接]

2

主题

29

回帖

103

积分

注册会员

积分
103
发表于 2024-4-20 10:31:27 | 显示全部楼层 |阅读模式
删除一个大文件
我在生产服务器上有一个很大的200GB的日志文件需要删除。我的rm和ls命令已经崩溃,我担心这是由于巨大的磁盘IO造成的,要删除这个大文件,输入:
  1. > /path/to/file.log
  2. # 或使用如下格式
  3. : > /path/to/file.log
  4. # 然后删除它
  5. rm /path/to/file.log
复制代码
如何记录终端输出?
试试使用script命令行工具来为你的终端输出创建输出记录。
  1. script my.terminal.sessio
复制代码
输入命令:
  1. ls
  2. date
  3. sudo service foo stop
复制代码
要退出(结束script会话),输入
  1. exit
复制代码
或者
  1. logout
复制代码
或者按下
  1. control-D
复制代码
  1. exit
复制代码
要浏览输入:
  1. more my.terminal.session
  2. less my.terminal.session
  3. cat my.terminal.session
复制代码
还原被删除的 /tmp 文件夹
我在文章Linux和Unix shell,我犯了一些错误。我意外地删除了/tmp文件夹。要还原它,我需要这么做:
  1. mkdir /tmp
  2. chmod 1777 /tmp
  3. chown root:root /tmp
  4. ls -ld /tmp
复制代码
锁定一个文件夹
为了我的数据隐私,我想要锁定我文件服务器下的/downloads文件夹。因此我运行了:
  1. chmod 0000 /downloads
复制代码
root用户仍旧可以访问,而ls和cd命令则不工作。要还原它用:
  1. chmod 0755 /downloads
复制代码
在vim中用密码保护文件
害怕root用户或者其他人偷窥你的个人文件么?尝试在vim中用密码保护,输入:
  1. vim +X filename
复制代码

或者,在退出vim之前使用:X 命令来加密你的文件,vim会提示你输入一个密码。
清除屏幕上的乱码
只要输入:
  1. reset
复制代码
易读格式
传递-h或者-H(和其他选项)选项给GNU或者BSD工具来获取像ls、df、du等命令以易读的格式输出:
  1. ls -lh
  2. # 以易读的格式 (比如: 1K 234M 2G)
  3. df -h
  4. df -k
  5. # 以字节、KB、MB 或 GB 输出:
  6. free -b
  7. free -k
  8. free -m
  9. free -g
  10. # 以易读的格式输出 (比如 1K 234M 2G)
  11. du -h
  12. # 以易读的格式显示文件系统权限
  13. stat -c %A /boot
  14. # 比较易读的数字
  15. sort -h -a file
  16. # 在Linux上以易读的形式显示cpu信息
  17. lscpu
  18. lscpu -e
  19. lscpu -e=cpu,node
  20. # 以易读的形式显示每个文件的大小
  21. tree -h
  22. tree -h /boot
复制代码
在Linux系统中显示已知的用户信息
只要输入:
  1. ## linux 版本 ##
  2. lslogins
  3. ## BSD 版本 ##
  4. logins
复制代码
示例输出:
  1. UID USER      PWD-LOCK PWD-DENY LAST-LOGIN GECOS
  2.   0 root             0        0   22:37:59 root
  3.   1 bin              0        1            bin
  4.   2 daemon           0        1            daemon
  5.   3 adm              0        1            adm
  6.   4 lp               0        1            lp
  7.   5 sync             0        1            sync
  8.   6 shutdown         0        1 2014-Dec17 shutdown
  9.   7 halt             0        1            halt
  10.   8 mail             0        1            mail
  11. 10 uucp             0        1            uucp
  12. 11 operator         0        1            operator
  13. 12 games            0        1            games
  14. 13 gopher           0        1            gopher
  15. 14 ftp              0        1            FTP User
  16. 27 mysql            0        1            MySQL Server
  17. 38 ntp              0        1
  18. 48 apache           0        1            Apache
  19. 68 haldaemon        0        1            HAL daemon
  20. 69 vcsa             0        1            virtual console memory owner
  21. 72 tcpdump          0        1
  22. 74 sshd             0        1            Privilege-separated SSH
  23. 81 dbus             0        1            System message bus
  24. 89 postfix          0        1
  25. 99 nobody           0        1            Nobody
  26. 173 abrt             0        1
  27. 497 vnstat           0        1            vnStat user
  28. 498 nginx            0        1            nginx user
  29. 499 saslauth         0        1            "Saslauthd user"
复制代码
我如何删除意外在当前文件夹下解压的文件?
我意外在/var/www/html/而不是/home/projects/www/current下解压了一个tarball。它搞乱了/var/www/html下的文件,你甚至不知道哪些是误解压出来的。最简单修复这个问题的方法是:
  1. cd /var/www/html/
  2. /bin/rm -f "$(tar ztf /path/to/file.tar.gz)"
复制代码
对top命令的输出感到疑惑?
正经地说,你应该试一下用htop代替top:
  1. sudo htop
复制代码
想要再次运行相同的命令
只需要输入!!。比如:
  1. /myhome/dir/script/name arg1 arg2
  2. # 要再次运行相同的命令
  3. !!
  4. ## 以root用户运行最后运行的命令
  5. sudo !!
复制代码
!!会运行最近使用的命令。要运行最近运行的以“foo”开头命令:
  1. !foo
  2. # 以root用户运行上一次以“service”开头的命令
  3. sudo !service
复制代码
!$用于运行带上最后一个参数的命令:
  1. # 编辑 nginx.conf
  2. sudo vi /etc/nginx/nginx.conf
  3. # 测试 nginx.conf
  4. /sbin/nginx -t -c /etc/nginx/nginx.conf
  5. # 测试完 "/sbin/nginx -t -c /etc/nginx/nginx.conf"你可以用vi再次编辑这个文件了
  6. sudo vi !$
复制代码
在终端上提醒你必须得走了
如果你需要提醒离开你的终端,输入下面的命令:
  1. leave +hhmm
复制代码
这里:
  1. hhmm - 时间是以hhmm的形式,hh表示小时(12时制或者24小时制),mm代表分钟。所有的时间都转化成12时制,并且假定发生在接下来的12小时。
复制代码
甜蜜的家
想要进入刚才进入的地方?运行:
  1. cd -
复制代码
需要快速地回到你的家目录?输入:
  1. cd
复制代码
变量CDPATH定义了目录的搜索路径:
  1. export CDPATH=/var/www:/nas10
复制代码
现在,不用输入cd */var/www/html/ 这样长了,我可以直接输入下面的命令进入 /var/www/html:
  1. cd html
复制代码
在less浏览时编辑文件
要编辑一个正在用less浏览的文件,可以按下v。你就可以用变量$EDITOR所指定的编辑器来编辑了:
  1. less *.c
  2. less foo.html
  3. ## 按下v键来编辑文件 ##
  4. ## 退出编辑器后,你可以继续用less浏览了 ##
复制代码
列出你系统中的所有文件和目录
要看到你系统中的所有目录,运行:
  1. find / -type d | less
  2. # 列出$HOME 所有目录
  3. find $HOME -type d -ls | less
复制代码
要看到所有的文件,运行:
  1. find / -type f | less
  2. # 列出 $HOME 中所有的文件
  3. find $HOME -type f -ls | less
复制代码
用一条命令构造目录树
你可以用mkdir加上-p选项一次创建一颗目录树:
  1. mkdir -p /jail/{dev,bin,sbin,etc,usr,lib,lib64}
  2. ls -l /jail/
复制代码
将文件复制到多个目录中
不必运行:
  1. cp /path/to/file /usr/dir1
  2. cp /path/to/file /var/dir2
  3. cp /path/to/file /nas/dir3
复制代码
运行下面的命令来复制文件到多个目录中:
  1. echo /usr/dir1 /var/dir2 /nas/dir3 | xargs -n 1 cp -v /path/to/file
复制代码
留下创建一个shell函数作为读者的练习。
快速找出两个目录的不同
diff命令会按行比较文件。但是它也可以比较两个目录:
  1. ls -l /tmp/r
  2. ls -l /tmp/s
  3. # 使用 diff 比较两个文件夹
  4. diff /tmp/r/ /tmp/s/
复制代码
图片: 找出目录之间的不同
文本格式化
你可以用fmt命令重新格式化每个段落。在本例中,我要用分割超长的行并且填充短行:
  1. fmt file.txt
复制代码
你也可以分割长的行,但是不重新填充,也就是说分割长行,但是不填充短行:
  1. fmt -s file.txt
复制代码
可以看见输出并将其写入到一个文件中
如下使用tee命令在屏幕上看见输出并同样写入到日志文件my.log中:
  1. mycoolapp arg1 arg2 input.file | tee my.log
复制代码
tee可以保证你同时在屏幕上看到mycoolapp的输出并写入文件 my.log。
via: http://www.cyberciti.biz/open-source/command-line-hacks/20-unix-command-line-tricks-part-i/
作者:nixCraft 译者:geekpi 校对:wxy
本文由 LCTT 原创翻译,Linux中国 荣誉推出

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
  • 打卡等级:无名新人
  • 打卡总天数:1
  • 打卡月天数:0
  • 打卡总奖励:14
  • 最近打卡:2024-04-23 13:38:52

1

主题

43

回帖

123

积分

注册会员

积分
123
发表于 2024-5-2 08:28:33 | 显示全部楼层
好用好用

0

主题

78

回帖

157

积分

注册会员

积分
157
发表于 2024-5-4 18:07:43 | 显示全部楼层
看了LZ的帖子,我只想说一句很好很强大!

3

主题

29

回帖

125

积分

注册会员

积分
125
发表于 2024-5-13 23:07:38 | 显示全部楼层
顶一个,观点非常中肯!
发表于 2024-6-1 17:21:40 | 显示全部楼层
嘎嘎嘎嘎嘎嘎嘎

1

主题

45

回帖

109

积分

注册会员

积分
109
发表于 2024-6-10 16:40:24 | 显示全部楼层
能给个链接吗?我想深入了解一下。

0

主题

49

回帖

96

积分

注册会员

积分
96
发表于 2024-6-11 02:29:15 | 显示全部楼层
已测试,非常不错

1

主题

45

回帖

113

积分

注册会员

积分
113
发表于 2024-8-28 09:24:39 | 显示全部楼层
看了LZ的帖子,我只想说一句很好很强大!
  • 打卡等级:无名新人
  • 打卡总天数:2
  • 打卡月天数:0
  • 打卡总奖励:43
  • 最近打卡:2024-08-26 11:28:29

3

主题

46

回帖

203

积分

中级会员

积分
203
发表于 2024-9-24 16:25:53 | 显示全部楼层
这个话题真是有趣,我也对它感兴趣。

0

主题

50

回帖

99

积分

注册会员

积分
99
发表于 2024-10-7 06:34:20 | 显示全部楼层
顶一个,观点非常中肯!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|爱云论坛 - d.taiji888.cn - 技术学习 免费资源分享 ( 蜀ICP备2022010826号 )|天天打卡

GMT+8, 2024-11-15 12:11 , Processed in 0.103724 second(s), 27 queries .

Powered by i云网络 Licensed

© 2023-2028 正版授权

快速回复 返回顶部 返回列表