这里并非系统具体介绍每个Linux命令,不过记录本人在平时工作中经经常使用到的一些比較基础的命令及相关的參数,同一时候用了一些简单的样例来说明这些命令的用途,以及怎样用多种命令来实现同一种功能。

1、ls命令
    要显示当前文件夹下的文件列表时,我常常就使用ls命令的下面三个參数。
-l 使用长列表格式
-h 文件大小以人可读的方式打印
-t 以最后改动时间排序,最新的放在最前
    使用样例,怎样显示当前文件夹下的文件夹?
        方法1: ls -l | grep '^d'
        方法2: ls -l | awk '/^d/'

2、grep命令
    当须要找出匹配指定模式的文件时,常常会用到grep命令的下面几个參数。
-w 全然匹配整个单词,而不是字符串的一部分,若要匹配abc,则不会匹配abcd
-i 忽略大写和小写
-n 显示指定模式在匹配文件里的行号
-v 反向匹配,即匹配不符合的行
-f 从文件里获取待匹配的模式
    使用样例:
    grep ^$ file 匹配文件file中的全部空行
    grep -v '^$' file 匹配文件file中的全部非空行
    grep '[^^$]' file 匹配文件file中的全部非空行
    grep -vf t2 t1 获取t1中跟t2数据不匹配的数据,即获取在t1,但不在t2的数据
    正則表達式[^$]表示匹配空行,前面加上^即表示不匹配空行

3、排序去重命令 sort vs uniq
    sort 命令用来对数据进行排序。
-t 用于指定域的分隔符
-n 以数字方式进行比較,而不是字符比較
-r 反向排序
-u 去除反复的行
-k 以指定的域開始进行排序,域从1開始
+表示以第几域排序,-表示不以第几域排序,如 sort +0 -2 +3则表示以第0域開始排序,略过第2域,然后再使用第3域排序
    uniq 用于删除文本文件里的连续反复的行,一般使用sort之后再调用uniq。
-d 仅显示反复一次的行
-c 打印每一反复行出现的次数
    sort -u 和uniq的差别在于,uniq仅去除连续反复的行,而sort -u会去除整个文本中全部反复的行,比如,
#源文件file1中的内容
hello world
Good morning
Good morning
hello world
#使用sort -u < file1的结果例如以下:
hello world
Good morning
使用uniq < file1的结果例如以下:
hello world
Good morning
hello world
4、tr命令
    当须要进行一些简单的字符串替换和删除时,tr命令就会显得很实用。
    比如,以下的tr操作都是没有直接改动源文件,改动则须要文件重定向
tr 'A-Z' 'a-z' < file 将字符串的大写字母都转为小写字母:
tr -s ' ' ' ' < file 把多个连续空格替换成单个空格,-s选项可将多个连续字符替换为一个指定字符
tr -s '\n' < file 删除空行
tr -d '[0-9]' < file 删除全部数字,-d选项能够删除指定的字符
5、tail命令
    tail命令用于显示文件末尾指定区域的内容,如tail -10 file, 表示显示文件file最后10行内容,tail命令有非常多參数,当中有一个常常使用并且非常好用的參数 "-f":
tail -f 动态显示文件新增的内容
    该參数作用是不返回文件结束符,并动态显示文件新增的内容,须要结束时,须要用户手动进行中断。这个命令在显示日志的时候作用就很明显,对于一个执行中的server,可能会不断将server当前执行状态和错误状态写入日志文件,使用tail -f,将会以一定的时间实时追踪该文件的全部更新。

6、find命令
    在查找文件文件的时候,首先会想到是使用find命令。       
-name 依照文件名称查找文件
    比如,查找当前文件夹下名字以cpp结尾的文件
    find . -name "*cpp" | xargs grep "abc"
    有些系统对參数的长度有限制,xargs命令的作用是将參数列表转换成小块分段传递给其它命令,以避免參数列表过长的问题。上面的find中,当前文件夹下可能包括非常多名字以cpp结尾的文件,因此为了避免“參数列太长”或“參数列溢出“的错误,使用xargs来接收find命令的输出。


7、alias命令
    alias命令用于设置命令的别名。利用alias能够把非常长的命令变成随意简短的命令。
    若要加入自己的alias,格式例如以下
alias ll="ls -lht"
    上述加入alias的操作,在用户退出后就变为无效了,若要永久生效,能够改动配置文件~/.bashrc文件(仅改动用户自己),在文件最后面加上你自定义的alias,如:
