Linux CentOs

linux的基础!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

LInux下面有很多的分区,每个分区又有不同的作用 虽然不是很准确但是入门足够了
/ 被称为根目录 所有的分区都在根目录下面有
root home bin sbin lib Lost+Found etc boot srv dev media misc mnt opt proc selinux srv sys var
简单的说一下每个目录的作用
root 系统特级管理员的目录
在linux中万物皆可为文件,就连指令也可以是文件
bin 存放二进制指令
sbin 存放二进制指令不过是超级用户(root)才可以使用的指令
lib 存放函数,标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件
home 每个成员都有一个家 用户存放在这个目录下
Lost+Found 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件
boot 系统Kernel的配置文件 启动管理程序的目录包含画面等相关的文件
dev 包含了Linux所有使用的外部设备文件
media 外接设备光盘软盘
mnt U盘 移动硬盘
misc 也是挂载目录
etc 软件配置文件貌似是安装包
srv 主要用来存储本机或本服务器提供的服务或数据主要用来存储本机或本服务器提供的服务或数据
var 系统产生的不可销毁的缓存文件和日志记录
tmp 为临时的文件存放的地方
opt 为软件安装目录
proc sys selinux 是系统文件一般不要轻易去动它
usr Unix Software Resource 也就是Unix操作系统软件资源所放置的目录
关于Linux的命令
命令 [选项] [参数] (加括号的可以省略)
ls 显示当前目录下的文件(不加参数)
ls -a(all) 显示所有的文件隐藏文件也能看到
ls -l (long 显示更加详细的信息)
ls -h(human 人性化 更加人性化的显示)
ls -d 查看目录的整体的属性
ls -i 查看文件的ID

目录的创建

mkdir /tmp/什么的 创建两个目录直接在后面加上就行了
mkdir -p 递归创建

目录的删除

rmdir 只能删除目录目录必须为空的(不过太鸡肋了 直接用rm -r 删除目录 rm -f 强制删除,可以删除文件和目录)

目录的复制

cp 源文件 目标目录
cp -r 源目录 目标目录
cp -p 属性不变
复制命令可以更改文件的名字

剪切

直接就是mv 就行了 剪切也可以更改文件的名字

切换目录 cd

cd …返回上一层 cd 或是 cd ~ 直接返回对应的目录

显示当前的目录 pwd print working direction

关于查看文件

cat -n 10 /etc/…
more -n 10 /etc/…
less -n 10 /etc/…
less 中的搜索功能 /搜索的内容 按住n是下一个的意思 空格向下翻页 Pgup PgDn
head -n 10 显示前面10行
tail -n 10显示后面10行
tail -f 动态显示文件内容的变化

硬链接与软连接

[root@localhost japan]# ln -s hello hello.soft
[root@localhost japan]# ls -l hello.soft
lrwxrwxrwx. 1 root root 5 Jul 19 14:59 hello.soft -> hello
软连接的权限为rwx 只是一个快捷方式基本上占2个字节 可以跨区创建文件或是目录的快捷方式
当源文件删除之后软连接会失效

[root@localhost japan]# ln hello hello.hard
[root@localhost japan]# ls
hello hello.hard hello.soft
[root@localhost japan]# ls -l hello.hard
-rw-r–r--. 2 root root 144 Jul 19 14:18 hello.hard
[root@localhost japan]# ls -i hello hello.soft hello.hard
531116 hello 531116 hello.hard 531120 hello.soft

硬链接会实时更新文件里面的内容但是不能创建文件的硬链接 也不能分区创建
硬链接的i字点和源文件的i字点是一样的

文件的权限

-l 为软连接 -为文件 -d 为目录
rwx r = 4 w = 2 x = 1; 可以用数字来代替 7为rwx 6 为rw 5rx …
用数字直接就是 chmod 777 /etc/…
chmod u/g/o ±= rwx
修改整个目录下的权限
chmod -R 777 /etc/…注意是大R
chmod 777 /etc/…

