首页 > 系统服务 > 详细

Linux必会130+命令

时间:2020-02-24 13:24:08      阅读:151      评论:0      收藏:0      [点我收藏+]

 

1、mkdir

make directorys的缩写 

    参数  -p  递归创建

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

             mkdir /data 在根下创建data目录

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

2、ls 

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

    参数   -l   long显示长格式

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

              -d   directorys 查看目录

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

              -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

  思路:就是屏蔽掉系统定义的别名,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"  时间减少两天

技术分享图片

 

 

30、which

 查看命令路径

    原理:他是从$PATH里搜索,如果没有他就不显示。

31、history

  查看命令历史

参数:-c  清除历史记录。

         -d n 指定清除历史命令。history -d 5,清除第五条命令。

32、uname

 查看系统信息

参数:-a 显示所有信息  -m显示系统是32位还是64位 -r 显示内核版本 -n显示主机名

33、cat /etc/redhat-release

   看操作系统版本

另一种方法:cat /etc/issue

34、stat

  文件名   显示文件的详细属性

Access  文件访问时间

Modify  文件修改时间

Change  状态改变时间,不管访问还是修改时间,他都会变。

35、ps

 查看进程

参数:-ef

36、netstat -ntlpu

  查看服务端口是否开放。

37、useradd

 添加用户

参数:-c<备注>:加上备注文字。备注文字会保存在passwd的备注栏位中;

-d<登入目录>:指定用户登入时的启始目录;指定用户家目录。

-D:变更预设值;

-e<有效期限>:指定帐号的有效期限;-e "2018-11-30"

-f<缓冲天数>:指定在密码过期后多少天即关闭该帐号;

-g<群组>:指定用户所属的群组;

-G<群组>:指定用户所属的附加群组;

-m:自动建立用户的登入目录;

-M:不要自动建立用户的登入目录;

-n:取消建立以用户名称为名的群组;

-r:建立系统帐号;

-s<shell>:指定用户登入后所使用的shell;

-u<uid>:指定用户id。

38、passwd

 用户名,给用户设置密码

非交互式设置密码:echo "123456"|passwd --stdin oldboy   给oldboy设置密码为123456

--stdin

参数很多,可以用来控制用户登录,包括什么时候可以登录,提醒用户密码是否要过期等等。

 

非交互式创建密码还可以用这种方式:

echo "user:passwd"|chpasswd

用user:passwd这种写法,即可用chpasswd命令来给用户设置密码。

 技术分享图片

 

 

39、su -  用户名

   切换登录用户。

root往普通用户切不需要密码

-   加载环境变量

-c  以指定用户身份执行任务

40、whoami

   我是谁?显示当前登录用户

41、hostname

 显示和设置主机名  hostname 名字  (临时生效)

42、更改命令行提示符

 技术分享图片

 

 

43、getenforce

  查看SELinux状态

44、setenforce

  更改SELinux当前状态。

45、runlevel

    查看当前系统运行级别。0-6分别指什么意思。

46、init [0-6]

   更换不同的运行级别。init 0 代表关机  init 6代表重启

47、shutdown

  关机

shutdown -h 时间 一般用shutdown -h now

shutdown -r now  表示重启

48、halt

    关机

49、reboot

   重启  -f 强制重启。

50、chkconfig

  管理服务是否开机启动的命令  chkconfig 服务名 on/off

--list  可以打印出各服务在不同运行级别下是否开机启动。

例如:chkconfig --list  打印全部服务

chkconfig --list sshd 指定sshd服务打印。

chkconfig sshd off 不指定级别的话,会所有级别都off。

指定级别使用:chkconfig --level 3 sshd off  指定级别开机不启动服务。

              chkconfig --level 345 sshd off 可以指定多个运行级别。

--add 服务名   将服务加入chkconfig管理,依赖于服务是否有做chkconfig配置。

将服务加入chkconfig需要将服务、脚本内配置

