建议收藏:好用的 Unix/Linux 命令技巧

1、删除一个大文件

我在生产服务器上有一个很大的200GB的日志文件需要删除。我的rm和ls命令已经崩溃,我担心这是由于巨大的磁盘IO造成的,要删除这个大文件,输入:

> /path/to/file.log
# 或使用如下格式
: > /path/to/file.log
# 然后删除它
rm /path/to/file.log

2、如何记录终端输出?

试试使用script命令行工具来为你的终端输出创建输出记录。

script my.terminal.sessio

输入命令:

ls
date
sudo service foo stop

要退出(结束script会话),输入 exit 或者 logout 或者按下 control-D。

exit

要浏览输入:

more my.terminal.session
less my.terminal.session
cat my.terminal.session

3、还原被删除的 /tmp 文件夹

我在文章Linux和Unix shell,我犯了一些错误。我意外地删除了/tmp文件夹。要还原它,我需要这么做:

mkdir /tmp
chmod 1777 /tmp
chown root:root /tmp
ls -ld /tmp

4、锁定一个文件夹

为了我的数据隐私,我想要锁定我文件服务器下的/downloads文件夹。因此我运行了:

chmod 0000 /downloads

root用户仍旧可以访问,而ls和cd命令则不工作。要还原它用:

chmod 0755 /downloads

5、在vim中用密码保护文件

害怕root用户或者其他人偷窥你的个人文件么?尝试在vim中用密码保护,输入:

vim +X filename

或者,在退出vim之前使用:X 命令来加密你的文件,vim会提示你输入一个密码。

6、清除屏幕上的乱码

只要输入:

reset

7、易读格式

传递-h或者-H(和其他选项)选项给GNU或者BSD工具来获取像ls、df、du等命令以易读的格式输出:

ls -lh
# 以易读的格式 (比如: 1K 234M 2G)
df -h
df -k
# 以字节、KB、MB 或 GB 输出:
free -b
free -k
free -m
free -g
# 以易读的格式输出 (比如 1K 234M 2G)
du -h
# 以易读的格式显示文件系统权限
stat -c %A /boot
# 比较易读的数字
sort -h -a file
# 在Linux上以易读的形式显示cpu信息
lscpu
lscpu -e
lscpu -e=cpu,node
# 以易读的形式显示每个文件的大小
tree -h
tree -h /boot 

8、在Linux系统中显示已知的用户信息

只要输入:

## linux 版本 ##
lslogins
## BSD 版本 ##
logins

示例输出:

UID USER   PWD-LOCK PWD-DENY LAST-LOGIN GECOS
 0 root       0    0  22:37:59 root
 1 bin       0    1      bin
 2 daemon      0    1      daemon
 3 adm       0    1      adm
 4 lp        0    1      lp
 5 sync       0    1      sync
 6 shutdown     0    1 2014-Dec17 shutdown
 7 halt       0    1      halt
 8 mail       0    1      mail
 10 uucp       0    1      uucp
 11 operator     0    1      operator
 12 games      0    1      games
 13 gopher      0    1      gopher
 14 ftp       0    1      FTP User
 27 mysql      0    1      MySQL Server
 38 ntp       0    1
 48 apache      0    1      Apache
 68 haldaemon    0    1      HAL daemon
 69 vcsa       0    1      virtual console memory owner
 72 tcpdump     0    1
 74 sshd       0    1      Privilege-separated SSH
 81 dbus       0    1      System message bus
 89 postfix     0    1
 99 nobody      0    1      Nobody
173 abrt       0    1
497 vnstat      0    1      vnStat user
498 nginx      0    1      nginx user
499 saslauth    0    1     

左右可以滑动(后面类似样式同理)

9、我如何删除意外在当前文件夹下解压的文件?

我意外在/var/www/html/而不是/home/projects/www/current下解压了一个tarball。它搞乱了/var/www/html下的文件,你甚至不知道哪些是误解压出来的。最简单修复这个问题的方法是:

cd /var/www/html/
/bin/rm -f "$(tar ztf /path/to/file.tar.gz)"

左右可以滑动

10、对top命令的输出感到疑惑?

正经地说,你应该试一下用htop代替top:

sudo htop

11、想要再次运行相同的命令

只需要输入!!。比如:

