「@Author: Runsen」

基础命令

Linux系统的命令通常都是如下所示的格式:

命令名称[命名参数][命令对象]

获取登录信息

获取登录信息 - 「w」 / 「who」 / 「last」/ 「lastb」

maoli@ubuntu:~$w 08:07:38up2min,1user,loadaverage:0.83,0.64,0.27 USERTTYFROMLOGIN@IDLEJCPUPCPUWHAT maolitty7:008:062:382.29s0.31s/sbin/upstart- maoli@ubuntu:~$who maolitty72020-05-2808:06(:0) maoli@ubuntu:~$last maolitty7:0ThuMay2808:06gone-nologout rebootsystemboot4.15.0-99-generiThuMay2808:04stillrunning maolitty7:0FriMay115:20-down(01:26) rebootsystemboot4.15.0-99-generiFriMay115:20-16:47(01:26) maolitty7:0FriMay110:12-crash(05:08) wtmpbeginsFriMay110:12:222020 maoli@ubuntu:~$sudolastb [sudo]maoli的密码: btmpbeginsFriMay115:20:292020

查看自己使用的Shell

查看自己使用的Shell - 「ps」

Shell也被称为“壳”或“壳程序”,它是用户与操作系统内核交流的翻译官,简单的说就是人与计算机交互的界面和接口。目前很多Linux系统默认的Shell都是bash(Bourne Again SHell),因为它可以使用tab键进行命令和路径补全、可以保存历史命令、可以方便的配置环境变量以及执行批处理操作。

maoli@ubuntu:~$ps PIDTTYTIMECMD 3621pts/100:00:00bash 5082pts/100:00:00ps

查看命令的说明和位置

查看命令的说明和位置 - 「whatis」 / 「which」 / 「whereis」

maoli@ubuntu:~$whatisps ps(1)-reportasnapshotofthecurrentprocesses. maoli@ubuntu:~$whatispython python(1)-aninterpreted,interactive,object-orientedprogrammi... maoli@ubuntu:~$whereisps ps:/bin/ps/usr/share/man/man1/ps.1.gz maoli@ubuntu:~$whereispython python:/usr/bin/python3.5m-config/usr/bin/python/usr/bin/python3.5/usr/bin/python3.5m/usr/bin/python2.7/usr/bin/python3.5-config/usr/lib/python3.5/usr/lib/python2.7/etc/python/etc/python3.5/etc/python2.7/usr/local/lib/python3.5/usr/local/lib/python2.7/usr/include/python3.5/usr/include/python3.5m/usr/share/python/usr/share/man/man1/python.1.gz maoli@ubuntu:~$whichps /bin/ps maoli@ubuntu:~$whichpython /usr/bin/python

清除屏幕上显示的内容

清除屏幕上显示的内容 - 「clear」

查看帮助文档

查看帮助文档 - 「man」 / 「info」 / 「help」 / 「apropos」

maoli@ubuntu:~$ps--help Usage: ps[options] Try'ps--help<simple|list|output|threads|misc|all>' or'ps--help<s|l|o|t|m|a>' foradditionalhelptext. Formoredetailsseeps(1). maoli@ubuntu:~$manps PS(1)UserCommandsPS(1) NAME ps-reportasnapshotofthecurrentprocesses. SYNOPSIS ps[options] DEscriptION ...

查看系统和主机名

查看系统和主机名 - 「uname」 / 「hostname」

maoli@ubuntu:~$uname Linux maoli@ubuntu:~$hostname ubuntu

时间和日期

时间和日期 - 「date」 / 「cal」

maoli@ubuntu:~$date 2020年05月28日星期四08:13:25CST maoli@ubuntu:~$cal 五月2020 日一二三四五六 12 3456789 10111213141516 17181920212223 24252627282930 31 maoli@ubuntu:~$cal52020 五月2020 日一二三四五六 12 3456789 10111213141516 17181920212223 24252627282930 31

重启和关机
  1. 重启和关机 - 「reboot」 / 「shutdown」

