目录
1. 基础操作
1.1 通配符
* 匹配0个或多个字符,相当于sql中的%;
?匹配0个字符或1个字符;
+ 匹配1个或多个字符;
1.2 文件查看
clear 清屏;
ls 只展示文件名称的查看
ls -l 文件详细情况查看 等价于 ll
ls -a 普通文件及隐藏文件查看
ls -al 普通及隐藏文件的详细情况查看
ls -lh 文件大小以K、M、G形式显示的查看
ls /root/...(路径) 查看该路径下的文件及目录
1.3 cd 的相关命令
pwd 查看当前文件路径
cd .. 进入上一级目录
假设现在在etc目录中
cd /etc/sysconfig/network-scripts 绝对路径进入网关
cd sysconfig/network-scripts 相对路径进入网关
cd ../.. 返回上一级的上一级
cd ../etc 返回上一级下的etc目录中
cd / 回到根目录
2. 文件操作
2.1 touch 创建文件
touch a.txt 在当前目录下创建a.txt文件
touch /aa/a.txt 在绝对路径的aa目录下创建a.txt文件
touch aa/a.txt 在相对路径的aa目录下创建a.txt文件
2.2 mkdir 创建目录(可称为文件夹)
mkdir aa 在当前路径下创建aa文件夹
mkdir -p aa/bb/cc 在当前路径下一次性创建多个文件夹
2.3 rm 删除
rm a.txt 删除文件a.txt
rm -f a.txt 强制(不询问)删除文件a.txt
rm -r aa 删除文件夹aa
rm -rf aa 强制(不询问)删除文件夹aa
2.4 mv 移动
mv a.txt aa 移动当前路径下的a.txt文件到当前路径下的aa文件夹中
mv a.txt /aa/b.txt 移动并改名 将当前路径下的a.txt文件移动到aa文件夹下并改名为b.txt
mv aa bb 移动文件夹,
当bb文件夹存在时,aa文件夹移动到bb文件夹下 路径为:bb/aa
当bb文件夹不存在时,aa文件夹移动到bb文件夹所在的路径并改名为bb 路径为:bb
2.5 cp 复制
cp a.txt aa 复制当前路径下的a.txt 文件到当前路径下的aa文件夹下
cp a.txt /aa/b.txt 复制当前路径下的a.txt文件到 /aa目录下并改名为b.txt
cp -r aa bb 复制文件夹
当bb文件夹存在时,aa文件夹复制到bb文件夹下 路径为:aa 和 bb/aa
当bb文件夹不存在时,aa文件夹复制到bb所在的路径并改名为bb 路径:aa 和 bb
2.6 cat 、more 文件查看
cat aa/a.txt 查看文件内容,全部展示
cat -n aa/a.txt 查看文件内容,将内容显示行号展示
more aa/a.txt 分页查看文件内容【enter 下一行、空格 下一页、b 上一页、q 退出】
less -N aa/a.txt 分页查看文件内容,将内容显示行号展示,操作与more一致
3. 查找操作
3.1 压缩与解压缩
压缩:tar -zcvf ab.tar.gz a.txt b.txt 将 a.txt、b.txt文件打包压缩为ab.txt放置在当前路径下
解压缩:tar -zxvf ab.tar.gz -C aa/bb/ 将ab文件压缩包解压到在aa/bb目录下
3.2 echo 追加
echo 写入文件的内容 > /aa/a.txt 将文件覆盖写入到aa/a.txt文件中
echo 写入文件的内容 >> /aa/a.txt 将文件追加写入到aa/a.txt文件的末尾
3.3 which & find 查找
which 文件名 查找文件存放位置,返回文件的pwd
find /aa/bb -name a.txt 在/aa/bb/目录下查找名为a.txt文件,返回该文件的存放路径
find /aa/bb/ -type d -name a 在/aa/bb/目录下查找名为 a 的文件夹的存放路径
find /aa/bb/ -type f -name a 在/aa/bb/目录下查找名为 a 的文件的存放路径
find /aa/bb/ -size +3k 在/aa/bb/目录下查找文件大小大于3kb的文件名称
find /aa/bb/ -size -3k 在/aa/bb/目录下查找文件大小小于3kb的文件名称
3.4 grep 搜索 & | 管道符
grep 'w' /aa/a.txt 在a.txt中查找有w字符的行
grep -n 'w' /aa/a.txt 在a.txt中查找有w字符的行及行号
cat /aa/a.txt | grep 'w' 搜索得出的文本中带有w字符的行
3.5 wc统计行或单词数
wc /aa/a.txt 统计/aa/a.txt 的行数及单词数
wc -l /aa/a.txt 统计/aa/a.txt 文件中的数据行数
wc -w /aa/a.txt 统计/aa/a.txt 文件中的单词的个数(单词间以空格分隔统计)
3.6 head 前几行 & tail 后几行
head -n /aa/a.txt 返回a.txt文件中的前n 行(默认n=10)
tail -n /aa/a.txt 返回a.txt文件中的后n 行(默认n=10)
tail -f /aa/a.txt 动态实时监控a.txt 文件的后10行内容的变化,ctrl + c 结束命令
4. 管理操作
4.1 用户管理
用户创建:useradd duo
用户删除:userdel -r duo
查看全部用户信息:cat /etc/passwd
切换用户:su -root
临时授权:sudo 临时以root用户执行命令
操作步骤:
对用户duo授予root权限:vim /etc/sudoers 文件中添加 root ALL=(ALL) NOPASSWD:ALL
使用root管理员权限执行命令:sudo vim /文件名
4.2 用户组管理
添加组:groupadd A
删除组:groupdel A
查看所有组:cat /etc/group
查看用户所属组:id duo
创建新用户 it 到A组:useradd it -g A
创建已有用户duo到A组:usermod -aG A duo
4.3 用户权限
r:读取 w:写 x:执行进入 -:无权限
u:当前用户 g:用户同组用户 o:其他用户
4.3.1 修改用户对文件的权限
修改单个的文件夹或文件的权限:chmod u=rwx,g=rx,o=r 文件名
此时该文件的类型为:rwxr-xr--
修改文件夹及其子目录文件权限:chmod -R u=rwx, g=rx,o=r 文件名
此时该多个文件的类型为:rwxr-xr--
快速增加或减少某项权限:chmod u-x, o+w 文件名
此时该文件的类型为:rw-r-xrw-
数字修改权限:chmod 777 文件名(777分别代表u、g、o)各用户的 rwx 值按二进制获取
此时该文件的类型为:rwxrwxrwx (111,111,111)
4.3.2 修改文件的所属用户
对单一文件做用户修改:
修改文件所属用户u:chown duo 文件名
修改文件所属组g:chown :A 文件名
修改文件所属用户和组:chown duo:A 文件名
对文件夹及其子文件做用户修改:
修改多文件所属用户u:chown -R duo 文件名
修改多文件所属组g:chown -R :A 文件名
修改多文件所属用户和组:chown -R duo:A 文件名
4.4 其他操作
4.4.1 下载安装
yum 下载安装:
yum -y install(下载) update(更新) remove(删除) search(搜索) 软件名称
wget 下载安装:
wget url链接 直接下载到当前目录
4.4.2 设置服务状态
systemctl start(开启) stop(停止) status(状态) enable(开机自启) disable(关闭开机自启) 服务名
4.4.3 软硬连接 lin
作用:将在路径较深的文件放于浅路径中方便使用,相当于windows中的桌面快捷方式
软连接:lin -s /a/b/c/d ~/D 软连接中d的删除会使D删除
硬链接:lin /a/b/c/d ~/D 硬连接中d的删除不影响D
4.4.4 date日期
一般用于shell脚本中获取日期或时间
获取当前日期时间:date +"%Y-%m-%d %H:%M:%S"
获取当前的某 天/月/年 之后的日期时间:date -d "+2 month" +"%Y-%m-%d %H:%M:%S"
4.4.5 查看进程ID
查看进程:
ps -ef 找到进程的进程id,可结合kill -9 进程id 来杀死该进程
ps -ef | grep 进程名 使用管道grep搜索会更快
实时查看系统资源占用情况以及占用资源比较多的应用程序有哪些:top
杀死进程:
kill -9 进程ID 杀死进程从而释放进程所占用的端口号
4.4.6 查看占用某端口号的进程
netstat -anp | grep 端口号
lsof -i : 端口号
端口号:某进程打开后的网址中:后的即为端口号
例如hdfs:http://主机ID:9870 该9870即为hdfs的端口号
4.4.7 监控
磁盘监控:df -h
内存监控:free -h
5. shell 脚本格式
5.1 一般格式
创建一个文件.sh,对其vim:
#! bin/bash
/export/server/hadoop/bin/start-hdfs.sh
/export/server/hadoop/bin/start-yarn.sh
执行脚本:sh ./文件名.sh
执行该脚本文件时,相当于在linux中分别执行内容中的两条命令
5.2 变量的shell脚本
定义变量:name=duo
若被赋予的值有空格时需要用双引号引住:name="duo duo"
变量只读设置:readonly name (后期name变量将不可再次被赋值)
变量删除:unset name
打印变量:
echo ${name}
echo "my name is ${name}"
当有内置的Linux命令时需要加反引号:
a=`ls /aa`
time=`date +"%Y-%m-%d"` 得当天的日期
time=`date -d +"2 year" +"%Y-%m-%d"` 得当前日期往前推两年
5.3 shell 脚本传递参数
方式1:
[root@hadoop01 job]#vim jiaoben.sh
#! bin/bash
name1=duo
name2=bo
echo "第一个参数为:${name1},第二个参数为:${name2}"
esc键 :wq 保存并退出
查看脚本是否有可执行权限(x),若无则需要加权限:chmod +x jiaoben.sh
运行脚本:sh jiaoben.sh
方式2:
[root@hadoop01 job]#name1=duo
[root@hadoop01 job]#name2=bo
[root@hadoop01 job]#vim jiaoben.sh
#! bin/bash
echo "第一个参数为:${name1},第二个参数为:${name2}"
esc键 :wq 保存并退出
查看脚本是否有可执行权限(x),若无则需要加权限:chmod +x jiaoben.sh
运行脚本:sh jiaoben.sh
方式3:
[root@hadoop01 job]#vim jiaoben.sh
echo "第一个参数为:$1,第二个参数为:$2"
拓展:echo "当前脚本的名称为:$0,共有参数数为:$#,参数分别为:$*"
esc键 :wq 保存并退出
查看脚本是否有可执行权限(x),若无则需要加权限:chmod +x jiaoben.sh
运行脚本:sh jiaoben.sh duo bo
三种方式的执行结果都相同
5. 在Linux中执行命令
5.1 在Linux中执行MySQL命令
mysql -u用户名 -p密码 -h主机名 -P端口号 -e "SQL语句"
mysql -uroot -p123 -h192.168.34.43 -P3306 -e "select * from 表 limit 10;"
5.2 在Linux中执行hive命令
hive -S -e "hive语句1; 语句2;"
hive -S -e "show databases; select * from 表 limit 10;"