/myhome/dir/script/name arg1 arg2
# 要再次运行相同的命令
!!
## 以root用户运行最后运行的命令
sudo !!
!!会运行最近使用的命令。要运行最近运行的以“foo”开头命令:
!foo
# 以root用户运行上一次以“service”开头的命令
sudo !service
!$用于运行带上最后一个参数的命令:
# 编辑 nginx.conf
sudo vi /etc/nginx/nginx.conf
# 测试 nginx.conf
/sbin/nginx -t -c /etc/nginx/nginx.conf
# 测试完 "/sbin/nginx -t -c /etc/nginx/nginx.conf"你可以用vi再次编辑这个文件了
sudo vi !$

左右可以滑动

12、在终端上提醒你必须得走了

如果你需要提醒离开你的终端,输入下面的命令:

leave +hhmm

这里:

hhmm - 时间是以hhmm的形式,hh表示小时(12时制或者24小时制),mm代表分钟。所有的时间都转化成12时制,并且假定发生在接下来的12小时。

13、甜蜜的家

想要进入刚才进入的地方?运行:

cd -

需要快速地回到你的家目录?输入:

cd

变量CDPATH定义了目录的搜索路径:

export CDPATH=/var/www:/nas10

现在,不用输入cd */var/www/html/ 这样长了,我可以直接输入下面的命令进入 /var/www/html:

cd html

14、在less浏览时编辑文件

要编辑一个正在用less浏览的文件,可以按下v。你就可以用变量$EDITOR所指定的编辑器来编辑了:

less *.c
less foo.html
## 按下v键来编辑文件 ##
## 退出编辑器后,你可以继续用less浏览了 ##

15、列出你系统中的所有文件和目录

要看到你系统中的所有目录,运行:

find / -type d | less
# 列出$HOME 所有目录
find $HOME -type d -ls | less

要看到所有的文件,运行:

find / -type f | less
# 列出 $HOME 中所有的文件
find $HOME -type f -ls | less

16、创建目录树

你可以用mkdir加上-p选项一次创建一颗目录树:

mkdir -p /jail/{dev,bin,sbin,etc,usr,lib,lib64}
ls -l /jail/

17、将文件复制到多个目录中

不必运行:

cp /path/to/file /usr/dir1
cp /path/to/file /var/dir2
cp /path/to/file /nas/dir3

运行下面的命令来复制文件到多个目录中:

echo /usr/dir1 /var/dir2 /nas/dir3 | xargs -n 1 cp -v /path/to/file

左右可以滑动

留下创建一个shell函数作为读者的练习。

18、快速找出两个目录的不同

diff命令会按行比较文件。但是它也可以比较两个目录:

ls -l /tmp/r
ls -l /tmp/s
# 使用 diff 比较两个文件夹
diff /tmp/r/ /tmp/s/
Fig. : Finding differences between folders

图片: 找出目录之间的不同

19、文本格式化

你可以用fmt命令重新格式化每个段落。在本例中,我要用分割超长的行并且填充短行:

fmt file.txt

你也可以分割长的行,但是不重新填充,也就是说分割长行,但是不填充短行:

fmt -s file.txt

20、可以看见输出并将其写入到一个文件中

如下使用tee命令在屏幕上看见输出并同样写入到日志文件my.log中:

mycoolapp arg1 arg2 input.file | tee my.log

tee可以保证你同时在屏幕上看到mycoolapp的输出并写入文件  my.log。

总结

