@1: 在单个命令中创建目录树:
不要逐层创建目录,尽量使用mkdir的-p选项:

~$ mkdir -p one/two/three    # 假设目录one不存在

创建复杂的目录树:

~$ mkdir -p ./{a/{c,d/e/{f/h,g/i}},b}    # 假设目录a不存在

@2: 使用选项 -C 来解压缩 .tar 文件到指定的目录(如tmp/a/b/c)

~$ tar xvf -C tmp/a/b/c filename.tar.gz

@3: Be careful of the wildcard.

一般最好将变量调用包括在双引号中,除非您有不这样做的足够理由。

lxw@ubuntu:~$ ls Music/
a b
lxw@ubuntu:~$ var="Music/*"
lxw@ubuntu:~$ echo $var
Music/a Music/b
lxw@ubuntu:~$ echo "$var"
Music/*
lxw@ubuntu:~$ echo "${var}a"
Music/*a
lxw@ubuntu:~$ echo ${var}a
Music/a
lxw@ubuntu:~$

@4: xargs:
#1:

find可以到指定的目录的子目录中查找, grep -r也可以, 但如果指定了查找的文件的类型, 可能用find会更方便.

比如下面的例子, 要达到完全等效的效果, 用grep写可能会稍微麻烦些

~$ find ./ -name "*.sh"|xargs grep "string"

#2:

~$ ls|xargs file

@5: time: 执行命令所耗费的时间

~$ time find ./ -name "*.sh"|xargs grep "string"
./dirInfo.sh: #read -p: If there are some 'Escape Characters' in the prompt string, there will be something unexpected. real 0m0.007s
user 0m0.004s
sys 0m0.000s

@6: grep不需要cat

提倡

~$ time grep "lxw" basicShellScripts.sh
Author: lxw real 0m0.003s
user 0m0.000s
sys 0m0.000s

不提倡:

~$ time cat basicShellScripts.sh|grep "lxw"
Author: lxw real 0m0.004s
user 0m0.000s
sys 0m0.000s

@7: 查找文件命令locate,find也可以但比较慢

locate命令用来查找名字中包含指定字符串的文件和目录,locate是在系统的文件/目录名称数据库中查询,速度较快。

与updatedb命令搭配使用,可以使查询结果更加准确、及时。

@8: 要查看某个运行着的命令(通过ps查到pid)具体是哪个目录下的哪个文件执行的,可以通过如下方式查看:

通过ps查到pid:

lxw ~$ ps aux|grep lxw
...
lxw 0.2 1.6 ? Sl : : gnome-terminal
lxw 0.0 0.0 ? S : : gnome-pty-helper
lxw 0.0 0.3 pts/ Ss+ : : bash
lxw 0.4 0.3 pts/ Ss : : bash
...

假设我们现在想看gnome-terminal这个进程是哪个文件执行的结果.我们可以通过下面得到命令来实现:

lxw ~$ cd /proc//
lxw $ ls -l
total
dr-xr-xr-x lxw lxw Feb : attr/
-rw-r--r-- lxw lxw Feb : autogroup
-r-------- lxw lxw Feb : auxv
-r--r--r-- lxw lxw Feb : cgroup
--w------- lxw lxw Feb : clear_refs
-r--r--r-- lxw lxw Feb : cmdline
-rw-r--r-- lxw lxw Feb : comm
-rw-r--r-- lxw lxw Feb : coredump_filter
-r--r--r-- lxw lxw Feb : cpuset
lrwxrwxrwx lxw lxw Feb : cwd -> /home/lxw/
-r-------- lxw lxw Feb : environ
lrwxrwxrwx lxw lxw Feb : exe -> /usr/bin/gnome-terminal*
...

请注意exe是指向/usr/bin/gnome-terminal的符号链接. 因此, 我们知道6043进程是/usr/bin/gnome-terminal这个程序执行的产生的.

/proc/pid/cwd 链接到进程的当前工作目录

/proc/pid/exe 链接到进程的执行命令文件(绝对路径)

@9: 查看Linux系统和服务日志:syslog

http://blog.sina.com.cn/s/blog_4d45ec960100ugqg.html

参考文章:

UNIX 高手的 10 个习惯:http://www.admin10000.com/document/3696.html

Tips for Unix/Linux的更多相关文章

  1. 50个最常用的UNIX/Linux命令

    转自http://get.jobdeer.com/493.get 1. tar command examples Create a new tar archive. $ tar cvf archive ...

  2. 请使劲回答一个关于UNIX/Linux自己主动扩展stack的问题

    有本事就出来,没本事就当鳖! 假设让我回答关于进程栈,线程栈的问题,仅仅要问题不笼统,仅仅要问题明白.我会一五一十地回答,正确率上九成,然而,可悲的是,问题往往他妈的都不是非常明白,因此,游戏到此结束 ...

  3. Unix&Linux技术文章目录(2015-12-22更新)

    Unix & Linux 方面的博客整理.归纳分类,要坚持不懈的学习Unix &Linux,加油!技术需要累积和沉淀.更需要锲而不舍的精神.持之以恒的毅力!借此下面名句勉励自己! 书上 ...

  4. 28个Unix/Linux的命令行神器_转

    28个Unix/Linux的命令行神器 下面是Kristóf Kovács收集的28个Unix/Linux下的28个命令行下的工具,有一些是大家熟悉的,有一些是非常有用的,有一些是不为人知的.这些工具 ...

  5. 《UNIX/Linux网络日志分析与流量监控》新书发布

    本书从UNIX/Linux系统的原始日志(Raw Log)采集与分析讲起,逐步深入到日志审计与计算机取证环节.书中提供了多个案例,每个案例都以一种生动的记事手法讲述了网络遭到入侵之后,管理人员开展系统 ...

  6. 《Unix/Linux网络日志分析与流量监控》获2015年度最受读者喜爱的IT图书奖

    <Unix/Linux网络日志分析与流量监控>获2015年度最受读者喜爱的IT图书奖.刊登在<中华读书报>( 2015年01月28日 19 版) 我的2015年新作刊登在< ...

  7. 【程序员技术练级】熟悉Unix/Linux Shell和常见的命令行(一)文件系统结构和基本操作

    作为程序猿,熟悉一些unix/linux命令行是非常必要的,因为部署服务的服务器现在基本上用的都是unix/linux系统,很少在windows上部署服务的. 今天我们就介绍一些在linux上的文件系 ...

  8. How to locate a path? - Unix & Linux Stack Exchange

    How to locate a path? - Unix & Linux Stack Exchange http://unix.stackexchange.com/questions/2955 ...

  9. linux运维的认知及RHEL7 Unix/Linux 系统 介绍和安装

    如何成为一个优秀的linux运维人员?      如果你有机会和条件:环境能够磨练一个人的能力和意志.      大胆的做你从未做过的项目,每一个项目都是对自身的极大提升.      有好的环境资源不 ...

随机推荐

  1. C++语言基础(7)-inline内联函数

    函数调用是有时间和空间开销的.程序在执行一个函数之前需要做一些准备工作,要将实参.局部变量.返回地址以及若干寄存器都压入栈中,然后才能执行函数体中的代码:函数体中的代码执行完毕后还要清理现场,将之前压 ...

  2. android studio - 隐藏编辑器标签块上面的索引

  3. python装饰器的理解

    学习python,发现装饰器是一个比较难理解的地方. 下面用代码来说明. 装饰器的作用是为了切面编程(AOP).这种编程在java上有很多实现方式.下面直接说明吧: 1.作为装饰器的函数至少有两个de ...

  4. 160. Intersection of Two Linked Lists【easy】

    160. Intersection of Two Linked Lists[easy] Write a program to find the node at which the intersecti ...

  5. 88. Merge Sorted Array【easy】

    88. Merge Sorted Array[easy] Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 ...

  6. [c#.Net]DevExpress使用记录

    Devexpress知识点 Grid controlDataSource使用BindingList<>,动态绑定数据源 Grid viewOptionBehaviour.Editable可 ...

  7. JavaScript 与 Java 是两种完全不同的语言,无论在概念还是设计上。

    JavaScript 与 Java 是两种完全不同的语言,无论在概念还是设计上. Java(由 Sun 发明)是更复杂的编程语言. ECMA-262 是 JavaScript 标准的官方名称. Jav ...

  8. 从头认识java-13.9 隐式和显示的创建类型实例

    对于上一章节擦除引起的问题与解决的方法有读者提出过于简单.这里解释一下:由于笔者本身也遇不到对应的问题.仅仅是凭空想像一些有可能的问题,基于水平有限,因此上一章节写的比較简单,欢迎广大读者踊跃提意见, ...

  9. poj 3683(2-sat+输出一组可行解)

    题目链接:http://poj.org/problem?id=3683 思路:对于每个结婚仪式,只有在开始或结束时进行这两种选择,我们可以定义xi为真当且仅当在开始时进行.于是我们可以通过时间先后确定 ...

  10. ubuntu在vmware下使用问题

    问题1: 在vmware虚拟机下安装的ubuntu系统,为了在windows和ubuntu之间拷贝数据方便,所以在vmware上安装了vmware tools.在安装了vmware tool之后会在u ...