linux基本功能
这里将cp复制的命令取名为copyok,可以看到命令是生效的,这个命令是临时生效的,开机启动就会消失,除非将它写入到配置文件中,让别名永久生效 vi /root/.bahsrc 等 配置文件。但是,请注意,虽然有别名,但是原命令依然生效
这里可以查询到,刚才给cp复制命令取得别名,同时从下面的结果显示也可以看出来,为什么平时输入命令,没有带选项参数,但是却可以实现和参数一样的功能,也是通过这种方式实现的
删除刚才cp命令的别名,可以看到这个命令已经删除了
输入一个命令时,它是怎么调用系统的脚本的呢,如果多个脚本都对命令做了不同的定义,它会不会发生冲突呢,Linux是通过给命令做了一个执行顺序,当输入一个命令是,它会按照以下的执行方式去执行命令
bash常用快捷键
/dev/stdout 显示器标准输出
/dev/sdterr显示器的错误输出
此链接是对stdin stdout sdterr的介绍https://blog.****.net/weixin_34415923/article/details/90687333
0代表标准输入 1代表标准输出 2代表标准错误输出重定向
标准输出重定向 命令>文件(覆盖方式输出到文件),这里的意思是将命令的结果输出到文件中,如下
命令>>文件(追加方式输出到文件),这里并不会进行覆盖,会追加文件中而已
标准错误输出重定向 错误命令2 >文件(覆盖) 错误命令2>>文件(追加)
如果命令的实行不确定是正确的输出还是错误输出,那么就要用一下的命令
使用命令: 命令&>文件,以覆盖的方式把正确和错误的信息输出到文件中
命令&>>文件中 追加方式输出到文件中
但是上面的命令有个不好的地方,错误和正确的输出都放到同一个文件中,对于数据的管理很不方便,那么就要用一下的命令来做区分
命令>>文件1 2>>文件2 正确则输出到文件1中,错误输出到文件2中
统计文件的信息
wc [选项] [文件名] -c统计字节数 -w统计单词数 -l 统计行数
统计行数,word,字节数(bytes)
其中dd命令是一个智能拷贝文件的命令,可指定复制文件的大小 ,指定的转换等功能,具体的解释看链接:https://www.cnblogs.com/linuxde/p/8719253.html
&& 命令1 &&命令2 命令之间是与的关系 命令1成功了,才会执行命令2
|| 命令1||命令2 命令之间是或之间的关系 命令1和命令2只能执行其中一个
用法判断命令是否能够执行 命令&& echo yes ||echo no 判断文件是否能够正确执行
命令1的正确输出当作命令2的操作对象 例子 ll -l |grep etc
grep [选项] 搜索内容 其中 --color=auto显示颜色
计算机内存单元,存放的值可以改变,变量可以是一个文件,也可以是一个数字,保存暂时信息
字母、下划线、数字组成,但是数字不能走为变量的开头,默认类型是字符串型
变量用等号连接,但是等号左右两边不能有空格,如果变量的值如果有空格,需要用单引号或双引号包括
变量的分类
从这里可以看出,看出$符号输出变量的值,单引号里面的内容会忽略特殊字符的含义
,双引号则不会忽略特殊字符。这里的变量设置只是临时,开机则没有生效。
注意:这里的变量不会变为环境变量,只是临时的。
用户自定变量旨在当前的shell中生效,环境变量会对当前的shell和这个shell的所有子shell当中生效。如果把环境set变量写入到相应的配置文件中,则对所有的shell都生效
可以看到使用的shell是bash
可以看到环境变量PATH,在当前shell和其子shell都生效
PS1 定义系统提示符的变量,PS1是定义这里的,[[email protected]]#
PS1 的解释如下https://blog.****.net/qq_34208467/article/details/81019467
$n n为数字 $0代表命令本身 $!1$9代表第一个到第九个的参数,10个以上的参数需要用大括号包括 如${10}
[email protected] 同上,但是所有参数当作一个个区分
执行时,echo $0 会输出命令的本身 ./test.sh
执行
预定义变量
是Bash中已经定义好的变量,变量的作用是固定的
$0:保存当前程序或脚本的名称
$*:保存传递给脚本或进程的所有参数
$$:当前进程给脚本的PID号
$!:后台运行的最后一个进程的PID号
$?:用于返回上一条命令是否成功执行。如果成功执行,将返回数字0,否则返回非零数字(通常情况下都返回数字1)。
$#:用于保存脚本的参数个数
虽然有报错,但是可以忽略不计
source 配置文件
配置文件定义系统默认的环境变量 如 PATH HISIZE PS1
/etc/profile /etc/profile.d/*,sh /etc/bashrc 针对所有用户生效
~/,bash_profile ~/.bashrc 只对当前用户生效
命令环境变量加载的顺序 /etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout
环境变量是逐个文件加载出来的,越往后加载就可能覆盖前面的值,所有后面的环境变量优先级越来越高
用户输入用户名密码,先读/etc/profile /etc/profile 和/etc/bashrc 定义了一些重复环境变量,但是并不会覆盖,因为他们定义的环境使用情况不一样
历史文件配置文件 ~/.bash_history 历史的配置文件都保存在了这里。
本地终端欢迎信息:/etc/issue 针对本地,重启配置文件生效
其中\r等是参数,表示显示相关信息。定义如下:
\d 插入本地时间的日期
\l 插入当前的tty终端号
\m 插入机器系统类型
\n 插入主机名hostname
\o 插入domain name
\r 插入系统内核名称
\t 插入系统时间
\s 插入操作系统名称
\u 插入当前已经登录的用户数量n,\U 插入“n users”字段
\v 插入操作系统的版本
配置shell的登录界面
重新启动系统,配置文件生效,出现配置文件设置的信息
远程终端欢迎信息 /etc/issue.net 但是上面的配置信息没有生效,ssh需要配置ssh的配置文件,远程终端的欢迎信息才鞥你生效
配置文件