maoli@ubuntu:~$shutdown-h 5#五分钟关机 Shutdownscheduledfor四2020-05-2808:19:24CST,use'shutdown-c'tocancel.[root~]# maoli@ubuntu:~$shutdown-c maoli@ubuntu:~$shutdown-r12:00 Shutdownscheduledfor四2020-05-2812:00:00CST,use'shutdown-c'tocancel maoli@ubuntu:~$shutdown-c

说明:在执行shutdown命令时会向登录系统的用户发出警告,可以在命令后面跟上警告消息来替换默认的警告消息,也可以在-h参数后通过now来表示立刻关机。

退出登录

退出登录 - 「exit」 / 「logout」

查看历史命令

查看历史命令 - 「history」

maoli@ubuntu:~$history ... 625date 626cal 627cal52020 628shutdown-c 629shutdown-r12:00 630shutdown-c 631history maoli@ubuntu:~$!631

说明:查看到历史命令之后,可以用!历史命令编号来重新执行该命令;通过history -c可以清除历史命令。

实用程序文件和文件夹操作创建/删除空目录

创建/删除空目录 - 「mkdir」 / 「rmdir」

[root~]#mkdirrunsen [root~]#mkdir-pabc/runsen [root~]#rmdirrunsen

创建/删除文件

创建/删除文件 - 「touch」 / 「rm」

maoli@ubuntu:~$touchreadme.txt maoli@ubuntu:~$rmreadme.txt rm:removeregularemptyfile‘readme.txt’?y [root~]#rm-rfxyz

切换和查看当前工作目录
  1. 切换和查看当前工作目录 - 「cd」 / 「pwd」

说明:cd命令后面可以跟相对路径(以当前路径作为参照)或绝对路径(以/开头)来切换到指定的目录,也可以用cd ..来返回上一级目录。返回到上上一级目录应该给cd ../../命令。

查看目录内容

查看目录内容 - 「ls」

查看文件内容

查看文件内容 - 「cat」 / 「tac」 / 「head」 / 「tail」 / 「more」 / 「less」 / 「rev」 / 「od」

maoli@ubuntu:~$wgethttps://www.csdn.net/ --2020-05-2808:25:01--https://www.csdn.net/ 正在解析主机www.csdn.net(www.csdn.net)...47.95.164.112 正在连接www.csdn.net(www.csdn.net)|47.95.164.112|:443...已连接。 已发出HTTP请求,正在等待回应...200OK 长度:未指定[text/html] 正在保存至:“index.html” index.html[<=>]420.39K1.53MB/sin0.3s 2020-05-2808:25:02(1.53MB/s)-“index.html”已保存[430482] maoli@ubuntu:~$catindex.html <!DOCTYPEhtml> ... maoli@ubuntu:~$head-10index.html <!DOCTYPEhtml> <html> <head> <metacharset="utf-8"> <metahttp-equiv="X-UA-Compatible"content="IE=Edge"> <metaname="viewport"content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"> <metaname="apple-mobile-web-app-status-bar-style"content="black"> <metaname="referrer"content="always"> <metaname="msvalidate.01"content="3189512127C34C46BC74BED5852D45E4"/> <title>CSDN-专业IT技术社区</title> maoli@ubuntu:~$tail-2index.html <scriptsrc="https://g.csdnimg.cn/side-toolbar/2.0/side-toolbar.js"></script> </html> maoli@ubuntu:~$lessindex.html#相当于cat maoli@ubuntu:~$cat-nindex.html|more ...

说明:上面用到了一个名为wget的命令,它是一个网络下载器程序,可以从指定的URL下载资源。

拷贝/移动文件

拷贝/移动文件 - 「cp」 / 「mv」

maoli@ubuntu:~$mkdirbackup maoli@ubuntu:~$cpindex.htmlbackup/ maoli@ubuntu:~$cdbackup/ maoli@ubuntu:~/backup$ls index.html maoli@ubuntu:~/backup$mvindex.htmlcsdn.html maoli@ubuntu:~/backup$ls csdn.html

文件重命名

文件重命名 - 「rename」

查找文件和查找内容

查找文件和查找内容 - 「find」 / 「grep」

