当今计算机技术日新月异,Linux系统越来越受到人们的欢迎。与此同时,Linux命令行也成为了掌握Linux系统的必备技能之一。无论是系统管理员、开发人员还是普通用户,学习Linux命令行都能够帮助他们更好地管理和使用Linux系统。
本篇主要介绍vim、ssh、shell、网络的相关命令。
以下操作均在交互状态下进行
bashx # 删除一个单词(删除的文本,可以用p粘贴)
dd # 删除一行(删除的文本,可以用p粘贴)
2dd # 删除两行,以此类推(删除的文本,可以用p粘贴)
bash0 # 移动至行首
shift+$ # 移动至行尾
gg # 跳转至第一行
2gg # 跳转至第二行
shift+g # 跳转至最后一行
bash:s/test1/test2 # 替换光标所在行的第一个tes1为tes2
:s/test1/test2/g # 替换光标所在行的所有test1为test2
:1,2 s/test1/test2/g # 替换第一行至第二行的所有test1为test2
:%s/test/file # 替换所有test为file
ssh配置路径:/etc/ssh/ssh_config,修改过后,不需要重启
Host:别名 HostName:远程主机名(或IP地址) Port:连接到远程主机的端口 User:
ssh局部文件:如/root/.ssh/config,配置后,运行命令:ssh imooc 即可连接
Host imooc HostName 129.211.61.3 Port 22 User root
sshd配置路径:/etc/ssh/sshd_config,修改过后,需要重启使得配置生效:systemctl restart sshd
Port:sshd服务端口号(默认是22) PermitRootLogin:是否允许以root用户身份登录(默认是可以) PasswordAuthentication:是否允许密码验证登录(默认是可以) PubkeyAuthentication:是否允许公钥验证登录(默认是可以) PermitEmptyPasswords:是否允许空密码登录(不安全。默认不可以)
echo
shellecho -e "a1\na2" # 换行需要使用\n,并且带上参数-e echo '$message' # 单引号会输出纯文本,为$message echo "$message" # 双引号会输出变量
定义参数
shellmessage='abc' # 定义参数 message=$'ab\'c' # 可以在内容里面使用',需要使用\'进行转义,而且需要加上$符号 message=`pwd` # 使用反引号可以定义,被执行的命令
定义数组
shellarray=('value0' 'value1' 'value2') # 定义数组 array[5]='value6' # 定义数组任意位置的内容 echo ${array[2]} # 输出数组任意位置的值 echo ${array[*]} # 输出数组的所有值
全局参数
bashenv # 查看全局变量参数
vim /etc/bashrc # 可以定义全局变量
vim ~/.bashrc # 定义用户的局部变量(优先级比 /etc/bashrc 要低)
# 备注:修改完配置文件后,需要source加载一下
read
bash# 参数:
# -p:用户输入提示
# -n:限制输入字数
# -t:限制输入时间
# -s:隐藏输入内容
read firstname lastname # 定义用户输入变量
read -p 'Please enter your name:' firstname lastname # 添加用户输入时的提示
运算
shell#!/bin/bash
let "a=1"
let "b=2"
let "c=a+b"
echo $c
shell#!/bin/bash
name1='Eric'
name2='Aric'
name3='Fric'
if [ $name1 = $name2 ] # 判断语句,一个=即可
then
echo "same name2!"
elif [ $name1 = $name3 ]
then
echo "same name3!"
else
echo "no same name!"
fi # 结束
shell# 测试字符串
$string1 = $string2 # 两个字符串是否相等
$string1 != $string2 # 两个字符串是否不同
-z $string # 字符串是否为空
-n $string # 字符串是否不为空
# 测试数字
$num1 -eq $num2 # 两个数字是否相等
$num1 -ne $num2 # 两个数字是否不同
$num1 -lt $num2 # 数字num1是否小于num2
$num1 -le $num2 # 数字num1是否小于或等于num2
$num1 -gt $num2 # 数字num1是否大于num2
$num1 -ge $num2 # 数字num1是否大于或等于num2
# 测试文件
-e $file # 文件是否存在
-d $file # 文件是否是一个目录
-f $file # 文件是否是一个文件
-L $file # 文件是否是一个符号链接
-r $file # 文件是否可读
-w $file # 文件是否可写
-x $file # 文件是否可执行
$file1 -nt $file2 # 文件file1是否比文件file2更新
$file1 -ot $file2 # 文件file1是否比文件file2更旧
# &&和 ||和 !
if [ -e $file1 ] && [ $num1 = 10 ]
if [ ! -e $file1 ] && [ $num1 = 10 ]
shell# while循环
while [ $num1 -ge 10 ] && [ $num1 -le 20 ]
do
let "num1=num1+1"
echo "is $num1"
done
# for循环
# 案例1:循环打印值
for i in 'dog' 'cat' 'pig'
do
echo "Animal:$i"
done
# 案例2:循环打印数组的值
arr=('value0' 'value1' 'value2')
for i in ${arr[@]}
do
echo $i
done
# 案例3:拷贝符合条件的文本
for i in `ls`
do
if [ $i = 'index.html' ]
then
cp $i $i-copy
fi
done
# seq
# 案例1:循环打印1~10
for i in `seq 1 10`
do
echo $i
done
# 案例2:循环打印1,3,5,7,9
for i in `seq 1 2 10`
do
echo $i
done
shell# 常规使用
function print(){ # 定义函数
echo "print 123456"
}
print # 执行函数
# 传递参数
function print(){
echo "print $1" # 打印第一个参数
}
print $num1 # 使用num1做为print函数的第一个参数
# 返回值 只能返回数字
function print(){
return 100 # 返回100
}
print # 执行函数
echo $? # 使用上一个函数的返回值
# 函数局部变量
function print(){
local inner_str='str1' # 定义局部变量
echo $inner_str # 输出局部变量的值
}
print
echo $inner_str # 输出空,因为全局没有定义该值
运行脚本:./test.sh a1 a2 a3
test.sh
shell#!/bin/bash
echo "$0 $# $1 $2 $3
输出结果:./test.sh 3 a1 a2 a3
shift 跳过参数,常用于循环中
shellecho "$0 $# $1 $2 $3" shift echo "$1" # 此时$1将会输出$2的内容
修改配置文件:vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
说明:BOOTPROTO=dhcp 自动分配IP 示例: BOOTPROTO=static 设置静态IP IPADDR=192.168.56.111 静态IP地址(网段需要一致,192.168.56需要固定,111可以随意填写) NETMASK=255.255.255.0 子网掩码设置
需要执行 systemctl restart network 进行重启
这样IP地址就会被更换,但是会没有网络,还需要添加DNS和网关地址
如下: BOOTPROTO=static IPADDR=192.168.56.111 NETMASK=255.255.255.0 PREFIX=24 GATEWAY=192.168.0.1 DNS1=192.168.0.1
需要执行 systemctl restart network 进行重启
如果遇到问题,可以通过route和route -n定位问题
本文作者:BARM
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!