linux系统常用命令
第1章 系统命令
1.1 echo 命令
echo 输出内容到屏幕或者文件中
> 输出重定向 先清空在写入
>> 追加输出重定向 不清空追加到文件的底部
-e 激活特殊的含义
\t tab
\n 回车
[root@oldboyedu-lnb ~]# echo oldboyedu oldboyedu [root@oldboyedu-lnb ~]# echo oldboyedu > 1.txt [root@oldboyedu-lnb ~]# cat 1.txt oldboyedu [root@oldboyedu-lnb ~]# echo oldboyedu >> 1.txt [root@oldboyedu-lnb ~]# [root@oldboyedu-lnb ~]# cat 1.txt oldboyedu oldboyedu \n 回车换行 [root@oldboyedu-lnb ~]# echo -e "oldboy\nalex\nlidao" >> 1.txt [root@oldboyedu-lnb ~]# [root@oldboyedu-lnb ~]# cat 1.txt oldboyedu oldboyedu oldboy alex lidao oldboy alex lidao \t 插入tab制表符 [root@oldboyedu-lnb ~]# echo -e "oldboy\talex\tlidao" >> 1.txt [root@oldboyedu-lnb ~]# cat 1.txt oldboyedu
oldboyedu oldboy alex lidao oldboynalexnlidao oldboynalexnlidao oldboy alex lidao oldboy alex lidao
1.1.1 输出规范的数字 序列
{} 序列 大部分的命令都可以直接调用序列
[root@oldboyedu-lnb ~]# echo {1..5} 1 2 3 4 5 [root@oldboyedu-lnb ~]# echo {01..5} 01 02 03 04 05
1.1.2 使用序列创建目录
[root@oldboyedu-lnb ~]# echo {1..3} 1 2 3 [root@oldboyedu-lnb ~]# mkdir {1..3} [root@oldboyedu-lnb ~]# ll total 28 drwxr-xr-x. 2 root root 6 Jul 30 08:22 1 drwxr-xr-x. 2 root root 6 Jul 30 08:22 2 drwxr-xr-x. 2 root root 6 Jul 30 08:22 3
1.1.3 序列中的逗号 输出不连续的数字或者字符串
[root@oldboyedu-lnb oldboy]# echo {a..z} a b c d e f g h i j k l m n o p q r s t u v w x y z [root@oldboyedu-lnb oldboy]# echo {A..Z} A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [root@oldboyedu-lnb oldboy]# echo {a..e} a b c d e
[root@oldboyedu-lnb oldboy]# echo {a,c,d} a c d
1.1.4 使用字符串创建目录
[root@oldboyedu-lnb oldboy]# mkdir oldboyedu alexdsx ld [root@oldboyedu-lnb oldboy]# ll total 0 drwxr-xr-x. 2 root root 6 Jul 30 08:24 alexdsx drwxr-xr-x. 2 root root 6 Jul 30 08:24 ld drwxr-xr-x. 2 root root 6 Jul 30 08:24 oldboyedu [root@oldboyedu-lnb oldboy]# mkdir {oldboyedu,alexdsx,lidao} [root@oldboyedu-lnb oldboy]# ll total 0 drwxr-xr-x. 2 root root 6 Jul 30 08:26 alexdsx drwxr-xr-x. 2 root root 6 Jul 30 08:26 lidao drwxr-xr-x. 2 root root 6 Jul 30 08:26 oldboyedu ----------- [root@oldboyedu-lnb oldboy]# ls -d {oldboyedu,alexdsx,lidao} alexdsx lidao oldboyedu
1.1.4 使用字符串+数字的方式来创建目录
oldboy01 oldboy02 oldboy03
组合方式: 序列外的字符串和序列中的每一个数字或字符进行拼接
序列可以在字符串的前面 也可以在字符串的后面
[root@oldboyedu-lnb oldboy]# echo oldboy {01..3} oldboy 01 02 03 [root@oldboyedu-lnb oldboy]# echo oldboy{01..3} oldboy01 oldboy02 oldboy03 [root@oldboyedu-lnb oldboy]# #echo {01..3}oldboy [root@oldboyedu-lnb oldboy]# echo 01oldboy 02oldboy 03oldboy 01oldboy 02oldboy 03oldboy [root@oldboyedu-lnb oldboy]# echo {01..3}oldboy 01oldboy 02oldboy 03oldboy [root@oldboyedu-lnb oldboy]# mkdir {01..3}oldboy [root@oldboyedu-lnb oldboy]# ll total 0 drwxr-xr-x. 2 root root 6 Jul 30 08:34 01oldboy drwxr-xr-x. 2 root root 6 Jul 30 08:34 02oldboy drwxr-xr-x. 2 root root 6 Jul 30 08:34 03oldboy
1.1.6 序列和目录相结合
在/oldboy/alex/test01...test10
结果
/oldboy/alex/test01 /oldboy/alex/test02 ..../oldboy/alex/test10
[root@oldboyedu-lnb oldboy]# echo /oldboy/alex/test /oldboy/alex/test [root@oldboyedu-lnb oldboy]# #echo /oldboy/alex/test{01..2} [root@oldboyedu-lnb oldboy]# #1 /oldboy/alex/test01 /oldboy/alex/test02 [root@oldboyedu-lnb oldboy]# #mkdir /oldboy/alex/test01 /oldboy/alex/test02 [root@oldboyedu-lnb oldboy]# mkdir -p /oldboy/alex/test{01..2}
1.1.7 在目录下创建多个不同的字符串的目录
在/oldboy/www /oldboy/bbs /oldboy/blog [root@oldboyedu-lnb oldboy]# #在/oldboy/www /oldboy/bbs /oldboy/blog [root@oldboyedu-lnb oldboy]# #echo /oldboy/{www,bbs,blog} [root@oldboyedu-lnb oldboy]# #mkdir /oldboy/www /oldboy/bbs /oldboy/blog [root@oldboyedu-lnb oldboy]# [root@oldboyedu-lnb oldboy]# echo /oldboy/{www,bbs,blog} /oldboy/www /oldboy/bbs /oldboy/blog [root@oldboyedu-lnb oldboy]# mkdir /oldboy/{www,bbs,blog}
1.1.8 序列和序列拼接
创建 www01 www02 bbs01 bbs02 blog01 blog02
[root@oldboyedu-lnb oldboy]# #创建 www01 www02 bbs01 bbs02 blog01 blog02 [root@oldboyedu-lnb oldboy]# echo {www,bbs,blog}{01..2} www01 www02 bbs01 bbs02 blog01 blog02
在/oldboy/alex/下创建 stu01..10个目录 在每个目录下创建创建 www,bbs,blog目录
使用tree命令查看结果
[root@oldboyedu-lnb ~]# echo /oldboy/alex/stu{01..2} /oldboy/alex/stu01 /oldboy/alex/stu02 [root@oldboyedu-lnb ~]# echo /oldboy/alex/stu{01..2}/{www,bbs,blog} /oldboy/alex/stu01/www /oldboy/alex/stu01/bbs /oldboy/alex/stu01/blog /oldboy/alex/stu02/www /oldboy/alex/stu02/bbs /oldboy/alex/stu02/blog [root@oldboyedu-lnb ~]# echo {A,B}{01..02} A01 A02 B01 B02
1.1.9 使用序列的方式进行备份
[root@oldboyedu-lnb ~]# #cp passwd{,.bak} [root@oldboyedu-lnb ~]# echo passwd{,.bak} passwd passwd.bak [root@oldboyedu-lnb ~]# cp passwd{,.bak}
[root@oldboyedu-lnb ~]# echo {1..10..02} 1 3 5 7 9 [root@oldboyedu-lnb ~]# echo {1..10..1} 1 2 3 4 5 6 7 8 9 10 [root@oldboyedu-lnb ~]# echo {1..10..3} 1 4 7 10 [root@oldboyedu-lnb ~]# echo {1..10..4} 1 5 9
1.2 seq 输出序列
格式:
seq num # seq 100
-w # 输出规范的序列
-s # 指定分隔符
seq 10 # 输出数字1-10
seq -s +5 1+2+3+4+5
seq -s -5 1-2-3-4-5
seq -s \*100 |bc (乘法 *有特殊含义需要用\转义)
1.3 cat 查看文件
输出内容到屏幕中 类似于echo
-n 显示文件的行号
1.3.1 cat <<EOF
[root@oldboyedu-lnb ~]# cat <<EOF # 可以显示菜单 选项 > oldboyedu.com > EOF oldboyedu.com
1.3.2 1次查看多个文件的内容
[root@oldboyedu-lnb ~]# cat 1.sh for.sh passwd [root@oldboyedu-lnb oldboy]# ll total 12 -rw-r--r--. 1 root root 11 Jul 30 09:37 1.txt -rw-r--r--. 1 root root 10 Jul 30 09:37 2.txt -rw-r--r--. 1 root root 10 Jul 30 09:37 3.txt [root@oldboyedu-lnb oldboy]# cat {1..3}.txt 1111111111 222222222 333333333 [root@oldboyedu-lnb oldboy]# cat *.txt 1111111111 222222222 333333333
文件合并
[root@oldboyedu-lnb oldboy]# cat 1.txt 2.txt 3.txt > all.txt [root@oldboyedu-lnb oldboy]# cat all.txt 1111111111 222222222 333333333 [root@oldboyedu-lnb oldboy]# cat 1.txt 2.txt 3.txt > all.txt [root@oldboyedu-lnb oldboy]# cat all.txt 1111111111 222222222 333333333 [root@oldboyedu-lnb oldboy]# cat /etc/hosts > all.txt [root@oldboyedu-lnb oldboy]# cat all.txt 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 [root@oldboyedu-lnb oldboy]# cat 1.txt 2.txt 3.txt > all.txt [root@oldboyedu-lnb oldboy]# cat /etc/hosts >> all.txt [root@oldboyedu-lnb oldboy]# cat all.txt 1111111111 222222222 333333333 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 [root@oldboyedu-lnb ~]# cat >1.txt<<EOF > oldboy > alex > EOF [root@oldboyedu-lnb ~]# cat 1.txt oldboy alex
1.4 less 一页一页的查看文件内容 常用
在工作中大的文件不使用cat和vim vim需要把文件加载到内存中 速度较慢
f # 往下翻页 空格 # 往下翻页 b # 往上翻页 -N # 显示行号 100g # 快速移动光标到100行 1g # 快速移动光标到首行 G # 文件的底部 v # 进入到编辑模式 :wq # 保存并退出vim模式返回less模式 / # 查找内容
n # 往下查找内容 N # 往上查找内容 q # 退出less模式
1.5 more 一页一页的查看文件内容 不常用
f # 往下翻页 b # 往上翻页 / # 查找内容 不高亮显示
1.6 head 显示头部信息 默认显示文件的前10行 任何输出到屏幕上的内容都可以显示
语法规范:
1) head file.txt # 默认显示file.txt的前10行
2) cat file.txt|head # seq 100|head
参数选项:
-n 显示n行
-c 显示文件的前n个字符 了解
1.6.1 head 默认显示文件的前10行
[root@oldboyedu-lnb ~]# head /etc/services # 默认显示文件的前10行
-n2 显示输出内容的前2行 简写-2
[root@oldboyedu-lnb ~]# seq 100|head -n2
1
2
[root@oldboyedu-lnb ~]# seq 100|head -2
1
2
1.6.2 head命令查看文件中的前2行
[root@oldboyedu-lnb ~]# head -2 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin
1.6.3 -c 了解 显示文件的前2个字符
[root@oldboyedu-lnb ~]# head -c2 /etc/passwd ro
1.7 tail 尾巴 默认输出文件最后的10行
-n 显示尾巴最后的n行 -f follow 实时显示文件的变化 简写 tailf -F 实时显示文件的变化 监控文件是否存在 存在则正常监控 不存在则等待文件的出现
1.7.1 显示文件最后1行
[root@oldboyedu-lnb ~]# tail -n 1 1.txt 10101010101010
1.7.2 tail -f 实时显示日志的最新日志
[root@oldboyedu-lnb ~]# tail -f /var/log/secure
显示/etc/passwd的第11行 所有能显示到屏幕上的 都可以使用head和tail
[root@oldboyedu-lnb ~]# head -11 passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin [root@oldboyedu-lnb ~]# head -11 passwd|tail -1 games:x:12:100:games:/usr/games:/sbin/nologin
1.8 grep 过滤字符串信息 三剑客老三
语法:
grep '过滤的内容' file # 双引号 单引号 不加引号 都有特殊含义
cat file|grep '过滤的内容' # grep 单引号的含义 所见即所得
参数选项:
-n # 显示过滤到内容的行号
-v # 取反 排错搜索到的内容
^$ # 表示空行
PS: grep 直接搜索文件 使用 grep '过滤的内容' 文件
PS: grep 和其他命令的输出结合使用 ls cat 的输出结果进行过滤 cat file.txt|grep xxx
1.8.1 过滤root的行 模糊匹配
[root@oldboyedu-lnb ~]# grep root passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
1.8.2 模糊匹配root
[root@oldboyedu-lnb ~]# cat passwd|grep root root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@oldboyedu-lnb ~]# cat passwd|grep root
1.8.3 显示过滤到内容的行号 -n
[root@oldboyedu-lnb ~]# grep -n root passwd 1:root:x:0:0:root:/root:/bin/bash 10:operator:x:11:0:operator:/root:/sbin/nologin
1.8.4 -v 取反
[root@oldboyedu-lnb ~]# cat 2.txt oldboy alex lidao test [root@oldboyedu-lnb ~]# grep oldboy 2.txt oldboy [root@oldboyedu-lnb ~]# grep -v oldboy 2.txt alex lidao test
1.8.5 过滤空行 和#号
[root@oldboyedu-lnb ~]# grep '^$' 2.txt [root@oldboyedu-lnb ~]# [root@oldboyedu-lnb ~]# grep '#' 2.txt #lidao #lidao #lidao
例: 把/etc/selinux/config中的空行和# 排除掉 只显示生效的行
[root@oldboyedu-lnb ~]# grep -v '^$' /etc/selinux/config |grep -v '#' SELINUX=disabled SELINUXTYPE=targeted 扩展:[root@oldboyedu-lnb ~]# egrep -v '^$|#' /etc/selinux/config SELINUX=disabled SELINUXTYPE=targeted
1.9 tr 1对1的替换 替换特殊的字符使用 不对字符串进行替换
# @ / % & : tr 无法直接读取文件
< # 输入重定向
语法格式:
tr "替换谁" "替换成什么" < file
cat file|tr "替换谁" "替换成什么"
1.9.1 临时替换:为#
[root@oldboyedu-lnb ~]# tr ":" "#" < all.txt root#x#0#0#root#/root#/bin/bash bin#x#1#1#bin#/bin#/sbin/nologin 把结果重定向到文件中 [root@oldboyedu-lnb ~]# tr ":" "#" < all.txt > test.txt root@oldboyedu-lnb ~]# cat test.txt root#x#0#0#root#/root#/bin/bash bin#x#1#1#bin#/bin#/sbin/nologin
[root@oldboyedu-lnb ~]# cat all.txt root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin [root@oldboyedu-lnb ~]# cat all.txt |tr "/" ":" root:x:0:0:root::root::bin:bash bin:x:1:1:bin::bin::sbin:nologin ----------------- [root@oldboyedu-lnb ~]# cat all.txt |tr ":" "\n" root x 0 0 [root@oldboyedu-lnb ~]# cat all.txt |tr ":" "\t" root x 0 0 root /root /bin/bash bin x 1 1 bin /bin /sbin/nologin
1.9.2 替换其他命令的输出
[root@oldboyedu-lnb ~]# cat all.txt |tr ":" "+" root+x+0+0+root+/root+/bin/bash bin+x+1+1+bin+/bin+/sbin/nologin
1.10 alias 别名 小名
别名的作用: 系统命令安全 方便操作
系统为了安全 给一些比较危险的命令起了个小名
当执行危险的命令时 其他是执行的另外一个命令
张三--->铁蛋
李四--->二蛋
rm ----> rm -i # -i 和我们交互执行命令
cp ----> cp -i
mv ----> mv -i
1.10.1 如何查看系统的别名 alias
[root@oldboyedu-lnb ~]# alias alias cp='cp -i' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
1.10.2 临时取消别名使用\
[root@oldboyedu-lnb ~]# \grep root all.txt root:x:0:0:root:/root:/bin/bash [root@oldboyedu-lnb ~]# \grep root all.txt --color root:x:0:0:root:/root:/bin/bash [root@oldboyedu-lnb ~]# unalias rm [root@oldboyedu-lnb ~]# rm -rf etc
1.10.3 定义别名 临时生效 alias 自己定义的名称
语法格式:
alias 自己定义的名称='可以执行的命令
[root@oldboyedu-lnb ~]# alias rm='echo command rm bny......'
1.10.4 永久生效 写入/etc/profile
[root@oldboyedu-lnb ~]# tail -1 /etc/profile alias rm='echo command bny........'
1.10.5 作业 使用vimeth0 其实就是编辑的真实网卡的配置
vim /etc/profile alias vimeth0='cat /etc/sysconfig/network-scripts/ifcfg-eth0' "/etc/profile" 78L, 2003C written [root@oldboyedu-lnb~]# source /etc/profile [root@oldboyedu-lnb~]# vimetho -bash: vimetho: command not found [root@oldboyedu-lnb~]# vimeth0 TYPE=Ethernet BOOTPROTO=static NAME=eth0 DEVICE=eth0 ONBOOT=yes IPADDR=10.0.0.200 PREFIX=24 GATEWAY=10.0.0.2 DNS1=223.5.5.5