#chkconfig: 运行级别 开机启动顺序

例如:#chkconfig 35 100 30

51、mount

    挂载命令

例如:   mount /dev/sda1 /data/cache1  将sda1挂载到/data/cache1下。就可以通过cache1这个目录来对sda1进行输入输出了。

参数   -t   指定文件类型

       例如:mount -t ext4 /dev/sda1 /data/cache1

       -o   指定挂载选项(是否可读,是否可执行等)

       -a   读取/etc/fstab内文件进行挂载。

52、umount

   卸载命令

umount /data/cache1   对挂载的目录进行卸载。

强制卸载:umount -lf /data/cache1

53、df

    查看用于显示磁盘分区上的可使用的磁盘空间

df -h 查看磁盘空间

df -i  查看inode空间   所说的磁盘满,这两个都有可能。

#磁盘满需要观察df -h 的空间,也要看df -i 索引节点的空间。磁盘满的特征(no space left on device)

cat /proc/mounts  也可以查看挂载信息

参数:

-a或--all:包含全部的文件系统;

--block-size=<区块大小>:以指定的区块大小来显示区块数目;

-h或--human-readable:以可读性较高的方式来显示信息;

-H或--si:与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes;

-i或--inodes:显示inode的信息;

-k或--kilobytes:指定区块大小为1024字节;

-l或--local:仅显示本地端的文件系统;

-m或--megabytes:指定区块大小为1048576字节;

--no-sync:在取得磁盘使用信息前,不要执行sync指令,此为预设值;

-P或--portability:使用POSIX的输出格式;

--sync:在取得磁盘使用信息前,先执行sync指令;

-t<文件系统类型>或--type=<文件系统类型>:仅显示指定文件系统类型的磁盘信息;

-T或--print-type:显示文件系统的类型;

-x<文件系统类型>或--exclude-type=<文件系统类型>:不要显示指定文件系统类型的磁盘信息;

--help:显示帮助;

--version:显示版本信息。

54、free

   查看内存 -m 以mb的方式查看

       cat /proc/meminfo  也可以查看内存

55、fdisk

   分区命令

56、fsck

   磁盘检查命令

    注意:不要检查好磁盘,一定是出问题在用,而且是卸载状态在检查。

57、ifconfig

  查看网卡配置

58、mkfs

    格式化命令

       例如:  mkfs.etx4 /dev/sda1

参数:-b 指定block大小。

      -I  指定inode大小。

      -t  指定文件系统

       例如:mkfs -t ext4 -b 2048 -I 256 /dev/sda1

59、mkswap

  交换分区

60、route

   路由命令

route -n查网关

     添加网关:route add default gw 10.1.1.254

     添加路由:route add -net 192.168.10.0/24 gw 10.1.1.254

     语法:route add -net 网段/掩码 gw 网关地址

意思是添加一个网段,从哪个网关出去。

     route -n  查看网关以及路由走向。

61、dmseg

  查看系统故障信息。依赖于rsyglog服务开启

62、ifup eth0

  指定启动网卡

63、ifdown eth0

 指定关闭网卡。

63、uptime

   系统平均负载命令。调用/proc/loadavg内信息。

64、rpm

   安装rpm包   -ivh   固定,安装显示输出。

     -qa   查找所有rpm安装的包。

     -e    卸载rpm包

     -qf   已知一个小文件名,找他属于哪个包用qf参数

     --force  强制

     --nodeps    忽略依赖,一般用于卸载时使用

     -U  升级包    一般用-Uvh  很少用。

     -l    查看包里有什么文件?

