快上车!Linux常用命令整理

Posted 胡说技术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快上车!Linux常用命令整理相关的知识,希望对你有一定的参考价值。


大家看到封面上的命令,应该就会想到这个梗吧。 如果你想上热搜,请将该命令在你司服务器上执行, 试试看效果如何


对于我们IT人员来说,会经常和服务器打交道,而且服务器基本都是Linux操作系统。我们不管是程序的部署还是问题的排查,都会使用到Linux命令。所以下面就是我整理了一些比较基本的Linux常用命令。


文件管理类命令



cat

-n 或 --number:由 1 开始对所有输出的行数编号

-b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号

-s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行

示例:

cat -n textfile1 > textfile2把textfile1 的文档内容加上行号后输入textfile2 这个文档里
cat -b textfile1 textfile2 >> textfile3把textfile1和textfile2的文档内容加上行号(空白行不加)之后将内容附加到textfile3文档里
cat/dev/null > /etc/test.txt清空/etc/test.txt文档内容


chmod

群组

    u 表示该文件的拥有者

    g 表示与该文件的拥有者属于同一个群体(group)者

    o 表示其他以外的人

    a 表示这三者皆是

权限设置

    + 表示增加权限

    - 表示取消权限

    = 表示唯一设定权限

具体权限

    r 表示可读取

    w 表示可写入

    x 表示可执行

    X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行

示例:

chmod a+r server.sh给所有人赋予可读权限针对server.sh
chmod 777 server.sh数字排列依次为:u,g,o,操作权限r=4,w=2,x=1,rwx=7等同于chmod uga+rwx server.sh


find

-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写

-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c : 文件类型是 c 的文件

-amin n : 在过去 n 分钟内被读取过

-atime n : 在过去n天内被读取过的文件

-cmin n : 在过去 n 分钟内被修改过

-ctime n : 在过去n天内被修改过的文件

示例:

find . -name "*.java"将目前目录及其子目录下所有后缀为.java的文件
find . -type f将目前目录其其下子目录中所有一般文件列出
find . -ctime -20将目前目录及其子目录下所有最近 20 天内更新过的文件列出
find . -name "*.java" -o -name "*.class"将目前目录及其子目录下所有后缀为.java或者.class的文件
find -name "*.war*" ! -newermt $startdate查找startdate之前的文件
find -name "*.war*"  -newermt $startdate查找startdate之后的文件
find -name "*.war*"  -newermt $startdate ! -newermt $enddate查找startdate和enddate之间的文件


less

-N 显示每行的行号

/字符串:n向下搜索"字符串"的功能

?字符串:N向上搜索"字符串"的功能

Q 退出less 命令

示例:

ps -ef |lessps查看进程信息并通过less分页显示,可以按大写 F,就会有类似 tail -f 的效果,读取写入文件的最新内容, 按 ctrl+C 停止

 

mv

-i: 若指定目录已有同名文件,则先询问是否覆盖旧文件

-f: 在 mv 操作要覆盖某已有的目标文件时不给任何指示

示例:

