Linux基础
@author Zenos
行百里者半九十
Lunix常见指令
# 关机
shutdown
# 重启
reboot
# 切换用户
su userName
# 查看网络信息
ifconfig
# 远程连接
ssh hostName
# 打印变量
echo variableName
#切换目录
cd
#查看目录
ls
# 创建目录
mkdir
# 剪切目录/文件
mv dirName destDir
mv fileName destFile
# 复制目录/文件
cp dirName destDir
cp fileName destFile
# 查看当前目录路径
pwd
# 创建文件
touch fileName
# 编辑文件
vim fileName
# 文件权限
# 中间参数('+x')为可执行权限;可写:'+r';可写:'+w';'777':所有权限;
chmod +x fileName
# 设置文件所有者和文件关联组
# R(注意大写):连同子目录中的所有文件,都更改所有者
chown [-R] 新的所有者[:新的所属组] dirName/fileName
# 打包文件
# z :调用gzip压缩命令进行压缩; c :打包文件; v :显示运行过程; f :指定文件名
tar -zcvf newFileName.tar fileName/dirName
# 解压文件
# z :调用gzip压缩命令进行解压; x :解压文件; v :显示运行过程; f :指定文件名; C(注意大写):指定目录下
tar -zxvf fileName.tar [ -C destDir ]
# 连接文件并打印
cat fileName
# 删除目录/文件
# r :递归 ; f :强制
rm -rf fileName/dirName
-
vim指令
- / ,快速查找字符串
- :行号,快速跳跃到对应行(:set nu 显示行号)
- 连按两次y,赋值当前行内容,p粘贴到下一行
- 连按两次d,删除当前行内容。清空光标所在行以下到某一行以内的所有内容,按3次数字再按两次d。
- 大写锁定+g ,到最后一行;两次g是第一行。
-
文件内容统计相关命令
-
wc 指令
用于统计指定文字类型的个数
-
sort 指令
用于对文件中的数据进行排序
-
cat 命令
用于查看文件中的内容
-
uniq 命令
用于查看文件中的数据进行去重后的内容之类(只能对连续的内容进行去重,需要对文件内容先排序才能去重)。
-
head 命令
用于查看问及暗中前部分指定行数的数据内容。
-
-
进程相关信息
-
ps 命令
显示静态进程信息(-ef 显示全部信息)
-
netstat -anp 命令
查看端口占用信息(yum在线安装)
-
jps 命令
JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程
-
top 命令
动态显示进程信息
-
kill 命令
杀死进程(-9 强制杀死)
-
-
Linux三剑客
-
grep 查找命令
常用于查找符合条件的字符串
grep 正则表达式 [files] # 在指定的文件中查找内容 grep content fileName
- -i 忽略大小写
- -n 显示该行行号
- -v 忽略包含指定字符串的内容
- 经常和管道“|”结合使用,实现数据过滤
-
sed 编辑命令
自动编辑一个或多个文件、监护俺对文件的反复操作。
# sed处理后的文件并不会被保存,需要保存可以使用'>destFileName' sed [-e<script>][-f<script文件>][文本文件] # 在指定文件中的第一行之后添加内容 sed -e 1a\content fileName # 删除某行(行号rowNum) sed 'rowNumd' fileName # 某行以下全部 sed 'rowNum,$d' fileName # 查找内容并替换 sed -e 's/content/newContent/' fileName # 打印某行(行号rowNum) # -n仅显示script处理后的结果 sed -n 'rowNump' fileName
- 常见动作:
- a/i 指定行增加内容,i在本行之前,a在后,$是最后一行,插入下标不能是0
- d 删除
- s 替换
- p 打印
- 常见动作:
-
awk 分析命令
能处理和分析文本文件
awk 'scriptExpression' fileName # 使用","分割,打印每行被分割后的第一、二个字段 awk -F, '{print $1,$2}' fileName # 从脚本文件中读取awk命令 awk -f command.awk fileName # 赋值一个用户定义变量 awk -vvariable_name=value '{print $1,$1+variable_name}' fileName
-
&和&& 、|和||、>和>>
-
& 表示任务在后台执行,如要在后台运行redis-server
redis-server &
-
&& 表示前一条命令执行成功时,才执行后一条命令
echo 'test1' && echo 'test2'
-
| 表示管道,上一条命令的输出,作为下一条命令参数
ls | grep keywords
-
|| 表示上一条命令执行失败后,才执行下一条命令
cat filename || echo "exec failed !"
-
‘>’ 表示追加内容
echo 'content' > filename.txt
-
‘>>’ 表示覆盖原有内容
echo 'content' >> filename.txt
Shell编程
Shell是一个命令行解析器,同时还是一个脚本编程语言。
shelldemo
# 指定解析器
#!/bin/bash
# 输出hello
echo "hello"
变量
系统变量
-
$HOME
家目录
-
$PWD
当前路径
-
$SHELL
默认解析器
-
$USER
当前用户
-
$PATH
环境变量
自定义变量
bash中默认定义变量为字符串类型。定义变量时注意不要使用空格。
# 变量定义
variable_name=...
# 变量删除
unset variable_name
# 只读变量
variable_name=...
readonly variable_name
# 整型
declare -i variable_name=...
# 字符串
string_name="" / string_name=''
# 获取子串(从1开始截取四个)
variable_name=${string:1:4}
# 获取长度
variable_name=${#string_name}
# 查找a、b的出现位置,获取第一个出现的位置
variable_name=`expr index "$string" ab`
# 数组
array_name=(value0 value1 value2 value3)
# 数组读取
variable_name=${数组名[下标]}
# 取得数组元素的个数
length=${#array_name[*]}
# 取得数组单个元素的长度
length=${#array_name[n]}
流程控制
-
条件语句
if [ "$a" -gt "$b" ] # 流程控制中的判断语句要使用对应的逻辑运算符 then command1 command2 ... commandN fi
-
循环语句
# for for var in item1 item2 ... itemN do command1 command2 ... commandN done # while while condition do command done
函数
[ function ] funname [()]
{
action;
[return int;]
}
funname param1 param2 ...
函数参数
在Shell中的函数体内部,常常通过 $n 的形式来获取参数的值。
附录
参考文章链接:
author:菜鸟教程 url:Linux 命令大全 | 菜鸟教程 (runoob.com)
author:菜鸟教程 url:Shell 教程 | 菜鸟教程 (runoob.com)