以上所述是小编给大家介绍的好用的 Unix/Linux 命令技巧,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • Linux命令技巧之30个必会的命令技巧

    在Unix/Linux下,高效工作方式不是操作图形页面,而是命令行操作,命令行意味着更容易自动化.使用过Linux系统的朋友应该都知道它的命令行强大之处.本文讲述了Linux下的查找,删除,打包,解压,查询及VIM等30个常用命令技巧 1.Vim自动添加注释及智能换行 # vi ~/.vimrc set autoindent set tabstop=4 set shiftwidth=4 function AddTitle() call setline(1,"#!/bin/bash")

  • 在linux上定期执行命令、脚本(cron,crontab,anacron)

    人类把时间做了切割,想象一条笔直的线永远向前,本来这条直线上什么都没有,但是人类根据时间的长短(单位)在这条直线上做了密密麻麻的标记(世纪-年-月-日-时-分-秒-纳秒......),通过这样的方式历史上的每一个时刻都能够被单独拿出来,而未来的每一个时刻也能被单独计划.更重要的是,每一个单独的时刻又能跟相邻的被更大单位所控制的相似时刻做比较,比如,今天的晚上12点跟明天的晚上12点,相似的是,两个时刻都是12点,不同的是今天跟明天,她们是相邻的更大单位.因为这样的缘故,在被更大单位所隔开的每一个

  • Linux中有效地管理进程的8个命令

    前言 进程管理的作用: 判断服务器健康状态:通过分析进程的状态(内存.CPU占有率等)判断服务器的负载和安全状态 查看系统中的所有进程 杀死进程 本文将给大家详细介绍关于Linux管理进程命令的相关内容,通过这些关键的命令来全程管理你的应用. 一般来说,应用程序进程的生命周期有三种主要状态:启动.运行和停止.如果我们想成为称职的管理员,每个状态都可以而且应该得到认真的管理.这八个命令可用于管理进程的整个生命周期. 启动进程 启动进程的最简单方法是在命令行中键入其名称,然后按回车键.如果要启动 N

  • Linux创建用户的操作命令

    Linux创建用户 useradd或adduser命令用来建立用户帐号和创建用户的起始目录,使用权限是超级用户. 创建用户 useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name 主要参数: -c:加上备注文字,备注文字保存在passwd的备注栏中. -d:指定用户登入时的主目录,替换系统默认值/home/<用户名> -D:变更预设

  • 如何在Linux中的特定时间运行命令

    有一天,我使用 rsync 将大文件传输到局域网上的另一个系统.由于它是非常大的文件,大约需要 20 分钟才能完成.我不想再等了,我也不想按 CTRL+C 来终止这个过程.我只是想知道在 Linux 操作系统中是否有简单的方法可以在特定的时间运行一个命令,并且一旦超时就自动杀死它 -- 因此有了这篇文章.请继续阅读. 在 Linux 中在特定时间运行命令 我们可以用两种方法做到这一点. 方法 1 - 使用 timeout 命令 最常用的方法是使用 timeout 命令.对于那些不知道的人来说,t

  • Linux下利用unzip命令如何解压多个文件详解

    linux中提示没有unzip命令解决方法 如果你如法使用unzip命令解压.zip文件,可能是你没有安装unzip软件,下面是安装方法 命令: yum list | grep zip/unzip #获取安装列表 安装命令: yum install zip #提示输入时,请输入y: 安装命令:yum install unzip #提示输入时,请输入y: Linux下直接使用unzip *.zip解压多个文件会报错 可以使用unzip '*.zip'或者 unzip "*.zip"或者u

  • Linux分区格式化的命令

    当硬盘分区完成后,需要对分区进行格式化. 使用mkfs工具对硬盘分区进行格式化,支持MBR和GPT两种分区表. 命令1:格式化sdb1分区为ext3格式 mkfs.ext3 /dev/sdb1 mke2fs 1.41.12 (17-May-2010) 文件系统标签= 操作系统:Linux 块大小=4096 (log=2) 分块大小=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 131072 inodes, 524288 blocks 26

  • Trash-Cli:Linux上的命令行回收站工具

    相信每个人都对 回收站(trashcan)很熟悉,因为无论是对 Linux 用户,还是 Windows 用户,或者 Mac 用户来说,它都很常见.当你删除一个文件或目录的时候,该文件或目录会被移动到回收站中. 需要注意的是,当把文件移动到回收站以后,文件系统空间并没有被释放,除非把回收站清空. 如果不想永久删除文件的话(清空回收站),可以利用回收站临时存储被删除了的文件,从而在必要的时候能够帮助我们恢复删除了的文件. 但是,如果在命令行使用 rm 命令进行删除操作,那么你是不可能在回收站中找到任

  • 建议收藏:好用的 Unix/Linux 命令技巧

    1.删除一个大文件 我在生产服务器上有一个很大的200GB的日志文件需要删除.我的rm和ls命令已经崩溃,我担心这是由于巨大的磁盘IO造成的,要删除这个大文件,输入: > /path/to/file.log # 或使用如下格式 : > /path/to/file.log # 然后删除它 rm /path/to/file.log 2.如何记录终端输出? 试试使用script命令行工具来为你的终端输出创建输出记录. script my.terminal.sessio 输入命令: ls date s

  • 分享20个Unix/Linux 命令技巧

    让我们用这些Unix/Linux命令技巧开启新的一年,提高在终端下的生产力.我已经找了很久了,现在就与你们分享. > /path/to/file.log # 或使用如下格式 : > /path/to/file.log # 然后删除它 rm /path/to/file.log 如何记录终端输出? 试试使用script命令行工具来为你的终端输出创建输出记录. script my.terminal.sessio 输入命令: ls date sudo service foo stop 要退出(结束sc

  • linux命令之目录监控 字符串拆分 监控命令运行结果 统计行数 去除文本头尾空格 获取网卡名浮点数运算等命令使用技巧

    上次为大家介绍了 Linux命令技巧之30个必会的命令技巧,今天再为大家介绍一些比较实用的命令使用技巧 1.监控目录,新创建的文件名追加到日志中 #要安装inotify-tools软件包 #!/bin/bash MON_DIR=/opt inotifywait -mq --format %f -e create $MON_DIR |\ while read files; do echo $files >> test.log done 2.find一次查找多个指定文件类型 # find ./ -

  • 收藏28个Unix/Linux的命令行神器

    dstat & sar iostat, vmstat, ifstat 三合一的工具,用来查看系统性能. 官方网站:http://dag.wieers.com/rpm/packages/dstat/ 你可以这样使用: alias dstat='dstat -cdlmnpsy' alias dstat='dstat -cdlmnpsy' slurm 查看网络流量的一个工具 官方网站:  Simple Linux Utility for Resource Management vim & ema

  • 详解Unix/Linux中周期执行指令Crontab命令

    简介 crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供之后读取和执行. 通常,crontab储存的指令被守护进程激活,crond常常在后台运行,每一分钟检查是否有预定的作业需要执行.这类作业一般称为cron jobs. cron 是 Unix/Linux 中提供定期执行 shell 命令的服务,包括 crond 和 crontab 两部分: crond: cron 服务的守护

  • 我常用的一些linux命令小结

    之前做过两年的运维,用过很多命令,深切体会到某些linux命令熟练掌握后对效率提升有多大.举个简单的例子,在做了研发后经常会有跑一些数据,对于结果数据的处理,我们的产品同学一般都习惯于用excel做统计,把数据复制到excel里,然后数据分列,排序---- 最后得出某些简单的结论,我只需要cat, sort, uniq, awk, grep 这几个命令挥手间完成相同的操作. 这里我总结下我工作这几年用过的一些命令,当然,这里就不提那些vim cd ls mv cp 这种简单的命令了,如果你都不会

  • Erlang中执行linux命令的两种方法

    os.cmd(Cmd) os模块提供了cmd函数可以执行linux系统shell命令(也可以执行windows命令).返回一个Cmd命令的标准输出字符串结果.例如在linux系统中执行os:cmd("date"). 返回linux的时间. 这种比较简单,一般情况下,也满足了大部分需求. erlang:open_port(PortName, PortSettings) 当os.cmd(Cmd) 满足不了你的需求的时候,就可以用强大的open_port(PortName, PortSett

  • linux命令学习之10个网络命令和监控命令

    网络和监控命令类似于这些: hostname, ping, ifconfig, iwconfig, netstat, nslookup, traceroute, finger, telnet, ethtool 用于查看linux服务器ip地址,管理服务器网络配置 ,通过 telnet 和ethernet建立与linux之间的网络链接,查看linux的服务器信息等.下面让我们看看在linux下的网络和监控命令的使用.1. hostname 复制代码 代码如下: hostname 没有选项,显示主机

  • 你可能会用到的16个Linux命令

    前言 我们每天都会频繁使用Linux命令行,虽然网上关于其使用技巧的资料多种多样,但很多朋友应该并没有进行过实际尝试.因此,今天的文章将对此进行汇总,希望能为大家带来一点帮助. 1. 将输出结果显示为表 有时候,当我们查看命令的输出结果时,大量拥护的字符串可能很难进行阅读.如果将命令整理为表?其实非常简单!只需要输入: mount | column –t: 在以上示例中,输出结果因为被空格隔开而显得非常清晰.那么,如果分隔符是冒号或者其它符号(例如cat /etc/passwd)又该怎么办? 只

随机推荐