Linux常用操作命令
Linux目录结构
分为相对路径和绝对路径,目录分隔符"/"
绝对路径:所有以"/"开始的路径都是绝对路径
相对路径:目录名或文件名开始的
./ 表示当前目录
.. 表示当前目录的上一级
~ 表示用户的主目录
/ -----处于Linux系统树形结构的最顶端,是Linux文件系统入口
/bin-----常用的二进制命令目录,如ls,cp,mkdir等
/boot----存放系统启动相关文件
/dev-----设备文件目录
/etc-----畅通系统及二进制安装包配置文件,默认路径和服务器命令目录
/home----普通用户的家目录,默认存放目录
/opt-----没什么用可以自己用
/proc----存在于内存中,是内存的映射,可以查看CPU信息,/pro/cpuinfo
/sys-----系统目录,存放硬件信息的相关文件
/run-----运行目录,存放系统运行时的数据,如进程PID文件
/srv-----服务目录,存放本地服务的相关文件
/sbin----超级用户可执行命令存放目录
/tmp-----存放临时文件目录,只能被owner(拥有者)和超级权限删除
/var-----系统运行和软件运行时产生的日志信息
/usr-----存放应用程序和文件,自己安装存放位置
/mnt/media--一般用来临时挂载存储设备的挂载目录
/lib/lib64---都在/usr目录,存放系统最基本的动态,链接共享库,能够让程序正常编译运行,lib***.a是静态库,lib***.so是动态库
ls命令
ls命令:查看当前目录下的所有文件
ls [参数] 目录路径
ls #命令本身查看当前目录下的文件
ls ./ #表示查看当前目录下的文件
ls ../ #表示查看当前目录上级目录下的文件
ls / #表示查看系统根目录的所有文件
ls -l #-l表示查看当前目录下的文件的详细信息 这-l参数有时可以和ls命令简写为ll
ls -a #-a表示查看目录下的所有文件(包含隐藏文件)
ls -h #-h表示将文件的大小以合适的单位显示,一般情况和-l连用
ls -hl #表示查看当前目录下的文件,并以合适的单位显示文件大小
pwd命令
pwd命令 查看当前目录的路径
cd命令
cd命令是进入Linux系统文件夹的命令
cd 目录路径
cd / #表示进入系统根目录
cd usr #表示进入档期那目录下的usr目录
cd ./games #表示进入当前目录下的games目录
cd .. #表示返回当前目录的上一级目录
cd #表示cd后面加任何目录,表示进入当前用户的根目录 如果root目录会进入/root目录,如果是test用户会进入/home/test目录
cd ~ #表示进入当前用户的根目录
cd ../../ #表示返回当前目录的上级目录的上级目录
cd ../home #表示进入与当前目录同级的home目录(进入上级目录下的home那目录)
mkdir命令:创建文件夹命令
mkdir [参数] 目录路径
mkdir data #在当前目录下创建一个叫data的文件夹
默认情况下mkdir只能创建一级文件夹
mkdir /root/file #表示在/root目录下创建一个叫file的文件夹
-p参数 : 一次性创建多级目录
mkdir -p /root/opt/data/file #表示在root目录下创建三个级联的目录
rmdir命令:删除文件夹命令
注意:使用rmdir命令删除目录时,目录必须是一个空目录(目录下面没有任何的文件活目录),否则不能删除
rmdir data #删除当前目录下的data目录
rmdir -p #删除当前目录下的所有目录
rmdir -p opt/data/file #删除当前目录下的opt以及它的子目录,相当于rmdir opt/data/file-->rmdir opt/data-->rmdir opt
rm删除命令
rm删除命令:可以删除文件和文件夹一般都使用 -rf参数
rm anaconda-ks.cfg #删除当前目录下的anaconda_ks.cfg文件
rm -rf opt/data #删除当前目录下opt目录下的data文件夹以及它下面的所有文件和文件夹
-r : 表示递归删除
-f : 表示强制删除,不提示
rm -f file #表示删除当前目录下file目录以及它下面的所有文件,会弹出提示
rm _rf file #表示强制删除当前目录下file目录下的所有内容,不会提示
touch命令:创建文件命令
touch 文件路径
touch 1.txt #表示在当前目录下创建一个1.txt文件
touch /root/2.txt #表示在/root目录下创建一个2.txt文件
echo命令:输出命令
echo输出命令:相当于plsql中的dbms_output.put_line
PATH系统环境变量
$ : 表示取值
echo $PATH #表示输出环境变量的PATH的值
echo -n #表示输出但不换行
>和>>命令
命令>|>>文件 : 表示将前面命令的结果放入到文件中
echo 1234 > 3.txt #表示将1234输出到3.txt中,如果文件不存在会在创建文件,如果文件存在,会先将文件清空后媳妇1234
echo 1234 >> 4.txt #表示将1234输出到4.txt中,如果文件不存在会创建文件,如果文件存在,会在原有的文件内容后追加1234
查看文件内容命令
cat命令
cat 文件路径
cat 4.txt #表示查看当前目录下的4.txt文件的内容
cat 4.txt >> 3.txt #表示将4.txt文件的内容追加到3.txt中
more命令
more 文件路径 #表示查看文件内容,先显示文件的部分内容,按空格(或回车)翻页
less命令
less 文件路径 #表示查看文件的内容,先显示文件部分内容,按空格(或回车)翻页,输出q退出查看
head命令
head [-n] 文件路径 #表示从文件开始查看文件若干行内容,n是一个正整数表示行数
head -20 4.txt #表示查看4.txt的前20行内容
tail命令
tail [-n][-f] 文件路径 #表示从文件结尾开始查看文件若干行内容,n表示行数是一个正整数,-f参数表示动态查看文件的后几行内容(用来查看日志文件)
tail -15 4.txt #表示查看4.txt的后15行内容
tail -f 4.txt #表示动态查看4.txt的内容,按Ctrl+C退出查看Ctrl+Z
Ctrl+C : 表示暂停程序的运行
Ctrl+Z : 表示停止程序的运行
vi和vim命令:文件编辑
vi是Linux系统自带的命令,vim一般需要安装 : yum -y install vim
vim 文件路径
vim 5.txt #表示编辑当前目录下5.txt文件,没有该文件会自动创建一个5.txt
非编辑模式:用来使用一些命令的
i #进入编辑模式,光标就在当前行
o #进入编辑模式,光标出现在当前行的下一行
yy #将光标当前行的内容,复制到粘贴板上
p #将粘贴板上的内容复制到当前行的下一行
dd #删除光标当前行的内容
:set nu #显示行号
:set nonu #取消显示行号
/查找字符 #从前向后查找字符串(当前光标)
?查找字符 #从后往前查找字符串(当前光标)
:%s/查找的字符串/新的字符串/g #表示将文中的所有内容进行替换 g表示:global 全文替换 i:表示忽略大小写
:%s/fa/34/g #表示将文本中的所有fa替换成34
:%s/$/;/g #表示将文本中的每一行的末尾添加一个";" $:表示行末
:$s/^/#/g #表示在文本中的每一行的行头添加一个"#",将所有内容注释掉 ^:表示行首,#是Linux中的注释符号
:n1,n2s/查找的字符串/新的字符串/g #表示将第n1行到第n2行之间的所有内容进行替换
:15,15s/12/34 #表示将15行中的12替换成34
:s/查找的字符串/新的字符串 #表示替换光标当前行第1个目录字符串
:s/34/56 #将光标当前行的34替换成56
:%s/n/x/gi #将文本中的所有n(包括大写)都替换成x
Ctrl+F : 表示向下翻页
Ctrl+B : 表示向上翻页
Ctrl+U : 表示向上翻半页
Ctrl+D : 表示向下翻半页
:set ff #表示查看当前文件的格式
Windows中的 doc
Linux中的 unix
u: #表示撤销
:w #表示保存
:q #表示退出不保存
:wq #表示退出并保存
:q! #表示强制退出不保存
:wq! #表示强制保存并退出
ESC键 #表示退出编辑模式
cp命令:复制命令
cp 源文件 目标文件
cp 5.txt 6.txt #将当前目录下的5.txt文件复制一份保存为6.txt
cp 5.txt opt/ #将当前目录下的5.txt文件复制到opt目录下
cp -r opt data/ #将opt目录及目录下的所有内容拷贝到data目录下
cp -r data/* opt #将data目录下的所有文件拷贝到opt目录下
mv命令:移动命令(剪切命令)
mv 源文件 目标文件
mv 6.txt 7.txt #将当前目录下的6.txt文件移动到7.txt(相当于给6.txt改名)
mv 7.txt data/ #将当前目录下的7.txt文件移动到data目录下
mv 4.txt data/5.txt #将当前目录下的文件移动到data目录下的5.txt(相当于移动并改名)
mv op data/ #将当前目录下的op目录移动到data目录下
mv opt op #将opt目录改名成op
压缩命令
zip命令
zip的安装命令:yum -y install zip
zip 压缩文件名 源文件
zip 5.zip 5.txt #将当前目录下的5.txt压缩到5.zip文件中
zip data.zip data/* #将data目录下的所有文件压缩到data.zip文件中(压缩时没有将data的下级目录内的文件压缩)
zip -r data.zip data/* #将data目录下的所有文件包含子目录下的文件压缩到data.zip文件中
unzip解压命令
unzip的安装命令:yum -y install unzip
unzip [参数] 压缩文件
unzip -l 5.zip #查看5.zip压缩包中的内容
unzip 5.zip #将5.zip解压到当前目录中
unzip 5.zip -d data/ #将5.zip解压到指定的目录data目录下
tar命令
tar -cvf 压缩文件名 要压缩的文件 #将目标文件压缩成.tar压缩包
tar -cvf data.tar data/ #将当前目录下的data目录压缩到data.tar压缩包中
tar -xvf 压缩文件名 #解压.tar压缩包
tar -xvf data.tar #将data.tar解压到当前目录
tar -xvf data.tar -C unzip/ #将data.tar解压到unzip目录下
tar -zcvf 压缩文件名 要压缩的文件 #将文件压缩为.tar.gz压缩包
tar -zcvf data.tar.gz data/ #将当前目录下的data目录压缩到data.tar.gz中
tar -zxvf 压缩文件名 #将.tar.gz文件解压到当前目录
tar -zxvf data.tar.gz #解压到当前目录
tar -zxvf data.tar.gz -C unzip/ #解压到unzip目录
用户和权限
groupadd命令:添加用户组
groupadd 用户组名
groupadd arq #创建一个叫aiq的用户组
groupdel命令:删除用户组
groupdel 用户组名称
groupdel aiq #删除用户组(注意:删除用户组时,必须保证用户组下没有任何用户)
useradd命令:添加用户
useradd 用户名 [参数]
useradd test #添加一个test用户
useradd 用户名 -g 用户组名 -G用户组名
-g :后面跟用户组,是该用户的主用户组
-G :后面跟用户组,是该用户的其他用户组
groupadd ai
useradd aiqs -g aiq -G ai #创建一个用户aiqs,它的主用户组是aiq,还属于ai用户组
id命令:查看用户id
id 用户名
id aiqs #查看aiqs的用户id
passwd命令:修改用户密码
passwd 用户名
passwd aiqs #修改aiqs用户的密码
su命令:切换用户命令
su [参数] 用户名
su aiqs #切换到aiqs用户(但是不会加载aiqs用户的环境变量)
su - aiqs #切换到aiqs用户,并加载用户的环境变量
su - root #切换到root用户
exit:退出命令
Linux上的文件权限
分为三组 : 用户权限(u),用户组权限(g),其他用户权限(o)
r : 表示只读权限,数字表示4
w : 表示写权限,数字表示2
x : 表示执行权限,数字表示1
- : 表示没有相应的权限
每一组的权限顺序: 读 , 写 , 执行
文件的显示类型:
d文件夹 用户权限u 用户组权限g 其他用户权限o
- rw- r-- r--
6 4 4
*详图看下
权限根据rwx所代表的数字可以使用三个数字来表示三组权限,每一组权限用一个数字表示
chmod命令赋值权限命令
chmod [参数] 权限(可以使用数字,可以使用用户组和rwx的组合) 文件或目录
chmod u+x 1.txt #给1.txt的用户增加执行权限
chnod g+x 1.txt #给1.txt的用户组添加执行权限
chmod o+x 1.txt #给1.txt的其他用户组添加执行权限
chmod g-x 1.txt #给1.txt的用户组撤销执行权限
数字法:
chmod 766 2.txt #修改2.txt权限,u=rwx,g=rw-,o=rw-
chmod 777 3.txt #修改3.txt权限,让所有人都可以读写执行
-R : 表示递归目录以及目录下的所有文件或文件夹都赋值相同的权限
chmod -R 777 data #将data目录及它下面的所有文件都赋值权限为777
chown命令:修改目录或文件的拥有者
chown -R 用户名[:用户组] 目录或文件
chown aiqs 1.txt #将1.txt用户拥有者改为aiqs用户
chown aiqs:aiq 2.txt #将2.txt的拥有者改为aiqs和所在用户组改为aiq
chown -R aiqs:aiq data #将目录data以及它下面的所有文件的拥有改为aiqs,所属用户组改为aiq
who命令:查看当前系统的用户进程
whoami命令:查看当前用户的用户名
find命令:查找命令
find [目录] 查找内容
find *.txt #查看当前目录下的所有txt文件
find 1.* #查看当前目录下的以1.开头的文件
whereis查找命令
whereis 要查找的内容 : 一般用来查找是否安装了某个软件
|和grep
| : 通道符号,作用是将前一个命令的执行结果,传给后面的命令
grep [参数] 要查找的内容
cat 5.txt | grep 12 #查找出5.txt中所有带12的行
-v : 参数表示取反,查找的内容不包含某个内容的行
cat 5.txt | grep -v 12 #查找出5.txt中不包含12的行
ping命令
ping ip地址|域名|主机名 #查看网络是否连通
ifconfig命令
ifconfig命令:用来获取网络接口配置信息
ifconfig的安装:yum -y install net-tools
netstat命令:查看网络状态
netstat命令 : 查看网络状态,相当于Windows下的telnet命令
netstat -tnulp | grep 1521 #查看系统中Oracle的监听器是否启动
ps命令:查看系统进程
ps命令 : 查看系统进程命令
ps -ef | grep oracle #查看系统中的Oracle进程
ps -ef | grep java #查看系统中java程序进程
ps -aux | grep python #查看系统中python的进行
kill命令:结束进程
kill 进程id #结束某个进程
ps -ef | grep ssh
kill 6611 #结束进程是6611的进程
kill -9 进程id #强制结束某个进程
kill -9 6724 #强制结束id是6724的进程
killall 进程名称 #按名称结束进程
killall java #结束掉系统中的所有java进程
df命令:查看内存
df命令 : 查看系统硬盘使用的情况
df -h : 查看系统内存使用情况,并以合适的单位显示
防火墙命令
centos7:
systemctl stop firewalld #关闭防火墙
systemctl start firewalld #打开防火墙
systemctl disable firewalld #永久关闭防火墙
systemctl status firewalld #查看防火墙状态
centos6:
service iptables start #打开防火请
service iptables stop #关闭防火墙
chkcnofig iptables off|on #永久关闭防火墙
修改主机名称
centos7:
hostnamectl set-hostname 计算机名称
centls6:
vim /etc/sysconfig/network 修改文件中的hostname值
hostname命令 : 查看当前主机名
man命令
man命令 : 查看Linux命令的详细信息(使用文档,最详细的)
man ls : 查看ls命令的格式和参数
--help,--h,-h : 命令的帮助参数,和man命令的结果类似,但没有man命令查看到的详细
ssh命令:远程登录
ssh 命令 : 它是Linux上的远程登录命令
ssh 用户名@ip|主机名|域名
ssh root@127.0.0.3 #使用ssh登录120.0.0.3
ssh root@oracle #使用ssh登录Oracle的电脑
scp命令:远程拷贝
scp -r 用户名@ip|域名|主机名:目录路径 本地路径 #将远程文件拷贝到本地
scp -r root@127.0.0.3:/root/ln1/6.txt /root/ #将远程服务器上的/root/ln1/6.txt文件拷贝到本地的/root目录
scp -r 本地路径 用户名@ip|域名|主机名:目录路径 #将本地的文件拷贝到远程服务器
scp -r 1.txt root@127.0.0.3:/root/ln1 #将本地的1.txt文件拷贝到远程服务器的/root/ln1目录下
scp -r data root@127.0.0.3:/root/ln1/ #将本地的data目录拷贝到远程服务器/root/ln1目录下
scp -r 用户名@ip|域名|主机名:目录路径 用户名@ip|域名|主机名:目录路径 #将文件从一台服务器拷贝到另一台服务器
scp -r root@127.0.0.3:/root/ln1/*.txt root@127.0.0.3:/root/ln2/ #将远程目录/root/ln1下的所有txt文件拷贝到另一台服务器的/root/ln2目录下
多行处理命令
<<EOF
...
EOF
将<<EOF和EOF之间的多行内容传前面的命令,EOF可以是任意字符串
例子:
[root@oracle ~]# cat <<EOF
> A
> 2
> 4
> AB
> C
> E
> T
> EOF
A
2
4
AB
C
E
T
[root@oracle ~]# cat <<A
> e
> w
> 1
> f
> c
> f
> A
e
w
1
f
c
f
#在Linux上执行一个SELRCT * FROM EMP;的sql语句
sqlplus -S scott/scott<<EOF
select * from emp
exit
EOF
sed命令
sed '5p' 7.txt #打印7.txt的第五行后,打印7.txt的全部内容
sed -n 5p' 7.txt #只打印7.txt的第五行内容
sed -i 's/local/home/g' 7.txt #将文件中的local替换成home
如果要替换的内容中有特殊字符例如/,需要使用转义字符"\"
sed -i 's/\/usr\/home/\/opt\/config/g' 7.txt #将7.txt中的/usr/home替换为/opt/config
-n #一般sed命令会把所有数据都输出到屏幕上.如果加入此参数,则只会把经过sed命令处理的行输出到屏幕
-e #允许对输入数据应用多条sed命令编辑
-i #用sed修改结果会直接修改读取的数据文件,而不是修改屏幕输出
sed可以修改文件,替换文件内容
a\ #追加,在当前行后追加一行或多行.添加多行时除最后一行外,,每行末尾要用"\"代表该行的数据完结
c\ #行的替换,在c后面的字符替换原有数据行,替换多行时除最后一行外,每行末尾要用"\"代表该行的数据完结
i\ #插入,当前行插入一行或多行,插入多行时,除最后一行外,每行末尾要用"\"代表该行的数据完结
d #删除,删除指定的行
p #打印,输出指定的行
s #字符串的替换,用一个字符串替换另一个字符串.格式为"行范围 s/旧的字符串/新的字符串/g"
wc命令:数数
wc命令:word count 数文件或内容中的单词个数,行数等
wc -l 文件 #查看文件的行数
wc -w 文件 #查看文件的单词数,按照空格来算单词
wc -l 7.txt #查看7.txt的行数
wc -w 7.txt #查看7.txt的单词个数
cut命令:截取命令
cut -f n -d 分隔符 #n是一个正整数,表示第n列 -d : 是定列和列之间的分隔符,默认是tab键
cut -f 2 8.txt #截取文件8.txt的第二列
cp 8.txt 9.txt #复制8.txt
sed -i 's/\t/,/g' 9.txt #将9.txt文件中的水平制表符替换为","
cut -f 2 -d ',' 9.txt #指定','为分隔符截取9.txt的第二列
wc -l 9.txt | cut -f 1 -d ' ' #取9.txt的行数
awk '条件1{动作1}条件2{动作2}...' 文件名
awk '{printf $2 "\t" $6 "\n"}' a.txt #输出文件a.txt的第二列和第6列
awk '{print $1}' 8.txt #打印8.txt中的第一列(自动换行)
awk '{printf $1}' 8.txt #打印8.txt中的第一列,(不换行)
print和printf 是格式化输出命令
print自动换行
printf不换行
Linux的安装命令
rpm :安装.rpm的安装文件
rpm -ivh 安装包文件.rpm #安装程序
rpm -qa | grep mariadb #查询电脑上已安装mariadb的数据库,是mysql的开源版
rpm -e 安装文件 #卸载程序
rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps #卸载mariadb,--nodeps表示不管它是否依赖其他内容,或者有其他软件依赖
yum命令:它是ret hat和Centos上的特定安装命令
yum -y install 软件名称
yum -y remove 软件名称 卸载软件
ubunto:它安装命令apt-get -y install 软件名称```