文本和目录的权限的区别

		目录										文件

r 读目录下有什么 读
w 删除创建文件 修改
x 进入目录 执行
注意在目录下的权限会影响可不可以执行目录下的文件的操作

添加用户/组

useradd groupadd 然后passwd 修改密码

改变文件/目录的所属
chown 所有人 文件/目录
chgrp 所有组 文件/目录

查看默认权限

umask -S 直接看前面的数字就行了
如果直接打umask 出现的是0022 他和umask -S是异的关系
如果想要修改默认的权限就直接umask 077
文件比目录都少一个x权限

查找文件目录

find 要查找的地址 -name (**)file(*)打不出来反正就先前后面加成就行了 ?? 问号是一个位置的字符
-iname 是不区分大小写
find -size ±= 312231K /M
find -user 人名
find -group 组名
find -inum查找i字点 -a 同时满足 -o 满足其中一个关系
连接命令 -exec rm {} ;或是 -ok em {} ;只不过是-ok会询问是否删除
find 要查找的目录 -amin -5五分钟内
-amin +大于5五分钟
-cmin 属性 ±5
-mmin内容 ±5
按类型查找 -type d/f/l 目录 文件 软连接
注意查找文件的时候比如 有一个软连接为 /tmp/jkk.soft
用find -name jkk✳ -a -type l 查找不到 用find -name jkk.✳ -a -type l 就能查找到很奇怪

locate 文件 使用前要updatedb 但是放在/tmp目录下等的地方不会记录也就不会有

which / whereis 后面加上命令 可以找到命令所在的文件

查看文件里面的内容
grep -i 要查找的内容 不区分大小写 文件所在位置 -n 显示行数
grep -v 后面加字母 排除以当前字母开头的行
grep -v # 目录 去除#的行
grep -v ^# 去除以#为行首的行

关于命令的帮助

man 命令
info 命令
whichis
whereis 可以查到命令的路径
有些命令是配置文件 1 表示命令 5 表示配置文件
用 help 直接加上配置文件的目录就行了不需要加上绝对路径 如果是命令的话要加上命令 --help
passwd是配置文件和命令
man 1 passwd
man 5 passwd

用户管理

useradd passwd
who 查看当前是谁在用
w 详细信息

文件的解压

gzip 文件压缩
gunzip 文件解压 不能压缩目录 压缩格式是.gz

tar -v查看详细的信息 -f 指定文件 -c 打包 -z 压缩 完成命令后的文件或目录的名字 路径
格式为.tar.gz

格式为.zip 的是
zip -r 为压缩目录 要压缩成的文件名 路径
unzip

gz的升级版 格式为.bz2
bz2
unbzp2 不会保留源文件

一般都是用
tar -j 的命令来代替bz2 会保留源文件
tar 加上其他的命令和原来的tar一样

给谁写信息
write 用户名字
wall 给所有当前登陆的用户写信息
mail 用户给用户发邮件
mail 查看邮件
按邮件的序号查看邮件
h返回列表

网络相关的指令应该用不到
ping
ifconfig

关机

shutdown -h 10十分钟后关机
shutdown -h 16:40 关机
shutdown -c 关上上过一次的关机命令
shutdown -r 时间 重启

halt 关机

重启 reboot

logout 退出登陆

vim的使用

vim 文件
G到最后一行
gg 到最前面一行
显示行数
:set nu
不显示
:set nonu

跳到第几行
:321321G

移动到行首 0
行尾 $
后面直接复制一个网站上的
dG删除从当前行到末尾的所有东西

	  想要写一个java的程序直接

