Linxu学习笔记 All In One

Linxu学习笔记 All In One_第1张图片

登陆、用户切换、关机

登陆


login

login命令用于登入系统

login指令让用户登入系统,您亦可通过它的功能随时更换登入身份,您可在指令后面附加欲登入的用户名称,它会直接询问密码,等待用户输入;或者仅输入login回车后,会提醒输入欲登录的用户名和密码

logout

logout命令用于退出系统

logout指令让用户退出系统,其功能和login指令相互对应

用户切换


su

su用于切换其他用户

su命令用于变更为其他使用者的身份,除 root用户以外,需要键入该使用者的密码。

示例:【图一】使用su命令从root用户登陆到admin账户(root账户登陆其他账户不需要密码)
示例:【图二】使用su命令从admin用户登录到root账户(其他非root账户登录到其他账户需要输入密码)

关机


shutdoun

关机重启相关操作

shutdown -h now			立即关机且停机
Shutdown now			立即关机不停机
shutdown -h 5			5分钟之后关机且停机
shutdown -h 12:30		12:30关机且停机
shutdown -r now			立即重启
shutdown -r 10			10分钟之后重启

shutdown -h 5 代表5分钟之后关机,如果后面再跟上一句话,例如:
shutdown -h 5 “the system will be poweroff”	 这个命令后面加了一句自定义的话,表示5分钟之后关机,并且会提醒其他用户“the system will be poweroff”。

文件管理


路径与查看相关


cd

cd命令用于切换当前工作目录至 dirName(目录参数)

cd [dirName]
cd .	目前所在的目录			. 代表当前目录
cd ~	直接跳转到home目录		~代表home目录
cd ..	返回上一级目录			..表示上一级目录
cd -	回到刚才的目录			就是返回刚刚你所在的目录

pwd

pwd命令用于显示工作目录

执行pwd指令可立刻得知您目前所在的工作目录的绝对路径名称。

ls

命令用于显示指定工作目录下之内容(列出目前工作目录所含子文件及子目录)

ls [-alrtAFR] [name]
-a 显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出)
-c 按文件修改时间排序
-i 在输出的第一列显示文件I节点号
-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出(可简写为ll)
-r 将文件以相反次序显示(原定依英文字母次序)
-t 将文件依建立时间之先后次序列出
-R 递归的显示出指定目录的各个子目录中的文件

创建与删除文件夹


mkdir

mkidr用于创建目录

mkdir [-p] dirName
-p 如果指定目录的父级目录不存在就将其创建

rmdir

删除空目录

rmdir [-p]
-p 如果删除指定的目录使其父级目录为空,那么一并删除

文件创建相关


touch

touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。

touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]
a 改变档案的读取时间记录。
m 改变档案的修改时间记录。
c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
f 不使用,是为了与其他 unix 系统的相容性而保留。
r 使用参考档的时间记录,与 --file 的效果一样。
d 设定时间与日期,可以使用各种不同的格式。
t 设定档案的时间记录,格式与 date 指令相同。

权限相关


chmod

更改文件或目录的权限

chmod [选项] 文件和目录列表
在这种模式下,u、g、o、a代表不同用户,u代表文件主,g代表同组用户,o代表其他用户,a代表所有用户。
用r、w、x代表权限,r代表可读,w代表可写,x代表可执行。

1:【图一】对文件的权限设置可通过+、-、=来完成。
+代表在原来的权限基础上新增权限,-代表在原来的权限基础上减少权限,=代表赋予新的权限,覆盖以前的权限,例如:文件主增加写权限,同组用户减少执行权限,其他用户赋予新的权限执行

2:【图二】对文件的权限设置可通过三位八进制数来表示ugo的权限,例如chmod 751 file,7代表u的权限,7=111,分别代表读写执行权限,5代表g的权限,5=101,表示有读和执行的权限,1代表o的权限,1=001,表示只有执行的权限。例如更改file文件的权限。

chown

改变某个文件或目录的所有者和所属的组

chown [选项] 用户:组 文件名
-R:递归式地改变指定目录及其所有子目录、文件的文件主。
		chown -R u02:u02 studir,讲studir文件夹所属用户与用户组设置为u02和u02
-v:详细列出该命令所做的工作。

用户可以是用户或者是用户id,用户组可以是组名或组id,只有文件主和root用户才可以更改
用户:组	指定所有者和所属工作组。当省略“:组”,仅改变文件所有者

普通文件基本命令

查看文本文件

cat