alias la="ls -al --color=auto"
    本次改动,要在下次登录的时候才干生效。若要立即生效,能够输入:
source ~/.bashrc

8、进程相关命令  
    ps命令用于查看当前执行的进程。
ps -ef 显示系统执行的进程
    top 用于查看当前进程执行情况,包含内存使用、cpu使用量、交换区使用量等。
shift + m 能够按内存占用量来排序进程,查找进程内存使用量就最实用了
q 退出

9、经常使用快捷键
Ctrl + z 将当前程序放到后台并挂起
Ctrl + d 输入文件结束符,在命令行中直接输入Ctrl + D,即退出shell
Ctrl + a 跳到命令行的头部位置
Ctrl + e 跳到命令行的尾部位置
Ctrl + w 删除一个单字(word)
Ctrl + u 删除光标到行首的字符
Ctrl + k 删除光标到行末的字符
Ctrl + c 中断当前程序

10、任务命令
    命令运行顺序
&& 第一个命令成功才运行第二个命令
|| 第一个命令失败才运行第二个命令
jobs 查看挂起的当前的任务列表
fg + N  将第N个任务放到前端,唤醒Ctrl + z挂起的任务

11、vim命令
!%xxd 以十六进制的方式查看文件内容
! 后面加上shell命令就而已运行对应的shell命令
* 将光标移至下一个匹配的单词
# 将光标移至上一个匹配的单词
[[ 光标跳到函数的开头
]] 光标调到函数的结尾说
[{ 光标跳到上一个作用域的开头
]} 光标跳到下一个作用域的开头
ggvG或者ggVG 全选并高亮
gg=G 对整个文件内容进行格式化缩进
u 撤销上一个动作
Ctrl + r 取消上一个撤销动作
set scb 同步两个屏幕的文件,当中一个文件移动,则令一个文件跟着移动,对照两个文件时经常常使用到,解开分屏set scb!
    两个非常好用的插件ctag和Tlist:
   ctags
        功能是扫描指定的源文件,找出当中所包括的语法元素,并将找到的相关内容记录下来。记录的内容包括:宏定义、枚举型、变量的值、函数的定义、原型和声明、namespace、typedefs变量 、类、结构、枚举类型和联合 类、结构和联合中成员变量或函数等。通过ctags我们能够非常easy的找到某个变量或者函数等在哪个文件定义。

   Tlist
        在当前vim中,新开一个区域,显示了当前文件的函数、类、全局变量等定义,输入回车就可以跳转到对应内容的起始位置。平时在查找某个函数时,就能够用到了。

12、shell中凝视一块代码
   行凝视
        shell中默认提供的凝视方法是#,作用是凝视一行,比如
#这里是一行凝视
if [ "1" = "2" ]; then
DoSomething
fi
   块凝视
        shell中并没有提供块凝视的方法,可是我们能够使用还有一种方法来实现块凝视,这样的叫做here document。here document表示包括的这段内容是一个总体数据。以下代码中,两个document之间的内容是一个总体数据。
<<document
....
document
    here document,<<符号表示这是一个文本内容,由其后的字符串包括的范围就是文本的正文,:符号表示空命令,什么都不干,以下的意思就是将一个文本传给空命令,即对文本不做不论什么处理,间接就等于凝视了
:<<block
code
block
    避免反引號不能被凝视的做法是加上单引號
:<<block'
code
'block

一些小问题
    问题1: 怎样删除文件里的全部空行?
1、sed '/^$/d' file 对匹配的空行运行删除操作
2、awk '/./ {print $0;}' file 匹配除空白换行字符外的全部字符,即匹配非空行
3、awk '/[^^$]/{ print $0; } file
    问题2: 怎样删除文件名称带空格的文件,如"a b.html"s?
1、对空格进行转义,即空格前加上反斜杠,能够用反斜杠\来屏蔽特殊字符
2、使用双引號括住文件名称
3、使用单引號括住文件名称
    问题3:
         一个傻x错误,在运行一段代码后,然后推断$?是否为0,以决定前面的功能代码是否运行成功,可是发现什么情况下都是返回成功,查了好久,原来是在推断$?之前,使用了echo输出 $?,所以永远都是为真了