vim hello.java
i 进入编辑模式
按Esc :w q q! wq
按Esc后yy 复制一行 p粘贴
5yy 复制五行
dd 删除一行 5dd 删除5行
按Esc /你要找的字 按n换下一个
按Esc :set nu 显示行数 set nonu 去掉
正常模式按G到底 gg到顶
数字加SHift g 直接到第几行
vi常用快捷键
x 删除光标处的字符
dd 删除整行
i 在光标前插入文本
a 在光标后插入文本
o 当前行下插入新行
u 撤销最后一次修改
:e! 放弃所有修改,从上次保存开始处再编辑
:wq 保存退出
:q! 不保存退出
/pattern:从光标开始处向文件尾搜索pattern
?pattern:从光标开始处向文件首搜索pattern
vi常用快捷键
光标控制命令
命令 光标移动
h或^h 向左移一个字符
j或j或n 向下移一行
k或^p 向上移一行
l或空格 向右移一个字符
G 移到文件的最后一行
nG 移到文件的第n行
w 移到下一个字的开头
W 移到下一个字的开头,忽略标点符号
b 移到前一个字的开头
B 移到前一个字的开头,忽略标点符号
L 移到屏幕的最后一行
M 移到屏幕的中间一行
H 移到屏幕的第一行
e 移到下一个字的结尾
E 移到下一个字的结尾,忽略标点符号
( 移到句子的开头
) 移到句子的结尾
{ 移到段落的开头
} 移到下一个段落的开头
0或| 移到当前行的第一列
n| 移到当前行的第n列
^ 移到当前行的第一个非空字符
$ 移到当前行的最后一个字符
+或return 移到下一行的第一个字符

  • 移到前一行的第一个非空字符

在vi中添加文本
命令 插入动作
a 在光标后插入文本
A 在当前行插入文本
i 在光标前插入文本
I 在当前行前插入文本
o 在当前行的下边插入新行
O 在当前行的上边插入新行
:r file 读入文件file内容,并插在当前行后
:nr file 读入文件file内容,并插在第n行后
escape 回到命令模式
^v char 插入时忽略char的指定意义,这是为了插入特殊字符

在vi中删除文本
命令 删除操作
x 删除光标处的字符,可以在x前加上需要删除的字符数目
nx 从当前光标处往后删除n个字符
X 删除光标前的字符,可以在X前加上需要删除的字符数目
nX 从当前光标处往前删除n个字符
dw 删至下一个字的开头
ndw 从当前光标处往后删除n个字
dG 删除行,直到文件结束
dd 删除整行
ndd 从当前行开始往后删除
db 删除光标前面的字
ndb 从当前行开始往前删除n字
:n,md 从第m行开始往前删除n行
d或d$ 从光标处删除到行尾
dcursor_command 删除至光标命令处,如dG将从当产胆行删除至文件的末尾
^h或backspace 插入时,删除前面的字符
^w 插入时,删除前面的字

修改vi文本
每个命令前面的数字表示该命令重复的次数
命令 替换操作
rchar 用char替换当前字符
R text escape 用text替换当前字符直到换下Esc键
stext escape 用text代替当前字符
S或cctext escape 用text代替整行
cwtext escape 将当前字改为text
Ctext escape 将当前行余下的改为text
cG escape 修改至文件的末尾
ccursor_cmd text escape 从当前位置处到光标命令位置处都改为text

在vi中查找与替换
命令 查找与替换操作
/text 在文件中向前查找text
?text 在文件中向后查找text
n 在同一方向重复查找
N 在相反方向重复查找
ftext 在当前行向前查找text
Ftext 在当前行向后查找text
ttext 在当前行向前查找text,并将光标定位在text的第一个字符
Ttext 在当前行向后查找text,并将光标定位在text的第一个字符
:set ic 查找时忽略大小写
:set noic 查找时对大小写敏感
:s/oldtext/newtext 用newtext替换oldtext
:m,ns/oldtext/newtext 在m行通过n,用newtext替换oldtext
& 重复最后的:s命令
:g/text1/s/text2/text3 查找包含text1的行,用text3替换text2
:g/text/command 在所有包含text的行运行command所表示的命令
:v/text/command 在所有不包含text的行运行command所表示的命令