cat 命令用于连接文件并打印到标准输出设备上。

cat [选项] 文件1 [文件2]...
cat [-AbeEnstTuv] [--help] [--version] fileName
-n 或 --number:由 1 开始对所有输出的行数编号
-b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行
【原理】>为输出重定向运算符,cat [文件]为输出显示内容,然后后面使用>[文件]就会把输出的内容写到[文件]中
>输出重定向运算符 不止使用在cat,例如ls -l > dir.txt就会把目录信息输出写入到dir.txt文件中
  • cat [文件]显示文件内容
  • cat [文件1 文件2 ...]显示多个文件内容
  • cat [文件1 文件2...] > [文件]将文件覆盖写入另一个文件(没有则自动创建)
  • cat [文件1 文件2...] >> [文件]将文件追加写入另一个文件(没有则自动创建)
  • cat /dev/null > [文件]清空文件内容

more

more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读

进入more状态,该命令一次显示一屏文本,满屏后停下来;
使用【Enter】键可以向后移动一行,使用【空格】键向后移动一页,【Q】键可以退出,【B】键显示上一屏内容,
【H】键显示帮助信息,在more状态还有很多功能,可用man more命令获得
more [选项] 文件
more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
-num 指定屏幕显示多少行,如 more -5,指定一次显示5行
-p 不滚屏,在显示下一屏之前先清屏
-s 文件中连续的空白行压缩成一个空白行显示
Demo:文件使用-ps参数以及指定每次显示的行数显示file文件内容
more -ps -5 file

less

实际上是more的改进版

可以使用【PgUp】【PgDn】翻页,用向上向下键可以前后移动一行,功能与more命令类似

head

显示文件的开头若干行,由参数决定,默认显示10行

head [参数] 文件
-c SIZE,--byte=SIZE 显示文件前SIZE字节
-n NUMBER,--LINES=NUMBER 显示文件前NUMBER行,默认为10行
-q 不显示文件名
-v 显示文件名
Dome:显示前3行内容,显示文件名,文件为cs
head -3 -v cs
同head -n 3 -v cs

Linxu学习笔记 All In One_第2张图片

tail

显示文件末尾n行,默认10行

tail [参数] 文件
-c NUMBER,--byte=NUMBER 输出最后NUMBER个字节
-n 输出后n行,默认10行
-q 不输出包含给定文件的文件名
-v 始终输出文件文件名
Demo:输出文件后2行,且输出文件名,文件为cs

Linxu学习笔记 All In One_第3张图片

匹配、排序


grep

该命令用来在文本文件中查找指定模式的单词或短语,并在标准输出上显示包括给定的字符串模式的所有内容

grep [选项]文件名

find

find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

find [路径] [选项 参数] [选项 参数]...
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比文件 file 更晚被读取过的文件
-atime n : 在过去n天内被读取过的文件
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比文件 file 更新的文件
-ctime n : 在过去n天内被修改过的文件
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
-size n : 文件大小是n单位,b代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
			如 12b 12k 12M ,分别代表12b大小、12k大小、12M大小
-type c : 文件类型是 c 的文件。
        d: 目录
        c: 字型装置文件
        b: 区块装置文件
        p: 具名贮列
        f: 一般文件
        l: 符号连结
        s: socket
-pid n : process id 是 n 的文件
【查找范围,如大小,修改时间,可在参数前使用—、+ 代表以内、以上的范围】
Demo:查找根目录下20分钟之内,类型为普通文件,大小为20b以内,名称以"work"开头的文件

复制 删除 移动文件

复制文件


cp

cp命令主要用于复制文件或目录

cp [选项] 源文件或目录 目标文件或目录
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
-d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
Demo:将当前路径下的file文件复制到stu文件夹下

Demo:将当前路径下的file文件复制到stu文件夹下,并重命名为file1(即另存为到stu下,名为file1)

Demo:将当前路径下的stu文件夹内容全部复制到dir文件夹下

删除文件

rm

rm命令用于删除一个文件或者目录

rm [选项] 文件或目录
-i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除。
Demo:删除dir文件夹以及所有内容,并不询问

移动文件

mv

命令用来为文件或目录改名、或将文件或目录移入其它位置

mv [选项] 源文件或目录 目标问价或目录
-i: 若指定目录已有同名文件,则先询问是否覆盖旧文件;
-f: 在 mv 操作要覆盖某已有的目标文件时不给任何指示;
Demo:将当前目录下的file文件移动到stu文件夹下

