Linux命令行
1.Linux基本知识
-
linux主要特征 :一切且文件(目录、硬盘等都是文件);硬件都在/dev 目录,如硬盘、U盘为/dev/sd[a-d]; /dev/sr0(/dev/cdrom)是光驱的设备名(df命令查看),为设备文件,代表的是光驱本身,得把这个设备挂载到目录下(一般为/mnt)(文件系统的临时挂载点),才能对设备上的文件进行读写等操作;
-
不懂的命令 :man 命令(查用法、全称),只记得关键词,可用man -k 关键词;
-
Linux命令常用结构 :Command [-option] [argument]
-
Command:即是要运行的命令的本身,说白了就是一个软件(程序);
-
Option:是选项(可选),选项是控制命令运行状态和行为的(可多个选项一起,如df -hT);
-
Argument:是参数(可选),是命令要操作对象如文件、路径、数据、目录等;
-
在指令的第一部分按[tab]键一下为[命令补全],两下为所有命令选择,在非第一部分按[tab]键两下为[文件补全];
-
linux命令区分大小写;
2.开关机
- shutdown -r now:立即重启
- shutdown -h now:立即关机
- shutdown -h 20:00 :预定时间关闭系统(晚上8点关机,如果现在超过8点,则明晚8点)
- shutdown -h +10 :预定时间关闭系统(10分钟后关机)
- shutdown -c :取消按预定时间关闭系统
3.系统信息
- date :显示系统日期 (date +%Y/%m/%d : 显示效果如2018/01/01)
- clear:清空命令行
- ifconfig:显示网卡、ip等信息
- ping 网址:测试本机与目标网址的联通情况
- cat /proc/cpuinfo :显示CPU的信息
- cat /proc/cpuinfo| grep “physical id”| sort| uniq| wc -l :查看物理CPU个数
- cat /proc/cpuinfo| grep “cpu cores”| uniq :查看每个物理CPU的核数
- cat /proc/cpuinfo| grep “processor”| wc -l :查看逻辑CPU个数即线程数
4.系统性能
- top:动态实时显示cpu、内存、进程等使用情况(类似windows下的任务管理器)
- free -h :查看系统内存及虚拟内存使用情况
- df -h :显示磁盘的空间使用情况
- iostat :可查io读写、cpu使用情况
- ps aux|grep firefox :获取火狐的进程号(PID)(可查看进程占用cpu、- 内存百分比及进程触发指令的路径)
- kill -9 进程号 :强制杀死进程
5.文件系统中的命令
文件和目录操作
- pwd:打印当前工作目录名
- cd:更改目录
- ls:列出目录内容
- less:浏览文件内容
- mkdir:创建文件夹
- touch:创建文件
- rm:删除文件(-r)
- mv:移动文件
- cp:复制文件
- grep : 打印匹配行
- cat:连接文件
- split:分割文件
‘.’:一个点号代表当前的工作路径。
“..”:两个点号代表当前工作路径的父目录。
-l:表示列出详细信息
ls常用的选项有:
短选项 | 长选项 | 说明 |
---|---|---|
-a | –all | 列出所有文件,包括隐藏文件 |
-d | –directory | 把这个选项与-l选项结合使用,可以看到目录的信息,而不是目录里面内容的信息 |
-F | –classify | 该选项会在每个所里出的名字后面加一个指示符,如果是目录名,就添加一个’/’ |
-h | –human-readable | 以长格式列出,以人们可读的格式而不是字节数来显示文件的大小 |
-l | 以长格式显示结果 | |
-r | –reverse | 以相反的顺序显示结果,默认按照字母升序排列 |
-S | 命令输出结果按照大小排序 | |
-l | 按照修改时间来排序 |
关于文件名的重要规则:
1、以.字符开头的文件名是隐藏文件,ls命令不能列出他们,除非使用ls -a命令。
2、文件名和命令名对大小写敏感
3、linux没有文件扩展名的概念
4、文件名中可以使用的标点符号仅限于“.”,“-”,“_”。最好不要在文件名中使用空格,尽量用下划线代替。
通配符
shell提供了特殊字符来帮助你快速指定一组文件名。这些特殊字符叫做通配符。shell中使用的通配符有:
通配符 | 意义 |
---|---|
* | 匹配任意多个字符 |
? | 匹配任意一个字符 |
[characters] | 匹配任一一个属于字符集中的字符 |
[!characters] | 匹配任意一个不是字符集中的字符 |
[[:class:]] | 匹配任意一个属于指定字符类中的字符 |
我们常用的字符类有:
字符类 | 意义 |
---|---|
[[:alnum:]] | 匹配任意一个字母或者数字 |
[[:alpha:]] | 匹配任意一个字母 |
[[:digit:]] | 匹配任意一个数字 |
[[:lower:]] | 匹配任意一个小写字母 |
[[:upper:]] | 匹配任意一个大写字母 |
下面给出一些类型匹配的范例:
模式 | 匹配对象 |
---|---|
* | 所有文件 |
g* | 所有以g开头的文件 |
b*.txt | 以b开头,以.txt结尾的文件 |
Data??? | 以Data开头,后面紧接3个字符的文件 |
[abc]* | 以a,b或者c开头的文件 |
BACKUP.[0-9][0-9][0-9] | 以BACKUP.开头,由3个数字结尾的文件 |
[[:upper]]* | 以大写字母开头的文件 |
[![:digit]]* | 不以数字开头的文件 |
文件权限
- chmod [-R] 777 文件或目录:修改文件或目录的权限
文件查找
- locate a.txt:在全局范围内查找
- find /home -mtime -2 :在/home下查最近2*24小时内改动过的文件
- find . -size +100M :在当前目录及子目录下查找大于100M的文件
- find . -type f :f表示文件类型为普通文件(b/d/c/p/l/f 分别为块设备、目-录、字符设备、管道、符号链接、普通文件)
- find . -mtime +2 -exec rm {} ; :查出更改时间在2*24小时以前的文件并删除它
- grep -i ‘HELLO’ . -r -n :在当前目录及子目录下查找文件内容中包含hello的文件并显示文件路径(-i表示忽略大小写)
- which java :在环境变量$PATH设置的目录里查找符合条件的文件,并显示路径(查询运行文件所在路径)
- whereis java :查看安装的软件的所有的文件路径(whereis 只能用于查找二进制文件、源代码文件和man手册页,一般文件的定位需使用locate命令)
查看文件的内容
- cat[-n] 文件名:显示文件内容,连行号一起显示
- less 文件名 :一页一页的显示文件内容(搜索翻页同man命令)
- head [-n] 文件名 :显示文件头n行内容,n指定显示多少行
- tail [-nf] 文件名:显示文件尾几行内容,n指定显示多少行,f用于实时追踪文件的所有更新,常用于查阅正在改变的日志文件(如tail -f -n 3 a.log 表示开始显示最后3行,并在文件更新时实时追加显示,没有-n默认10行)
文本处理
- ls -l>file :输出重定向>(改变原来系统命令的默认执行方式):ls -l命令结果输出到file文件中,若存在,则覆盖
- cat file1 >>file :输出重定向之cat命令结果输出追加到file文件(>表示覆盖原文件内容,>>表示追加内容)
- ls fileno 2>file : 2>表示重定向标准错误输出(文件不存在,报错信息保存至file文件);
- cowsay <a.txt :重定向标准输入’命令<文件’表示将文件做为命令的输入(为从文件读数据作为输入)
- vim 文件:编辑查看文件(同vi)
6.用户与权限
- useradd 用户名:创建用户
- userdel -r 用户名:删除用户
- usermod -g 组名 用户名:修改用户组
- usermod -aG 组名 用户名:将用户添加到组
- passwd [ludf] 用户名 :用户改自己密码,不需要输入用户名,选项-d:指定空口令,-l:禁用某用户,-u解禁某用户,-f:强迫用户下次登录时修改口令
- groups 用户名:查看用户所在的组
- groupadd 组名:创建用户组
- groupdel 组名:删除组
- groupmod -n 新组名 旧组名 :修改用户组名字
- su - 用户名:完整的切换到一个用户环境(相当于登录)(建议用这个)(退出用户:exit)
- sudo 命令 :以root的身份执行命令(输入用户自己的密码,而su为输入要切换用户的密码,普通用户需设置/etc/sudoers才可用sudo)
磁盘管理
- df -h :显示磁盘的空间使用情况 及挂载点
- mount /dev/sda1 /mnt :硬盘sda1挂载到/mnt目录(mount 装置文件名 挂载点)
- umount /dev/sda1 :取消挂载(umount 装置文件名或挂载点)
压缩、解压及打包
-
file 文件名 :查文件类型(可看是用哪一种方式压缩的)
-
tar -zxvf a.tar.gz -C ./test :解压tar.gz到当前目录下的test目录
-
tar -zcvf /opt/c.tar.gz ./a/ :压缩tar.gz(把当前目录下的a目录及目录下所有文件压缩为 /opt/目录下的c.tar.gz,这样tar -zxvf c.tar.gz解压出来带有目录a)
-
tar -jxvf a.tar.bz2 :解压tar.bz2(到当前目录)
-
tar -jcvf c.tar.bz2 ./a/ :压缩tar.bz2(把当前目录下的a目录及目录下所有文件压缩到当前目录下为c.tar.gz2)
-
unzip a.zip :解压zip(到当前目录)
-
unzip -o mdmtest.war -d /opt/mdm :推荐使用unzip解压war包(-o覆盖原有文件,-d指定文件解压后存储的目录)
-
zip -r c.zip ./a/ :压缩zip(把当前目录下的a目录及目录下所有文件压缩到当前目录下为c.zip
-
bzip2 -k file1 : 压缩一个 ‘file1’ 的文件(-k表示保留源文件)(bzip2格式,比gzip好)
-
bzip2 -d -k file1.bz2 : 解压一个叫做 'file1.bz2’的文件
-
gzip file1 : 压缩一个叫做 'file1’的文件(gzip格式)(不能保留源文件)
-
gzip -9 file1 : 最大程度压缩
-
gzip -d file1.gz : 解压缩一个叫做 'file1’的文件
7.笔记
- 后台运行(tmux)
- linux服务器之间传递文件
在本地用户下创建key:ssh-keygen -b 1024 -t rsa
添加key到目标服务器上:(1)进入cd ~/.ssh (2)将key复制到 vi /root/.ssh/authorized_keys
复制文件:scp /root/install.* root@192.168.1.12:/usr/local/src
- wc -l filename :统计文件行数
- du -sh 目录:查看目录下总文件的大小
- table补全:yum install -y bash-completion