Tips for Unix/Linux
2014-03-08 21:04
246 查看
@1: 在单个命令中创建目录树:
不要逐层创建目录,尽量使用mkdir的-p选项:
创建复杂的目录树:
@2: 使用选项 -C 来解压缩 .tar 文件到指定的目录(如tmp/a/b/c)
@3: Be careful of the wildcard.
一般最好将变量调用包括在双引号中,除非您有不这样做的足够理由。
@4: xargs:
#1:
find可以到指定的目录的子目录中查找, grep -r也可以, 但如果指定了查找的文件的类型, 可能用find会更方便.
比如下面的例子, 要达到完全等效的效果, 用grep写可能会稍微麻烦些
#2:
@5: time: 执行命令所耗费的时间
@6: grep不需要cat
提倡
不提倡:
@7: 查找文件命令locate,find也可以但比较慢
locate命令用来查找名字中包含指定字符串的文件和目录,locate是在系统的文件/目录名称数据库中查询,速度较快。
与updatedb命令搭配使用,可以使查询结果更加准确、及时。
@8: 要查看某个运行着的命令(通过ps查到pid)具体是哪个目录下的哪个文件执行的,可以通过如下方式查看:
通过ps查到pid:
假设我们现在想看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
不要逐层创建目录,尽量使用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 6043 0.2 1.6 135508 16840 ? Sl 16:00 0:04 gnome-terminal lxw 6050 0.0 0.0 2420 744 ? S 16:00 0:00 gnome-pty-helper lxw 6051 0.0 0.3 7092 3532 pts/1 Ss+ 16:00 0:00 bash lxw 6732 0.4 0.3 7036 3364 pts/12 Ss 16:33 0:00 bash ...
假设我们现在想看gnome-terminal这个进程是哪个文件执行的结果.我们可以通过下面得到命令来实现:
lxw ~$ cd /proc/6043/ lxw 6043$ ls -l total 0 dr-xr-xr-x 2 lxw lxw 0 Feb 5 16:33 attr/ -rw-r--r-- 1 lxw lxw 0 Feb 5 16:33 autogroup -r-------- 1 lxw lxw 0 Feb 5 16:33 auxv -r--r--r-- 1 lxw lxw 0 Feb 5 16:33 cgroup --w------- 1 lxw lxw 0 Feb 5 16:33 clear_refs -r--r--r-- 1 lxw lxw 0 Feb 5 16:00 cmdline -rw-r--r-- 1 lxw lxw 0 Feb 5 16:33 comm -rw-r--r-- 1 lxw lxw 0 Feb 5 16:33 coredump_filter -r--r--r-- 1 lxw lxw 0 Feb 5 16:33 cpuset lrwxrwxrwx 1 lxw lxw 0 Feb 5 16:33 cwd -> /home/lxw/ -r-------- 1 lxw lxw 0 Feb 5 16:33 environ lrwxrwxrwx 1 lxw lxw 0 Feb 5 16:33 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
相关文章推荐
- Linux常用命令
- linux根目录
- file结构体
- 嵌入式Linux和WinCE应用线程时间片分析比较
- 嵌入式LINUX环境下视频采集知识(V4L2)
- V4L2视频采集与H.264编码源码大放送:Linux视频采集与编码
- Centos下安装chrome以及引发地进程调度的一些问题
- linux下的静态库和动态库的编译和应用
- linux 下搭建两个虚拟主机,但是总是显示第一个
- linux进程的基本属性
- Linux 开放服务端口
- linux kill bg jobs
- DIY属于自己的Linux系统
- centos_aliyun-oss-客户端
- Linux—进程管理常用命令
- 怎么检查LINUX有没有开启SSH服务
- 安装CENTOS 分区方案
- Linux—定制内核
- linux kernel 时钟框架详细介绍
- Linux命令 ,在当前目录下查找一个,或者多个文件