Linux命令
Linux的目录 /dev 管理设备 cpu /media dvd u盘 Linux 常用命令 用户管理 useradd: 添加用户 格式:useradd 用户名 useradd -d 指定目录 用户名 示例:groupadd 用户组 useradd -g 用户组 用户名 (将用户直接指定给用户组) passwd:指定的密码 格式:passwd 用户名 userdel: 删除用户 格式:userdel 用户名 (保留家目录) userdel -r 用户名 (不保留家目录) id: 查询用户信息 格式:id 用户名 示例:id root # uid=0(root) gid=0(root) 组=0(root) su - : 切换用户 格式:su - 用户名 注意:从高权限的用户换成低权限的用户,不用输入密码 使用exit指令返回原先用户 whoami:显示当前用户名 用户组管理 groupadd: 增加组 格式:groupadd 组名 groupdel: 删除组 格式:groupdel 组名 usermod: 修改用户所在组 格式:usermod -g 用户组 用户名 示例:groupadd shaolin usermod -g shaolin zwj (将用户zwj切换到shaolin组) /etc/passwd: 用户配置文件,记录用户的各种信息 示例:vim /etc/passwd # jack:x:1000:1000:jack:/home/jack:/bin/bash # 用户名:口令:用户标识:组标识号:注释性描述:主目录:登录shell /etc/group: 组的配置文件,记录Linux包含的组的信息 示例:vim /etc/passwd # jack:x:1000:jack # 组名:口令:组标识号:组内用户列表 /etc/shadow: 口令的配置文件 (不要求掌握) 帮助指令 man: 获取帮助信息 格式:man [命令或配置文件] 示例:man ls help 文件目录类 pwd: 显示当前工作目录的绝对路径 ls: list 格式:ls [选项] [目录或文件] 选项:-a 显示当前目录所有的文件和目录,包括隐藏的 -l 以列表的形式展现信息 cd: 切换到指定的目录 格式:cd [参数] 参数:绝对路径/相对路径 cd ~ / cd : 回到自己的家目录 cd .. :回到上一级目录 mkdir: 创建目录 格式:mkdir [选项] 要创建的目录 选项:-p 创建多级目录 rmdir: 删除目录 格式:rmdir [选项] 要删除的目录 注意:rmdir删除的是空目录,如果目录下有内容(文件或目录)时无法删除 可以使用 rm -rf 要删除的非空目录 touch: 创建一个空文件 格式:touch 文件名 cp: 拷贝文件到指定的目录 格式:cp [选项] source dest 选项:-r 递归复制整个文件夹 注意:\cp 强制覆盖相同的文件,不会提示 rm: 删除文件或目录 格式:rm [选项] 要删除的文件或目录 选项:-r 递归删除文件夹(目录) -f 强制删除不提示 mv: 移动文件与目录(相当于剪切)/重命名 格式:mv oldname_file newname_file 重命名 mv 移动文件 cat: 查看文件内容,以只读的形式打开 格式:cat [选项] 要查看的文件 选项:-n 显示行号 示例:cat -n /etc/profile | more(分页显示) more: 按页显示文件内容 格式:more 要查看的文件 less: 并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示 大型文件具有较高的效率 格式:less 要查看的文件 > 输出重定向 和 >> 追加: 将本该输出到显示台的内容输出到文件中 ls -l > 文件 (将列表中的内容覆盖式的输出到文件) ls -al >> 文件(列表中内容追加到文件的末尾) cat 文件1 > 文件2 (将文件1的内容覆盖到文件2) echo "内容" >> 文件 echo:输出内容到控制台 格式:echo [选项] 输出内容 示例:echo $PATH 输出环境变量路径 echo "Hello world" head: 显示文件开头部分内容 格式:head 文件 (默认查看文件前10行) head -n 5 文件 (查看文件前5(可以为任意行数)行) tail: 输出文件中尾部的内容,默认显示后10行 格式:tail 文件 tail -n 5 tail -f 文件 (实时追踪该文档的更新) ln: 软链接 相当于windows中快捷方式,主要存放了链接其他文件的路径 格式:ln -s [原文件或目录] [软链接名] history: 查看已经执行过的历史指令 示例:history history 10 显示最近执行的10个指令 !178 执行历史指令中编号为178的指令 时间日期类 date: 1.显示当前日期 格式:date 显示当前时间信息 date +%Y-%m-%d 显示当前 年-月-日 date "+%Y年%m月%d日 %H时%M分%S秒" 2.设置日期 格式:date -s 字符串时间 date -s "2019-8-13 11:58:12" cal: 查看日历 格式:cal [选项] 示例:cal 2020 显示2020年日历 搜索查找类 find: 将从指定目录向下递归的遍历其各个子目录, 将满足条件的文件或目录显示在终端 格式:find [搜索范围] [选项] [要查找的文件] 选项:-name 按照文件名来查找 -user 按照文件拥有者来查找 -size 按照文件大小来查找 (+n大于 -n小于 n等于) 示例:find nxr/ -name tjz.txt find nxr/ -user jack find nxr/ -size +20M find nxr/ -name *.txt 查找.txt结尾的文件 locate: 利用事先建立的文件名称及路径的locate数据库实现快速定位, 查询速度比较快,为了保证查询结果的准确,必须定时更新locate时刻 格式:locate 搜索文件 注意:第一次运行前,必须使用updatedb指令创建locate数据库 示例:updatedb locate nxr.txt grep:过滤查找 管道符号| :将前一个命令的处理结果输出传递到后面的命令处理 格式:grep [选项] 查找内容 源文件 选项:-n 显示匹配行及行号 -i 忽略大小写 示例:grep -n LOVE nxr.txt grep -ni love nxr.txt cat nxr.txt | grep -n LOVE 压缩和解压缩类 gzip/gunzip: 格式:gzip 文件 (将文件压缩成*.gz文件,原文件不保留) gunzip *.gz 示例:gzip nxr.txt zip/unzip: 格式:zip [选项] *.zip(压缩后的压缩文件名) 要压缩的内容 unzip [选项] 存放目录 要解压的内容 选项:-r 递归压缩,即压缩目录 -d:指定解压文件的存放目录 示例:zip -r nxr.zip /home/jack unzip -d nxr/ nxr.zip tar: 格式:tar [选项] *.tar.gz 打包内容 选项:-c 产生.tar打包文件 -v 显示详细信息 -f 指定压缩后的文件名 -z 打包同时压缩 -x 解包.tar文件 示例:# 将两个文件a1和a2压缩到a.tar.gz中 tar -zcvf a.tar.gz a1.txt a2.txt # 将home目录下的文件打包到myname.tar.gz tar -zcvf myhome.tar.gz /home/ # 将a.tar.gz解压到当前目录 tar -zxvf a.tar.gz # 将myname.tar.gz解压到指定目录 /opt/(目录必须存在) tar -zxvf a.tar.gz -C /opt/ 组管理和权限管理 chown: 修改文件的所有者 格式:chown 用户名 文件 chown newowner:newgroup file 示例:chown Tom apple.txt chown -R Tom nxr/ (将指定目录下的子目录和文件的所有者修改为Tom) groupadd: 组的创建 示例:groupadd japan useradd -g japan jack chgrp: 修改文件所在组 格式:chgrp 组名 文件名 示例:touch orange.txt chgrp police orange.txt chgrp -R police kkk/ (将指定目录下的子文件的所在组修改为police) 文件类型:-:普通文件 d:目录 l:软连接 c:字符设备(键盘鼠标) b:块文件(硬盘) 对于文件 r: 可以读取,查看 w: 可以修改,但是不可以删除文件,删除一个文件的前提是对该文件所在的目录有写的权限,才能删除文件 x: 可以被执行 对于目录 r: 可以读取,ls查看目录内容 w: 可以修改,目录内创建+删除+重命名目录 x: 可以进入该目录 chmod: 修改文件或目录的权限 格式:u:所有者 g:所在组 o:其他人 a:所有人 +-= 示例: chmod u=rwx,g=rx,o=x 文件或目录名 chmod o+x chmod 751 nxr.txt 磁盘查询命令 df:查询系统整体磁盘使用情况 格式:df -lh du: 查询指定目录的磁盘占用情况 格式:du [选项] [目录] 选项: -a 显示 示例:du -ach --max-depth=1 nxr/ 1.统计文件夹下文件的个数 ls -l | grep "^-" | wc -l 2.统计文件夹下目录的个数 ls -l | grep "^d" | wc -l 3.统计文件夹下文件的个数,包括子目录中的文件 ls -lR | grep "^-" | wc -l 4.以树状结构显示目录 yum install tree tree 网络配置 进程管理 ps: 查看目前系统中执行的进程 格式:ps -aux | more 选项:-a 当前终端所有进程信息 -u 以用户的格式显示进程信息 -x 显示后台进程运行的参数 示例:ps -aux | grep sshd ps -ef | more 以全格式显示当前所有的进程,查看进程的父进程 -e 显示所有进程 -f 全格式 shell脚本 命令别名 alias 别名='原命令' alias vi='vim' alias 查看系统中的别名 unalias 别名 (删除别名) whereis ls 查看ls命令文件所在位置 快捷键 ctrl+c 强制终止当前命令 ctrl+u 删除或剪切光标左边的命令 ctrl+y 粘贴ctrl+u或ctrl+k剪切的内容 ctrl+d 退出终端 相当于logout 多命令顺序执行 ;(命令1;命令2) 多个命令顺序执行,命令之间没有任何逻辑关系 && (命令1&&命令2) 逻辑与 || 逻辑或 命令 && echo yes || echo no (判断这条命令是否正确) 管道符 | 命令1 | 命令2 (命令1的正确输出作为命令2的操作对象) 通配符 ?匹配一个任意字符 * 匹配0个或任意多个字符,也就是匹配任意内容 [] 匹配中括号中任意一个字符,例如[abc] [a-z] [0-9] [^] 取反 可以用于批量删除文件 特殊符号 '' 单引号,在单引号中的所有的特殊符号没有特殊含义,例如 $ ` "" 双引号,特殊符号没有特殊含义,除了 $ (调用变量的值) ` (引用命令) \ (转义符) ` 反引号,反引号括起来的命令是系统命令,在Bash中会先执行它 和$()作用一样,推荐使用$() $() 同上 echo $(ls) # 注释 shell脚本的执行 方式1 1) chmod 744 nxr.sh 2) ./nxr.sh或者使用绝对路径 注意:注意,一定要写成 ./test.sh,而不是 test.sh,运行其它二进制的程序也一样,直接写 test.sh,linux 系统会去 PATH 里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找 方式2 1) sh ./nxr.sh shell变量 系统变量:PATH HOME USER set: 显示shell中所有变量 用户自定义变量: unset撤销变量 readonly 变量名=值,不能unset 将命令的结果返回给变量 A=`ls -la` 反引号,运行里面的命令,并将结果返回的变量 A=$(ls -la) 等价于反引号 设置环境变量 export 变量名=变量值 (将shell变量输出为环境变量) source 配置文件 预定义变量 $$ 当前进程的进程号(PID) $! 后台运行的最后一个进程的进程号 $? 最后一次执行的命令的返回状态 通配符 匹配符合条件的文件名,是完全匹配,ls,find,cp这些命令不支持正则表达式 正则表达式 \{n\} 前面的字符恰好出现n次 \{n,\} 前面的字符出现不小于n次 \{n,m\} 前面的字符至少出现n次,最多出现m次 cut:字段提取命令,不能分割以空格为分隔符的文件 格式:cut [选项] 文件名 选项:-f 列名 提取第几列 -d 分隔符 按照分隔符分割列 在文件中匹配符合条件的字符串,是包含匹配,grep,awk,sed 示例:grep "a*" test_re.txt 匹配所有内容,没有任何作用 grep ".*" test_re.xtt 同上 grep -n "^$" test_re.txt 匹配空白行,显示行号 grep "sa\{1,2\}id" test_re.txt 匹配s和id中间有1个或者2个a的行 cat /etc/passwd | grep "/bin/bash" | grep -v root | cut -d ":" -f 1 提取普通用户的用户名 printf: 格式:printf "输出类型输出格式" 输出内容 输出类型: %ns 输出字符串。n是数字,代表输出几个字符 %ni 输出整数 %m.nf 输出浮点数 输出格式: \n \r 格式: printf "%s %s %s\n" 1 2 3 4 5 6 三个为一组进行输出 awk: 格式:awk '条件1{动作1}条件2{动作2}...'文件名 默认空格和制表符作为分隔符,awk 一行一行的开始匹配 BEGIN 条件 一般使用关系表达式作为条件 x>10 x>=10 x<=10 BEGIN 动作 格式化输出 流程控制语句 示例: awk '{printf $2 "\t" $4 "\n"}' student.txt 输出第二,四列 df -h | awk '{printf $1 "\t" $5 "\t" $6 "\n"}' df -h | grep sda1 | awk '{printf $5}' | cut -d "%" -f1 awk 'BEGIN{FS=":"}{print $1 "\t" $3}' /etc/passwd 分隔符为: cat student.txt | grep -v Name | awk '$4>85{print $2}' sed: 将数据进行选取,替换,删除,新增的命令 与vim类似 格式:sed [选项] '[动作]' 文件名 选项:-n 一般sed命令会把所有数据都输入到屏幕,如果加入此选择, 则只会把经过sed命令的处理的行输出到屏幕。 -e 允许多条sed命令编辑 -i 用sed的修改结果直接修改读取数据的文件, 而不是由屏幕输出 动作:a c i d p s 示例:sed '4s/83/100/g' student.txt 字符串替换 sed '3c no such person' student.txt 行替换 sed '2i canglaoshi \ 在第二行之前插入两行数据 > bolaoshi' student.txt sed '2a zuobi' student.txt 在第二行后面追加一行数据 sed -n '2p' student.txt 打印第二行 sed '2,3d' student.txt 删除第二行到第三行的数据