maoli@ubuntu:~/backup$ find ./ -name "*.html" ./csdn.html maoli@ubuntu:~/backup$ find / -name "*.html" /usr/local/java/jdk-11.0.6/README.html /usr/local/python3/lib/python3.6/idlelib/help.html /usr/local/python3/lib/python3.6/test/sgml_input.html /usr/local/python3/lib/python3.6/test/test_difflib_expect.html ... maoli@ubuntu:~/backup$ find . -type f -size 2k ./csdn.html maoli@ubuntu:~/backup$ find . -type f -name "*.swp" -delete maoli@ubuntu:~/backup$ grep "<script>" csdn.html -n 3192: <script> maoli@ubuntu:~/backup$ grep -E \<\/?script.*\> csdn.html -n 12: <script src='//g.csdnimg.cn/tingyun/1.8.3/www.js' type='text/javascript'></script> 18: <script src="//csdnimg.cn/public/common/libs/jquery/jquery-1.9.1.min.js" type="text/javascript"></script> 19: <script src="//g.csdnimg.cn/??login-box/1.0.7/login-box.js,login-box/1.0.7/login-auto.js" type="text/javascript"></script> ...

说明:grep在搜索字符串时可以使用正则表达式,如果需要使用正则表达式可以用grep -E或者直接使用egrep。

创建链接和查看链接

创建链接和查看链接 - 「ln」 / 「readlink」

maoli@ubuntu:~/backup$ls-lcsdn.html -rw-rw-r--1maolimaoli4304825月2808:30csdn.html maoli@ubuntu:~/backup$ln/home/maoli/backup/csdn.html/home/maoli/csdn maoli@ubuntu:~/backup$ls-lcsdn.html -rw-rw-r--2maolimaoli4304825月2808:30csdn.html

说明:链接可以分为硬链接和软链接(符号链接)。硬链接可以认为是一个指向文件数据的指针,就像Python中对象的引用计数,每添加一个硬链接,文件的对应链接数就增加1,只有当文件的链接数为0时,文件所对应的存储空间才有可能被其他文件覆盖。我们平常删除文件时其实并没有删除硬盘上的数据,我们删除的只是一个指针,或者说是数据的一条使用记录,所以类似于“文件粉碎机”之类的软件在“粉碎”文件时除了删除文件指针,还会在文件对应的存储区域填入数据来保证文件无法再恢复。软链接类似于Windows系统下的快捷方式,当软链接链接的文件被删除时,软链接也就失效了。

压缩/解压缩和归档/解归档

.压缩/解压缩和归档/解归档 - 「gzip」 / 「gunzip」 / 「xz」

maoli@ubuntu:~$ls redis-4.0.10.tar.tar.gz maoli@ubuntu:~$gunzipredis-4.0.10.tar.tar.gz maoli@ubuntu:~$ls redis-4.0.10.tar.tar

归档和解归档

归档和解归档 - 「tar」

maoli@ubuntu:~$tar-xvfredis-4.0.10.tar redis-4.0.10/ redis-4.0.10/.gitignore redis-4.0.10/00-RELEASENOTES redis-4.0.10/BUGS redis-4.0.10/CONTRIBUTING redis-4.0.10/COPYING redis-4.0.10/INSTALL redis-4.0.10/MANIFESTO redis-4.0.10/Makefile redis-4.0.10/README.md redis-4.0.10/deps/ redis-4.0.10/deps/Makefile redis-4.0.10/deps/README.md ...

说明:归档(也称为创建归档)和解归档都使用tar命令,通常创建归档需要-cvf三个参数,其中c表示创建(create),v表示显示创建归档详情(verbose),f表示指定归档的文件(file);解归档需要加上-xvf参数,其中x表示抽取(extract),其他两个参数跟创建归档相同。

将标准输入转成命令行参数

将标准输入转成命令行参数 - 「xargs」

下面的命令会将查找当前路径下的html文件,然后通过xargs将这些文件作为参数传给rm命令,实现查找并删除文件的操作。

maoli@ubuntu:~$find.-typef-name"*.html"|xargsrm-f

下面的命令将a.txt文件中的多行内容变成一行输出到b.txt文件中,其中<表示从a.txt中读取输入,>表示将命令的执行结果输出到b.txt中。

maoli@ubuntu:~$xargs<a.txt>b.txt

