Tips for Unix/Linux
@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的更多相关文章
- 50个最常用的UNIX/Linux命令
转自http://get.jobdeer.com/493.get 1. tar command examples Create a new tar archive. $ tar cvf archive ...
- 请使劲回答一个关于UNIX/Linux自己主动扩展stack的问题
有本事就出来,没本事就当鳖! 假设让我回答关于进程栈,线程栈的问题,仅仅要问题不笼统,仅仅要问题明白.我会一五一十地回答,正确率上九成,然而,可悲的是,问题往往他妈的都不是非常明白,因此,游戏到此结束 ...
- Unix&Linux技术文章目录(2015-12-22更新)
Unix & Linux 方面的博客整理.归纳分类,要坚持不懈的学习Unix &Linux,加油!技术需要累积和沉淀.更需要锲而不舍的精神.持之以恒的毅力!借此下面名句勉励自己! 书上 ...
- 28个Unix/Linux的命令行神器_转
28个Unix/Linux的命令行神器 下面是Kristóf Kovács收集的28个Unix/Linux下的28个命令行下的工具,有一些是大家熟悉的,有一些是非常有用的,有一些是不为人知的.这些工具 ...
- 《UNIX/Linux网络日志分析与流量监控》新书发布
本书从UNIX/Linux系统的原始日志(Raw Log)采集与分析讲起,逐步深入到日志审计与计算机取证环节.书中提供了多个案例,每个案例都以一种生动的记事手法讲述了网络遭到入侵之后,管理人员开展系统 ...
- 《Unix/Linux网络日志分析与流量监控》获2015年度最受读者喜爱的IT图书奖
<Unix/Linux网络日志分析与流量监控>获2015年度最受读者喜爱的IT图书奖.刊登在<中华读书报>( 2015年01月28日 19 版) 我的2015年新作刊登在< ...
- 【程序员技术练级】熟悉Unix/Linux Shell和常见的命令行(一)文件系统结构和基本操作
作为程序猿,熟悉一些unix/linux命令行是非常必要的,因为部署服务的服务器现在基本上用的都是unix/linux系统,很少在windows上部署服务的. 今天我们就介绍一些在linux上的文件系 ...
- How to locate a path? - Unix & Linux Stack Exchange
How to locate a path? - Unix & Linux Stack Exchange http://unix.stackexchange.com/questions/2955 ...
- linux运维的认知及RHEL7 Unix/Linux 系统 介绍和安装
如何成为一个优秀的linux运维人员? 如果你有机会和条件:环境能够磨练一个人的能力和意志. 大胆的做你从未做过的项目,每一个项目都是对自身的极大提升. 有好的环境资源不 ...
随机推荐
- 网页CSS font-size使用em替代px
px和em都是长度单位,区别是,px的值是固定的,em的值是相对的,并且em会继承父级元素的字体大小. 任意浏览器的默认字体高都是16px.所以未经调整的浏览器都符合: 1em=16px.那么12px ...
- ajax请求后台返回map类型并如何展示
前台jsp或者ftl文件接收返回结果: <input type="hidden" name="selectedModelListStr" id=" ...
- mysql存在就更新,不存在就新增
INSERT INTO newest_log_operation( ACTION, OPERATION, KEY_VALUE, BUS_KEY, CONTENT, USER_ID, VERSIO ...
- SpringMVC学习(一)小demo
首先看一下整个demo的项目结构: 第一步是导入Spring MVC单独使用时的最少jar包: 第二步在项目的web.xml中配置Spring MVC提供的拦截请求的Servlet: 全类名是:org ...
- [Android]通知栏与操作栏的高度-State Bar & Navigation Bar
1.通知栏 public static int getStatusBarHeight() { Resources resources = Resources.getSystem(); int reso ...
- 调试node.js应用--node-inspector
如果你在编写Node.js代码,node-inspector是必备之选,比Node.js的内置调试器好出许多.使用起来跟Chrome的javascript调试器很相似. 使用npm安装: $ npm ...
- Photoshop脚本之获得文件夹下所有特定后缀文件
function getAllFiles(folderName,houzhui){ folderName var regthis = new RegExp( '.+\.('+houzhui+')$', ...
- Eclipse 快速修复
Eclipse 快速修复 使用快速修复 在 Eclipse 编辑器中当你输入字母时,编辑器会对你输入的内容进行错误分析. Java 编辑器中使用 Java 语法来检测代码中的错误.当它发现错误或警告时 ...
- 视频输出hdtv和sdtv
SDTV和HDTV人们分别把它们叫标准清晰度数字电视和高清晰度数字电视,SDTV电视节目很早在欧洲就开始广播,如,DVB-S(卫星数字视频广播).DVB-C(有线数字视频广播).DVB-T(地面数字视 ...
- scikit-learn:3.4. Model persistence
參考:http://scikit-learn.org/stable/modules/model_persistence.html 训练了模型之后,我们希望能够保存下来,遇到新样本时直接使用已经训练好的 ...