mv info /logsinfo目录放入logs目录中。注意,如果logs目录不存在,则该命令将info改名为logs
mv /usr/log/*  .将log目录下的所有文件移动到当前目录


rm

-i 删除前逐一询问确认

-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认

-r 将目录及以下之档案亦逐一删除

示例:

rm -rf log/删除log及其目录下的所有文件,不需要确认

友情提示:该命令谨慎使用,以防被送上热搜。


split

-<行数> : 指定每多少行切成一个小文件

-b<字节> : 指定每多少字节切成一个小文件

示例:

split -6 server.log splitserver按照每6行,将server.log切成小文件,小文件名为splitservera开头,后面带序号


touch

a 改变档案的读取时间记录

m 改变档案的修改时间记录

c 假如目的档案不存在,不会建立新的档案

示例:

touch server.log修改server.log的时间属性为当前时间,如果当前server.log文件不存在,会创建一个文件


cp

-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合

-d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式

-f:覆盖已经存在的目标文件而不给出提示

-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖

-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中

-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件

示例:

cp -a server/ server1将server目录及其子目录到复制到server1


scp

-i identity_file:从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh

-r:递归复制整个目录

-q:不显示传输进度条

示例:

scp -i /user/password demo.jar jboss@192.168.1.2/jboss/server复制当前目录下demo.jar到192.168.1.2服务器的jboss/server目录下,秘钥文件为user目录下的password文件
scp jboss@192.168.1.2/jboss/demo.jar demo.jar与上面相反,将demo.jar文件复制到本地当前目录
scp -r server jboss@192.168.1.2/jboss/将server目录及其子目录复制到别的服务上

扩展: 

在使用scp命令时通过配置秘钥,可以不再输入密码进行跨服务器传输。秘钥的生成和配置如下:

1、本地服务器

    执行ssh-keygen -t rsa命令

    查找.ssh/id_rsa.pub文件

    将上传id_rsa.pub文件到目的服务器

2、目标服务器

    执行cat id_rsa.pub >> ~/.ssh/authorized_keys(此处最好是缀加,不要直接覆盖)


awk

示例:

awk '{print $1,$4}' log.txt输出log文件中的第一和第四项(即列)
awk 'NR==1{print $1}' log.txt输出log文件中第一行及第一项


文档编辑类命令



egrep

egrep命令用于在文件内查找指定的字符串,执行效果与"grep-E"相似

egrep Linux *

查找当前文件夹下的文件中包含Linux字符串的文件

示例:

egrep Linux *查找当前文件夹下的文件中包含Linux字符串的文件


grep

-c 或 --count : 计算符合样式的列数

-A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容

-B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容

-C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容

-i 或 --ignore-case : 忽略字符大小写的差别

-n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号

示例:

grep -c aaa server.logaaa字符串在server.log文件中出现的次数
grpe -A10 aaa server.logaaa字符串在server.log文件中出现的位置,并把当前行后10行也显示
grep -B10 aaa server.logaaa字符串在server.log文件中出现的位置,并把当前行前10行也显示
grep -C10 aaa server.logaaa字符串在server.log文件中出现的位置,并把当前行前后10行也显示


sed

a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~

c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!

d :删除,因为是删除啊,所以 d 后面通常不接任何东西

i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)

p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行

s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法

示例:

sed 's/要被取代的字串/新的字串/g'
sed '3,$d'删除第三行到末尾行的数据
sed '2,5c No 2-5 number'将第二行到第五行替换为No 2-5 number
sed -i '$a demo' server.log在server.log文件的最后一行插入demo


wc

-l或--lines 只显示行数

-w或--words 只显示字数

示例:

grep aaa server.log | wc -laaa在server.log文件中出现的次数。同:grep -c aaa server.log


expr(手工命令行计数器)

用空格隔开每个项

用 / (反斜杠) 放在 shell 特定的字符前面

对包含空格和其他特殊字符的字符串要用引号括起来

示例:

expr length “this is a test”字符串长度
expr substr “this is a test” 3 5抓取字符串
expr index "sarasara"  a抓取第一个字符数字串出现的位置
expr 14 + 9加法运算,结果输出23
expr 30\*3乘法运算,结果输出90


结尾



该篇主要梳理了部分常用的 Linux 命令,后续还会继续梳理。 我们平时工作中使用 Linux 系统时,就算有界面可通过鼠标操作,但还是建议尽量使用命令来操作,加深巩固。 就算记不住,也可以通过 help 命令来查看具体的参数,来唤起我们的一些零碎记忆。


关注公众号,你想要的都在这里


以上是关于快上车!Linux常用命令整理的主要内容,如果未能解决你的问题,请参考以下文章

Pycharm常用的小技巧汇总,Python新手上路必备,快上车!

数据结构测试卷!80%真题难度!!快上车!!!

iOS多线程开发之NSOperation - 快上车,没时间解释了!

WEEX大赛万众瞩目的WEEX大赛空降川大,快上车

实用工具快上车,程序狗好用的奇淫技巧

iOS+安卓+PC 迅雷,司机们快上车!!!