cd 进入目录
用法:cd <目录绝对路径|当前目录的相对路径>
举例:当前在/usr 目录下,想要去/etc目录。使用cd /etc
或者cd ../etc
,分别使用绝对路径和相对路径
ls 列举当前目录下文件
显示全部文件目录(包括隐藏文件、缓存文件和. …):ls -a
显示文件目录的修改时间、权限:ls -l
相当于ll
给文件目录添加类型:ls -F
当文件过多,一般配合grep使用,举例:
-
ls -F | grep /
列举当前目录下的所有目录 -
ls | grep test
列举当前目录下带"test"字符串的文件或目录
grep 筛选字符串
查询某文件 某些文字的上下文grep -A 10 'csl' ./log.log
:查询log.log文件中第一个csl字符的下文十行grep -B 10 'csl' ./log.log
:上文十行grep -C 10 'csl' ./log.log
:上下文十行
使用perl的正则表达式语法grep -P '/^[0-9]{5}$/'
:匹配五个数字
通常和其他命令组合使用
举例:
-
ps -ef | grep tomcat
:查找包含字符串"tomcat"的运行的进程或命令 -
ls | grep mysql
:列举当前目录包含字符串"mysql"的文件或目录
mv 移动/改名
mv <文件名> <目的目录|目的文件名>
:移动文件到目的目录,或者移动并改名文件到目的文件名mv a.txt b.txt c.sh d/ f.md -t test
移动a.txt b.txt c.sh d/ f.md到test目录
pwd 打印当前路径
pwd
:打印当前位置的绝对路径
cp 复制
cp -rf <源文件或目录> <目的文件或目录>
:将源文件目录复制到目的文件目录;r 递归复制(复制目录的子目录) ,f 不提示强制复制源覆盖目的(这个一般情况下不起作用)
\cp -rf <源文件或目录> <目的文件或目录>
:不提示 强制进行copy,强制覆盖
mkdir 创建目录
mkdir test
:创建test目录mkdir -p test_father/test_son test_mother/test_son
:递归创建 “test_father” 和 “test_son” 目录,test_mother与其下的test_sonmkdir -p test/{a,b,c,d}
:递归创建test和其下的abcd四个目录
rm 删除
rm -rf <文件名>
:强制删除文件或目录,r递归删除,f不提示
tar
tar zxvf <文件名前缀.tar.gz> -C <目标文件路径>
:解压.tar.gz压缩包,
- z:支持gzip文件.gz
- x:从压缩文件中提取文件
- v:显示操作过程
- f:指定压缩文件
- -C:解压到
tar zcvf <压缩文件名前缀.tar.gz> <file1 <...file2 file3 file4>>
:将单个或多个文件或目录压缩成.tar.gz压缩文件
- c:建立新的压缩文件
ps:不加z 是tar文件??
将一个大文件或目录分包成几个压缩包tar zcvf - bigFile | split -b 500m - bifFile.tar.gz
解析:
先将bigFile,压缩成文件名为-的文件,
split 切割文件,
-b 指定文件大小,
500m 切割后每份文件500MB及以下
- 要切割的文件
bigFile.tar.gz 切割后文件的前缀名(生成的文件是前缀aa,前缀ab,前缀ac....)
将多份压缩包解压成一个文件cat bigFile.tar.gz* | tar zxv
我觉得这么写好看些:cat bigFile.tar.gz* > bigFile.tar.gz | tar zxvf bigFile.tar.gz
unzip
unzip <压缩文件>
:解压压缩文件到当前目录
vim 编辑文本
用法:vim <文本路径/文本名称>
举例:修改当前目录下的test.md文件,使用vim ./test.md
,会进入指令模式。
(vim的三种模式叫法很乱,我按自己的习惯来叫的:
通过按键操作——指令模式
按了’:'之后——命令模式
按了’i’之后——编辑模式
)
指令模式:
i
:进入编辑模式Shift+v
:(此命令也就是’V’ 大写)行选择Shift+V
:(此命令就是’v’ 小写)段落选择v
:视图y
:(行选择、段选择或者视图 选中之后)复制x
:(行选择、段选择或者视图 选中之后)剪切p
:在光标行的下一行 粘贴yy
:复制当前行,3yy
包括当前行向下复制三行dd
:删除当前行,2dd
包括当前行向下删除两行u
:撤销操作Ctrl+r
:反撤销Ctrl+w+w
:多窗口下的切换窗口Ctrl+w+[h\j\k\l]
:多窗口下的指定方向切换窗口(h左,j下,k上,l右)0
:光标移至行首$
:光标移至行尾gg
:光标移至文件首行G
:光标移至文件尾行/
:查找文本;例如查找"root"字符串 /root
。注:转义用 \
-
n
:下一个匹配文本 -
N
:上一个匹配文本
?
:向上查找文本,用法与’/'相同,不过,'n’向上匹配下一个,'N’向下匹配Ctrl+b
:向上翻页Ctrl+f
:向下翻页
编辑模式:
Esc
:退出编辑模式,进入指令模式Ctrl + Insert
:复制Shift + Insert
:粘贴Ctrl + w
:向前删除一个单词Ctrl + n
:自动补全命令
命令模式:
:q
:退出,若文件文本内容改变,会提示需使用强制退出命令才能退出:q!
:不写入强制退出:wq
:强制写入并退出:x
:检测文本内容是否修改,若修改则保存并退出,无修改直接退出:X
:设置密码:vs <文件路径/文件名>
:多列窗口编辑:sp <文件路径/文件名>
:多行窗口编辑:res <+|-|=> <num>
:高度±=多少:vertical res <+|-|=> <num>
:宽度:%s/a/b/g
:将全文出现的a替换成b
- %s:所有行
- g:全部
cat 查看文件(全部列出来)
cat <文件> | tail -n <数字>
:查看<文件>的末尾<数字>行cat <文件> | head -n <数字>
:开头,用法同上
more 查看文件(以页的形式展示)
more <文件>
:
空格:向下一屏
Enter:向下一行
lsof (list open files)查看打开的文件
linux环境一切都以文件的形式存在
lsof -i :<端口号>
查询占用端口的进程信息
ps 查看进程
显示所有的进程和命令行:ps -ef
列举目前内存中运行的程序:ps -aux
ps:ps通常通过 | 管道与 grep 一起使用
举例:ps -ef | grep mysql
:列举包含"mysql"的进程或命令
kill 杀死进程
kill -9 <进程号>
:强制杀死进程;
rz、sz、scp 文件传输
rz
:将文件从window上传到linux系统上
大文件上传,因为特殊字符而中断,使用rz -be
,b:二进制方式上传,e:对所有控制字符转义
sz <路径/文件名称>
:将文件从linux的路径名称下下载到window中
scp -P <port> -r <文件> <用户名>@<ip地址>:<目录或新文件名>
:linux 与linux系统间的文件传输
P 指定端口号
r 递归传输,可理解指定目录
find 查找文件
模板:find <路径> <选项> "<参数>"
-name: 查找 名字为 name 的文件find . -name "mysql*"
:查找当前目录下以"mysql"为开头的文件
-type: 按类型查找
f 文件 find . -type f
d 目录 find . -type d
c 字符设备文件 find . -type c
b 块设备文件 find . -type b
l 链接文件 find . -type l
p 管道文件 find . -type p
-mtime: 查找 按天为阶段 修改的文件
- -n:n天内修改的文件
- +n:n天以外修改的文件
- n:n天修改的文件
find <路径> -mtime 0
:查找路径下所有修改时间在一天内的文件find <路径> -mtime -5
:五天内修改的文件
-mmin按分钟、-size按大小 用法与-mtime相同
rpm 安装包管理
rpm -qa | grep java
:查找包含"java"的安装包
- -q:查询一个包是否安装
- -a:查询所有安装包
rpm -e --nodeps <文件>
: 删除安装包
systemctl
服务管理(兼容service)systemctl <command> <unit>
- command:
- start:启动服务
- stop:停止服务
- restart:重启服务
- reload:重载配置文件
- enable:开机启动
- disable:取消自动开机
- status:查看服务状态
- show:查看服务配置
systemctl start docker
:启动docker服务
service
service stop docker.service
:启动docker服务
chmod 修改权限
chmod <操作对象><操作符><权限> <文件>
:
- 操作对象:
- u:用户user,文件的所有者
- g:用户组,文件所属用户组
- o:其他用户
- a:所有用户
- 操作符:
- +:增加权限
- -:减少权限
- =:直接赋予权限
- 权限:
- r:读权限
- w:写权限
- x:执行权限
chmod a+x <文件>
:添加 所有用户对文件的执行权限
ll 查看文件权限为:“-rwxr-xr–”
第一个"-"表示类型
前三个rwx为文件所有者权限,可读可写可执行
中间三个r-x为文件所属组权限,可读不可写可执行
后三个为其他用户权限,只可读
换成二进制,rwx为 111,也就是十进制的7
r-x为 101,十进制为 5
r–为100,实际值为 4
所以另一种赋予权限的写法:chmod 777 <文件>
:添加 所有用户对文件的读写执行权限
sed
利用脚本处理文本文件sed <动作> <脚本> <文件>
:
- 动作:
- a:新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
- c:取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
- i:插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
- d:删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
我只使用过 -i,
举例,将test.txt文件中的所有name替换成nickname,sed -i "s/name/nickname/g" test.txt
ssh 连接服务器
通过指定端口,跳转连接 服务器ssh <username>@<ip> -p <port>
sftp 安全文件传输协议
用法与ftp基本相同。
远程连接:sftp <username>@<ip>
回车后yes存储秘钥,输入密码,登录sftp终端
文件上传:put -r <local_file_path> <server_file_path>
文件下载:get -r <server_file_path> <local_file_path>
curl 请求Web服务器
curl <参数> <ip>
:访问ip地址,或者域名,返回html
例如:curl baidu.com
:访问百度网站,返回html
参数
-k:忽略证书不受信
-b:指定cookie
-i:指定响应头
curl模拟post请求curl -H 'Content-Type:application/json' -X POST http://ip:port/path -d '{"first":"f","second":"s"}'
echo 打印输出
echo
打印输出
reboot 重启linux
reboot
重启主机
重定向
>
: 重定向,清空目标文件内容,并将源文件内容添加至目标文件尾>>
: 追加重定向,将源内容追加在目标尾部
举例:test.txt有文本"111"echo "123" > test.txt
:test.txt中只有123echo "123" >> test.txt
:test.txt中有111和123
ulimit 控制shell程序的资源
ulimit -a
:显示目前资源限制的设定ulimit -n 2048
:设定打开文件句柄的上限
mount 挂载硬盘
mount /dev/vdb /mnt
:将/dev/vdb硬盘 挂载到 /mnt目录mount -t ext4 /dev/vdb /mnt
:格式化硬盘/dev/vdb 为 ext4格式,并挂载到 /mnt
env 查看环境变量
env
:查看环境变量
export 设置或查看环境变量
export <-fnp><变量名>=<变量值>
参数说明:
- f:代表变量名为函数名称
-n:不显示指定变量,后续指令不再显示指定变量
-p:列出所有shell赋予程序的环境变量
举例:export -p
:列举所有变量export MY_ENV=123
:定义变量并赋值
crontab 定期执行程序
crontab [-u user] file
:为某个用户设定定期执行file文件
举例:
- 创建编辑一个测试输出的文件:
touch /home/test
; - 创建编辑一个文件 作为时程表,
vim crontab_file
,
编辑内容为* * * * * echo 'test' >> '/home/test'
(每分钟执行一次输出test文本追加到test文件)
时间格式如:f1 f2 f3 f4 f5 program
其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,其馀类推
- 为root用户指定这个时程表,
crontab -u root /home/crontab_file
- 等待一段时间查看/home/test文件,是否追加test文本。
- 查看 /var/spool/cron/root,文件为root用户的时程表
- 查看 /var/spool/mail/root,文件为root用户的定时任务 执行日志。
crontab -l
,查看当前登录用户的时程表;crontab -r
,删除当前用户的时程表;crontab -e
,修改时程表
date 输出日期
date
:输出日期
格式化输出:date '+<format>'
,例如date '+%Y-%m-%d %H:%M:%S'
format格式 | 说明 |
%% | 一个文字的 % |
%a | 当前locale 的星期名缩写(例如: 日,代表星期日) |
%A | 当前locale 的星期名全称 (如:星期日) |
%b | 当前locale 的月名缩写 (如:一,代表一月) |
%B | 当前locale 的月名全称 (如:一月) |
%c | 当前locale 的日期和时间 (如:2005年3月3日 星期四 23:05:25) |
%C | 世纪;比如 %Y,通常为省略当前年份的后两位数字(例如:20) |
%d | 按月计的日期(例如:01) |
%D | 按月计的日期;等于%m/%d/%y |
%e | 按月计的日期,添加空格,等于%_d |
%F | 完整日期格式,等价于 %Y-%m-%d |
%g | ISO-8601 格式年份的最后两位 (参见%G) |
%G | ISO-8601 格式年份 (参见%V),一般只和 %V 结合使用 |
%h | 等于%b |
%H | 小时(00-23) |
%I | 小时(00-12) |
%c | 按年计的日期(001-366) |
%k | 时(0-23) |
%l | 时(1-12) |
%m | 月份(01-12) |
%M | 分(00-59) |
%n | 换行 |
%N | 纳秒(000000000-999999999) |
%p | 当前locale 下的"上午"或者"下午",未知时输出为空 |
%P | 与%p 类似,但是输出小写字母 |
%r | 当前locale 下的 12 小时时钟时间 (如:11:11:04 下午) |
%R | 24 小时时间的时和分,等价于 %H:%M |
%s | 自UTC 时间 1970-01-01 00:00:00 以来所经过的秒数 |
%S | 秒(00-60) |
%t | 输出制表符 Tab |
%T | 时间,等于%H:%M:%S |
%u | 星期,1 代表星期一 |
%U | 一年中的第几周,以周日为每星期第一天(00-53) |
%V | ISO-8601 格式规范下的一年中第几周,以周一为每星期第一天(01-53) |
%w | 一星期中的第几日(0-6),0 代表周一 |
%W | 一年中的第几周,以周一为每星期第一天(00-53) |
%x | 当前locale 下的日期描述 (如:12/31/99) |
%X | 当前locale 下的时间描述 (如:23:13:48) |
%y | 年份最后两位数位 (00-99) |
%Y | 年份 |
%z +hhmm | 数字时区(例如,-0400) |
%: z +hh:mm | 数字时区(例如,-04:00)【 : 和 z 之间没有空格,markdown连在一起就成表情了】 |
%:: z +hh:mm:ss | 数字时区(例如,-04:00:00)【同上注释】 |
%::: z | 数字时区带有必要的精度 (例如,-04,+05:30)【同上注释】 |
%Z | 按字母表排序的时区缩写 (例如,EDT) |
查看硬件配置
查看linux系统版本:lsb_release -a
或者红帽子系命令cat /etc/redhat-release
或者发行版命令cat /etc/issue
查看CPU名称:cat /proc/cpuinfo | grep 'model name' | uniq
查看cpu物理个数:cat /proc/cpuinfo | grep 'physical id' | sort | uniq | wc -l
查看内存使用状况:free -h
查看CPU使用情况:top
查看硬盘容量:lsblk
查看单个cpu核数:cat /proc/cpuinfo | grep 'cores' | uniq
查看linux内核版本:cat /proc/version
或者uname -a
查看硬盘储存情况:df -h
查看当前目录存储情况:du -sh *
快捷键
Ctrl + l
:清屏Ctrl + r
:history,查找之前执行的命令Ctrl + g
:退出history