Linux 常用命令总结
1、mkdir make directorys 创建目录
例子:mkdir /data 在根下创建data目录
2、ls list 列表列表目录文件
-a 隐藏文件 -l 长格式 -F 给不同文件结尾加标识 -p 给目录结尾加斜线 -t 按修改时间排序 -r 反转排序(倒序)
3、echo 打印输出内容
例子:echo "abc" >>a.txt 将内容abc追加到a.txt里
4、cat 查看文件内容
-n 显示行号
5、xargs 从标注输入的内容创建和执行命令
例子:xargs -n 4 <a.txt 分成每四个为一行输出
6、cp copy 拷贝文件或目录
-r 递归,用于拷贝目录 例子:cp -r /test/ /data/
-p 保留属性
7、rm remove删除文件或目录 -f 强制 -r 递归
8、mv move移动文件或目录 在当前目录下:重命名
9、find 查找
-type 文件类型 (f 文件 d目录 c字符 b 块设备)
-name 文件名
-exec 操作
例子:1、find /data -type f -name "*.txt" -exec rm {} \ ;
2、find /data -type f -name "*.txt" | xargs rm -rf 删除data目录下所以txt结尾的文件
-mtime 文件修改时间(+7 七天以前 7 第七天 -7 最近七天)
例子:1、find /data -type f -name "*.log" -mtime -7 -exec rm {} \ ; 删除最近七天的文件
2、find /data -type f -mtime +7 | xargs rm -rf 删除最近七天以前的文件
10、grep 过滤内容
--color=auto 对过滤字符设置颜色
-n . 显示行号
-v 排除内容 例子:grep -v test a.txt 排除a.txt中test内容
-A 除了显示匹配的一行之外,并显示该行之后的num行 例子:grep 20 -A 10 a.txt 打印文件的20-30行内容
-B 除了显示匹配的一行之外,并显示该行之前的num行 例子:grep 30 -A 10 a.txt 打印文件的20-30行内容
-C 除了显示匹配的一行之外,并显示该行前后的num行 例子:grep 25 -A 5 a.txt 打印文件的20-30行内容
11、sed 留编辑器,实现对文件的增删改查替换
参数-n 取消默认输出 p(打印) 例子:sed -n '2,10'p a.txt 打印文件的2-10行内容
替换 s 全局 g 修改文件内容 -i 例子:sed -i 's/abc/cba/g' a.txt 把a.txt中所有abc替换为cba
* /是分隔符 可用任意3个相同的字符代替
12、awk 过滤输出,一门语言
NR行号 例子:awk '1<NR && 11>NR' a.txt 打印文件的2-10行内容
$1 第一列、$2第二列,但$0标识一行
-F指定分隔符 -NF 结尾
13、head 头,输出文件前N行内容,默认前10行
14、tail 尾,输出文件后N行内容,默认后10行
15、alias 查看和设置别名
例子:alias mv='echo mv is dangerous command' 用于提示用户mv是危险指令
例子:alias net='systemctl restart network' 简化操作,输入net后重启网络
unalias 取消别名 例子:unalias net
*仅保存在内存,永久生效需要保存在 ~/.bashrc(当前用户生效)/etc/profile(全局生效)
16、sourec 常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录
17、seq 序列
例子:seq 100 >a.txt 生成100列1-100的序列
-s 横向打印 例子:seq -s " " 1 10
18、netstat 用于显示各种网络相关信息
19、在secureCRT中 yum install lrzsy -y 下载
rz 命令本地上传文件到服务器
sz filename 命令发送文件到本地
20、su 变更使用者身份
例子:su - abc
21、date 系统时间
date +%F 当天日期 date +%s 时间戳
22、chmod 更改文件系统的权限
r=4 w=2 x=1 u=用户 g=组 o=表示其他 a=表示全部
-R 递归,更改整个目录的权限
例子:chmod a+x test 给test所有用户组其他x权限
例子:chmod 777 test 给test777最高权限
23、chown 更改文件所有权
例子:chown root test1 更改test1的所有权
例子: chown :root test1 使用:更改组的所有权
例子:chown root:root test1 同时更改所有者和组
-R 递归,更改整个目录的所有权
24、scp 机器之间的复制 可用hostname与id指定
例子:scp /home/a xxxxip:/root 将本地/home/a文件目录复制到xxxx的/root目录
scp -r xxxip:/root /home 将xxxx的root目录复制到本地/home
25、sftp 用户两台机器的交互式远程传输
sftp可使用ls,pwd,mkdir等命令,put用于上传,get用于下载
例子:sftp<put -r /home 将xxxxip主机上的/home目录下载至本地目录
26、ln 软、硬链接
ln -s 源文件 目标文件 软连接 相当于快捷方式 例子:ln -s test newtest
ln 源文件 目标文件 硬连接 相当于更新+实时更新 例子:ln test newtest
27、uname 打印系统信息
-a (all) -n 显示主机名
28、shutdown halt init 0 关机
init 6 reboot shutdown -r 重启
例子:shutdown -h now 关机
29、history 查看历史记录
-c 清除记录 -d num 清除指定行的记录
30、wc 统计
-l 统计总行数 -L显示字符数
其他补充&面试题
创建100个txt文件/目录:
#touch/mkdir {1..100}.txt
查找opt下所以txt文件移动到data目录:
#mv ` find /opt/ -type f -name "*.txt" ` /data/
删除一个目录下所有文件,只保留一个指定文件:
#find /opt/ -type f ! -name "1.txt" -exec rm {} \; #find /opt/ -type f ! -name "1.txt" | xargs rm
打印一个100行文件的20-30行内容
#sed -n '20,30'p a.txt
将/opt目录下所有.sh文件的内容内的abc替换为jty
#find /opt -type f -name '*.sh' |xargs sed -i 's/abc/jty/g'
使用awk抓取/etc/passwd文件中的10-20行的第三列,重定向到/data/test.txt文件里
#awk -F ":" '9<NR && NR>21 {print $3}' > /data/test.txt
将目录下所有.txt文件名的后缀改为.sh
#rename .txt .sh *.txt
查找当前目录下的所有隐藏目录和一级目录(仅包含一级目录)
#ls -F | grep "/$" #ls -l | awk '{(if $2>1) prinf $0}'
已知服务的访问日志按天记录在服务器本地目录/app/logs下,由于磁盘空间紧张,现在要求只保留最近7天访问日志,请问如何解决?至少三种方法
find /app/logs -type f -mtime +7 | xargs rm -f find /app/logs -type f -mtime +7 -exec rm -f {} \; rm -f `find /app/logs -type f -mtime +7`
特殊符号
| 管道符
. 当前目录
.. 上级目录
· 反引号
1>或> 输出重定向:把前面输入的东西放到文件后面,会清空原有内容
1>>或>> 追加重定向:把前面输入的东西放到文件后面,不会清空原有内容
https://blog.51cto.com/yangrong/1288072