显示文件或目录

显示文件或目录 - 「basename」 / 「dirname」

其他相关工具

其他相关工具。

maoli@ubuntu:~$catfoo.txt grape apple pitaya maoli@ubuntu:~$catbar.txt 100 200 300 400 maoli@ubuntu:~$pastefoo.txtbar.txt grape100 apple200 pitaya300 400 maoli@ubuntu:~$pastefoo.txtbar.txt>hello.txt maoli@ubuntu:~$cut-b4-8hello.txt pe10 le20 aya3 0 maoli@ubuntu:~$cathello.txt|tr'\t'',' grape,100 apple,200 pitaya,300 ,400 maoli@ubuntu:~$split-l100sohu.htmlhello maoli@ubuntu:~$wgethttps://www.baidu.com/img/bd_logo1.png maoli@ubuntu:~$filebd_logo1.png bd_logo1.png:PNGimagedata,540x258,8-bitcolormap,non-interlaced maoli@ubuntu:~$wcindex.html 382018696430482index.html maoli@ubuntuwgethttp://www.qq.com-Oqq.html maoli@ubuntuiconv-fgb2312-tutf-8qq.html

管道和重定向管道的使用

管道的使用 - 「|」

例子:查找当前目录下文件个数。

maoli@ubuntu:~$find./|wc-l 80801

例子:列出当前路径下的文件和文件夹,给每一项加一个编号。

maoli@ubuntu:~$ls|cat-n 1abc 2backup

例子:查找record.log中包含AAA,但不包含BBB的记录的总数

maoli@ubuntu:~$catrecord.log|grepAAA|grep-vBBB|wc-l

输出重定向

输出重定向和错误重定向 - 「>」 / 「>>」 / 「2>」

maoli@ubuntu:~$catreadme.txt banana apple grape apple grape watermelon pear pitaya maoli@ubuntu:~$catreadme.txt|sort|uniq>result.txt maoli@ubuntu:~$catresult.txt apple banana grape pear pitaya watermelon

输入重定向

输入重定向 - 「<」

maoli@ubuntu:~$echo'hello,world!'>hello.txt maoli@ubuntu:~$echo'Iwillshowyousomecode.'>>hello.txt maoli@ubuntu:~$cathello.txt hello,world! Iwillshowyousomecode.

多重定向

多重定向 - 「tee」

下面的命令除了在终端显示命令ls的结果之外,还会追加输出到ls.txt文件中。

maoli@ubuntu:~$ls|tee-als.txt maoli@ubuntu:~$catls.txt abc backup

别名

「alias」创建别名

maoli@ubuntu:~$aliasll='ls-l' maoli@ubuntu:~$aliasfrm='rm-rf' maoli@ubuntu:~$ll 量144920 drwxrwxr-x3maolimaoli40965月2808:20abc maoli@ubuntu:~$frmabc

「unalias」删除别名

maoli@ubuntu:~$funaliasfrm maoli@ubuntu:~$frmindex.html -bash:frm:commandnotfound

文本处理字符流编辑器

字符流编辑器 - 「sed」

sed是操作、过滤和转换文本内容的工具。假设有一个名为fruit.txt的文件,内容如下所示。

maoli@ubuntu:~$cat-nfruit.txt 1banana 2grape 3apple 4watermelon 5orange

接下来,我们在第2行后面添加一个pitaya。

maoli@ubuntu:~$sed'2apitaya'fruit.txt banana grape pitaya apple watermelon orange

在第2行前面插入一个waxberry。

maoli@ubuntu:~$sed'2iwaxberry'fruit.txt banana waxberry grape apple watermelon orange

删除第3行。

maoli@ubuntu:~$sed'3d'fruit.txt banana grape watermelon orange

删除第2行到第4行。

maoli@ubuntu:~$sed'2,4d'fruit.txt banana orange

将文本中的字符a替换为@。

maoli@ubuntu:~$sed's#a#@#'fruit.txt b@nana gr@pe @pple w@termelon or@nge

将文本中的字符a替换为@,使用全局模式。

maoli@ubuntu:~$sed's#a#@#g'fruit.txt b@n@n@ gr@pe @pple w@termelon or@nge

