基本命令
type:命令类型 -外部命令 & 内部命令
help:内部命令帮助
man:帮助手册
whereis:定位命令
file:文件类型
echo:打印到标准输出
$PATH:环境变量:路径
pwd:当前路径
按住Ctrl删除字符
文件系统
df -h 显示磁盘使用情况
du -sh ./* 显示文件系统使用情况
文件系统层次化标准
/boot: 系统启动相关的文件,如内核
/dev:设备文件
/etc:配置文件
/home:用户的家目录,每一个用户的加目录通常默认为/home/username
/root:管理员的家目录
/lib:库文件
/opt:可选目录,第三方程序的安装目录
/mnt:挂载点目录,额外的临时文件系统
/var:可变化的文件,如存放日志
/bin:可执行文件,用户命令
/sbin:管理命令
常用命令
cd :回家
cd .. :返回上一级目录
cd - :返回上一步目录
mkdir a:创建a目录
mkdir -p ./a/b/c:深度创建目录
mkdir ./a ./b ./c:垂直创建目录(或mkdir ./{a,b,c})
rm 文件名:有提示的删除
rm -f 文件名:强制删除
rm -rf 目录名:递归删除
cp a.log /tmp:复制文件
mv a.log /tmp:移动文件
mv a.log b.log:重命名
ln -s a.log a:ln创建软链接(相当于windows中的快捷键)
ln a.log a:ln创建硬链接(ls -li可以看到a的磁盘索引位置和a.log相同,相当于Java对象引用)
stat a.log:查看文件元数据(文件名称、大小、Access,Change时间-元数据修改会更新,Modify时间)
touch a.log:输入命令stat a.log会发现Access、Modify、Change时间都同步了(a.log存在)/创建a.log(a.log不存在)
文件预览 && 管道命令
cat 文件名:全量读
more 文件名:从上往下读
less 文件名:按b可以往回读取
head 文件名:显示前10行;head -3 a.log:显示前3行
tail 文件名:显示后10行;
head -3 文件名 | tail -1:显示文件的第3行
tail -f a.log:监控a.log文件,动态观察
管道命令:将 | 前面的输出作为 | 后面的输入
echo “hello world” 1>>a.log:将hello world追加到a.log中(1表示输出,>>表示追加)
VI编辑器:编辑模式,输入模式,末行模式
grep && 正则表达式
grep "after" a.log:在文件a.log中查找包含after的行
grep -v "after" a.log:在文件a.log中查找不包含after的行
wc:行数统计
awk:强大的文本分析根据,把文件逐行读入,空格符、制表符为默认分隔符
awk -F':' '{ print $1}' a.log:将a.log每行按:分割,并输出分割后的第一列
用户权限与管理
useradd user1:添加用户,然后在home目录下可以看到
passwd user1 密码:添加密码
groupadd group1
usermod -a -G group1 user1
chown root:group1 groupfile
chmod 777 goupfile
Linux软件安装
1)源码安装
解压,分编译,安装过程
2)rpm安装
rpm -i jdk-7u67-linux-x64.rpm
rpm查询已经安装的包:rpm -qa | grep "jdk"
3)yum安装
C/S架构,基于rpm包管理,提供rpm仓库
查看配置的仓库地址:yum repolist
yum安装与卸载:yum install xxx;yum remove/erase;
Shell脚本/bash命令
一切皆命令,内置命令,外部命令,方法函数
文件执行:
当前进程打开命令执行:source a.txt 或 . a.txt
新建进程打开命令执行:./a.txt (文件头部加入 #! bin/bash) 或 bash a.txt
重定向
将ls显示的内容标准输出到ls.txt文件中:ls -l /a /b 1>ls.txt (>内容覆盖;>>内容追加;1表示标准输出;2表示错误输出;>表示重定向操作符;1和>之间不能有空格;)
错误/正确输出到同一个文件中:
ls -l /a /b 2>& 1 1> ls.txt 这个还是有问题,如果ls展示的目录不存在就是错误,从左到右执行,2指向1,1还没指向ls.txt
ls -l /a /b 1> ls.txt 2>& 1
ls -l /a /b >& ls.txt 或 ls -l /a /b &> ls.txt
变量定义:
name=Tom
echo $name
echo ${name}"aaa"
echo $$ 打印当前进程ID
echo "-------cuttlefish项目自动化部署--------"
echo "-- 1.清空日志 --"
echo "-- 2.重启服务 --"
echo "-- 3.更新部署 --"
echo "---------------------------------------"
echo -n "请输入功能号:"
read funcode
if [[ "$funcode" =~ [0-9] ]];then
deal "$funcode"
else
echo -e "\033[31m输入合法数字:1 或 2 或 3 !!! \033[0m"
fi
#遍历输出a、b、c、d
for i in a b c d;do
echo $i;
done
# 输出1-10
seq 10
for i in 'seq 10';do
echo $i;
done
# for循环读文件并每行输出
num=0
lines='cat test.txt | wc -l'
for ((i=1;i<=lines;i++));do
line='head -$i test.txt | tail -1'
echo $line
((num++))
done
echo num:$num