linux中命令格式是什么?
命令 [参数选项] [文件或路径]
中括号表示可选,命令的参数与路径文件可选
参数选择表示一个命令的不同功能
命令 和 参数选项 中必有一空格,多个参数连在一起写
几乎所有命令都可以直接接文件
什么是相对路径和绝对路径?
绝对路径: 从头开始的路径,对于window是从盘符开始的路径,对于linux为以 / 开始的目录
如: /etc /root/data
相对路径: 不从头开始,不从根开始的路径
如: data/
mkdir 创建目录
mkdir /data # 在根目录下创建data目录
-p 递归创建目录
mkdir -p /data/a/b # 在/data/目录下创建a目录,再在a目录下创建b目录
ls 列表目录文件
ls / # 列根目录下内容
-l(long)长格式,-d(directorys)查看目录
ls -l /root # 查看 /root目录下未隐藏的文件和目录长信息
ls -ld /root # 查看 /root 目录本身长信息
-a 查询包含隐藏的所有文件
ls -a /root # 查看 /root 目录下所以文件和目录信息,包括以点开头的隐藏文件信息
-t 按修改时间排序
ls -lt /root # 查看 /root 目录下,最新修改时间的文件在最上面
-r 按创建时间倒序排序,翻转排序,最新的放在下边
ls -lrt /root # 查看 /root 目录下,通过 r ,把最新修改时间的文件在放最下面,翻转
--color=auto ls显示颜色,或grep过滤满足条件添加颜色
grep --color=auto 3306 /etc/services # 对查询结果关键字添加标记颜色
-h 人类可读
ls -lh /root # 最直观感受,文件大小换算成k为单位
-i 文件i节点
ls -ihl # 最直观每行结果前面多个一串数字
--time-style=long-iso 规范时间显示
ls -lh --time-style=long-iso /root # 最直观感受是时间的顺序,按年月日时分格式化了
cd 切换目录路径
cd ~ # 回到用户家目录 cd /etc # 切换到/etc 目录下 cd # 不加 - 默认也是回到家目录 cd . # 返回当前目录 cd .. # 返回上级目录
pwd 打印当前所在目录的绝对路径
touch 创建文件或更新时间戳,如果文件存在,把该文件更新到当前时间戳
touch /data/hello.txt # 绝对路径下,在 /data/目录下创建一个hello.txt文件 touch data/hello.txt # 相对路径下,在当前目录下data/目录中创建一个hello.txt文件 touch /data/hello.txt data/hello.txt # 以上两个文件可以同时创建
vi 编辑文件,没有就新建,相当于windows记事本
初始进入命令模式,按i 或 a 进入编辑模式,按esc退出编辑模式,按 : wq 退出vi
vim 复杂编辑器 写脚本(shell, python)
echo 打印
echo 'My name is BeiMenChuiXue'
echo 联合 > 和 >> 使用,分别是输出重定向和输出追加重定向
echo 'My name is BeiMenChuiXue' > Name.txt # 会清空 Name.txt内容添加 My name is BeiMenChuiXue内容进去
echo 'My name is BeiMenChuiXue' >> Name.txt # 把 My name is BeiMenChuiXue 这短字符追加到 Name.txt文件内容后面
cat 浏览文件内容 联合 重定向 使用,往文件内写入内容
-n 显示行号
seq 1 100 > Name.txt # 写入数据 cat Name.txt # 浏览内容 cat -n Name.txt # 显示内容行号
多行追加,用户写脚本
cat>>get_html.py<<jia import requests url = 'https://www.baidu.com/' res = requests.get(url=url) if res.status_code == 200: print 'OK' else: print "Faile" print "done!" > jia # 写了一段python脚本代码,获取百度首页网页,jia字符是开始和结束标记,是成对的任意字符
xargs 从标准输入获取内容创建和执行命令
-n 按 多少组字符分行,每组字符以空格分开
echo stu{01..20} |xargs -n 5 # 把 stu01 ~ stu20 按5个词组分组,占一行
有哪些特殊符号?
> 输出重定向: 把前面输出的内容输入到后边的文件中,会清空原文件内容
>Name.txt # 清空Name.txt 内容
>> 输出追加重定向 把前面输出的东西追加输入到后边的文件文件尾部,不会清空文件内容
seq 100 >> Name.txt # 向 Name.txt 追加 1 到 100 个数字字符
< 输入重定向 改变命令的输入,后面指定输入内容,前面跟文件名
xargs -n 5 < Name.txt # 把 Name.txt的内容当做输入给xargs命令
<< 追加输入重定向 后面跟字符串,用来表示”输入结束”
2> 错误重定向
ech 'hell word' 2> error.txt # 错误信息写入error.txt文件
2>> 追加错误重定向
说明:
1. 箭头的指向就是数据的流向
2. 0 标准输入 < 或 << 数据流从右向左
3. 1 标准输出 > 或 > 数据从左向右
4. 2 错误输出 2> 或 2>> 错误数据输出,数据量从左到右
. 当前目录
.. 上一级目录
/ 根目录
| 管道,上一个命令的结果作为下一个命令处理对象
; 分割两个命令,并没有因果关系
{} 创建多个或指定文化或目录
mkdir /data/{test1, test2}/data.txt -p # 同时/data目录下创建 test1, test2两个目录同时这两个目录下包含 data.txt 文件
touch {1..10}.txt # 当前目录下创建 1 ~10 个文件,并按 1.txt~10.txt 创建
! 调用最近使用的命令, 取反
!m 查询最近使用的以m开头的命令
!33 执行history查询出来33指定的命令
find /oldboy -type f ! -name ‘test.sh’ # 取oldboy目录下,名字非test.sh的文件
!! 调用最近使用的命名
! 和 !! 联合history使用
~ 当前用户的家目录
- 上一次所在目录
. 单个任意字符
.* 代表所有字符
转义字符,把带有特殊含义的字符还原成原原本本的字符
正则表达式只适用与linux三剑客(awk sed grep), 普通命令只适用通配符
如何把正确的和错误的都放入同一个文件?
2>&1 或 &> 正确的错误都放入同一个文件
cho oldboy > oldboy.txt 2>&1 # 错误信息写入oldboy.txt echo oldboy &> oldboy.txt # 正确信息写入oldboy.txt
2>>&1 或 &>> 追加
echo hhhhhh &>> oldboy.txt # 正确追加 cho hhhhhh &>> oldboy.txt # 错误追加
cp 拷贝文件或目录,不加参数只能拷贝文件
cp Name.txt /tmp/ # 把当前目录下 Name.txt 拷贝到 /tmp目录下
-p 档案属性一起复制过去
cp -p Name.txt /tmp/ # 复制文件时间把文件属性也一同带过去
-r 递归复制目录
cp -r /root/ /tmp/ # 把 /root 目录,拷贝到 /tmp 目录下
-a 相当于-pdr
-d 复制连接文件,不复制连接文件指向的文件
cp -d to_link /tmp/ # 复制软链接到 /tmp 目录下
mv 移动或修改名 移动时候,目录最后一个斜杠不要加
mv /data /tmp # 把data目录移到tmp目录下
mv boy.txt girl.txt # 把boy.txt文件名改成girl.txt
rm 删除(少用和谨慎使用,最好不要使用) 一旦删除,无法恢复,删除前先备份
-f 强制删除
rm -f /root/Name.txt # 强制删除 Name.txt 文件
-r 删除目录
rm -rf /data # 强制删除 /data 目录
find 查找 最重要命令之一
-type f / d f 表示文件, d表示目录, c字符类型,b(block)
-name 指明名字
-exec 命令 {} . 对查询结果进行处理
find /root -type f -name ‘Name.txt’ -exec rm {} ; #从 /root目录下查询名字为 Name.txt 的文件,对查询结果执行rm命名
-mtime 时间数字
+7 七天以前
7 第七天
-7 最近7天
-o or 取或
-a and 取并
find /data -type f -name ‘*.txt’ |xargs rm -f # 从 data目录下查询所有以.txt结尾的文件,通过|xargs组成一行命名,执行rm -f
grep 过滤内容 非常重要,三剑客排行老三
-v 排除内容
grep -v 'Word' Name.txt # 查询 Name.txt 文件内容,不包含 Word的其他行内容
-E 表示可以通过搜索多个字符,以 | 隔开
grep -E “3306 | 1521” /etc/service
-i 不区分大小写
grep -iv 'word' Name.txt # i不区分大小写
head 读一个文件前n行内容,默认前10行
head -1 Name.txt # 查看 Name.txt 文件中内容第一行
tail 读一个文件后n行数据,默认10行
tail -1 Name.txt # 读取文件最后一行内容
yum 安装软件包
-y 直接装
yum install -y tree # 安装 tree 软件包
tree 展示目录树结构
-L 指定展现几级目录
tree -L 1 /root/ # 显示 /root 目录下,1层目录结构
-d 表示只查看目录
tree -Ld 1 /root/ # 只查看 /root 下只含有 目录 的一层目录结构
alias 别名
作用: 给危险命令加一些保护参数,防止误错作,把复杂命令改成简单命令
直接输入 alias ,查看已经设置好的别名信息
alias py2=python # 临时把python命令改为py2,系统重启生效
unalias 取消别名
unalias py2 # 取消py2对应的命令
如何做到永久生效?
按格式写入这两个文件
.bashrc 当前用户生效
/etc/profile 所有用户生效
seq 打印序列
-s 指定分隔符
seq -s" " 1 20 # 打印1 到 20 的字符,中间以空格隔开
seq -s" " 1 2 20 # 间隔 2 打印 1到20 字符,中间以空格隔开
sed 流编辑器,实现对文件的增删改查替换,三剑客排名第二
-n 取消默认输出,按规则打印想要内容
seq 1 100 > Name.txt # 写入数据 sed -n '1,2,20'p Name.txt # 打印 Name.txt 中 间隔2行从第1行到 20行内容
p 表示打印内容
sed -n '$'p Name.txt # 打印最后一行内容
s 查找并替换,与g联合使用
sed "s#99#new#g" Name.txt # 找出Name.txt所有内容 含有 99 字符的全部替换成new字符,打印结果
g 全局匹配替换
-i 修改内容
sed -i "s#99#new#g" Name.txt # 找出Name.txt所有内容 含有 99 字符的全部替换成new字符,更改生效
awk 过滤、输出内容,一门语言
NR 代表行号, $1 第一列, $2第二列,依次轮推,但是$0表示一行,$NF最后一列
seq 1 10 > seq.txt # 写入数据 awk 'NR>1&&NR<5' seq.txt # 查找seq.txt内容中 2 - 4行内容
-F 指定分隔符
echo '1:2:3:4:5:6:7:8:9'> awk.test # 写入内容 awk -F ':' '{print $1}' awk.test # 打印以 : 隔开的第一个内容
man 所有命令的使用方法,帮助文档
man cp # 查看cp命令详情使用方法
相似: --help, 有些命令时bash内置命令,不能通过man查询,也看不到命令位
date 查看时间
-s 更改时间
date -s '2017/11/21 15:43' # 更改系统时间,格式为:年/月/日/ 时:分,
+ 格式化时间
%H 小时
%M 分钟
%S 秒
%X 时分秒
%F 年-月-日
%w 一周第几天
date +%Y-%m-%d %H:%M:%S 年-月-日 时:分:秒
企业应用:
day 天
Hour 时
Min 分
tar cvzf date_`date +%F`.tar.gz date/ # 一般接在文件名后面 tar zcvf data_$(date +%F).tar.gz date/ # 同上 date +%F -d '-2day' # 求前天的时间 date +%F -d '-24Hour ' # 24小时以前 date +%F %X -d '+4Hour' # 4小时以后
which 查询命令所在路径
which cp # 查询cp命令所在决绝路径,一些内置bash命令无法查找到位置
less 按页显示文件内容,可以按 n或enter 一行一行显示出来, 按 空格 一页一样显示,按b可以回退
chkconfig 设置开机自启动服务
-- list 查询服务启动级别,默认全部,指定服务名显示某服务启动级别
chkconfig --list sshd # 查询sshd服务的开机自启动对应级别
-- level 设置服务启动级别
on/off 开启或关闭服务,默认2345级别
chkconfig crond off #关闭 crond 服务 chkconfig crond on # 开启 crond 服务 chkconfig --list | grep '3:on' # 查询3级别自启的服务
dumpe2fs 查询文件系统内部信息(元数据)
dumpe2fs /dev/sda1 | grep -i ‘inode size’ # 查询sda1分区inode大小
df 查询磁盘信息
-i 查询分区inode使用节点,剩余inode
df -i # 查询 inode 使用情况
-h 查询磁盘剩余空间(Block)
df -h # 查询 block 使用情况
磁盘空间满了,有两项参数指定,inode是否满了,block是否满了,任何一项满了,都无法再存放数据了
磁盘满的一个特征: (no space left on device)
file 查询文件类型
file Name.txt /root # 查询 Name.txt文件的文件类型 和 /root 目录的文件类型
last 查询用户登录信息,对应 /var/log/wtmp文件
lastlog 显示最近用户是否登录过,对应/var/log/lastlog文件