几个简单的命令
- 当光标前为#时,代表当前为管理员特权,为$时,代表是普通用户权限。
- date:显示当前系统的日期和时间。
- cal:显示当月的日历。
- df/du:查看磁盘可用空间。
- free:查看内存可用空间。
- ps/top:查看进程/查看实时进程状态(负载、内存占用等)。
- netstat:用来打印网络系统的使用情况。
- netstat -tunlp | grep java 查看java的端口占用。
- netstat -tunlp | grep 80 查看80端口的占用情况。
t:tcp;u:udp;p:program;l:listening;n:使用ip,而不是域名
- vmstat:输出系统资源使用情况的快照,包括内存,交换空间和磁盘I/O。如果想要持续 查看输出,可以在命令后面加上一个间隔时间(以秒为单位),命令将按照间隔时间 来动态更新显示的内容(比如,vmstat 5)。按下Ctrl-C键可以终止输出。
导航
- pwd:查看工作目录。
- ls:列出目录内容。
- cd:更改当前目录。
- 相对路径 “.” :代表工作目录,cd ./xxx,可以移动到当前目录的xxx文件夹,其中./可以省略。
- 相对路径 “..” :代表工作目录的父目录,cd .. 可以返回上级目录。
- cd ~username:将工作目录改变为username的主目录。
- 注意事项。
- “.” 开头的文件名默认隐藏。
- 文件名和命令区分大小写。
- 命名词语间使用下划线。
操作文件和目录
通配符:
- ?:匹配任意一个字符。
- *:匹配任意多个字符。例如:g*,以g开头的任一文件。
- []:匹配其中一个字符。例如:[abc]*,以abc任意一个字符开头的文件。
- {}:循环使用其中的字符。例如:{1,2,3}a相当于1a 2a 3a;{1..3}相当于1 2 3。
- ls:列出文件内容。
- ls /usr:指定需要显示的目录。
- ls ~ /usr:指定多个目录。
- ls -l:长格式输出。
- ls -a:列出所有文件,包括隐藏文件。
- ls -lh:以M或者G展示文件大小。
- ls -c:根据创建时间排序展示。
- ls -t:根据修改时间排序。
- file filename:确定文件类型,调用后,打印出文件的简短说明。
- cp:复制文件和目录。
- cp /etc/nginx/nginx.conf .:复制nginx.conf文件到当前目录。
- r:复制目录。
- i:覆盖之前通知用户确认。
- mv:移动或重命名文件和目录。
- mv dir1 dir2:,如果dir2不存在,将dir1重命名为dir2,如果dir2存在且为目录,将dir1移动到dir2中。
- mkdir:创建目录。
- rm:删除文件和目录。
- r:递归的删除目录。
- rm -rf *:删除此文件夹下的所有文件,包括目录,且无需提示。
- ln -s:创建符号链接(类似windows的快捷方式,在修改符号链接的时候,对应的文件也会被修改)。
-
ln -s fun fun-sym:创建fun文件的符号链接。
- touch:创建文件/修改文件时间。
- cat/more/less:查看文件,常用less。
- less -N filename:显示行号。
- tail/head:查看文件的前/后十行,常用-f查看实时文件。
- tar -cvf file1.jar /test:将test目录添加到file1压缩文件。
- tar -xvf :解压jar包。
- tar -zxvf:解压从网上下载的 .tgz文件。
- find:查找文件。
- find / -name profile:查找根目录下名字包含profile的文件。
- uniq:报告或删除文件中重复的行。
- ps -ef | uniq | grep java。
- wc:打印文件中的换行符、字和字节的个数。
- find /usr | wc -l:打印usr目录中文件的数量。
- grep:打印匹配行。
- grep a file:输出file中包含a的字符。
- ls /bin | grep mk,输出bin目录下包含mk的文件名。
-
sort:排序。
sort排序排序的是行,默认将每行根据空格分隔。
例如:根据文件内容的第五列排序。-k指定根据哪一列排序
- sort file:按字符顺序排序文件后输出。
- sort -n file:按数字顺序排序。
- sort -M file:按月份顺序排序。
- sort -r file:倒序排序。
命令的使用
- type:显示命令的类型。
- 可执行程序:比如type nginx。
- shell内置命令:比如type cd。(执行内置命令时不会创建子线程)
- shell函数:比如 type mkdir。
- alias命令:我们可以再其他命令的基础上定义自己的命令。
- which:显示可执行程序的位置。
- 比如which nginx,确定nginx的准确位置。
- whatis:显示一条命令的简述。
- 比如 whatis rm。
- alias:创建一条命令的别名。
- 比如alias foo='cd /usr; ls; cd -',把多个指令融合成一个指令,再取一个别名。
- 再比如 alias ls=‘ls --color=tty’,将原有的指令进行扩展。
重定向
将输出重定向到文件:ls -l /usr/bin > ls-output.txt,当ls指定的目录不存在时会创建一个空的ls-output.txt文件。
继续向文件尾部添加输出内容:ls -l /usr/bin >> ls-output.txt。
将标准输出和标准错误都重定向到文件:ls -l /usr/bin &> ls-output.txt。
- cat:查看/合并文件。
- 通常用来显示短的文本文件,cat filename。
- 可以用来合并文件内容,cat ls-output.txt nginx.conf > play.txt。
- 也可以用来创建文件,cat > test1,然后输入内容,输入结束后按ctrl+d结束。
- “|“:管道操作符。
- 管道操作符可以吧一个命令的标准输出传送到另一个命令的标准输入中。例如 ps -ef | grep java。
子shell和子进程
-
什么是子shell:ps -f指令中打印多个bash进程说明有子shell。
创建子shell的三种方式。
- 进程列表(指令1;指令2;指令3)。
- &。
- 创建协程 coproc指令。
-
子进程
父进程和子进程间可通过信号(signaling)通信。
- shell内置指令不会创建子进程。
- shell函数、hashed指令或其他指令会创建子进程。
shell的环境变量配置
- env:查看全部全局环境变量。
- echo $变量名:查看某个环境变量。
- 变量名=变量值:定义局部环境变量。
- export变量名:将局部环境变量转为全局。
- unset:删除环境变量。
如果要查看变量,使用$,如果操作变量,不使用$。
- 配置永久环境变量在/etc/profile中,linux在启动时会读取该配置文件,将环境变量写入。
- 配置永久alias在~/.bashrc中,也可以在bashrc中配置定制提示符。
PS1="\[\033[0;33m\]<\u@\h \W>\$"
export PS1
shell的文件权限
ls -l可以查看文件的权限。
一般是由四部分组成。
文件myprog有下面4组权限。
- 第一位‘-’:文件的类型,‘-’代表文件,d代表目录。
- rwx:文件的属主,权限为可读可写可执行。
- rwx:文件的属组,权限同上。
- r-x:系统上其他人,权限可读可执行。
chmod:修改文件权限。
例如:
7、6、0分别代表属主,属组,其他人的权限。
7代表二进制111,对应属主可读可写可执行。
6代表110,代表属组可读可写。
0代表000,代表其他人没有任何权限。
vim文本编辑器
- 普通模式
- G:移动到最后一行。n G:移动到n行。
- gg:移动到第一行。
- dd:删除/剪切一行。
- x:删除光标处字符。
- u:撤销。
- y:复制。
- p:粘贴。
- v:高亮选择。
- 编辑模式
- n:查找下一个。
- 命令行模式
- q:如果未修改,退出。
- q!:如果修改了,不保存、退出。
- w filename:将文件保存到另一个文件中。
- wq:保存退出。
- noh:取消查找。
- set nu:显示行号。