常见shell
more /etc/shells 记录服务器中,有哪些shell,重点记住sh, bash 就好, bash 90%在用
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/usr/bin/tmux
echo hello world #echo直接打印内容
hello world
云服务器
阿里云,买服务器, 推荐 2核4G 2K多一年,可以搭一个大型服务
命令分类
文件:everything is file
进场:文件的运行形态
网络:特殊的文件
磁盘与⽬录:df、ls、cd、pwd、$PWD
⽂件编辑:交互编辑vim、流式编辑器 sed
⽂件权限:chmod、chown
⽂件搜索:find
⽂件内容:cat、more、less、grep
特殊⽂件:软链、socket:进程通讯、管道:进程通讯
vi 用法
- esc 退出到命令模式,默认就是命令模式
- 输入i 表示在当前光标处前面插入内容
- 输入a 表示在当前光标处后面插入内容
- 输入:可以执行命令,w表示写,q表示退出, !表示强行退出
df -h 查看磁盘当前可用内容及大小
mkdir 11 创建文件夹
vim vs vi , vim有高亮增强等,两个其实相似
find ~ (~当前目录下找)
find ~ -name “.txt" #当前目录下找文件以.txt结尾的所有文件
find ~ -maxdepth 1 #当前目录下找1层的文件
find ~ -type d -maxdepth 1 #列出当前目前下找1层的目录
find ~ -type d -maxdepth 1 -name "s” #列出当前目录下1层目录中,文件名以s开头的目录
/ 根目录,系统级的
~ 主目录,个人级别,能用波浪线就用波浪线
man find 查find 的帮助文档, man 来查各种命令的帮助文档
man ps
cat 文件名 打印出文件中的所有内容,当文件很大时,会打印很慢
more 文件名 能翻页看文件中内容,回车显示下一行,空格翻页
less 文件名 上下都能翻页,常用less,少用more
less 支持搜索,/ 搜索内容,shift +N 往前搜索
ln -s 1.txt ss1.txt 将文件1.txt和 ss1.txt软链起来,改了1.txt就改了ss1.txt
文件权限
ls -l 查看权限
用户与组
文件分为三种类型,同用户u,同组g,非同组o
whoami 查当前用户是谁
第一个字符区分是文件类型,l -软链, d 文件夹 - 文件
后面9位rw-r–r--, 前三个是当前用户,中间三位是当前组,后三位是非同组
r–可读
w-- 可写
x–可执行
ls -ld /tmp #只打印文件目录的权限
chmod o+w 文件名 #给非同组用户加上写权限
groups #查看当前用户的所在组名
charp 组名A 文件名B #给文件名B授权组名A的权限
chown 用户名:组名 文件名 #给与文件组和用户的权限
进程
- top #查看机器上进程的负载情况,持续交互的
- ps #当前快照
- ps aux #进程的cpu等信息
建议:man top/ps ,完整的看一遍
用户、pid、cpu多少、内存占比多少、虚拟内存、保留内存、当前状态、启动终端、什么时间启动的、启动时间多少、启动的命令
- ps -ef #进程命令行、时间等信息
网络
netstat -tlnp #当前机器,对外开放的端口, 也可以看端口是否被占用
netstat -tnp #外面连接过来的端口
mac 与Linux不一致: netstat -p tcp -n -a
shell piping 管道
-
read 用来读取输入,并赋值给变量, 默认只读第一行,回车后的内容不会读出来
-
echo ,printf 输出变量, echo 后面的参数用 “$参数名”来调用
-
> file ,将输出重定向到另一个文件,> 前面要有空格隔开,内容是覆盖的,后面写入的,会把原来的覆盖掉
-
>> file , 表示追加,等价于tee -a
-
< file 输入重定向 read -d ‘\n’ x y < 4.txt , 可以读取两行,用回车来分隔
-
| 管道,也就是前一个命令的输出传入下一个命令的输入
-
wc -l 文件名 # 打印文件名的行数
[90092804@shell.ceshiren.com 11]$ echo 1234 |read x
[90092804@shell.ceshiren.com 11]$ echo $x
这种是不会有结果的
原因: 因为x与进程相关的,带上管道,是命令,每一个命令都是独立的进程,进程消失,变量也会消失。 带上管道的,也是会新起一个进程。当加上while 时,就不会退出,就可以打印出来了。
echo 1234 | while read x; do echo $x; done
cat 1.txt | wc -l | while read m; do echo m=$m ;done ## 统计1.txt 文件有多少行,并输出结果,用参数m表示
m=$(cat 1.txt | wc -l) #将统计1.txt 文件有多少行的结果赋值给m
unset m #清空m的值