• Linux(1)---常用命令


    1、将tgz文件解压到指定目录:

    # tar zxvf test.tgz -C 指定目录
    比如将 /lyl/test.tgz解压到 /lyl/linux 目录下
    # tar zxvf /lyl/test.tgz -C /lyl/linux 

    2、删除正则匹配的文件

    比如 home下面有我备份的文件压缩包(是按照每5分钟备份一次,文件名取日期加启动时间为名)

    a_20100703174001.tar.gz
    a_20100703174501.tar.gz
    ....
    ....
    a_20100704013001.tar.gz
    a_20100704013501.tar.gz

    我想把a_20100703这个日期的所有备份文件删除掉!

    这个a_20100704的保留

    find . -name "a_20100703*" | xargs rm

    3、xargs

    将标准输入作为xargs后面命令的参数

    4、grep:正则,从大量的文件中找出含有特定字符的文件。

    http://c.biancheng.net/linux/grep.html

    # 使用-l选项,从3个文件(1.txt,2.txt,3.txt)中找到内容包含first的文件
    [roc@roclinux ~]$ grep -l "first" *.txt
    1.txt

    原来只有 1.txt 文件中包含有 first 单词。如果我想找出不含 first 单词的文件都有哪些,该如何操作呢?

    [roc@roclinux ~]$ grep -L "first" *.txt
    2.txt
    3.txt

    我们希望搜索/etc/passwd文件中开头是 leo 的行:

    # ^表示行首
    [root@roclinux ~]# grep '^leo' /etc/passwd
    leo:x:503:503::/home/leo:/bin/bash

    我们希望搜索 /etc/passwd 文件中行尾是 bash 的行呢?

    # $ 表示行尾
    [root@roclinux ~]# grep 'bash$' /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    cloud-user:x:500:500::/home/cloud-user:/bin/bash
    test:x:502:502::/home/test:/bin/bash
    leo:x:503:503::/home/leo:/bin/bash
    roc:x:504:504::/home/roc:/bin/bash

    grep:快速搜索在目录下面的含有关键字的文件

    cd directories
    grep -r  关键字

    grep搜索文件是否包含指定内容并返回文件名

    第一种方法:使用grep,假设搜索所有的.cpp文件是否包含'open'字符串,如果包含了,则显示该文件,命令如下:

    grep -rl 'open' . --include=*.cpp

    则执行结果如下:

    ./test/testall/file.cpp
    ./test/testall/shell_test.cpp
    ./test/daemontest/main.cpp

    但是有时候只显示文件名,也不知道出现的地方到底是什么样子的,如果还有顺带查看一下那一行的内容,可以用如下命令:

    grep -rn 'open' . --include=*.cpp

    则,执行结果如下:

    ./test/testall/file.cpp:270:    FILE *file = fopen(file_name.c_str(),"w");
    ./test/testall/file.cpp:273:            printf("Can't open the file ");
    ./test/testall/shell_test.cpp:29:       FILE *file = fopen(file_name, "r");
    ./test/daemontest/main.cpp:53:  openlog("daemontest",LOG_PID,LOG_USER);

    显示了文件名,行号以及该行内容。

    第二种方法:使用find命令+grep

    假设搜索所有的.cpp文件是否包含'open'字符串,如果包含了,则显示该文件,命令如下:

    find -name '*.cpp' -exec grep -l 'open' {} ;

    则结果如下:

    ./test/testall/file.cpp
    ./test/testall/shell_test.cpp
    ./test/daemontest/main.cpp

     https://blog.csdn.net/linjcai/article/details/80875451

    5、对比两个文件中内容的差别

    可以用diff命令对比文档内容。
    [语法]: diff [参数] 文件1 文件2
    [说明]: 本命令比较两个文本文件,将不同的行列出来
    -b 将一串空格或TAB 转换成一个空格或TAB
    -e 生成一个编辑角本,作为ex 或ed 的输入可将文件1 转换成文件2
    [例子]:
    diff file1   file2
    diff -b file1 file2
    diff -e file1 file2   >edscript

    diff 命令的常用参数

    a 将所有文件当做文本文件来处理
    b 忽略空格造成的不同
    B 忽略空行造成的不同
    q 只报告什么地方不同,不报告具体的不同信息
    H 利用试探法加速对大文件的搜索
    i 忽略大小写的变化
    l 用pr对输出进行分页
    r 在比较目录时比较所有的子目录
    s 两个文件相同时才报告
    v 在标准输出上输出版本信息并退出

    ll -R > dir1.list
    ll -R > dir2.list
    提取两个列表,再用diff比较

    6、wc命令用于计算字数

    语法

    wc [-clw][--help][--version][文件...]

    参数

    • -c或--bytes或--chars 只显示Bytes数。
    • -l或--lines 只显示行数。
    • -w或--words 只显示字数。
    • --help 在线帮助。
    • --version 显示版本信息。
    $ wc testfile           # testfile文件的统计信息  
    3 92 598 testfile       # testfile文件的行数为3、单词数92、字节数598 

    7、nohup后台不中断执行脚本命令

    执行./bash_file.sh脚本,

    sudo nohup ./bash_file.sh &

    查看bash_file.sh的进程运行状态

    ps aux | fgrep bash_file.sh

    8、进入和退出服务器

    进入服务器:

    ssh username@ip_address -p port

    退出服务器:
    ctrl+D

    9、linux删除大文件的前n行

    tail -n +3 old_file > new_file
    mv new_file old_file
    #这样就删除了前2行,速度要比sed命令快

    10、linux 如何显示一个文件的某几行(中间几行)

    1、从第3000行开始,显示1000行。即显示3000~3999行

    cat filename | tail -n +3000 | head -n 1000

    2、显示1000行到3000行

    cat filename| head -n 3000 | tail -n +1000

    注意两种方法的顺序

    分解:

    tail -n 1000:显示最后1000行

    tail -n +1000:从1000行开始显示,显示1000行以后的

    head -n 1000:显示前面1000行

    3、用sed命令

    sed -n '5,10p' filename        这样你就可以只查看文件的第5行到第10行。

    4、随文件变化显示文件末尾几行

    tail -f filename  

    11、将数据追加到文件末尾:

    echo -e 'a	1' >> 1.txt  
    ##-e表示开启转义符号,>>表示追加,如果用>表示写入。

    12、让vim显示空格,及tab字符 vim 多行注释(转)

    :set list显示tab键

    :set nu 显示行数

    ctrl + n : vim代码自动补全

    13. Linux查找文件内容所在位置

    http://blog.chinaunix.net/uid-25266990-id-199887.html

    Linux查找文件内容的常用命令方法。  

    从文件内容查找匹配指定字符串的行:

    $ grep "被查找的字符串" 文件名
    例子:在当前目录里第一级文件夹中寻找包含指定字符串的.in文件
    grep "thermcontact" */*.in

    从文件内容查找与正则表达式匹配的行:
    $ grep –e “正则表达式” 文件名

    查找时不区分大小写:
    $ grep –i "被查找的字符串" 文件名

    查找匹配的行数:
    $ grep -c "被查找的字符串" 文件名


    从文件内容查找不匹配指定字符串的行:
    $ grep –v "被查找的字符串" 文件名


    从根目录开始查找所有扩展名为.log的文本文件,并找出包含”ERROR”的行
    find / -type f -name "*.log" | xargs grep "ERROR"
    例子:从当前目录开始查找所有扩展名为.in的文本文件,并找出包含”thermcontact”的行
    find . -name "*.in" | xargs grep "thermcontact"
     

    14.vim 查找文件某个字符串内容,采用 / 

    1.按ESC

    2、/“关键字” 回车

    3、N(next)键

    15. local关键字

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

    16. ROOT=${1:-abc}

    ${} 是bash中自带的字符串操作
    上面的意思应该是 如果$1有值 那么将$1的值赋予root
    否则将abc临时赋予$1 同时赋予root

     17. 在bash中,$( )` `(反引号)都是用来作命令替换的。

    命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行。

     

    18.Linux shell if [ -n ] 正确使用方法

    https://blog.csdn.net/haogexiaole/article/details/83472890

    if [ str1 = str2 ]       当两个串有相同内容、长度时为真 
    if [ str1 != str2 ]      当串str1和str2不等时为真 
    if [ -n str1 ]       当串的长度大于0时为真(串非空) 
    if [ -z str1 ]        当串的长度为0时为真(空串) 
    if [ str1 ]         当串str1为非空时为真

    linux 下shell中if的“-e,-d,-f”的用法

    文件表达式
    -e filename 如果 filename存在,则为真
    -d filename 如果 filename为目录,则为真 
    -f filename 如果 filename为常规文件,则为真
    -L filename 如果 filename为符号链接,则为真
    -r filename 如果 filename可读,则为真 
    -w filename 如果 filename可写,则为真 
    -x filename 如果 filename可执行,则为真
    -s filename 如果文件长度不为0,则为真
    -h filename 如果文件是软链接,则为真
    filename1 -nt filename2 如果 filename1比 filename2新,则为真。
    filename1 -ot filename2 如果 filename1比 filename2旧,则为真。

    19、电脑硬件环境查看

    1、查看CPU信息(型号)

    1.1 查看CPU个数

    # cat /proc/cpuinfo | grep "physical id" | uniq | wc -l

    2 **uniq命令:删除重复行;wc –l命令:统计行数**

    1.2 查看CPU核数

    # cat /proc/cpuinfo | grep "cpu cores" | uniq
    cpu cores : 4

    1.3 查看CPU型号

    # cat /proc/cpuinfo | grep 'model name' |uniq
    model name : Intel(R) Xeon(R) CPU E5630 @ 2.53GHz

    总结:该服务器有2个4核CPU,型号Intel(R) Xeon(R) CPU E5630 @ 2.53GHz

    2 查看内存

    2.1 查看内存总数

    #cat /proc/meminfo | grep MemTotal
    MemTotal: 32941268 kB //内存32G

    https://www.cnblogs.com/li-shuai/p/11076727.html

  • 相关阅读:
    nsis打包
    学习记录:ST表
    学习记录:快速幂
    学习记录:哈夫曼树
    学习记录:二叉树
    学习记录:康托展开 与 逆康托展开
    堆排序简介
    动态规划水题集
    lower_bound( ) 与 upper_bound( )
    琐碎的一点技巧
  • 原文地址:https://www.cnblogs.com/Lee-yl/p/9751446.html
Copyright © 2020-2023  润新知