对于新手小白来说,必须要清楚常用的操作命令和参数,把握基础
命令 严格区分大小写和有无空格
change directory 文件夹 路径/目录
因为Linux系统使用时常常都是命令行操作,也就没有停留在某个界面的说法,而是常常以“路径”来描述。Linux中的路径描述分两种,分别是“绝对路径”与“相对路径”
绝对路径:从系统根目录开始描述的目录或文件路径称为绝对路径 /***
相对路径:从非系统根目录(通常为当前位置)开始描述的其他目录或文件路径称为相对路径
绝对路径的描述更加精确;相对路径的描述更加方便
绝对路径,shell脚本,自动化程序脚本用的多一些;相对路径,命令行手动写一些命令用相对多一些
切换路径的命令:
cd 路径描述 比如cd /home/test 切到/home/test这个目录下
cd / #切换到根目录
cd ~ #切换到用户主目录
cd .. #切换到上一级目录
cd - #切换到上一次的目录
除非在路径开头加/,默认切换路径都是以当前目录为起始的相对路径
/ #正斜线 常用于Linux系统
\ #反斜线 常用于Windows系统
返回绝对路径 print working directory
该命令常用于确认当前路径是否符合要求,或是在shell脚本中用于获取当前路径的绝对路径
包括文件或下一级路径 list
Linux命令行下,各个路径的内容需要发出指令才会显示内容,不像Windows系统,一旦进入到文件夹,文件夹中有什么内容会直接显示
ls #默认显示当前路径下的普通文件(一些隐藏文件不会显示)
ls -l 或者 ll #显示路径下各目录或文件的详细信息,可简写为ll (注意,不是所有的Linux版本都可以简化该命令),详细内容包括以下内容:
参数
-a 列出所有文件,包括以 "." 开头的隐含文件。
-r 逆序排列。
-t 按时间信息排序。
make direcotry
mkdir dir 在当前路径下创建目录dir (默认情况下,mkdir创建目录时,必须存在父目录,即不能递归创建)
-p 为所给出的目录建立丢失了的父目录。所建立的父目录的模式 相当于用命令 umask 进行了 'u+wx' 的设置。忽略参数对已存 在的目录的覆盖。(例如:已存在目录/a,当用到命令'mkdir /a'时报错,而'mkdir -p /a'则不会。),也是递归创建
touch filename #在当前路径下创建文件(记得添加后缀)
touch /path/filename #在指定路径下创建文件
touch old_filename #修改源文件的修改时间
remove
rm filename #删除当前路径下的指定文件,会询问确认
!!!慎用移除命令:删除时必须指定删除的内容;别用 rm -rf *删天删地删空气,运行完后就跑路。
-f 忽略不存在的文件,并且从不向用户提示。
-i 提示是否移除每个文件。如果回答是否定的,文件将被跳过。
-r 递归地移除目录中的内容。也可以指定这个参数来删除目录
-v 在移除每个文件之前打印其名称。
remove directory
rmdir dir #删除某目录 由于rm既可以删除目录又可以删除文件,习惯上是以rm -r来删除目录
copy
cp old_path/old_filename new_path/new_filename 可以重命名
cp -r #可以拷贝目录和目录下的所有文件(递归复制)
-r 递归复制目录,如果对象不是普通文件或目录那么做一些未 声明处理.
move
mv old_path/filename new_path/new_filename #将某个文件从旧路径移动到新路径,相当于剪切,移动时也可以顺便修改名字或是单纯的修改名字而不修改路径,相当于重命名
zip unzip #压缩与解压缩 压缩包以.zip为后缀
使用前需下载这两个命令,下载指令:yum -y install zip unzip
zip compress_name.zip filenames #将文件压缩并以compress_name命名压缩包
-r #递归压缩
-m #压缩后删除原始文件
-q #隐藏压缩过程
unzip compress_name.zip #将压缩包解压到当前文件夹
-d /path #将压缩包解压到指定文件夹
-v 或 -l #显示压缩包内容但不解压
gzip gunzip #压缩与解压缩,压缩文件以.gz为后缀
gzip filenames/* #将指定文件或路径下的文件分别压缩 (注意,没有指定压缩包名字)
gzip *.txt #将所有txt文件分别压缩 (注意,没有指定压缩包名字)
gunzip compress_name.gz #将压缩文件解压到当前路径
tar #目录或文件打包,后缀为.tar
tar -cvf compress_name.tar /path/filenames #将多个文件或目录打包
-c #指定多个文件或目录打包
-v #显示打包过程
-f #指定包名
tar -xvf compress_name.tar #将包文件解打包
-x #指定解打包操作
-v #显示解打包过程
-f #指定包名
-C #(大写) 若解压到指定目录可在后边跟此参数并指定目录
若想将目录或文件打包后顺带压缩(.tar.gz),或将压缩后的包一并打开,可使用-z参数调用gzip命令
tar -zcvf compress_name.tar.gz /path/filenames #将多个文件或目录打包后压缩
tar -zxvf compress_name.tar.gz #将压缩包文件解压后解打包
后边这两种是工作中非常常用的两类命令
scp local_file [user@]ip:/path[filename] #将本地文件拷贝到目标服务器
scp [user@]ip:/path/filename local_path[/filename] #将目标服务器文件拷贝到本地
-r #目录拷贝
应用场景:数据库数据文件传输
其中:vi命令是系统自带,vim命令另外下载
安装指令:yum -y install vim
vi #非编辑模式
方向键可以改变光标在文件中的位置
Ctrl+F:向下翻页
Ctrl+B:向上翻页
/要查找的内容:可以在文件中查找字符串内容,向后查找
?要查找的内容:向前查找
dd 删除光标当前行内容
u 是撤销
yy:复制一行内容到剪切版
p:将剪切中的内容粘贴到光标当前行的下一行
:s/原文件内容/新的内容 #将光标当前行的内容进行替换,只替换该行第一个出现的所谓原内容
:s/原文件内容/新的内容/gi #将光标当前行的内容进行替换 其中g表示全部, i表示忽略大小写
:%s/原文件内容/新的内容/gi #全文替换
:w 保存文件
:q 退出vim命令,不保存 --
:wq 保存并退出vi命令 --
:w! 强制保存
:q! 强制退出,不保存 --
:wq! 强制保存并退出
:set ff查看文件格式(unix和dos 另外还有mac格式)应用场景:传输文件的时候
i进入编辑模式,光标在当前行
o进入编辑模式,光标在当前行的下一行(创建一个新行)
ESC退出编辑模式
cat #完整查看文件内容
cat path/filename 查看文件filename中的内容,可在文件前指定路径
tac #倒叙完整查看文件内容
more #分页查看文件内容,空格或者回车向下翻页
more path/filename
less #分页查看文件内容,空格或回车向下翻页(退出时需要输入q)
less path/filename
head #从文件的开始位置查看文件的若干行
head [-n] path/filename:n是一个正整数,表示查看文件的前n行数据
tail #从文件的末尾查看文件若干行
tail [-n] path/filename:n是一个正整数,表示查看文件的后n行数据
tail -f:动态地查看文件的最新内容 :应用场景一般查看是日志文件 常用实时查看输出内容
Ctrl+C 退出查看
默认情况下会以字符为排序标准,若想以数值排序,需加-n参数
-b 忽略排序字段或关键字中开头的空格
-l 按照当前环境排序.
-r 颠倒比较的结果.
-s 通过屏蔽最后的再分类比较来稳定排序.
-n 按照字符串的数值顺序比较,暗含-b
grep #搜索符合的行
grep str filename 从文件中找到含有str的行
-v 改为查找不含str的行
-n 显示符合要求的行的行号
-c 显示符合要求的行的数量
-i 忽略大小写
-E 将模式 PATTERN 作为一个扩展的正则表达式来解释 开启正则表达式
-q 安静,不向标准输出写任何东西
find #搜索符合的文件或目录
find [/path] -name xxx 从目录(若未指定则为当前目录)中找到名为xxx的文件或目录
find -type f 显示当前目录及子目录中的普通文件 file
-type d 显示当前目录及子目录中的路径 directory
printf '格式字符串' 文本内容或文件
%s: 字符串 \n 换行
%d: 数字 --
%m.nf: 表示小数,其中m是总长度 n是小数精度
printf '%s %s\n' 1 2 3 4 5 6
printf '(%s)\n' 1 2 3
常用转义字符:
\n 换行
\r 回车
\t 水平制表符 (tab)
\v 垂直制表符
\\ 表示\本身
(word count)
wc filename 查看指定文件的行数、单词数、和大小
-w 查看单词数
-l 查看行数
-c 输出字节统计数
cut -f n -d '分隔符'
-f 指定被截取的列
-d 指定以何种符号判定列与列的分隔 默认为一个tab键
一行数据→经过sed指令处理→一行新数据
参数:
-n 显示处理结果
-i 使编辑指令作用到文件
指令:
nd 删除 n为正整数,将第n行删除
s 替换 后跟替换格式,和之前vi编辑器中差不多
np 打印 n为正整数,将第n行打印 通常和-n参数使用
ni 添加 后跟字符串,n为正整数,在第n行之前添加内容
na 添加 后跟字符串,n为正整数,在第n行之后添加内容
sed 's/xxx/yyy/' filename 将文件中每一行的xxx替换为yyy显示 --不用再加%
sed '2p' filename 将文件中的第二行额外打印 添加-n后只有第二行打印
cmd窗口中也有个相同功能的命令:cls
echo str 输出指定内容
echo $var 输出变量内容 eg:$HOSTNAME -计算机名 $PWD -当前路径 $USER当前用户
command > output_file
将命令结果输出到某文件,若文件不存在则直接创建,若文件存在则覆盖
command >> output_file
将命令结果输出到某文件,若文件不存在则直接创建,若文件存在则追加
应用场景 记录日志
命令 | 命令 #将前面的命令的执行结果,作为参数,传下一个命令
head -1 xxx.txt | sed 's/yy/zz/g' 将文件xxx.txt中的第一行查出,并将其中的yy替换成zz
command <
>EOF
应用场景:将会常用于sqlplus中
useradd - 添加用户
-d 默认会在/home目录下为用户创建同名的主目录,通过-d可指定主目录 另若该目录不存在,建议加上-m
-g 指定用户所属的用户组
-G 指定用户所属的附加组 在对应用户登录状态下使用groups命令可返回该用户属组信息
(用户可归属多个用户组,其中通过-g指定的为主组,-G指定的为附加组,以,分隔)
userdel - 删除用户
-r 删除用户及用户下所有内容
usermod - 修改用户 修改参数如useradd
passwd - 修改密码
passwd user 输入两次密码确认
su - 切换用户
su - user 切换用户 通过root用户切换至其他用户时不用验证密码,可通过exit退出到之前的用户
who - 查看登录系统的用户
whoami - 查看当前用户
groupadd - 添加组
groupadd group
groupdel - 删除组
groupdel group
groupmod - 修改组
-n 修改组名
rwx rwx rwx
创建用户(属主)创建用户所属组(属组) 其他用户
2进制
r 4 读 ,w 2 写 , x 1执行
rw-r--r-- 6 4 4
755 #rwxr-xr-x
644 #rw-r--r--
chmod - 改变权限
-R 当对象为目录时,改变目录及目录下所有子内容权限
chown - 改变所属
chown user filename 改变属主
chown user:group filename 改变属组
-R 当对象为目录时,改变目录及目录下所有子内容所属
ping ip地址|域名
ssh user@ip[:端口号]
1) ip正确
2) 对应机器是开着的
3) 防火墙没有限制或者开放了连接端口
4) 处在同一个网络上
ip addr - 查看网卡信息
ifconfig - 查看网卡信息
网卡文件位置:/etc/sysconfig/network-scripts/ifcfg-enp0s3
设置为静态IP的方法
--step1:将IP获取方式改为静态
BOOTPROTO="static"
--step2:添加IP信息
IPADDR="192.168.10.123" # 设置的静态IP地址
NETMASK="255.255.255.0" # 子网掩码
GATEWAY="192.168.10.2" # 网关地址
--step3:重启网络服务
systemcel restart network
hostname - 计算机名查看
hostnamectl - 计算机名修改
hostnamectl set-hostname new_name
ip映射(本地解析)文件:/etc/hosts
可添加:ip hostname
防火墙设置
centos6及以前版本
service iptable stop #关闭防火墙
service iptable start #打开防火墙
chkconfig iptable off #永久关闭防火墙
centos7及以上版本
systemctl stop firewalld #停止防火墙
systemctl start firewalld #开启防火墙
systemctl status firewalld #查看防火墙状态
systemctl disable firewalld #使防火墙不可用(不会停止防火墙)
systemctl enable firewalld #使防火墙可用(不会开启防火墙)
ps -ef | grep xxx 直接查找有关xxx的进程
ps -ef | grep java
结束进程时写进程号即可 注意不要写错 也不要写父进程
已用和可用相加并不一定等于总计 这是系统本身的原因
物理内存和交换分区 物理内存上的负荷将满会将一部分进程挪到swap交换空间,等物理内存释放资源后挪回