在vi中复制文本
命令 复制操作
yy 将当前行的内容放入临时缓冲区
nyy 将n行的内容放入临时缓冲区
p 将临时缓冲区中的文本放入光标后
P 将临时缓冲区中的文本放入光标前
"(a-z)nyy 复制n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行
"(a-z)ndd 删除n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行
"(a-z)p 将名字为圆括号的可命名缓冲区的内容放入当前行后
"(a-z)P 将名字为圆括号的可命名缓冲区的内容放入当前行前

在vi中撤消与重复
命令 撤消操作
u 撤消最后一次修改
U 撤消当前行的所有修改
. 重复最后一次修改
, 以相反的方向重复前面的f、F、t或T查找命令
; 重复前面的f、F、t或T查找命令
"np 取回最后第n次的删除(缓冲区中存有一定次数的删除内容,一般为9)
n 重复前面的/或?查找命令
N 以相反方向重复前面的/或?命令

保存文本和退出vi
命令 保存和/或退出操作
:w 保存文件但不退出vi
:w file 将修改保存在file中但不退出vi
:wq或ZZ或:x 保存文件并退出vi
:q! 不保存文件,退出vi
:e! 放弃所有修改,从上次保存文件开始再编辑

vi中的选项
选项 作用
:set all 打印所有选项
:set nooption 关闭option选项
:set nu 每行前打印行号
:set showmode 显示是输入模式还是替换模式
:set noic 查找时忽略大小写
:set list 显示制表符(^I)和行尾符号
:set ts=8 为文本输入设置tab stops
:set window=n 设置文本窗口显示n行

vi的状态
选项 作用
:.= 打印当前行的行号
:= 打印文件中的行数
^g 显示文件名、当前的行号、文件的总行数和文件位置的百分比
:l 使用字母"l"来显示许多的特殊字符,如制表符和换行符