模式匹配和处理语言

模式匹配和处理语言 - 「awk」

awk是一种编程语言,也是Linux系统中处理文本最为强大的工具,它的作者之一和现在的维护者就是之前提到过的Brian Kernighan(ken和dmr最亲密的伙伴)。通过该命令可以从文本中提取出指定的列、用正则表达式从文本中取出我们想要的内容、显示指定的行以及进行统计和运算,总之它非常强大。

假设有一个名为fruit2.txt的文件,内容如下所示。

\maoli@ubuntu:~$catfruit2.txt 1banana120 2grape500 3apple1230 4watermelon80 5orange400

显示文件的第3行。

maoli@ubuntu:~$awk'NR==3'fruit2.txt 3apple1230

显示文件的第2列。

maoli@ubuntu:~$awk'{print$2}'fruit2.txt banana grape apple watermelon orange

显示文件的最后一列。

maoli@ubuntu:~$awk'{print$NF}'fruit2.txt 120 500 1230 80 400

输出末尾数字大于等于300的行。

maoli@ubuntu:~$awk'{if($3>=300){print$0}}'fruit2.txt 2grape500 3apple1230 5orange400

用户管理创建和删除用户

创建和删除用户 - 「useradd」 / 「userdel」。需要用root账号创建

maoli@ubuntu:~$suroot 密码: root@ubuntu:/home/maoli#useraddRunsen root@ubuntu:/home/maoli#userdelRunsen

创建和删除用户组

创建和删除用户组 - 「groupadd」 / 「groupdel」

用户组主要是为了方便对一个组里面所有用户的管理。

修改密码

修改密码 - 「passwd」

root@ubuntu:/home/maoli#passwdmaoli Newpassword: Retypenewpassword: passwd:allauthenticationtokensupdatedsuccessfully.

如果使用passwd命令时没有指定命令作用的对象,则表示要修改当前用户的密码。如果想批量修改用户密码,可以使用chpasswd命令。

查看和修改密码有效期

查看和修改密码有效期 - 「chage」

设置maoli用户100天后必须修改密码,过期前15天通知该用户,过期后15天禁用该用户。

root@ubuntu:/home/maoli#chage-M100-W15-I15maoli

  1. 切换用户 - 「su」

root@ubuntu:/home/maoli#sumaoli maoli@ubuntu:~$

以管理员身份执行命令

以管理员身份执行命令 - 「sudo」

maoli@ubuntu:~$ls/root ls:cannotopendirectory/root:Permissiondenied maoli@ubuntu:~$ sudols/root [sudo]passwordformaoli:

「说明」:如果希望用户能够以管理员身份执行命令,用户必须要出现在sudoers名单中,sudoers文件在 /etc目录下,如果希望直接编辑该文件也可以使用下面的命令。

编辑sudoers文件

编辑sudoers文件 - 「visudo」

这里使用的编辑器是vim,关于vim的知识在前面有讲解。

五十二、ViM的使用 该文件的部分内容如下所示:

##Allowroottorunanycommandsanywhere rootALL=(ALL)ALL ##Allowsmembersofthe'sys'grouptorunnetworking,software, ##servicemanagementappsandmore. #%sysALL=NETWORKING,SOFTWARE,SERVICES,STORAGE,DELEGATING,PROCESSES,LOCATE,DRIVERS ##Allowspeopleingroupwheeltorunallcommands %wheelALL=(ALL)ALL ##Samethingwithoutapassword #%wheelALL=(ALL)NOPASSWD:ALL ##Allowsmembersoftheusersgrouptomountandunmountthe ##cdromasroot #%usersALL=/sbin/mount/mnt/cdrom,/sbin/umount/mnt/cdrom ##Allowsmembersoftheusersgrouptoshutdownthissystem #%userslocalhost=/sbin/shutdown-hnow

显示用户与用户组的信息

显示用户与用户组的信息 - 「id」

root@ubuntu:/home/maoli#id uid=0(root)gid=0(root)组=0(root)

给其他用户发消息

给其他用户发消息 -「write」 / 「wall」

发送方:

root@ubuntu#writemaoli HelloMaoli EOF

