zoukankan      html  css  js  c++  java
  • 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       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

  • 相关阅读:
    在浏览器上实时显示机械臂运动,treeJS机械臂运动
    Centrifuge在vue中基础使用,soket通讯
    Mxgrapheditor编辑器汉化
    ADrive在线网络存储(50G超大免费空间)
    Gmail邮箱为电脑减负,GMailStore网络硬盘开始亮剑
    全球最受欢迎的100个网站 [转载]
    第一次亲密接触读后感(转)
    Weaver博客地址更改通知 (http://blog.sina.com.cn/weaver)
    Javascript技巧(230个)[转载]
    教师精彩课堂用语50句
  • 原文地址:https://www.cnblogs.com/lxw0109/p/tips_for_unix_linux.html
Copyright © 2011-2022 走看看