命令 | |
---|---|
目录下常用命令: | |
cd | 改变工作路径 |
cd … | 返回上一级目录 |
ls | 显示当前目录信息 |
ls -l | 详细显示文件信息 |
ls -a | 显示当前目录的所有文件,包括隐藏文件, 隐藏文件是以“.”开头的,“…”:上一级目录 “.” :当前目录) |
ls -A | 显示当前目录的所有文件(包括隐藏文件,不显示 “…”, “.”) |
pwd | 打印当前的工作目录 |
touch | 创建文件 |
gedit | 打开并编辑文件,若没有该文件,则创建 |
mkdir | 创建文件夹(目录) |
rm | 删除文件 |
rm -r | 删除文件夹 |
mv | 重命名:mv 1.txt 2.txt (将1.txt重命名为2.txt) 移动:mv 2.txt xijing/ (将2.txt移动到xijing文件夹) |
cp | 复制:cp 2.txt ./… (将2.txt复制到上一级目录) |
tree | 以树状形式显示目录里面的内容,tree 目录名 |
clear | 清屏 |
cat | 打印文件 |
tar | 压缩,解压 |
window压缩包后缀名:.rar .zip linux压缩包后缀名:.tar.gz .tar.bz2 | |
c:压缩 | tar -zcvf file1.tar.gz file1/ tar -jcvf file1.tar.bz2 file1/ |
x:解压 | tar -zxvf file1.tar.gz tar -jxvf file1.tar.bz2 |
常用命令: | |
vi/vim(字符界面) | 进入命令模式 |
yy | 复制光标所在当前行 |
y+n+y(nyy) | 复制n行 |
p | 粘贴到光标当前为止 |
dd | (剪切)删除当前行 |
d+num+d(ndd) | 删除num行 |
u | 撤回/回退 |
shift+g | 到达页尾 |
1+shift+g | 到达页头 |
x | 删除(光标以后) |
X | 删除(光标以前) |
yw | 复制单词 |
dw | 删除单词 |
G | 将光标跳转到最后一行 |
gg | 将光标跳转到第一行 |
shift + ^ | 到达行头 |
shift + $ | 到达行尾 |
num+shift+g | 到达目标行 |
set number/ set nonumber | 行号/取消行号 |
history | 查看历史操作 |
进入编辑模式: | |
i | 在光标前插入内容 |
o | 换到下一行插入内容 |
a | 在光标后插入内容 |
Esc | 退出编辑模式 |
保存文本内容: | |
wq | 保存修改内容退出 |
wq! | 强制保存文本内容退出 |
q | 不保存修改内容退出 |
q! | 强制退出不保存修改内容 |
指令模式: | |
?+要查找的单词 | n 向上查找 shift+n 向下查找 |
/ +要查找的单词 | n 向下查找 shift+n 向上查找 |
halt | 关机 |
Linux 系统目录结构
-
/bin:
bin是Binary的缩写, 这个目录存放着最经常使用的命令
-
/boot:
这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
-
/dev:
dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的
-
/etc:
这个目录用来存放所有的系统管理所需要的配置文件和子目录
-
/home:
用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的
-
/lib:
这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库
-
/lost+found:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件
-
/media:
linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下
-
/mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了
-
/opt:
这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的
-
**/proc:**这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。 这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
-
/root:
该目录为系统管理员,也称作超级权限者的用户主目录。
-
/sbin:
s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
-
/selinux:
这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
-
/srv:
该目录存放一些服务启动之后需要提取的数据。
-
/sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。/sys:
-
/tmp:
这个目录是用来存放一些临时文件的
-
/usr:
这是一个非常重要的目录。用户很多应用程序和文件都放在这个目录下,类似于windows和program files目录
-
/usr/bin:
系统用户使用的应用程序
-
/var:
这是目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件
-
/run:
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run
重要目录:
/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。
值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。
/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。
系统操作管理
**查看ip:**ifconfig -a
**配置静态ip:**vim /etc/sysconfig/network-scripts/ifcfg-eth0
配置主机名称:
hostname查看 vim/etc/sysconfig/network vim network
重启查看主机名称 reboot
防火墙:
service iptables status 查看防火墙状态
service iptables stop 临时关闭防火墙
chkconfig iptables --list 查看防火墙开启启动状态
chkconfig iptables on 防火墙开启关闭
chkconfig iptables off 防火墙开启启动
关机/重启:
sync(同步):我们在关机或重启之前让linux保存修改的数据。(内存中的数据同步到硬盘)
关机:shotdown:
now 立刻关机
-h 关机 shotdown -h now
shoudown 5 五分钟后关机
-r 关机后重启 shotdown -r now
halt 关闭系统(等同于shutdown -h now)
reboot 重启(相当于 shutdown -r now)
常用的基本命令
帮助命令:
man 获取帮助信息的详细说明:
空格进行换页 q 退出 man 信息查看
help帮助信息
常用快捷键:
1.帮助命令:
clear 清屏
ctrl + c 结束进程
ctrl + q 退出
tab 单词命令补全
上下键
ctrl+alt linux和windows切换
2.文件目录
pwd:查看当前文件夹的绝对路径
ls:列出文件的目录结构
-a 列出所有,包含隐藏文件
-l 列出文件的长度,包括属性,拥有者,最后一次改变的时间
mkdir:创建文件夹
-p:创建多级目录
touch:创建文件
cd:切换目录
cp:复制文件/文件夹
cp 文件/文件夹 目标路径(单个路径/文件夹)
cp -r 文件夹 目标 递归复制
rmdir:删除空的目录(remove dieectory)
rm:移除文件或者目录
rm -rf 目录/文件 递归不询问删除
mv:移动文件/重命名
mv oldfile newfile 重命名
mv file newDirectory 移动
cat:查看文件内容,从第一行
tac:从最后一行查看内容
more:按页查看文件内容
空格换页
q 退出查看
enter 向下翻一行
= 输出当前行号
less功能和more相似:
pageup/pagedown换页
q 退出
head:查看文件的头几行
head -n 20 Demo 查第20行数据
tail:查看文件的末尾几行
tail -n 20 Demo 查倒数20行
重定向:
ls -l > c.txt 将查询的列表内容追加到c.txt 再次追加会覆盖掉原来的内容
ls -l >> c.txt 像末尾添加内容
echo:
echo hello > e.txt (会覆盖)
echo hello >> e.txt (末尾追加内容)
ln 软连接:
ln -s 源文件 目标文件
history 查看历史命令
3.时间日期: date [option] +[+FORMAT]
date +%Y
date +%m
date +%d
datae +%H
date +%M
date +%Y%m%d
date +%Y-%m-%d %H:%M:%S 年月日时分秒
date -d ‘1 days ago'
date yesterday +%Y%m%d
date -d yesterday +%Y%m%d
设置系统的时间:
date -s “2019-04-25 15:05:10”
查看日历:cal
4.用户管理
添加用户:useradd
设置用户密码:passwd 用户名
切换用户:su 用户名
判断用户是否存在:id 用户名
uid=501(admin)gid=501(admin) 组=501(admin)
删除用户(退出当前登录exit):
userdel 删除用户,用户目录存在
userdel -r 用户名,删除用户,删除用户目录
查看用户登录信息:
who 查看哪些用户登录到了本机
whoami 查看当前自身用户名称
who am i 显示登录用户的信息
给用户授权 /etc/sudoers
看创建了哪些用户组:
cat /etc/passwd
admin:x501:501: :/home/admin:/bin/bash
添加分组:usermod -g 用户组 用户名
5.用户组管理
添加组 groupadd 组名
删除组 groupdel 组名
修改组 groupmod -n 新组名 旧组名
6.用户权限管理 r read w write x excute 执行
文件属性:drwxr-xr-x. 3 root root 4096 4月 24 11:24 rh
d:代表的是一个文件夹,没有就是文件
1-3:确定属于谁 该文件的所有者,拥有该文件的权限
4-6:所有者的同组用户 group
7-9:其他组的用户 others
修改文件的权限:rwx 421
chmod 用户/组/其他 文件名
chmod u+w c.txt chmod g+w c.txt chmod u-x c.txt
以二进制添加权限:
chmod -R 777 c.txt
chmod -R 666 c.txt
修改文件的拥有者:
chown 用户 文件名
修改组:
chgrp 组名 文件名
7.磁盘分区
查看分区:fdisk fdisk -1
产看硬盘:df
8.搜索查找
查找文件或目录:
find /opt -name *.txt 查找名称是什么
find /etc -name ifc*
find /opt -user admin 查找用户是什么
find /opt -group admin 查找组是什么
find /opt -size +1024 查找文件大小大于1024的文件
+n 大于 -n小于 n等于
grep 在文件内搜索字符串匹配并输出
grep + 参数 + 查找的内容 + 源文件
参数:
-l:不区分大小写
-c:只输出匹配的行数
-h:查询多文件时不显示文件名
-n:显示匹配及行号
-v:显示不包括匹配文本的所有行
which 文件搜索命令(搜索在目录级别的名信息)
9.进程/线程
ps -aux 查看所有进程
user:该进程是哪个用户产生的
pid:进程号
%CPU:cpu的占用率
%MEN:占用物理内存的百分比
VSZ:占用虚拟内存的大小
RSS:占用物理内存的大小
TTY:该进程是哪个终端在运行
tty1-tty7:是代表本地的控制台终端
tty1-tty6:是本地的字符界面终端
tty7:是图形界面终端
pts0-pts255:代表虚拟终端
start:启动时间
time:cpu的运算时间
command:产生次进程的命令
top:实时查看运行的进程 三秒钟自动刷新 q 退出
pstree:进程树
终止进程 kill 进程号(ps -aux | grep ssh)
10.压缩和解压
gzip 压缩文件(只能将文件压缩为*.gz文件)不能压缩文件夹
gunzip 解压文件
tar + 参数 + xxx.tat.gz +打包的内容
c 产生.tar 打包文件
-v 显示详细信息
-f 指定压缩文件的后缀名
-z 打包的时候继续压缩
-x 解包.tar文件
压缩:
tar -zcvf xxx.tar.gz 压缩打包的内容
解压:
tar -zxvf xxx.tar.gz
11常用的符号命令
. :当前目录
.. :上一级目录
~ :家目录
回家:cd ~
| :管道符,一般与grep同时用
ps -ef|grep xxxxx
>> :追加到某个文件
> :覆盖
后台服务
service后台管理
service xxx start 启动服务
service xxx stop 停止服务
service xxx status 查看状态
service xxx restart 重启
chkconfig 设置后台的服务自动启动
查看所有服务的自启配置 chkconfig
关掉指定服务的自启动 chkconfig iptables off 防火墙关闭
启动开启服务启动 chkconfig iptables on 防火墙开启
虚拟机克隆
-
关闭虚拟机
-
点击管理克隆
-
当前虚拟机的状态
-
完整克隆
-
查看网卡
-
修改网卡
vim /etc/udev/rules.d/70-persistent-net.rules 将eth0产出 将eth1改成eth0 记录网卡编号
vim /etc/sysconfig/network-scripts/ifcfg-eth0 修改网卡编号(00:0c:29:68:fd:5b) 修改ip地址 重启虚拟机 修改主机名称: vim /etc/sysconfig/network hostname = linux02
-
重启虚拟机
Linux下的软件安装方式
RPM命令安装
RedHat Package Manger 类似于windows下的.exe
检查某个软件是否已经安装:
rpm -qa | grep java
卸载已经安装的软件:
rpm -e --nodeps xxxxx
安装xxx.rpm:
rpm -ivh xxx.rpm /usr/lib
-i install 安装
-v 显示详细信息
-h 进度条
--nodeps 不检测依赖进度
tar.gz 源码包安装
tar.gz 安装JDK1.8
上传tar.gz的包
解压JDK
配置环境变量
vim /etc/profile 在文件的末未添加:
export JAVA_HOME=/opt/jdk1.8.0__191
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
刷新资源文件:source /etc/profile
java -version
yum安装(在线安装)
yum是有本地镜像的
yum install
wget 在线获取包文件 下载
wget http://download.redis.io/releases/redis-5.0.4.tar.gz
在线下载压缩包
安装InlelijIDEA
解压 ideaIU-2018.3.6-no-jdk.tar.gz
进入到idea-IU-183.6156.11
进入到bin目录
启动idea ./idea.sh
配置idea /注册
添加idea 的桌面快捷方式:
进入到/usr/share/applications 桌面快捷键
创建xxx.desktop文件
vim idea.desktop
输入:
[Desktop Entry0]
Name=idea
Exec=/opt/idea-IU-183.6156.11/bin/idea.sh %U
Type=Application
Icon=/opt/idea-IU-183.6156.11/bin/idea.png
Terminal=false
如果写完以后桌面没有图标,进入到/usr/share/applications将idea.desktop移动到桌面
在桌面右键属性 权限:允许以程序执行文件
NotPad++7.5.6安装NppFtp插件
下载NppFtp插件(32位的插件,不同版本不兼容)
解压插件
将NppFtp.dll放置到Notpad++安装路径的plugins文件夹下
重启notpad++
连接linux
修改文件
保存后自动上传
shell编程
shell是一个用C语言编写的程序,他是用户使用Linux的桥梁,Shell既是一种命令语言,又是一种程序设计语言。
Shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务
Ken Thompson 的sh是第一种Unix Shell,Windows Eeplorer是一个典型的图形界面Shell
在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。
shell脚本输出
编写一个test.sh脚本文件
编辑脚本文件
#!/bin/bash #!/bin/sh 脚本文件的开头
echo “HelloWorld”
修改文件权限 chmod 777 test.sh
./test.sh 运行脚本文件
echo 输出
echo -e “Hello\tWorld” 对转义字符进行解析
脚本文件的执行方式:
./test.sh
bash /opt/rh/shell/test.sh
sh ./test.sh
bash ./test.sh
/opt/rh/shell/test.sh
变量
用户可以通过 set 查看所有的变量
变量的声明 变量名=值 建议变量名称大写 ,=两侧不要有空格
A=100 echo $A输出变量的值
系统变量
$HOME
$PWD
$SHELL
$USER
自定义变量
A=100 echo $A 输出变量的值
撤销变量 unset A
声明静态变量 readyonly B=200
变量名称:字母数字下划线组合,不能以数字开头
可以将变量提升为全局变量 ,提供给其他的shell来使用
export 变量名称
使用反引号 可以将命令执行的结果保存在变量上
B='ls-l' echo $B
A=(ls -l) 等价于上边
设置环境变量
/etc/profile
export JAVA_HMOE= 全局变量
source /etc/prifile
设置位置参数的变量
基本的语法:
$n n为数组 $1 代表第一个参数 $1-$9 代表1-9个参数
执行:./test1.sh 1 2 3 4 5
#!/bin/bash
echo "$1"
echo "$2"
echo "$1-$5"
...
$* 将所有的参数看作是一个整体
$@ 将每个参数区别对待
$# 获取参数的个数
预定于变量
$$ 当前进程的id
¥!后台运行的最后一个进程的进程号
$? 最后一次执行的状态返回值 0 正确执行 非0 不正常执行
#!bin/bash
echo "$$"
#将程序放入后台执行
./test.sh &
echo "$!"
echo "$?"
...
运算
$((表达式))或者 $[表达式]
expr m+n
expr m-n
expr m/n
expr m \* n
expr m%n
# exper `exper 3+4` /* 3
21
# A=$[(3+4)*2]
# echo $A
14
判断:
eq 相等
ne 不相等
gt 大于
lt 小于
ge 大于等于
le 小于等于
if
if[条件表达式] 注意表达式前后必须有空格
then
程序
fi
文件权限判断
-r 是否可读
-w是否可写
-x是否可执行
[root@linux shell]# vim file.sh
#!/bin/bash
if [ -r test.sh ]
then
echo "test.sh is can read!"
fi
#!/bin/bash
if [ $1 -ge 100 ]
then
echo "$1 >100"
elif [ $2 -le 100 ]
then
echo "$2 <=100"
fi
...
case 判断
case $变量名 in
“值1”)
程序
;;
“值2”)
程序
;;
*)
程序
;;
esac
#!/bin/bash
case $1 in
"10")
echo "param is 10!"
;;
"20")
echo "parm is 20!"
;;
*)
echo "no such param!"
;;
esac
循环
for
for 变量 in 值
do
done
for(初始化变量;条件,变量增加)
do
done
#!/bin/bash
#参数作为整体输出
for i in "$*"
do
echo"$i"
done
#!/bin/bash
#每一个参数区别对待
for i in "$@"
do
echo"param is $i"
done
练习 1-100的和
#!/bin/bash
s=0
for((i=0;i<=100;i++))
do
s=$[ $s + $i ]
done
echo $s
while
while[布尔表达式]
do
done
计算1-100
#!/bin/bash
s=0
i=1
while [ $i -le 100 ]
do
s=$[$s+$i]
i=$[$i+1]
done
echo $s
read 读取控制台输入
-p 指定输入信息的提示符
-t 等待时间 在时间内必须完成输入完成
函数
系统函数
basename /opt/rh/shell/while.sh
while.sh
自定义函数 计算两个输入参数的和
#!/bin/bash
function sum(){
s=0
s=$[$1+$2]
echo $s
}
read -p “please input your number1” num1;
read -p “please input your number2” num2;