Linux必会100+命令

1、mkdir

make directorys的缩写 

    参数  -p  递归创建

             -v   可以显示创建目录的过程

             mkdir /data 在根下创建data目录

             mkdir -p /data/test/a  递归创建目录

2、ls 

list的缩写  输出当前目录内的文件和目录

    参数   -l   long显示长格式

              -a   显示所有文件包括隐藏文件

              -d   directorys 查看目录

       例如:ls /   列出根目录下的内容

扫描二维码关注公众号,回复: 9311628 查看本文章

              -F   给不同文件加不同标识

              -p   只给目录加/标识。

              -r   --reverse 排序时反转顺序,倒叙

              -t   按修改时间排序

              --color=auto  显示颜色

              -h   以人类易读的方式显示。

              -i   查看inode节点。

              --time-style=long-iso  可以改变打印出来的“修改时间”格式。

3、cd 

    change directory   切换目录、改变目录路径

    例子:cd /etc   切到etc目录下

    相对路径:不从根开始的路径

    绝对路径:从根开始的路径

4、pwd 

  print work directory  打印工作目录,显示当前所在路径

  参数:-L 实际是调用$PWD的变量,和pwd输出是一样的。

  -P   将文件的初始(原始)目录打印出来。就比如一个文件的快捷方式,我要显示这个文件的源地址,而不是快捷方式在哪。

5、touch

  文件名   创建文件或更新时间戳

       例如 touch /data/oldboy.txt

  更新时间戳:参数:

  -a   Access改变访问时间戳

  -m  Modify 改变修改时间戳

6、vi/vim

   文件名  相当于windows的记事本编辑软件。

        命令模式可以使用a或i进入编辑模式。esc退出编辑模式。:进入命令模式。wq保存。

   行首:^

   行尾:$

   光标移动到文件最后一行:G

   光标移动到文件的第一行:gg

   取消上一次的动作 u

   删除一行 dd   数字dd 指定数字行删除一行

   向下搜索 /        n向下搜索  反向搜索N

   向上搜索 ?

   退出保存:wq

   强制退出保存:wq!

   强制退出不保存:q!

   复制一行: yy

   黏贴一行:p

   显示行号:set nu

7、echo

   将信息打印出来

  系统出现乱码解决方法:echo "LANG=en_US.UTF-8" > /etc/sysconfig/i18n source /etc/sysconfig/i18n 

  参数:-n  打印不换行;

  -e  允许解释以下反斜线转义符。

  例如以下例子,\t代表制表符,如果不加-e,就会直接将\t打印出来,而不是解释\t。

8、>

   重定向

       特殊符号:

       >或者1>    输出重定向

       >>或者1>> 追加重定向

       0<或者<    输入重定向

       0<<或者<<  追加输入重定向

       2>      错误重定向:把错误信息输入到后边的文件中,会删除文件原有内容

       2>>    错误追加重定向:把错误信息追加到后边的文件中,不会删除文件原有内容。

       说明:

       1、箭头的指向就是数据的流向

       2、数字说明:

              1>标准输入(stdin):代码为0,使用0<或0<<。数据流从右向左。

              2>标准正常输出(stdout):代码为1,使用1>或1>>。数据流向从左向右。

              3>标准错误输出(stderr):代码为2,使用2>或2>>。

              2>&1   让2的输出和1一样

              &>   这种写法也是正确的和错误的都输出到一个文件。

       例如: cat oldboy >a.txt 2>&1   因为正确输出1到a.txt,那么2的输出和1一样也输出到a.txt[63] 

9、>>

>>  追加重定向

10、cat

      查看文件内容

       cat >>oldboy.txt<<EOF

       I am oldboy.

       EOF                        cat的多行追加

       参数:-n  显示行号  包括空行

  例如:cat -n oldboy.txt    显示行号并打印每行内容。

  -b  显示行号  不给空行做标记。

  -E  在每行结尾显示$

  -s  将连续多行空行压缩为一行

  -T  区分空格和Tab,Tab在文件内用^I来表示。

  -A  显示不可见字符

11、xargs 

   从标准输入获取内容创建执行命令行,将前面命令的输出作为数据流交给下一个命令进行处理。将标准输入(管道或stdin/输入重定向)获取数据并将数据转换为命令行的参数。

        作用:可以将多行输入变成单行输出。

        例如:

  参数: -n 数字 分组  将每组按行打印出来。每组看数字个数划分。

  例如 xargs -n 1  将每个内容分为一组,并每行打印出来。

  -i/I   将find找到的文件及目录与{}关联

  例如:find . -type f -name "*.txt"|xargs -i mv {} /tmp/