键入EOF表示信息结束,用Crtl D组合键发送信息。输入内容会出现在用户的屏幕上,同时通信中止。 接收方:

maoli@ubuntu:~$ Messagefromrootonpts/0at9:41... HelloMaoli EOF

  1. 查看/设置是否接收其他用户发送的消息 - 「mesg」

maoli@ubuntu:~$mesg isy maoli@ubuntu:~$mesgn maoli@ubuntu:~$mesg isn

如果想要发送一条信息给系统中所有用户,可以使用wall命令,wall表示:write all。输入wall,然后编辑信息,如果shell支持可以使用中文。然后使用Crtl D组合键发送信息。这样系统所有登录用户的桌面会收到信息。如 果在网络上,可以使用rwall命令把信息发送到局域网上所有的用户。

文件系统文件和路径
  1. 命名规则:文件名的最大长度与文件系统类型有关,一般情况下,文件名不应该超过255个字符,虽然绝大多数的字符都可以用于文件名,但是最好使用英文大小写字母、数字、下划线、点这样的符号。文件名中虽然可以使用空格,但应该尽可能避免使用空格,否则在输入文件名时需要用将文件名放在双引号中或者通过\对空格进行转义。
  2. 扩展名:在Linux系统下文件的扩展名是可选的,但是使用扩展名有助于对文件内容的理解。有些应用程序要通过扩展名来识别文件,但是更多的应用程序并不依赖文件的扩展名,就像file命令在识别文件时并不是依据扩展名来判定文件的类型。
  3. 隐藏文件:以点开头的文件在Linux系统中是隐藏文件(不可见文件)。
目录结构
  1. /bin - 基本命令的二进制文件。
  2. /boot - 引导加载程序的静态文件。
  3. /dev - 设备文件。
  4. 「/etc」 - 配置文件。
  5. /home - 普通用户主目录的父目录。
  6. /lib - 共享库文件。
  7. /lib64 - 共享64位库文件。
  8. /lost found - 存放未链接文件。
  9. /media - 自动识别设备的挂载目录。
  10. /mnt - 临时挂载文件系统的挂载点。
  11. /opt - 可选插件软件包安装位置。
  12. /proc - 内核和进程信息。
  13. 「/root」 - 超级管理员用户主目录。
  14. /run - 存放系统运行时需要的东西。
  15. /sbin - 超级用户的二进制文件。
  16. /sys - 设备的伪文件系统。
  17. /tmp - 临时文件夹。
  18. 「/usr」 - 用户应用目录。
  19. /var - 变量数据目录。
访问权限改变文件模式
  1. 「chmod」 - 改变文件模式比特。

maoli@ubuntu:~/backup$ls-l 总用量424 -rw-rw-r--2maolimaoli4304825月2808:30csdn.html maoli@ubuntu:~/backup$chmodg w,o wcsdn.html maoli@ubuntu:~/backup$ls-l 总用量424 -rw-rw-rw-2maolimaoli4304825月2808:30csdn.html maoli@ubuntu:~/backup$chmod644csdn.html maoli@ubuntu:~/backup$ls-l 总用量424 -rw-r--r--2maolimaoli4304825月2808:30csdn.html

说明:通过上面的例子可以看出,用chmod改变文件模式比特有两种方式:一种是字符设定法,另一种是数字设定法。除了chmod之外,可以通过umask来设定哪些权限将在新文件的默认权限中被删除。

linux系统管理账号信息及功能(四十一Linux基础命令)(1)

改变文件所有者
  1. 「chown」 - 改变文件所有者。

maoli@ubuntu:~/backup$ls-l 总用量424 -rw-r--r--2maolimaoli4304825月2808:30csdn.html maoli@ubuntu:~/backup$sudochownrootcsdn.html [sudo]maoli的密码: maoli@ubuntu:~/backup$ls-l 总用量424 -rw-r--r--2rootmaoli4304825月2808:30csdn.html

  1. 「chgrp」 - 改变用户组。

本文已收录 GitHub,传送门~[1] ,里面更有大厂面试完整考点,欢迎 Star。

Reference

[1]

传送门~: https://github.com/MaoliRUNsen/runsenlearnpy100

,