65、yum

   安装yum包   yum -y `install 包名

yum -y groupinstall 包组。  包组内还有很多包

yum grouplist     查看包组列表

yum serach    可以搜索相关的关键词。

66、dd

 用于复制文件并对原文件的内容进行转换和格式化处理

参数:

bs=<字节数>:将ibs(输入)与欧巴桑(输出)设成指定的字节数;

cbs=<字节数>:转换时,每次只转换指定的字节数;

conv=<关键字>:指定文件转换的方式;

count=<区块数>:仅读取指定的区块数;

ibs=<字节数>:每次读取的字节数;

obs=<字节数>:每次输出的字节数;

of=<文件>:输出到文件;

seek=<区块数>:一开始输出时,跳过指定的区块数;

skip=<区块数>:一开始读取时,跳过指定的区块数;

--help:帮助;

--version:显示版本信息。     

dd if=/dev/zero of=sun.txt  bs=1M count=1

创建一个1M大小的文件sun.txt

67、visudo

   用来修改/etc/sudoers文件。

参数:-c  检查/etc/sudoers文件的语法。

68、env

   显示环境变量

69、nl

    将输出的文件内容自动的加上行号默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等等的功能。

    参数:-b  :指定行号指定的方式,主要有两种:

-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);

-b t :如果有空行,空的那一行不要列出行号(默认值);

-n  :列出行号表示的方法,主要有三种:

-n ln :行号在萤幕的最左方显示;

-n rn :行号在自己栏位的最右方显示,且不加 0 ;

-n rz :行号在自己栏位的最右方显示,且加 0 ;

-w  :行号栏位的占用的位数。

70、less

   查看文件内容一页一屏。空格是一屏一屏切换,回车是一行一行切换。

          按b可以回看。

参数:-N 显示行号。和cat -n 功能一样。

71、more

  查看文件,一页一屏。空格是一屏一屏切换,回车是一行一行切换。

    按b可以向上一页查看 光标在哪按=可以显示行号

72、wc

   统计文件内行数、字节数、字数,并打印出来。

参数:-c 统计字节数 

-l 统计行数

-m 统计字符数。这个标志不能与 -c 标志一起使用。

-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。

-L 打印最长行的长度。

企业案例:统计进程数来判断进程是否是起的,比如:

ps -ef|grep "/sshd"|grep -v grep|wc -l   回显1,那么大于等于1 就代表这个进程是起的。

73、dumpe2fs

   查看文件系统的大小

例如:

dumpe2fs /dev/sda1|grep -i "block size|inode size"  查看block和inode的大小

dumpe2fs /dev/sda1|grep -i "block count|inode count" 查看block和inode的数量。

 技术分享图片

 

 

73、file

  后接文件名,查看文件类型可以用ll代替。

74、last

  查看用户登录信息。对应/var/log/wtmp数据文件

75、lastlog

   显示最近所有用户的登录情况,对应/var/log/lastlog数据文件。

76、id

   查看用户信息

77、ln

    创建软硬链接

语法:   创建硬链接:ln 源文件 硬链接文件

         创建软链接:ln -s 源文件 软连接文件(readlink)

78、readlink

  查看软连接指向

79、du

   查看文件和目录大小  -s 总数大小 -h 人类易读

一般使用 du -sh 路径

80、cut

   切割文件或字符

参数:-b   按照字节来切割文件

     技术分享图片

-c    按字符切割文件  英文字符和-b一样,中文字符等于两个字节。

-d    指定分隔符,默认以tab为分隔符。只支持单个分隔符。

-f    和-b配合使用,取第几区域。

[root@oldboy test]# cat oldboy1.txt

http://www.etiantian.org/index.html

http://www.etiantian.org/1.html

http://post.etiantian.org/index.html

http://mp3.etiantian.org/index.html

http://www.etiantian.org/3.html

http://post.etiantian.org/2.html

[root@oldboy test]# cut -d / -f3 oldboy1.txt

www.etiantian.org

www.etiantian.org

post.etiantian.org

mp3.etiantian.org

www.etiantian.org

post.etiantian.org

81、whereis

   后接命令,查找命令的帮助、源文件

      参数:-b  查二进制路径   和which输出路径相同。

82、locate

   后跟命令。通过名字找文件。

    原理是从数据库里查命令路径,更新这个数据库用updatedb命令

输出内容会很多,

83、rename

   对文件及目录进行重命名

语法:rename from to file

from 代表需要替换或要处理的字符(文件的一部分,文件的扩展名)

to 把前面那from代表的内容替换为to代表的内容即重命名处理后的结果。

file

 技术分享图片

 

 

84、basename

   将一个文件的绝对路径只保留文件名。

 技术分享图片

 

 

85、dirname

    将一个文件的绝对路径只保留所在目录路径.

 技术分享图片

 

 

86、md5sum

   计算和校验文件的md5值。

md5sum  文件名   计算文件的md5值

md5sum 多个文件名空格隔开 可以计算多个文件的md5值,每行一个。

校验md5值,原理就是看之前的md5是否改变。

1、首先我建立一个文件,将他的md5值追加到一个md5.log。

2、然后我通过md5sum -c md5.log来校验这个文件的md5值是OK的,说明文件未变。

3、最后我在改变源文件内容,然后在md5sum -c md5.log这个文件,他就会用md5sum就oldboy.txt得出的md5和md5.log文件内的md5值进行校验,不同就会报错。

原理就是看md5.log内的文件对应的md5值和新计算的文件的md5值是否一样。

 [root@oldboy test]# echo "111">oldboy.txt

[root@oldboy test]# cat oldboy.txt

111

[root@oldboy test]# md5sum oldboy.txt >md5.log

[root@oldboy test]# cat md5.log

1181c1834012245d785120e3505ed169  oldboy.txt

[root@oldboy test]# md5sum -c md5.log

oldboy.txt: OK

[root@oldboy test]# echo "222">>oldboy.txt

[root@oldboy test]# md5sum -c md5.log     

oldboy.txt: FAILED

md5sum: WARNING: 1 of 1 computed checksum did NOT match

 

87、groupadd

   创建用户组  -g 指定gid

88、usermod

    更改用户属性。

89、chown

   改变用户和组

语法: chown [选项] [所有者]:[组] 文件

方法:chown 用户 文件    <==仅授权用户

      chown :组 文件    <==仅授权组  等同于chgrp 组 文件

      chown 用户:组 文件  <==授权用户和组

强调:

1》其中的冒号可以用点代替。

2》要授权的和用户和组名,必须是Linux系统里实际存在的。

90、chmod

   更改文件权限

语法:chmod [数字权限] [文件]

      chmod [角色][+|-|=][-rwx] [文件]

91、umask

  控制文件默认权限

92、userdel

  删除用户

参数:-r 删除家目录

93、chattr

   改变文件系统文件属性,隐藏属性,可以越过用户权限

参数:1、chattr +i 文件   给文件加锁

chattr -i 文件   将加锁的文件解锁。

          2、chattr +a 文件   给文件加追加写内容权限 不能删除,不能清空,只能追加内容

          3、e    扩展格式

          4、

94、lsattr

   查看文件隐藏权限

95、ntpdate

 时间同步命令

ntpdate 后跟互联网时间服务器

ntpdate time.nist.gov

参数: -u 越过防火墙时间同步

ntpdate -u ntp1.aliyun.com

96、crontab

   计划任务命令

      语法:crontab [-u user] file

            crontab [-u user] 参数

      参数:-l   list列表

            -r   remove 移除

            -e   edit    编辑

            -i   删除前提示

            -s   selinux相关

97、tar

  打包压缩命令

语法:tar [参数] [打包后的路径+文件名] [要打包的文件]

这里要注意,要打包的文件列尽量使用相对路径,就是进入这个目录内,在执行打包。

例如:tar zcvf /tmp/service-`date +%F-%H`.tar.gz ./services

参数:-v 打印执行过程

-c   创建压缩包

-x   解压缩包

 

 

98、tac

   按行反向读取文件  和cat正相反,先读取最后一行,再按顺序读取到第一行。

 技术分享图片

 

 

99、rev

   按字符内容来反向读取文件内容。

 技术分享图片

 

 

100、groupdel

   删除组

101、chage

      设置或修改用户密码有效期限 -l(list)查看密码信息

     -E --exporedate 过期日期  修改账户过期时间

     和passwd参数相同

 技术分享图片

 

 

102、sudo

   提权,控制用户对系统命令的使用权限

103、od

     读取指定进制文件

     参数:-xa   读取十六进制文件信息

104、fidsk

    磁盘分区工具(小于2T)

105、partprobe

 后跟磁盘名   通知内核我的分区表信息改变了。

106、parted

   磁盘分区工具(大于2T)

107、split

     按照指定的大小或行数切割文件

     语法:split [选项] 目标文件 新文件   如果不加新文件名则输出命令创建默认名。

     参数:-l   指定行数

          例如:技术分享图片

          -a   指定生成文件后缀长度。

          例如:技术分享图片

         -d    使用数字后缀

          例如:技术分享图片

         -b    指定文件大小

          例如:技术分享图片

108、paste

 将两个文件内容按行合并并输出

参数:-d  指定每行分隔符,默认分隔符是tab

-s   将文件统计为一行输出

例如:

[root@oldboy tmp]# cat passwd.txt

stude01

4fbd36e4

stude02

f5b9a4eb

stude03

6b9e693a

stude04

d55cd355

stude05

41cca58a

stude06

d23a713c

stude07

f1bdf7c7

stude08

ddbeb9ab

stude09

d5f5f1b6

stude10

2213eeaf

将以上内容输出为

srude04= d55cd355

stude05=41cca58a

这种格式。

paste -s -d ="\n"

-s将文件内容按一行输出,-d指定分隔符,按= \n轮询来

109、sort

 以文件的ascii码进行排序,将目标内容转换成ascii码后做一个升序排序。

         可以让重复的行相邻

参数:-n   按数值排序

      -r   按倒序排序

      -u   压缩相同的行  与uniq相似,但比uniq强,他不需要是相邻的行,但他不会将重复行的数量显示出来,这是比uniq -c差的地方

      -k   指定列排序,例如-k2,按第二列排序,或者第几列的第几个字符.-k2.1,2.2第二列的第一个字符到第二列的第二个字符。

      -t   指定分隔符,并配合-k使用,分隔符不区分\t和空格,默认是空格

[root@oldboy test]# cut -d / -f 3 oldboy1.txt |sort|uniq -c|sort -t " " -k2

      1 mp3.etiantian.org

      2 post.etiantian.org

      3 www.etiantian.org

案例:man sort 之后-k有个特殊用法:-k POS1[,POS2]

那么怎么用呢?看下面例子

[root@oldboy test]# cat sort.txt

192.168.0.151 00:0F:AF:85:81:AF

192.168.0.152 00:0F:AF:85:81:AF

192.168.1.12 00:0F:AF:85:81:AF

192.168.0.153 00:0F:AF:85:81:AF

192.168.1.11 00:0F:AF:85:81:AF

192.168.2.23 00:0F:AF:85:81:AF

192.168.1.12 00:0F:AF:85:81:AF

192.168.0.151 00:0F:AF:85:81:AF

192.168.2.22 00:0F:AF:85:81:AF

192.168.2.23 00:0F:AF:85:81:AF

下面我想按ip地址的第三位进行倒叙,并按ip的第四位进行倒叙

思路:1、默认按正行排序

2、-t 指定分隔符,-k1 ,分隔符之后的第一列排序。

3、-k 1,1   用逗号来分隔字段,表示第一个字段开始排序到第一个字段结束

4、-k 1.1,3.3 用点分隔字符,表示第一个字段的第一个字符开始排序,到第三个字段的第三个字符结束。

那么此题的解法:

[root@oldboy test]# sort -t. -k3.1,3.1nr -k4.1,4.3nr sort.txt

192.168.2.23 00:0F:AF:85:81:AF

192.168.2.23 00:0F:AF:85:81:AF

192.168.2.22 00:0F:AF:85:81:AF

192.168.1.12 00:0F:AF:85:81:AF

192.168.1.12 00:0F:AF:85:81:AF

192.168.1.11 00:0F:AF:85:81:AF

192.168.0.153 00:0F:AF:85:81:AF

192.168.0.152 00:0F:AF:85:81:AF

192.168.0.151 00:0F:AF:85:81:AF

192.168.0.151 00:0F:AF:85:81:AF

 

110、uniq

   去除重复行

     a、不加参数只去除相邻的行

参数:-c   去重计数。

-d    只显示连续重复出现的行的一行

[root@oldboy test]# cat oldboy.txt

10.0.0.9

10.0.0.8

10.0.0.7

10.0.0.7

10.0.0.8

10.0.0.8

10.0.0.9

10.0.0.10

[root@oldboy test]# uniq oldboy.txt -d

10.0.0.7

10.0.0.8

-u   仅显示相邻出现一次的行

111、dos2unix

   将dos平台的格式转为unix平台的格式

112、diff

     对比俩个文件的不同,并打印出来

提示: a  增加   d 删除    c 改变

还可以对比目录内的文件的不同。

113、vimdiff

   彩色编辑器对比两个文件的不同,不同地方用彩色标注。最多可以同时对比4个文件

114、tr

    转换或删除字符串

    转换:

语法:   tr "abc" "def" 将a转换为d,b转换为e,c转换为f文件内全部转换。

注意:1、命令不能直接接文件,所以需要给这个命令<输入重定向

2、他是匹配每个字节,不是一个字符串。也就是只要匹配到a,就换A。

例如:tr "abc" "ABC" < oldboy.txt  将oldboy文件内的abc都转换为ABC

删除:

语法:tr -d 0 < oldboy.txt  将oldboy文件内的所有0都删除

115、tee

   多重定向

     可以将数据重定向到文件并且打印到屏幕。

例如:

[root@oldboy test]# ls

ceshi.txt  liuwei.txt  mima.txt  oldboy.txt  oldgirl.txt  qianru.txt  wc.sh

[root@oldboy test]# ls|tee /tmp/oldboy.txt

ceshi.txt

liuwei.txt

mima.txt

oldboy.txt

oldgirl.txt

qianru.txt

wc.sh

[root@oldboy test]# cat /tmp/oldboy.txt

ceshi.txt

liuwei.txt

mima.txt

oldboy.txt

oldgirl.txt

qianru.txt

wc.sh

参数:-a  追加重定向

 

 

 

116、dig

     查看域名解析

     +trace   查看跟踪dns解析过程

     +short   省略解析过程,直接给ip

    

117、blkid

    查看磁盘对应的UUID

119、lsof

    查看端口及对应服务

     lsof -i:80   查看80端口占用的服务

列出所有打开的文件 lsof

查看谁正在使用某个文件  lsof /filepath/file

递归查看某个目录的文件信息  lsof +D /filepath/filepath2/

列出某个用户打开的文件信息 lsof -u username

列出某个程序所打开的文件信息  lsof -c mysql列出多个程序可以多次使用-c

 

 

120、ping

     查看网络状态  icmp协议

     参数:-c  次数

     -i   发包间隔

     -s   发包大小

121、traceroute

   追踪路由

122、tcpdump

   抓包

     参数:-i 指定网卡

     -n 指定协议

tcpdump -i eth0 port 80

 

123、nmap

nmap ip -p 端口   用来远程探测端口

例如:nmap 10.0.0.8 -p 80

[root@web01 www]# nmap 10.0.0.8 -p 80

 

Starting Nmap 5.51 ( http://nmap.org ) at 2018-05-01 16:43 CST

Nmap scan report for 10.0.0.8 (10.0.0.8)

Host is up (0.000044s latency).

PORT STATE SERVICE

80/tcp open  http

 

Nmap done: 1 IP address (1 host up) scanned in 2.03 seconds

参数:

1. 扫描类型

-sT

TCP connect()扫描,这是最基本的TCP扫描方式。这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息。

-sS

TCP同步扫描(TCP SYN),因为不必全部打开一个TCP连接,所以这项技术通常称为半开扫描(half-open)。这项技术最大的好处是,很少有系统能够把这记入系统日志。不过,你需要root权限来定制SYN数据包。

-sF,-sX,-sN

秘密FIN数据包扫描、圣诞树(Xmas Tree)、空(Null)扫描模式。这些扫描方式的理论依据是:关闭的端口需要对你的探测包回应RST包,而打开的端口必需忽略有问题的包(参考RFC 793第64页)。

-sP

ping扫描,用ping方式检查网络上哪些主机正在运行。当主机阻塞ICMP echo请求包是ping扫描是无效的。nmap在任何情况下都会进行ping扫描,只有目标主机处于运行状态,才会进行后续的扫描。

-sU

如果你想知道在某台主机上提供哪些UDP(用户数据报协议,RFC768)服务,可以使用此选项。

-sA

ACK扫描,这项高级的扫描方法通常可以用来穿过防火墙。

-sW

滑动窗口扫描,非常类似于ACK的扫描。

-sR

RPC扫描,和其它不同的端口扫描方法结合使用。

-b

FTP反弹攻击(bounce attack),连接到防火墙后面的一台FTP服务器做代理,接着进行端口扫描。

2. 通用选项

-P0

在扫描之前,不ping主机。

-PT

扫描之前,使用TCP ping确定哪些主机正在运行。

-PS

对于root用户,这个选项让nmap使用SYN包而不是ACK包来对目标主机进行扫描。

-PI

设置这个选项,让nmap使用真正的ping(ICMP echo请求)来扫描目标主机是否正在运行。

-PB

这是默认的ping扫描选项。它使用ACK(-PT)和ICMP(-PI)两种扫描类型并行扫描。如果防火墙能够过滤其中一种包,使用这种方法,你就能够穿过防火墙。

-O

这个选项激活对TCP/IP指纹特征(fingerprinting)的扫描,获得远程主机的标志,也就是操作系统类型。

-I

打开nmap的反向标志扫描功能。

-f

使用碎片IP数据包发送SYN、FIN、XMAS、NULL。包增加包过滤、入侵检测系统的难度,使其无法知道你的企图。

-v

冗余模式。强烈推荐使用这个选项,它会给出扫描过程中的详细信息。

-S <IP>

在一些情况下,nmap可能无法确定你的源地址(nmap会告诉你)。

在这种情况使用这个选项给出你的IP地址。

-g port

设置扫描的源端口。一些天真的防火墙和包过滤器的规则集允许源端

口为DNS(53)或者FTP-DATA(20)的包通过和实现连接。显然,如果

攻击者把源端口修改为20或者53,就可以摧毁防火墙的防护。

-oN

把扫描结果重定向到一个可读的文件logfilename中。

-oS

扫描结果输出到标准输出。

–host_timeout

设置扫描一台主机的时间,以毫秒为单位。默认的情况下,没有超时限制。

–max_rtt_timeout

设置对每次探测的等待时间,以毫秒为单位。如果超过这个时间限制就重传或者超时。默认值是大约9000毫秒。

–min_rtt_timeout

设置nmap对每次探测至少等待你指定的时间,以毫秒为单位。

-M count

置进行TCP connect()扫描时,最多使用多少个套接字进行并行的扫描。

3. 扫描目标

目标地址

可以为IP地址,CIRD地址等。如192.168.1.2,222.247.54.5/24

-iL filename

从filename文件中读取扫描的目标。

-iR

让nmap自己随机挑选主机进行扫描。

-p

端口 这个选项让你选择要进行扫描的端口号的范围。如:-p 20-30,139,60000。

-exclude

排除指定主机。

-excludefile

排除指定文件中的主机。

 

124、watch

   周期性执行程序打印到目录,默认是2s 

     参数:-n  可以指定秒数

125、ssh

   linux ssh客户端 -p指定端口  -t 打开终端

126、scp

    远程安全拷贝

     参数:-P指定端口

           -r  目录

           -p  保持属性。

127、mkpasswd

   随机生成密码命令,前提是必须装expect

     参数:-l   指定生成密码位数。指定密码长度

-d  指定密码中数字的数量

-c  指定密码中小写字母的数量

-C  指定密码中大写字母的数量

-s  指定密码中特殊字符的数量

 

128、wget

    下载    -q安静的下载  -O 指定文件名

129、curl    

-I 查看响应header信息

-s 安静的 

-w获取状态码:跟变量 "%{http_code}\n"

-o  指定路径,下载到哪

例如:curl -s -o /dev/null -I -w "%{http_code}\n" http://www.etiantian.org

130、ip

     显示路由设备规则,配置路由、ip

ip addr add 10.0.0.3/24 dev eth0 label eth0:0

131、常用打包工具

tar

压缩

tar zcvf 目的路径.tar.gz 源路径

解压

tar zxvf x.tar.gz

zip

压缩

zip –r  生成文件(自动生成.zip)  打包文件(目录,普通文件都行)

解压

unzip x.zip

gzip

压缩

gzip 压缩文件名

压缩文件,会删除原来文件,生成压缩文件

解压

gzip -d 压缩文件名

解压文件,会删除压缩文件,生成原来文件(能tab补齐)

 

132、expr

1>计算

运算符左右都要有一个空格。*乘法要转义。不支持幂运算

 技术分享图片

2>判断整数

看expr的返回值$?,0为整数。

 技术分享图片

3>expr判断扩展名

实际使用:用来判断.pub文件,公钥文件。

 技术分享图片

4>expr判断字节长度

 技术分享图片

133、bc

bc计算器,可以计算整数、小数

使用方法:echo 1+1|bc

保留小数位:echo “scale=6;355/133”|bc   此处scale为保留几位小数。

 技术分享图片

 

 

134、nc

Linux中nc命令是一个功能强大的网络工具,全称是netcat。

语法:

nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>][-s<来源位址>][-v...][-w<超时秒数>][主机名称][通信端口...]

参数说明:

-g<网关> 设置路由器跃程通信网关,最丢哦可设置8个。

-G<指向器数目> 设置来源路由指向器,其数值为4的倍数。

-h 在线帮助。

-i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口。

-l 使用监听模式,管控传入的资料。

-n 直接使用IP地址,而不通过域名服务器。

-o<输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。

-p<通信端口> 设置本地主机使用的通信端口。

-r 乱数指定本地与远端主机的通信端口。

-s<来源位址> 设置本地主机送出数据包的IP地址。

-u 使用UDP传输协议。

-v 显示指令执行过程。

-w<超时秒数> 设置等待连线的时间。

-z 使用0输入/输出模式,只在扫描通信端口时使用。

 

实例:

nc -v -z -w2 10.0.0.110 1-100

扫描10.0.0.110设备的1-100端口范围

135、taskset

增加cpu亲和性

用法:

taskset -p pid

可以查出进程pid现在的绑核情况

设置绑核有两种方法:

掩码形式

掩码形式的绑核命令为:

taskset -p mask pid

mask码:

列表形式

taskset -cp cpu-list pid

比如taskset -cp 0,2,5-11 9865命令表示将进程9865绑定到#0、#2、#5~#11号核上面

136、ab

压力测试工具

-c  指定并发数

-n  访问多少次

例如

ab -c 1 -n 1000000 http://10.0.0.71:8080/

Linux必会130+命令

原文:https://www.cnblogs.com/6v-onecent/p/12342325.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!