12、cp

       copy  拷贝命令

       例如:cp /tmp/liuwei.txt /data/    将liuwei.txt这个文件拷贝到/data目录下

       参数:默认不能拷贝目录,那么就需要用到-r参数,递归拷贝

       例如: cp /tmp/ /data/    将/tmp目录下的所有文件都拷贝到/data下。

       -r      递归拷贝

       -p     保持文件属性

       -d     若源文件为链接文件,则复制链接文件属性而非档案本身。

       -a     相当于dpr  保持属性不变。

       -i      覆盖时提示

       如何让他覆盖文件不提示呢?

  案例:将/mnt/test.txt拷贝到/tmp下,但/tmp下有test.txt文件,如何让他不提示是否覆盖?

  两种方法:1、\cp /mnt/test.txt /tmp   2、/bin/cp /mnt/test.txt /tmp[67] 

  思路:就是屏蔽掉系统定义的别名,cp mv rm 这些命令是会对文件位置进行改变的,所以系统防止人为删除就会给命令定义别名。用\cp /bin/cp就会屏蔽掉别名。

13、mv

 move  移动文件

14、rm

   remove  删除文件

  参数:  -r   recursive递归、删除目录

  -f    force强制删除,无交互

15、find

    查找文件

       参数:-type   文件类型f(file),d(directory),c(character),b(block),s(socket),l(link)

                -name  "文件名"  按文件名查找。

  -mtime 时间     按修改时间查找,时间数字1、+7表示七天以前 2、7表示第七天 3、表示最近7天

  -a and交集条件、并且

  -o or并集条件、或者

  ! 取反、不匹配

  -maxdepth  查找目录层级,后跟数字。

  -atime  访问时间

  -ctime  状态改变时间

  -newer file   #file 为一个存在的文件,意思是说只要比file还要新就列出来。

  -perm  数字权限   按文件权限查文件。

案例:xargs搭配用法:

1、find /log -type f -name "*.log" -mtime +15 |xargs rm -f

查找/log目录以.log结尾的,删修改日期在15天以前的文件

2、find /log -type d -nema "*oldboy" -mtime +30|xargs rm -rf 

查找/log目录以oldboy为结尾的目录,删修改日期在30天以前的目录。

案例:搭配exec使用

       语法: find   /data    -type     f    -name  "oldboy.txt"          -exec rm {} \;

              查找  从哪查 查什么类型 类型 什么名字 “名字”              执行  删除

       find /data -type f -name "*.txt" |xargs rm -f

       查找/data里的所有txt文件,交给xargs分别交给rm来删除。

16、|

  管道符

17、rmdir

   删除空目录

18、grep

    过滤命令,linux三剑客老三

参数:-v   过滤不显示内容

      例子:grep -v oldboy test.txt  过滤oldboy将其他的打印出来。

      -o   只显示匹配到的内容,不加-o则是显示匹配到的内容的行。

      -n   对匹配的内容打印行号

      -A   After将匹配的行打印出来并将以下n行打印出来。用法:grep 10 -A 10 a.txt 匹配到10的行打印出来并将这行以下10行打印出来。

      -B   Before将匹配的行打印出来并将以上n行打印出来。

      -C   Context将匹配的行打印出来并将上下n行打印出来。

      --color=auto    给匹配到的内容加颜色,高亮显示。

      -E 等同于egrep   可以同时过滤两个字符串

       例如: grep -E "3305|3306" oldboy.txt

      -i   忽略大小写

      -c   计算找到字符串的次数

      -w   按单词搜索,和定义单词边界\b相同

       例如:

19、head

   显示前n行,默认是前10行 -n数字

20、tail

     文件结尾的后n行,默认是后10行,-n数字

      参数:-f   跟踪文件尾部的变化,可以用此命令实时查看日志. 

21、tree

    目录的树形结构

参数:-a   显示隐藏文件

-d   只显示目录

-L   显示指定层级的内容

      -i   不打印缩进线

22、alias

  命令=命令 参数     给命令定义别名

作用:1、给一些命令加一些保护的参数,防止人为误操作。

2、把很多复杂的字符串或命令变成一个简单的字符串或命令。

定义别名是放在了内存里,重启就失效了。

定义别名永久生效:

~/.bashrc 当前用户生效

/etc/profile 全局生效

23、unalias

  取消定义的别名

24、seq

  序列   -s 指定分隔符   默认是\n

