shell基础命令

# 表示注释的意思
#! eg:'#!/usr/bin/env bash' 结合一起时候,后面一般接着路径,然后就是程序。表示脚本用什么程序执行,第一行指令在不明确声明什么程序去执行脚本的时候生效
if 语句的结束标签是fi
${} 获取变量的意思
$() 执行命令,获取结果
$0 获取执行脚本的第一个参数 eg: ssh **.sh param1 param2 其中$1表示param2
chmod -/+x 其中x表示exe可执行权限的意思,-/+表示添加或者删除权限 chmod 777 xxx
ln -s x y // 第一个字母不是1,而是小写的L,第二个参数-s表示software,命令表示软连接x到y,访问y就是访问x,不加-s就是硬链接
exit 1 大于0表示异常退出
$? -ne 0  // 其中 $?表示上一条命令退出的状态、 -ne表示not equal 不等于的意思
if里面的判断语句如果是取反的话,感叹号后面必须有空格
if [ ! true ]; then
	# 这里写需要执行的东西,而且要注意的是结束的时候要考虑要不要使用
	# exit 1
fi
使用$0时候注意事项
echo $0 
# 上面的shell命令,如果执行脚本的时候是使用 ./test.sh,那么输出的结果就是./test.sh
使用mkdir -p的时候
# mkdir -p参数是能直接创建一个不存在的目录下的子目录
mkdir -p directory
获取当前路径
# 在shell中,会有以下语句用于获取当前的路径:
CURRENT_DIR="$(cd "$(dirname "$0")"; pwd)"
# 这里有一个技巧点,$0是执行当前脚本的路径 + 可执行路径,而dirname则是获取执行脚本的路径
# 以上命令 $(dirname "$0") 将返回该文件当前的上一层路径,通过cd到该路径,通过pwd获得当前路
# 径,并保存到CURRENT_DIR中;
添加环境变量
# 创建环境变量路径
NEW="${CURRENT_PWD}/x/y/:${PATH}"

# 添加路径至环境中
export PATH=${NEW}

# 在shell里面嵌入其他解释型语言
/usr/bin/bash <<-EOF
// 这里编写其他脚本的语句
EOF
如何创建并使用函数
function fn {
	# 这里写需要执行的代码
}

if [ ! -d xxx ]; then
	fn  # 这里执行fn
fi

报错信息bash: $'\r': command not found
解决方案:sed -i 's/\r//' 脚本名
tips:这是因为Windows系统的文件换行使用的是\r\n,而Unix系统是\n

shell命令
if
case
for while
until
break
continue
exit
shift
array
function

# 查询shell配置文件
rpm -rc bash

# su - root 区别 su root
/etc/profile // 系统 		加中横线执行 不加不执行
/etc/bashrc  // 系统 		加中横线执行 不加也执行
~/.bash_profile // 用户	加中横线执行 不加不执行
~/.bashrc   // 用户		加中横线执行 不加也执行
~/.bash_logout // 离开shell执行		
~/.bash_history // 离开shell执行	

# :set number ===显示行号==> 缩写:set nu

# shell可以使用命令行和脚本上面进行运行

# !num 执行哪条命令
# !string 找到最近一个string开头的命令并执行
# !$ 上一个命令的最后一个参数
# !! 上一个命令
# ^R
# alias 查看命名 unalias取消命名
# 定义命名vim .bashrc
# 执行shell可以用用 source *.sh
# 将X程序复制到y程序 cat x >>  y
常用比较好用的指令
# ctrl类
+ u/k 向左向右删除
+ a/e 光标移到最左或者最右
+ y 撤回
了解Java、C 、Shell、Python、Perl
Java 编译型语言 字节码(java虚拟机jdk) tomcat
C	编译型语言  二进制机器码
shell	解释型语言 (/usr/bin/shell)
perl	解释型语言 (/usr/bin/perl)
expect	解释型语言 (/usr/bin/expect)
python	解释型语言 (/usr/bin/python)
		编码 	字节码(Python虚拟机)

程序是由什么组成的? : 逻辑+数据
执行命令的秘密
当使用bash bash.sh或者./shell.sh的时候
其实命令不是在当前的终端执行的,而是在sub shell里面执行的。对当前的shell不影响
使用 . bash.sh或者source bash.sh执行的话就是在当前的终端执行,立即生效
退出终端后删除子进程
退出终端删除子进程,只要在命令后面加上&即可。eg:sleep 500 &
ctrl+z保存现场,fg回到现场
输入多行到某个文件里面
输入一行到某个文件 echo 'dddd' > fileName
输入多行到某个文件 cat <<EOF > fileName
...
...
...
EOF
管道 | tee
ip addr | grep 'ens33' // 过滤
ip addr | tee fileName // 结合管道,将输出作为文件的入口,然后得出结果并生成文件
echo '444' > fileName // 将444输入到某个文件,但是没有结果
压缩文件命令
压缩:tar -zf dist.tgz dist
解压:tar -xf dist.tgz
	 unzip dist.zip
	 
-z 压缩
-x 解压
-f 要压缩|解压的文件,只能放在最后,而且后面加文件
-v 显示所有过程
主机之间的拷贝命令SCP
scp 是安全拷贝协议(Secure Copy Protocol)的缩写,和众多 Linux/Unix 使用者所熟知的拷贝(cp)命令一样。scp 的使用方式类似于 cp 命令,cp 命令将一个文件或文件夹从本地操作系统的一个位置(源)拷贝到目标位置(目的),而 scp 用来将文件或文件夹从网络上的一个主机拷贝到另一个主机当中去。
而加上参数 -r 表示递归拷贝整个目录

`ssh -p22 userName@remoteIP`: -p22表示端口
`scp -r dist/  dockernode-1:~`scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。dockernode-1是节点,分号后面的波浪号是路径,~/root/的缩写,-r: 递归复制整个目录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值