我的经常使用linux小命令的更多相关文章

  1. linux小命令

    本文主要记录了我在工作中用到的一些linux命令 1.查询linux系统是32位还是64位 zhaolei@zhaolei :~# file /usr/bin/whoami/usr/bin/whoam ...

  2. linux小命令集合

    du -sh *  查看当前目录下的当前子目录的内存大小 df -h  查看内存占用情况 tar -xvf src.tgz ;    rsync -avzL   src/  desc/     lin ...

  3. Linux 小命令

    查看 cat  文件名     [查看里面的内容,cate,猫,像猫一样瞄一眼的看] more 文件名   [查看文件,文件太多,一次看不完,用 more 来查看 下一页:空格或 f   下一行:回车 ...

  4. Linux下提权常用小命令

    有些新手朋友在拿到一个webshell后如果看到服务器是Linux或Unix操作系统的就直接放弃提权,认为Linux或Unix下的提权很难,不是大家能做的,其实Linux下的提权并没有很多人想象的那么 ...

  5. 0、驱动及应用小技巧、uboot指令及环境变量配置、linux常用命令

    (内核make menuconfig之后,通过insmod安装的驱动都应该重新make,可能会出现一些莫名的问题) (nor flash/SDRAM/DM9000都受内存控制器控制,需要配置内存控制器 ...

  6. Linux centosVMware 命令 lvm、磁盘故障小案例

    一.lvm命令 LVM:逻辑分区管理,可基于动态的扩展缩小硬件设备的使用空间,注意:lvm磁盘复杂,由于使用lvm,数据丢失恢复起来有一定风险.概念:pv.VG.lvpv(物理卷,有pp基本单位构成) ...

  7. Linux小技巧scp命令

    Linux服务器运维小技巧scp命令详细教程. 前言 今天给大家带来的是linux中比较实用的命令scp.善用小技巧,解决工作中的痛点. 掌握一门好的技术或者说一门好的艺术,最快捷的方式就是融入到工作 ...

  8. linux常用命令与实例小全

    转至:https://www.cnblogs.com/xieguohui/p/8296864.html  linux常用命令与实例小全 阅读目录(Content) 引言 一.安装和登录 (一)    ...

  9. Linux查找命令:grep,awk,sed

    grep grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具 ...

随机推荐

  1. QReadWriteLock读写锁的一点测试(它是逻辑锁,并没有与实物相联系),只有锁住了读,才允许再次读,否则一概不允许

    QReadWriteLock m_lock; void MyWidget::Button1(){ m_lock.lockForRead(); ShowMessage(tr("111" ...

  2. 隐私模式启动IE 谷歌浏览器

    C:\Program Files (x86)\Internet Explorer\iexplore.exe -privateC:\Program Files (x86)\Google\Chrome\A ...

  3. Inno Setup 精灵显示插件 InnoFairy (V2.0 版本)

    原文 http://restools.hanzify.org/article.asp?id=111 一个如影随形的小精灵会令到你的安装程序更加人性化. 就是这样一个功能的Inno Setup插件, 希 ...

  4. mysql 分区 按 PARTITION BY RANGE (TO_DAYS(startTime))

    to_days() Given a date date, returns a day number (the number of days since year 0). 给定一个date 日期,返回天 ...

  5. boost库的安装,使用,介绍,库分类

    1)首先去官网下载boost源码安装包:http://www.boost.org/ 选择下载对应的boost源码包.本次下载使用的是 boost_1_60_0.tar.gz (2)解压文件:tar - ...

  6. linux下修改ip地址,默认网关以及DNS

    *修改IP地址 即时生效: ifconfig eth0 192.168.1.100  netmask 255.255.255.0 重启生效: vim  /etc/sysconfig/network-s ...

  7. linux脚本之简单实例

    利用脚本计算10的阶乘 简单说明一下: #!/bin/bash说明该shell使用的bash shell程序.这一句不可少for i in `seq 1 10`还可以写成for i in 1 2 3 ...

  8. hdu 4393 Throw nails(STL之优先队列)

    Problem Description The annual school bicycle contest started. ZL is a student in this school. He is ...

  9. ReactNative常见报错

    1.导出模块错误 遇到这样的错误,首先检查代码有闭合一致,如果没有错误的话,则去检查是否是导出模块的错误. 如: export default moduleName; 改为: module.expor ...

  10. SharePoint 2010 用Event Receiver将文件夹自动变成approved状态 (2)

    接上篇,先贴ItemUpdated的代码: base.ItemUpdated(properties); if (properties.ListItem.FileSystemObjectType != ...