直接接数字 每行输出一个数字,直到n

   seq 1 2 10   等差数列,输出1 3 5 7 9 

参数:-s “指定分隔符” 10   可以横向打印 

       -w    补齐位数,例如打印1-10  他会打印出01 02 03 ...10

案例:一个文件有100行,取20-30行。

方法一:head -30 a.txt|tail -11      太low,但也必须会,重点是思路

方法二:sed -n '20,30'p a.txt      必会

方法三:awk 'NR==20,NR==30{print}' a.txt   必会

方法四:awk 'NR>19&&NR<31{print}' a.txt    awk条件的另一种写法

方法五:grep 20 -A 10 a.txt   将匹配20的行后的10行打印出来。

方法六:grep 25 -C 5 a.txt 或者 grep 30 -B 10 a.txt  

25、sed

增删改查

增:i匹配的上一行增加一行内容 a 匹配的下一行增加一行内容

例:sed '2i 107,abc,CEO' person.txt  第二行上增加一行内容  

sed '/102/i 107,abc,CEO' person.txt  匹配到102的行,在他上一行增加一行内容

sed '2a 107,abc,CEO' person.txt   第二行下增加一行内容

sed '/103/a 107,abc,CEO' person.txt 匹配到103的行,在它下一行增加一行内容

删:d 删除匹配的行

例如:sed '2d' person.txt  删除文件的第二行

sed '/abc/d' person.txt  删除匹配abc的行

改:替换:c 将匹配的行全部替换内容。

例如:sed '2c 105,you,CTO' person.txt 将第二行全部替换为其他内容

sed '/abc/c 105,you,CTO' person.txt 将匹配Alex内容的行全部替换

s命令:语法sed 's#1#2#g'  将文件内的1全部替换成2.替换文件匹配到的内容,不是替换一行。注意和c的区别。不加g参数的话,那就是每行只替换第一个匹配的。 

例如:sed 's#abc#def#g' person.txt 替换文件内所有的abc为def

sed '2s#abc#def#' person.txt 替换第二行的第一个abc为def

查:-n 取消默认输出

p命令 将匹配的内容所在行打印出来 -n参数 和p命令要配合使用

例如:sed -n '/zhangyao/p' person.txt 将匹配到zhangyao的行打印出来。p

sed -n '2p' person.txt  打印第二行

sed -n '2,5p' person.txt 将2到5行打印出来

sed -n '/lingling/,/linglan/p' person.txt 将匹配到lingling的行到匹配到linglan的行打印出来

其他参数:

-i    更改文件内容

-r    支持扩展正则表达式,后边的条件可以不用接转义符\

-e    多项编辑

l      打印文件内不可见字符。例如:tab字符,用\t表示

企业面试题:

把/data目录及其子目录下所有以扩展名.sh结尾的文件中包含abc的字符串全部替换为def。

思路:1、首先找到/oldboy下所有以.sh结尾的文件 find /data -type f -name "*.sh"

2、利用sed将文件内容内有abc的都替换成def。 sed -i 's#abc#def#g'注意-i是直接改文件内容了,建议先不加-i过滤出来是否是你要的行,是再加-i。

3、将1和2联系起来,两种方法:1、利用xargs将find找出来的文件当作数据流输入给sed处理。find /data -type f -name "*.sh"|xargs sed -i 's#abc#def#g'

2>可以利用反引号的作用:sed -i 's#abc#def#g' ` find /data -type f -name "*.sh"`他会先处理反引号内的命令,然后将find的文件挨个进行处理。 

26、awk

27、man

   查询所有命令的使用方法。针对非内置命令。

28、命令 --help

  适用于非内置命令。也可以查询指定命令的使用方法 

help 命令  也可以查。这种针对内置命令。

29、date

  显示当前时间

参数  -s 修改时间   date -s "3/9/2018 12:13:00"

[root@oldboy test]# date

Sun Mar 11 18:48:34 CST 2018

将以上命令用易读方式打印出来?

符号代表的含义:

%y 年 只显示后两位 %m 月份  %d 日  %Y 年份全显示

%F 代表年月日 相当于%Y-%m-%d

%w  周 0-1-2-3-4-5-6  0代表周日。

%H 小时  %M 分钟   %S 秒  

%X  时分秒  相当于%H:%M: %S

加减日期:

date +%F -d "+2day"  时间增加两天

date +%F -d "-2day"  时间减少两天

猜你喜欢

转载自www.cnblogs.com/6v-onecent/p/12342325.html
今日推荐