该博客仅仅是为了记录自己工作和学习过程中的一些知识,方便以后查询使用!
常用快捷键
ctrl+R 用于查找用过的命令
ctrl+L 清理终端的内容,即清屏
ctrl+D 关闭当前终端
ctrl+A 光标跳到命令行的开头位置
ctrl+E 光标跳到命令行的结束位置
ctrl+C 终止大部分终端的命令和正在执行的程序
ls 当前目录下的所有文件
ls -a 当前目录下的所有文件,包括隐藏文件
ls -l 当前目录下的详细列表,文件大小以字节的形式显示
ls -lh 文件大小以人类可读的方式显示
ls -lt 文件按照最近修改时间排序
也可以整合上述所有的短命令:
ls -lath
du 显示目录包含的文件大小
du-h 以人类可读的方式显示文件大小
du -sh 只显示总大小
cat/less 显示文件内容
小提示:使用less命令停在END,无法出来,只需要按下q键就可以退出;
cat 一次性显示文件的所有内容
less 分页显示文件内容
分批次读取文件内容,可按住上下箭头去进行翻页
q退出
=显示你在文件中的具体位置,譬如行数
/进入搜索模式 输入你要搜索的关键字,然后enter,可以标记出所有搜索的结果,
按住n就可以在搜索结果之间切换
n键切换到下一个搜索结果
N键切换到上一个搜索结果
head/tail
head 显示文件开头,默认是10行
-n 显示文件开头的n行
tail 显示文件结尾,默认10行
-n 显示文件结尾的n行
-f 实时追踪文件的更新,默认每1秒检查文件更新
-s 指定具体的更新间隔 秒为单位
touch 创建空白文件
touch 文件名
mkdir 创建一个目录
-p 递归的创建目录结构
mkdir -p one/two/three 先创建one目录,在one目录下创建two目录,在two目录下创建three目录
cp 拷贝文件/目录 该命令原文件还在
复制文件到同一个目录/不同目录
cp 原文件 副本文件 同一目录下
cp 原文件 目录名/副本文件 拷贝到不同目录
拷贝目录
cp -r 原目录 副本目录
此外,在cp命令时,可以使用*通配符
cp *.txt folder 把当前目录下所有的txt文件拷贝到folder文件夹下
cp ha* folder 把当前目录下所有以ha开头的文件拷贝到folder子目录/文件夹下
mv 移动/重命名 文件/目录 该命令原文件不在
移动文件
mv 原文件 移动后文件
mv new_file one 将new_file文件移动到one文件
移动目录
mv 原目录 移动后目录
也可以使用通配符*
rm 删除文件和目录
rm命令一旦执行,较难恢复,所以使用时要谨慎
rm 文件 如果需要移除多个文件,文件名之间用空格隔开就可以 :rm file1 file2 file3
rm -i 向用户确认是否要删除文件 y/n rm -i renamed_file
rm -r 表示递归的删除 rm -r one 会删除one目录,包括one下的子目录及文件
温馨提示:无论什么情况下,都不要执行 rm -rf/
用户相关:
首先,linux用户可以分为超级用户root和普通用户,root拥有至高无上的所有权限,普通用户只有部分权限;
sudo 以root身份执行命令
linux下的用户组织:
root 超级用户 拥有所有权限
因此,如果我们要运行只有root才有权限的命令 root command;
sudo command 暂时切换为root身份
sudo su 永久切换为root身份
退出root身份,使用exit命令即可
另外,如果不知道自己是什么用户或者身份,可以通过命令whoami来进行查看
另外,有几个常用命令必须在root下执行:
adduser 添加新用户 adduser newuser添加newuser用户
passwd 修改用户密码 passwd newuser修改newuser用户对应的密码
deluser 删除用户 deluser newuser删除newuser用户;如果单单使用deluser 用户名只能删除该用户,不能删除home目录下的用户目录,为了连同用户对应的home下目录一同删除,可以加参数--remove-home来实现;
温馨提示:
adduser/deluser是只有Debian一组才有的命令,一般的linux发行版,添加用户和删除用户都是useradd/userdel;另外,普通用户之间的切换su 用户名 就可以实现;
用户群组相关:
addgroup 添加群组 需要root权限去执行 addgroup friends 添加群组friends
usermod 修改用户账号,需要root权限去执行,最常用的两个参数:
-l 对用户重命名
-g 修改用户所在群组
格式:uermod -g 群组名 用户名
usermod -g friends newuser就是将newuser用户移动到friends群组中去
-G 一次性将一个用户添加到多个群组
格式 usermod -G 群组1,群组2,群组3 newuser
注意,群组名之间用逗号分割,并且没有空格
注意,参数-g/-G会把用户从原先的群组移除,然后添加到新群组中去,
如果想不移除原来的群组,有添加到新的群组,可以添加参数-a
-ag/-aG即可,格式类似
groups 用来查看用户属于那些群组
格式 groups 用户名 groups newuser
delgroup 删除群组
格式 delgroup 群组名
chown 改变文件的所有者
格式 chown owner filename;
chgrp 修改文件所在的群组
格式 chgrp 新的群组 文件名
说明,其实chown也可以修改文件的群组,
格式 chown 用户名:群组 文件名
-R 递归设置子目录和子文件
访问权限相关:
chmod 修改访问权限
基础知识
ls -l 命令第一列就是权限相关的描述,可以看到很多字母,代表不同的含义:
d 目录
l 链接
r 读
w 写
x 执行
另外,如果对应位置上有字母说明有对应的权限,反之-表示没有该权限
权限划分标准
属性 所有者 群组用户 其他用户
属性 d/l/- 分别表示目录/链接/普通文件
用数字来分配权限
r 4
w 2
x 1
譬如:chmod 641 test.js意思就是test.js的所有者对该文件拥有读和写(4+2),群组拥有读(4),其他用户没有任何权限
用字母来分配权限
u user用户
g group群组用户
o others其他
+ 添加权限
- 去除权限
= 分配权限
#文件 file.txt 的所有者增加读和运行的权限 chmod u+rx file.txt
#文件 file.txt 的群组其他用户增加读的权限 chmod g+r file.txt
#文件 file.txt 的其他用户移除读的权限 chmod o-r file.txt
#文件 file.txt 的群组其他用户增加读的权限,其他用户移除读的权限 chmod g+r o-r file.txt
#文件 file.txt 的群组其他用户和其他用户均移除读的权限 chmod go-r file.txt
#文件 file.txt 的所有用户增加运行的权限 chmod +x file.txt
#文件 file.txt 的所有者分配读,写和执行的权限;群组其他用户分配读的权限,不能写或执行;其他用户没有任何权限。
chmod u=rwx,g=r,o=- file.txt
grep 筛选数据
grep text file;
grep erricsson test_1049.js;
如果查找的文本中间包含空格,则需要把查找的空格用""括起来;
grep "Hello World" file2;
-i 忽略大小写进行查找;grep -i erricsson test_1049.js;
-n 显示行号;grep -n erricsson test_1049.js;
-r 在目录及其子目录下递归调用;grep -r "Hello World" folder/
sort 对文件进行排序
格式 sort 文件名;sort test.js
-o 将排序后的内容写入到新文件;
格式 sort -o 新文件 原文件;sort -o name_sorted.txt name.txt;
-r 倒序排序
格式:sort -r 文件;sort -r name.txt
-R 随机排序
格式 sort -R 文件;sort -R name.txt
-n 对数字排序
格式 sort -n 文件 ;sort -n name.txt
wc 文件的统计
格式 wc 文件;wc name.txt
-l 统计行数
wc -l name.txt
-w 统计单词数
wc -w name.txt
-c 统计字节数
wc -c name.txt
-m 统计字符数
uniq 删除文件中的重复内容
格式 uniq 文件名;
不会改变原文件的内容,只会把处理的内容显示出来;
格式 uniq repeat.txt unique.txt
格式 uniq -c repeat.txt 统计重复的行数;
格式 uniq -d repeat.txt 只显示重复的值
cut 剪切文件的一部分内容
单纯的cut 用于对文件的每一行进行cut处理
-c 参数 :根据字符数来剪切
cut -c 2-4 name.txt;name的每一行只保留第2-4个字符
流,管道,重定向
重定向:本来显示在终端的命令结果,输送到别的地方,到其他文件或者作为其他命令的输入
管道:把两个命令链接起来,一个命令的输出作为另一个命令的输入
所以,可以看到,一个命令,可以到终端/文件/另一个命令的输入
重定向:
>重定向到文件中,如果文件已经存在,则覆盖原文件,文件不存在,则创建文件;
>>重定向到文件末尾,如果文件不存在,则创建文件
stdin/stout/sterr 标准输入/输出/错误;对应的文件描述符分别为0/1/2
2>&1 将标准输出和标准错误全部重定向到同一个地方
cat not_exist_file.csv>results.txt 2>&1
2>标准错误输出重定向到文件,如果文件存在,覆盖文件,文件不存在,创建文件
2>> 将标准错误输出重定向到文件末尾,如果文件不存在,创建文件
2>&1 将标准输出和标准错误输出重定向到同一个地方
管道符号:|
监视系统活动和查看进程
w 查看当前系统有那些用户使用,在做什么
时间(date) 运行时间(uptime) 负载 登录的用户;
tload 绘制负载随时间变化的负载曲线图;
ps 进程的静态列表,用于显示当前系统中的进程;
ps -ef 列出所有进程
ps -efH以乔木状列出所有进程;
ps -u 用户名:列出此用户运行的进程
ps -ef -u 用户名;
top 进程的动态列表
q 退出top命令
上下箭头类似于翻页;
u 根据用户来过滤,输入用户,按回车
ctrl+C 停止终端正在运行的进行
kill pid :结束某一个进程
killall 进程名: 结束多个进程
halt 关闭系统
reboot 重启系统
注意,这两个命令必须以root身份运行;
前台进程和后台进程
默认情况下,用户创建的都是前台进程;
& 在命令后面加上&,让程序在后台运行;
但是此时后端进程仍与终端相关联,如果关闭终端,后台进程也会关闭;
nohup 可以使进程与终端分开;
格式 nohup command;
更一般的情况下,是将nohup和&联合使用:
nohup command &;
date查看系统时间;
at 延时或者定时执行一个任务,单次
在指定时刻执行任务:
先用at 时间 指定任务执行时间;
然后输入想要执行的命令;
在指定间隔之后执行任务:
at now + xx minutes/hours/days/weeks/months/years
at now +7 weeks;
atq 列出正在等待执行的at任务
atrm 删除正在等待执行的at任务
sleep xx 休息多少秒
sleep xx m/h/d 休息xx分钟、小时、天
&& 逻辑与 &&前面的命令执行成功才会执行后面的
|| 逻辑或 ||前面的命令执行失败才会执行||后面的命令
crontab 定时执行任务,多用于重复多次执行;
crontab -e 修改crontab文件
crontab -l 显示crontab文件
crontab -r 删除crontab文件
常用其他命令
hostname 查看主机名
w/who 显示登陆的用户和对应正在运行的进程
uptime 查看系统运行时间
uname -a 查看系统信息
date 显示和设置系统日期和时间
id 显示用户属性
文件归档和处理
paste 合并文件
格式 paste file1 file2
-d 指定各个文件中的各行在合并中所使用的分隔符
格式 paste -d 分隔符 file1 file2
ex:paste -d ':' file1 file2/paste -d, file1 file2
-s 顺序的合并文件,将文件中的所有行的内容合并为一行
格式 paste -s -d, file1 file2
gzip 压缩文件
gzip filename 压缩指定的文件,生成一个默认以.gz结尾的文件,并删除原文件
gzip -d filename.gz 解压缩指定的文件
bzip2 -k filename 压缩文件并保留原始文件
bzip2 -df filenmae.bz2 解压文件
gunzip filename.gz gunzip命令与gzip命令相对应,功能类似于gzip -d filename.gz
gunzip -c filename.gz > filename
-c 用于将解压后的文件重定向,从而保留原始文件
bunzip2 filename.bz2 解压缩文件
bunzip2 -k filename.bz2 解压缩文件并保留原始文件
tar 打包和解压文件
tar命令是linux中最主要的归档工具,使用tar命令归档后生成的文件我们称之为tar包;
tar -cvf 创建一个未经压缩的tar包,其中各参数含义如下:
-c 创建一个新的归档
-v 冗长的列出被处理的文件
-f 指定归档文件的名称
tar -czvf 对归档后的文件进行gzip压缩
ex:tar -czvf filename.tar.gz filename
tar -xzvf 对使用gzip压缩的tar进行解压
ex:tar -xzvf filename.tar.gz
mount/unmout挂载和卸载
df 报告文件系统磁盘空间利用率
-a 显示所有文件系统的信息,包括虚拟文件系统;
-h 以人类可读的格式显示相应的结果信息
-T 显示文件系统类型的信息
-t 仅显示某一指定文件系统类型的文件系统信息
ex:df -t ext3
-m 以MB为单位显示文件信息
du 评估文件空间利用率
du 当前目录下所有目录的大小
du file/dirname 指定文件、目录的大小
du -a 递归显示目录中所有文件和目录的大小
du -sh 显示指定目录的总大小
更多参考
shell脚本学习实例:https://blog.csdn.net/wuyundong123/article/details/97273706
shell脚本学习笔记:https://blog.csdn.net/wuyundong123/article/details/97935192