Demo:将当前目录下的file文件移动到stu文件夹下,并重命名此文件为file2

Demo:重命名file文件为file3

统计文件

统计文件

wc

wc命令用于计算字数。

利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。

wc [-clw][--help][--version][文件列表...]
-c或--bytes或--chars 只显示Bytes数
-l或--lines 只显示行数
-w或--words 只显示字数
英文字数为单词数,中文字数为字数
Demo:统计当前目录下的file1、file2文件的大小、行数和字数

Linxu学习笔记 All In One_第4张图片

打包压缩解压

tar

tar命令用于备份文件打包,只负责打包文件,不负责压缩

-c 创建新的备份打包文件,打包
-x 从备份文件中还原文件,解包
-f 指定打包的文件名,f后面一定是.tar文件,所以f放在选项最后,.tar放在第一
-t 或--list 列出备份文件的内容
-z 打包后调用gzip进行解压/压缩
-r 或--append 新增文件到已存在的备份文件的结尾部分,新增文件可以是任何文件
-u 或--update 仅置换较备份文件内的文件更新的文件
-C <目的目录>,可以在解压解包时指定目录
Demo:打包 tar -cf all.tar doc1 doc2 doc3
格式:tar -cf 打包文件.tar 被打包文件/路径

Demo:解包 tar -xf all.tar
格式:tar -xf 被解包的文件.tar

Demo:查看打包文件的内容 tar -tf all.tar

Linxu学习笔记 All In One_第5张图片

Demo:tar -zcf all.tar.gz doc1 doc2 doc3
打包文件,并压缩

Demo:tar -zxf 
Demo:tar -cf doc.tar ./doc
打包整个doc目录

gzip

压缩/解压缩

gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出".gz"的扩展名

gzip[参数][文件或者目录]
-d或--decompress或----uncompress  解开压缩文件
-r或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理
-num 用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法		(高压缩比)。系统缺省值为6

进程查看

ps

查看系统进程

ps [选项]
-a:显示系统中与tty相关的所有进程的信息
-e:显示所有进程的信息
-f:显示进程的所有信息
-l:以长格式显示进程信息
-r:只显示正在运行的进程信息
ps

Linxu学习笔记 All In One_第6张图片

小工具

alias

命令用于设置指令的别名。

用户可利用alias,自定指令的别名。若仅输入alias,则可列出目前所有的别名设置。alias的效力仅及于该次登入的操作。若要每次登入是即自动设好别名,可在.profile或.cshrc中设定指令的别名。

bc

命令行输入bc即可进入计算器,直接进行常规运算即可,输入quit退出计算器
+ 加法
- 减法
* 乘法
/ 除法
^ 指数
% 余数

cal

该命令用于显示日历。如果不带参数,则显示当前月份的日历

cal [选项] [日期]
-y:显示本年度的日历。
-j:显示粗略日期,即将一个月中的日号按照在一年中是第多少天来显示
Demo:cal显示当月的日历

Linxu学习笔记 All In One_第7张图片

Demo:cal -j 粗略的显示今天是今年的第几天

Linxu学习笔记 All In One_第8张图片

Demo:cal -j 9 2019 粗略的显示指定时间在当年的第几天

Linxu学习笔记 All In One_第9张图片

date

用户与用户组管理

建议完成操作后,查看/etc/passwd文件以验证操作成功,新添加的用户信息在此文件的最后几行,可使用tail命令查看最后几行

用户管理

useradd

添加新用户

-d 主目录,指定用户主目录,默认为/home/用户名
-m 若主目录不存在,则创建它
-M 注释对新建用户的注释说明
-g 用户组,指定将该用户加入到哪一个用户组中
-n 不为用户创建私有用户组
-r 创建一个ID小于500的系统用户
-u ID 指定新建用户的ID
-s 指定用户登录时所使用的shell,默认为/bin/bash

创建的用户信息,会在/etc/passwd文件中记录,可以使用tail命令查看此文件的最后几行,来检验是否创建成功

如何成功的添加一个新的用户

有主目录,在创建用户的时候,可以加上-m参数,例如useradd -m u02,默认在home下创建一个同名的目录;如果创建用户时没有设置主目录,那么需要手动创建一个目录,并且将此目录的所属用户和用户组都设置为新创建的用户;在创建了新的用户后,可以在/etc/passwd文件最后几行找到此用户,文件包含了用户的主目录信息,所以此文件里面的主目录一定是要存在的,且所属用户与用户组与用户保持一致

