PUB:20150115 20 Unix Command Line Tricks--Part I

@geekpi
This commit is contained in:
wxy 2015-03-21 19:34:03 +08:00
parent 673a16a077
commit 28917b514d

View File

@ -1,6 +1,6 @@
20个Unix命令技巧 - 第一部分
20个 Unix/Linux 命令技巧(一)
================================================================================
让我们用**这些Unix命令技巧**开启新的一年,提高在终端下的生产力。我已经找了很久了,现在就与你们分享。
让我们用**这些Unix/Linux命令技巧**开启新的一年,提高在终端下的生产力。我已经找了很久了,现在就与你们分享。
![](http://s0.cyberciti.org/uploads/cms/2015/01/unix-command-line-tricks.001.jpg)
@ -9,16 +9,15 @@
我在生产服务器上有一个很大的200GB的日志文件需要删除。我的rm和ls命令已经崩溃我担心这是由于巨大的磁盘IO造成的要删除这个大文件输入
> /path/to/file.log
# or use the following syntax
# 或使用如下格式
: > /path/to/file.log
# finally delete it
# 然后删除它
rm /path/to/file.log
### 如何缓存终端输出? ###
尝试使用script命令行工具来为你的终端输出创建typescript。
### 如何记录终端输出? ###
试试使用script命令行工具来为你的终端输出创建输出记录。
script my.terminal.sessio
@ -28,7 +27,7 @@
date
sudo service foo stop
要退出结束script绘画),输入*exit* 或者 *logout* 或者按下 *control-D*
要退出结束script会话),输入 *exit* 或者 *logout* 或者按下 *control-D*
exit
@ -38,11 +37,10 @@
less my.terminal.session
cat my.terminal.session
### 还原删除的 /tmp 文件夹 ###
### 还原删除的 /tmp 文件夹 ###
我在文章[Linux和Unix shell我犯了一些错误][1]。我意外地删除了/tmp文件夹。要还原它我需要这么做
mkdir /tmp
chmod 1777 /tmp
chown root:root /tmp
@ -50,11 +48,11 @@
### 锁定一个文件夹 ###
为了我的数据隐私,我想要锁定我文件服务器下的/downloads文件夹。因此我运行
为了我的数据隐私,我想要锁定我文件服务器下的/downloads文件夹。因此我运行
chmod 0000 /downloads
root用户仍旧可以访问但是ls和cd命令还不可用。要还原它用:
root用户仍旧可以访问而ls和cd命令则不工作。要还原它用:
chmod 0755 /downloads
@ -66,40 +64,40 @@ root用户仍旧可以访问但是ls和cd命令还不可用。要还原它用
或者在退出vim之前使用:X 命令来加密你的文件vim会提示你输入一个密码。
### 清除屏幕上的输出 ###
### 清除屏幕上的乱码 ###
只要输入:
reset
### 成为人类 ###
### 易读格式 ###
传递*-h*或者*-H*和其他选项选项给GNU或者BSD工具来获取像ls、df、du等命令以人类可读的格式输出:
传递*-h*或者*-H*和其他选项选项给GNU或者BSD工具来获取像ls、df、du等命令以读的格式输出:
ls -lh
# 以人类可读的格式 (比如: 1K 234M 2G)
# 以读的格式 (比如: 1K 234M 2G)
df -h
df -k
# 已字节输出如: KB, MB, or GB
# 以字节、KB、MB 或 GB 输出:
free -b
free -k
free -m
free -g
# 以人类可读的格式打印 (比如 1K 234M 2G)
# 以易读的格式输出 (比如 1K 234M 2G)
du -h
# 以人类可读的格式获取系统perms
# 以易读的格式显示文件系统权限
stat -c %A /boot
# 比较人类可读的数字
# 比较读的数字
sort -h -a file
# 在Linux上以人类可读的形式显示cpu信息
# 在Linux上以读的形式显示cpu信息
lscpu
lscpu -e
lscpu -e=cpu,node
# 以人类可读的形式显示每个文件的大小
# 以读的形式显示每个文件的大小
tree -h
tree -h /boot
### 在Linux系统中显示已知用户信息 ###
### 在Linux系统中显示已知用户信息 ###
只要输入:
@ -143,7 +141,7 @@ root用户仍旧可以访问但是ls和cd命令还不可用。要还原它用
### 我如何删除意外在当前文件夹下解压的文件? ###
我意外在/var/www/html/而不是/home/projects/www/current下解压了一个tarball。它混乱了/var/www/html下的文件。最简单修复这个问题的方法是:
我意外在/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)"
@ -166,7 +164,7 @@ root用户仍旧可以访问但是ls和cd命令还不可用。要还原它用
## 以root用户运行最后运行的命令
sudo !!
!!会运行最近使用的命令。要运行最近运行的“foo”命令
!!会运行最近使用的命令。要运行最近运行的“foo”开头命令:
!foo
# 以root用户运行上一次以“service”开头的命令
@ -180,12 +178,11 @@ root用户仍旧可以访问但是ls和cd命令还不可用。要还原它用
# 测试 nginx.conf
/sbin/nginx -t -c /etc/nginx/nginx.conf
# 测试完 "/sbin/nginx -t -c /etc/nginx/nginx.conf"你可以用vi编辑了
# 测试完 "/sbin/nginx -t -c /etc/nginx/nginx.conf"你可以用vi再次编辑这个文件
sudo vi !$
### 在你要离开的时候留下一个提醒 ###
### 在终端上提醒你必须得走了 ###
If you need a reminder to leave your terminal, type the following command:
如果你需要提醒离开你的终端,输入下面的命令:
leave +hhmm
@ -200,26 +197,26 @@ If you need a reminder to leave your terminal, type the following command:
cd -
需要快速地回到家目录?输入:
需要快速地回到你的家目录?输入:
cd
变量*CDPATH*定义了含有这个目录的搜索目录路径:
变量*CDPATH*定义了目录的搜索路径:
export CDPATH=/var/www:/nas10
现在不用输入cd */var/www/html/ ,我可以直接输入下面的命令进入/var/www/html
现在不用输入cd */var/www/html/ 这样长了,我可以直接输入下面的命令进入 /var/www/html
cd html
### 编辑一个用less浏览的文件 ###
### 在less浏览时编辑文件 ###
要编辑一个用less浏览的文件按下v。你就可以用变量$EDITOR下的编辑器来编辑了:
要编辑一个正在用less浏览的文件可以按下v。你就可以用变量$EDITOR所指定的编辑器来编辑了:
less *.c
less foo.html
## 下v编辑文件 ##
## 退出编辑器你可以继续用less浏览了 ##
## 下v键来编辑文件 ##
## 退出编辑器你可以继续用less浏览了 ##
### 列出你系统中的所有文件和目录 ###
@ -237,14 +234,14 @@ If you need a reminder to leave your terminal, type the following command:
# 列出 $HOME 中所有的文件
find $HOME -type f -ls | less
### 用一条命令构造命令树 ###
### 用一条命令构造目录树 ###
你可以用mkdir加上-p选项一次创建目录树
你可以用mkdir加上-p选项一次创建一颗目录树:
mkdir -p /jail/{dev,bin,sbin,etc,usr,lib,lib64}
ls -l /jail/
### 复制文件到多个目录中 ###
### 将文件复制到多个目录中 ###
不必运行:
@ -260,16 +257,16 @@ If you need a reminder to leave your terminal, type the following command:
### 快速找出两个目录的不同 ###
diff命令会按行比较文件。它也可以比较两个目录
diff命令会按行比较文件。但是它也可以比较两个目录:
ls -l /tmp/r
ls -l /tmp/s
# Compare two folders using diff ##
# 使用 diff 比较两个文件夹
diff /tmp/r/ /tmp/s/
[![Fig. : Finding differences between folders](http://s0.cyberciti.org/uploads/cms/2015/01/differences-between-folders.jpg)][3]
图片: 找出目录之间的不同
*图片: 找出目录之间的不同*
### 文本格式化 ###
@ -281,13 +278,13 @@ diff命令会按行比较文件。它也可以比较两个目录
fmt -s file.txt
### 看见输出并写入到一个文件中 ###
### 可以看见输出并将其写入到一个文件中 ###
如下使用tee命令在屏幕上看见输出并同样写入到日志文件my.log中
mycoolapp arg1 arg2 input.file | tee my.log
tee可以保证你同时在屏幕上看到mycoolapp的输出和写入文件
tee可以保证你同时在屏幕上看到mycoolapp的输出并写入文件  my.log
--------------------------------------------------------------------------------
@ -295,7 +292,7 @@ via: http://www.cyberciti.biz/open-source/command-line-hacks/20-unix-command-lin
作者:[nixCraft][a]
译者:[geekpi](https://github.com/geekpi)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出