在文本中定位段落和放置标记
选项 作用
{ 在第一列插入{来定义一个段落
[[ 回到段落的开头处
]] 向前移到下一个段落的开头处
m(a-z) 用一个字母来标记当前位置,如用mz表示标记z
'(a-z) 将光标移动到指定的标记,如用’z表示移动到z

在vi中连接行
选项 作用
J 将下一行连接到当前行的末尾
nJ 连接后面n行

光标放置与屏幕调整
选项 作用
H 将光标移动到屏幕的顶行
nH 将光标移动到屏幕顶行下的第n行
M 将光标移动到屏幕的中间
L 将光标移动到屏幕的底行
nL 将光标移动到屏幕底行上的第n行
^e(ctrl+e) 将屏幕上滚一行
^y 将屏幕下滚一行
^u 将屏幕上滚半页
^d 将屏幕下滚半页
^b 将屏幕上滚一页
^f 将屏幕下滚一页
^l 重绘屏幕
z-return 将当前行置为屏幕的顶行
nz-return 将当前行下的第n行置为屏幕的顶行
z. 将当前行置为屏幕的中央
nz. 将当前行上的第n行置为屏幕的中央
z- 将当前行置为屏幕的底行
nz- 将当前行上的第n行置为屏幕的底行

vi中的shell转义命令
选项 作用
:!command 执行shell的command命令,如:!ls
:!! 执行前一个shell命令
:r!command 读取command命令的输入并插入,如:r!ls会先执行ls,然后读入内容
:w!command 将当前已编辑文件作为command命令的标准输入并执行command命令,如:w!grep all
:cd directory 将当前工作目录更改为directory所表示的目录
:sh 将启动一个子shell,使用^d(ctrl+d)返回vi
:so file 在shell程序file中读入和执行命令

vi中的宏与缩写
(避免使用控制键和符号,不要使用字符K、V、g、q、v、*、=和功能键)
选项 作用
:map key command_seq 定义一个键来运行command_seq,如:map e ea,无论什么时候都可以e移到一个字的末尾来追加文本
:map 在状态行显示所有已定义的宏
:umap key 删除该键的宏
:ab string1 string2 定义一个缩写,使得当插入string1时,用string2替换string1。当要插入文本时,键入string1然后按Esc键,系统就插入了string2
:ab 显示所有缩写
:una string 取消string的缩写

在vi中缩进文本
选项 作用
^i(ctrl+i)或tab 插入文本时,插入移动的宽度,移动宽度是事先定义好的
:set ai 打开自动缩进
:set sw=n 将移动宽度设置为n个字符
n<< 使n行都向左移动一个宽度
n>> 使n行都向右移动一个宽度,例如3>>就将接下来的三行每行都向右移动一个移动宽度

rpm安装
rpm -hiv
i 安装 用全包名 h v 显示详细信息 -U升级 -e 卸载

rpm -q(qure)查询有没有安装 -a 查询所有的 -i infomation查看信息 -p (packages)可以查看未安装的软件包信息 -l 可以查询这个包安装在哪里 -f 加文件名可以查到这个文件在那个目录下 -R 可以查询这个软件包相关的依赖性
rpm -q httpd | grep httpd 可以查看所有关于httpd的软件包信心

ip地址配置
setup
然后service network restart
如果不行
vi /etc/sysconfig/network-scripts/ifcfg-eth0 将onboot 的no 改为yes

yum -y install 包名 直接就是自动安装
yum -y update 包名 如果不加包名的话也会升级SHELL危险啊
yum -y -remove 卸载也是危险!!!!!!!!!!!
yum list 列出能安装的包
yum search 包名 显示出安装报的信息

软件组

yum gruoplist
yum groupinstall 软件组名
yum groupremove 软件组名

etc/passwd 的看懂

第一个为用户名 第二个为是否有密码 X表示有密码 !!/*没有密码
第三个是UID,如果为0的话就是有root的权限 第四个是GID 第五个是备注 第六个是路径 第七个是应该是默认命令
一般都是在/bin/bash 下 如果是 /sbin/logout为暂时不启用

etc/shadow

用户名 加密的密码如果在密码前面加上!就会无论怎么样都会进去
最后一次更改密码的时间 不过用的是时间戳的方式
date -d “1970-01-01 17101 days”
在这里插入图片描述

1、账户名称
  2、加密后的密码,如果这一栏的第一个字符为!或者*的话,说明这是一个不能登录的账户,从上面可以看出,ubuntu默认的就不启用root账户。
  3、最近改动密码的日期(这个是从1970年1月1日算起的总的天数)。
  4、密码不可被变更的天数:设置了这个值,则表示从变更密码的日期算起,多少天内无法再次修改密码,如果是0的话,则没有限制
  5、密码需要重新变更的天数:如果为99999则没有限制
  6、密码过期预警天数
  7、密码过期的宽恕时间:如果在5中设置的日期过后,用户仍然没有修改密码,则该用户还可以继续使用的天数
  8、账号失效日期,过了这个日期账号就无法使用
  9、保留的

邮件

邮件的保存的位置
/var/spool/mail
可以创建一个mail的软连接来方便的查看邮件 貌似也可以直接mail user 吧 !!抠鼻
在/etc/skel 是添加用户在/home 下拷贝的模板 所以可以在/etc/skel下写入warning.txt的文件来给他警告 ?

useradd

-u 可以指定UID -c “备注信息” -g 组 一般都是用-G的额外组 -d 指定家目录 -s指定shell的路径 默认是/bin/bash

可以在/etc/default/useradd 里面查看默认创建用户的信息

passwd

passwd -S 查看用户密码相关的东西就是 /etc/shadow 里面的东西 -l 好像是L锁定用户 就是在/etc/shadow里面的密码前面加上!! 可以手工加上 -u 解锁用户 --stdin 接受字符串来作为密码 写shell脚本的时候很有用 echo “13321” | passwd --stdin 用户名

usermod

和 passwd 里面的都一样 -u 改变userid

chage

主要是用
chage -d 0 用户名 当用户第一次使用的时候就会修改密码

userdel

userdel -r 用户 删除联通home 下的都删除

id

id 用户名 所属组什么的信息

su

su - root 切换用户的时候连着环境变量一起切换
su - root -c “useradd asdasd” 就是借用root的命令

groupadd

groupadd -g 组的ID

groupmod

groupmod -g 改id -n 改name

groupdel

直接山就行了 不像userdel

gpasswd

gpasswd -a 用户名 组名 把用户添加到组里面去
添加
gpasswd -d 用户名 组名
删除

ACL 权限

在/etc/fatable 文件中
给额外的人或组分配权限

getfacl /目录 获得已经设定好的权限
期间用gpasswd 把用户添加到其他的组
setfacl -m u:zhangwei:rwx /目录
setfacl -m g:group:rwx /目录

最大有效权限

setfacl -m m:rw /目录
设置musk 为rw 不会影响所属人 只会影响所属组 和acl的权限

删除acl权限
setfacl -x u:zhangwei /目录
setfacl -x g:
setfacl -b /目录 删除所有acl权限

默认与递归acl权限

setfacl -m u:zw:rw -R /tmp 递归权限只会对已经创建好的目录设定权限
默认权限的设定
setfacl -m d:u:zw:rw -R /tmp

setuid

改的文件要是可执行的文件 用户暂时附身为root 用户
可以简单的就写为
chmod 4755 /tmp
4代表UID
2代表为GID
1代表为BIT 可以相加使和那个相同
改回来就是直接 chmod 755 就行了
也可以为 chmod u+s /tmp 也行

GID

和UID差不多 就是在目录下进行设置GID的时候 以后在创建文件的时候所属组默认是root

中间的LINUX的运维直接跳过了。。。。。。。。。。。。。。。

以后再补上来

SHELL

在/etc/shell 目录下

主要有 sh bash csh tcsh

echo

echo -e 如果有空格的话就用""而且里面没有!如果硬要使用!的话那么使用’'单引号就行了
可以改变字体的颜色
echo -e “\e[1; 开始的标志 颜色的标志 比如31m \e[0m结束的标志”

在这里插入图片描述
只查看个别的文件的权限是
ll -d 文件路径
chmod 755 文件
想要运行文件的话就直接转到当前的目录下的文件就行了
比如/tmp/hello.bh
或是直接转到当前的目下直接./文件名就行了
也可以用 bash 加文件来执行
想要看文件里面的隐藏的内容 用cat -A 文件可以看到换行符什么的
如果这个脚本是在windows下编写的话那么用命令转换到linux下的命令

history

history 可以查看命令 它保存在.bash_histtory下面
如果想更改记录命令的条数 可以在/etc/profile 文件下进行 hissize的更改

按上下键的话就是切换上下的历史命令
!加数字执行历史命令中第几个的命令
!!执行上一个命令
!ser执行最后一个以ser开头的命令

命令的清除
history -c
history -w 保存命令
很重要的一个案件是命令补全TAB可以自动补全
dos2unix abc.sh 可以将再windows下编程的代码换成linux认识的代码

shell

如果想用别的命令代替别的命令
alias vi = 'vim’就是用vi来代替vim 如果重启的话就会失效 可以更改/root/.bashrc目录下的文件
优先级
绝对路径的命令
执行别名
Bash内部命令
按照$PATH 执行的命令
快捷键 ctrl + U删除一整行 ctrl + y粘贴 ctrl + r 再历史命令中搜索历史命令

输入输出重定义

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
多命令与顺序执行和管道符

;;; 是连接命令
&&是当前面的成功后才执行后面的
|| 是当前面的是真执行前面的 如果是假的话就执行后面的
dd if=目录 of=目录 bs=k count = 101000 进行磁盘的复制
grep -i 不区分大小写 -n 显示行号 --color = auto
| 管道符连接两个命令 前一个命令是后一个命令的输入
netstat -an 显示登陆信息

特殊符号

*若干的字符
?一个未知的字符
[abc]是其中的一个字符
[0-9]是0到9当中的一个字符
[^0-9]不是0-9当中的一个字符

“ ”字符串 里面添加的特殊字符有特殊的含义 ‘ ’里面的字符没有特殊的含义里面是什么就是什么
/转义字符 加上去会有特殊的意义
· ·ESC下面的字符 里面放的是系统的命令会先执行系统的命令
和$()是一样的
$调用变量的值 !!!!!!!!!!!!!!!!!

变量

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
环境变量

好像环境变量只要重启就会失效
echo调用变量 set 查看变量(所有的变量)env查看环境变量 unset 变量名 删除变量
在bash上打csh开启一个新的csh并进入到里面
使用pstree 可以查看父子SHELL
使用exit可以退出子shell
使用 export name=sc 可以将name直接变成环境变量 也可以进行追加 export name 把name变成环境变量

系统常见的环境变量 PATH :系统查找命令的路径 PATH=“$PATH”:/root将/root添加到后面

PS1是定义系统提示符的变量
\d 显示日期 \h 主机名 \t 显示24小时时间 \u 显示当前用户 \w 显示在当前目录的完整路径
\W 显示不完整的目录 $ 显示用户提示普通用户还是root

位置参数变量

$n $0 返回命令本身 $1~9 10及以上要用[]括起来
$# 返回第几个命令 $*是当成一个整体 $@当成一个个的部分

#!/bin/bash
for i in “$*”
do
echo $i
done

for i in “$@”
do
echo $i
done

#!/bin/bash
nur1=$1
nur2=$1
echo ( ( (( nur1 + $nur2))

预定义变量

$? 是上一个命令是否正确运行 正确运行的话就返回0 不对的话就返回一个正整数
$! 是最后一个后台进程 的进程号 $$是当前进程的进程号

接受键盘输入

read 参数 变量名 -t 30 最多等待30秒 -s 输入看不见 -p 运行的时候会有提示信息
比如 read -p “please input somethings” 变量名 -n 接受指定的几个字符
比如 read -n 30

运算符

declare 参数 变量名
declare - 给变量设定属性 + 取消变量的属性 -i 将变量声明为整数类型 -x 声明为环境变量 -p 显示变量杯声明的类型
declare -i sum= n 1 + n1+ n2
expr echo &(expr $n1 + n 2 ) 使 n2) 也可以使用 (()) 或是 [ ] g g = [] gg= [&n1+ n 2 ] g g = n2] gg= [ n 1 + n1+ n2] 如果是()单小括号 是系统命令 双小括号是运算

在这里插入图片描述
用来检验变量的值 不需要背

环境变量的配置文件

使用source 配置文件 使配置文件立马就生效 或者是 .配置文件 也可以
那么默认环境变量有什么
PATH PS1 HOSTNAME HISTSIZE 用set命令打出的默认环境变量

环境配置文件 上面两个和最后一个是所有用户的默认配置文件 中间的两个是各自的环境配置文件

当系统启动的好时候PATH的配置的过程

在这里插入图片描述
注销时生效的环境变量的配置文件 ~/.bash_logout 在里面写东西会执行代码
.bash_history 里面记录了历史命令 history -w 是强制写入进去不是等到关机的时候再写进去 打上去history 会显示刚刚打入的命令 但是 .bash_history 会再关机的时候才会将指令记录到.bash_hisory 里面去

登陆的欢迎语句
在这里插入图片描述
在这里插入图片描述
可以再/etc/issue 文件里面添加上面的命令 \l 提示是登陆的哪个内核 很有用 反正我是不知道有什么用 该文件只是用于登陆 3状态下才显示而且是本地登陆

/etc/issue.net 是远地登陆显示的信息 而且上面的表格当中的所有转义字符的不再生效
而且要使远程登陆欢迎语有用还要使 /etc/ssh/sshd_config 文件加入Banner /etc/issue.net

/etc/motd
是不管是远程登陆还是本地登陆都显示 欢迎语 只要在里面编辑欢迎语就行了

正则表达式

了解一下
在这里插入图片描述

在这里插入图片描述

cut 命令

cut -f 提取列号 第几列 能够识别制表符
cut -d “:” 以:为分隔符 第几列 一般都是混合使用 | grep -v asdasd 文件 什么的混合使用
才发现 -d 是要和 -f 一起使用才可以
printf

感觉和C差不多 我就不写了
%s 是字符串 %i 是整数 %f 是小数 注意 printf ‘%s %s %s\n’ $(cat )
$():这个小括号里放的是命令,和``反引号作用一样,执行这个命令

${}:这里面放的是变量,用来引用的
小括号里面是linux命令
比如
cat ( p w d ) &gt; a a a c a t p w d &gt; a a a p w d (pwd)&gt;aaa 等价于 cat `pwd`&gt;aaa 其实是要执行里面的pwd然后用输出代替 ()内容的。
而大括号里面则是数组变量
举个例子
A = (hello linux shell)
echo ${A[0]}

awk

awk '条件1 {命令1} 条件2 {命令2}'也可以不加条件直接执行命令
awk ‘BEGIN {命令}’ 在读取之前就执行 还有END 是在结束的时候
printf $2 是输出第二列
awk 默认是以空格和TAB为分隔符 可以
awk ‘BEGIN {FS=":"}’ 来设定分隔符
条件可以加上 比如第几列 $3 >= 78 也可以

sed 感觉还是直接用vim 来修改比较好吧

sed 选项 ‘命令’ 文件 -n 是只显示被sed 作用过的 -i 是修改 -e 是追加可以再后面再加上命令

在这里插入图片描述
sed -n ‘3p’ wenjian 显示第三行 ‘3,5d’ 删除3到5行 '3a’在行后面加上 '3i’在第三行前面加上
替换格式上面有 sg 四哥 被动不就是换命吗 sed -n ’ 3p ; 4p ’ wenjian的使用 我发现-e貌似只能在替换字符串的命令下管用

sort

-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f 排序时,将小写字母视为大写字母。
-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-m 将几个排序好的文件进行合并。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-f 忽略大小写
-k 按照指定字段
-t<分隔字符> 指定排序时所用的栏位分隔字符。
+<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
–help 显示帮助。
–version 显示版本信息。
sort -t “:” -k 3,3 /etc/passwd 以:为分隔符 第三字段开头以第三字段结尾排序
附加名令 比如 sort -n -t 这样加 这样基本上都不需要 基本上就是sort 文件 sort -r 文件就行了

wc

在这里插入图片描述
条件判断

判断文件是否存在

在这里插入图片描述
判断文件的权限
在这里插入图片描述
文件之间的比较
在这里插入图片描述

判断数值
第一种是 test “$aa” -eq 56 等于 -nq 不等于 -gt 大于 -lt 小于 大于等于-ge 小于等于-le

一般都是使用[]这种格式的 [ " $aa" -eq 56 ]整数判断

判断字符串
[-z 是否为空] -n 是否为非空 == 是否相等 != 是否不相等 -a 就是C中的&& -o 是||
echo $? 是返回上一个命令的数值
原来[ ]反正两头要加空格 不然就会报错 !!!!!!!!!!!

if

格式:
if 空格[左右两边都得有空格];then
asdkuaskdj
fi
if 空格[左右两边都得有空格]
then
asdkuaskdj
里面可以写入else 或是elif
fi

case

case $file in
“1”)
jjhgjhg
;;
*)
asdasd
;;
esac

for

for i in 1 2 3
do

done

也可以以
for ((i=0;i<=10;i=i+1))
do

done

发布了37 篇原创文章 · 获赞 0 · 访问量 376

猜你喜欢

转载自blog.csdn.net/weixin_43191153/article/details/96462429