一定要设置了密码 passwd u02

添加新用户u01,并创建同名的主目录,创建后及时修改设置登陆密码

Linxu学习笔记 All In One_第10张图片

添加新用户u02,如果未指定主目录,则需要手动创建一个目录,并将目录的所属用户和用户组设置为u02用户和用户组

Linxu学习笔记 All In One_第11张图片

usermod

usermod命令结合相关参数可用来更改已经创建的账户属性,包括账户名、主目录、用户组、登录shell等

usermod [参数] [用户账号]
-c, --comment 注释            GECOS 字段的新值
-d, --home HOME_DIR           设置用户的主目录				usermod -d /home/u01 u01
-g, --gid GROUP               强制使用 GROUP 为新主组
-G, --groups GROUPS           新的附加组列表 GROUPS
-l, --login LOGIN             新的登录名称				 usermod -l stu1 u01
-L, --lock                    锁定用户帐号
-s, --shell SHELL             该用户帐号的新登录 shell
-u, --uid UID                 用户帐号的新 UID
-U, --unlock                  解锁用户帐号

passwd

用户口令管理

passwd [参数] [用户名]
passwd 用户名 设置密码
-l 锁定密码,通过锁定密码的方式,可以暂时禁止用户登录系统
-u 解锁密码,密码被解锁的账户可正常登录系统
-S 查询密码状态查询指定账户的密码是否被锁定。若密码被锁定则返回结果“password locked.”若密码没有被锁定则显示“password set, MD5 cryt.”
-d 删除密码,若指定账户的密码被删除后,该账户将不能再登录系统,如果要登录系统则需重新设置密码

userdel

删除账号

userdel  [参数选项]  账户名
-r    删除账户的同时,删除该账户对应的主目录。		userdel -r u01

如果用户在活动状态时无法删除的,我们可以通过pkill -u userName的方式杀死userName用户的所有进程

用户组管理

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

groupadd

添加用户组

groupadd  [参数选项]  用户组名称
-r 创建系统用户组,其组ID小于500;若不使用-r参数,则创建普通用户组,其组ID大于或等于500
-g 指定新建工作组的 id

groupmod

使用groupmod命令结合相关参数可对用户组的相关属性进行修改,比如修改用户组名、修改用户组ID等

groupmod [-g <群组识别码GID>][-n <新群组名称>][群组名称]
-g <用户组GID>  设置用户组GID。
-n <新群组名称>  设置欲使用的群组名称。

groupdel

删除用户组

groupdel [群组名称]

gpasswd

使用gpasswd命令结合相关参数可对用户组的用户进行设置,比如为指定的用户组添加或移除用户,并且为用户组设置管理员等操作。

gpasswd [选项] [参数] 用户组名
-a 添加用户到组
-d 从组删除用户
-A 指定管理员

id

查看显示当前登录账户的uid和gid及所属分组及用户名

-g	显示用户所属群组的ID。
-G	显示用户所属附加群组的ID。
-n	显示用户,所属群组或附加群组的名称。
-r	显示实际ID。
-u	显示用户ID。

who

查看登录到本台机器的当前用户

-H	显示各栏位的标题信息列。
-I	显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成“.”号;如  果该用户已超过24小时没有任何动作,则标示出“old”字符串。
-m	此参数的效果和指定“am i”字符串相同。
-q	只显示登入系统的账号名称和总人数。

w

w命令与who命令用法相似,只是显示的信息更加详细,这里不再赘述

mount/umount

挂在分区/卸载分区

注意:分区挂在的目录之后,目录原有的文件将不再显示,只有将分区卸载之后才能显示出原来的文件

建议:建议挂在点目录为空

mount [选项 参数] 分区设备名 挂载点
umount 设备名/卸载点目录名

shell编程

shell脚本规范

首行使用#!开头,指定执行这个shell脚本的解释器

注释使用开头

#!/bin/bash
#这是我的第一个shell脚本
echo "Hello World !"

shell特殊字符

- 双引号括起来的字符,除$、倒引号(`)及反斜杠(\)仍保留其特殊功能外,其余字符均作为普通字符对待。
- $ 表示变量替换,即用其后指定的变量的值来代替$和变量;倒引号表示命令替换;仅当“\”后面的字符是下述字符之一时,“\”才是转义字符。这些字符是$、倒引号(`)、”、反斜杠(\)或换行符。

双引号" "

#!/bin/bash
#这是我的第一个shell脚本
echo "Hello World !"

倒单引号`

#在双引号引起来的字符串中,如果要使用命令,则需要使用倒单引号引起来,倒单引号引起来的同同视为命令
#!/bin/bash
echo "当前工作目录为 `pwd`"

美元符$

$符号的作用:用于取出变量的内容

#$后面跟的HOME,是换将变量,$符号会将HOME环境变量具体的值取出来
#!/bin/bash
echo "HOME目录为 $HOME"

反斜杠转义 /

# 仅当\后面的字符是$ ` " \ 换行符,才是转义字符,例如\n,n不是五种字符之一,默认会按照字符串输出,如果需要转义,那么就要加上-e参数开启转义。
#!/bin/bash
echo -e "测试反斜杠转义\n"

案例

创建一个脚本,显示当前日期,当前用户,当前工作目录,输出当前工作目录中所有文件属性信息

#!/bin/bash
echo "当前日期:`date`"
echo "当前用户: `whoami`"
echo "当前工作目录:`pwd`"
ls -l

Linxu学习笔记 All In One_第12张图片
Linxu学习笔记 All In One_第13张图片

标准输入、标准输出、标准错误输出(0、1、2)

0表示标准输入
1表示标准输出
2表示标准错误输出

>默认为标准输出重定向,与 1>相同

2>&1意思是把 标准错误输出 重定向到 标准输出.

&>file意思是把 标准输出 和 标准错误输出 都重定向到文件file中

2>&1 > file 把错误出定向到标准输出(此时标准输出为终端,所以输出到终端), 标准输出定位到文件

> file 2>&1 把标准输出定位到文件,错误输出到标准输出(此时标准输出指向文件,所以输出到文件)

shell变量

  • 用户变量:是在编写shell脚本时定义的。可以在shell程序内任意使用和修改它们。

  • 内部变量:是由系统提供的。与环境变量不同,但用户不能修改它们。

  • 环境变量:是系统环境的一部分,不必去定义它们。可以在shell程序中使用它们,某些变量(如PATH)还能在shell中加以修改。

用户变量

变量名
用户定义的变量是普通的shell变量。变量名是以字母或下线符开头的字母、数字及下线符序列,并且大小写字母意义不同。例如,dir与Dir是两个不同的变量名。变量名的长度不受限制
变量赋值
变量名 = 字符串/数字 	#直接赋值				a = "hello"
变量名 = $变量名		 #通过取变量的值进行赋值	 b = $a
访问变量值
可以通过给变量名加上前缀$(美元符)来访问变量的值。

内部变量

内部变量是Linux所提供的一种特殊类型的变量。这类变量在程序中用来做出判断。在shell程序内,这类变量的值是不能修改的。
$#	传送给shell程序的位置参数的数量
$?	上一条命令执行的返回值(始终跟随命令的执行而改变)。
$0 	shell程序的名称。
$*	调用shell程序时所传送的全部参数组成的单字符串。
$1	调用shell程序是所传送的参数的第一个,以此类推,$2即为参数的第二个(位置参数)

环境变量

HOME	用户目录的全路径名。主目录是用户开始工作的位置。
LOGNAME	用户的注册名,由Linux自动设置。它是系统与用户交互的名字或字符串。
MAIL	用户系统信箱的路径。无论何时邮件到达用户的系统中,它都会存在该变量指定的文件中。
		如用户的注册名为pb,则MAIL的值为/var/spool/mail/pb。
SHELL	shell从中查找命令的目录列表
PS1		shell的主提示符。主提示符是在shell准备接收命令时显示的字符串。
PWD		用户当前工作目录的路径。它指出用户目前在Linux文件系统中处在什么位置,是由Linux自动设置的
PATH	用户当前使用的shell。它也指出用户shell解释程序放在什么地方
TERM	用户终端类型。

位置参数

调用shell脚本时所传递的参数:
$1	传递的第一个参数
$2	传递的第二个参数
......
$0表示的是shell脚本的路径名(执行时所写的路径,如./myshell)关联:内部变量

$符号取值细节

#!/bin/bash
a="student"
#会取a的值
echo "I am a $a I love my school"
#假如连在一起了,会认为aI是一个变量,找不到这个变量就会默认为空
echo "I am a $aI love my school"
#可以使用花括号将变量括起来就行了,即使和后面的字符连在一起也没关系
echo "I am a ${a}I love my school"

Linxu学习笔记 All In One_第14张图片
Linxu学习笔记 All In One_第15张图片

你可能感兴趣的:(Linux,linux,运维)