5.1 linux基础重要命令

基础不牢,地动山摇!

运维原则:简单、易用、高效

 业余能力之一:排版画图。

[root@bogon ~]# cd shell;mkdir oldboy  //可一句
[root@bogon shell]# ll oldboy/
总用量 0

[root@bogon shell]# ll test.sh
-rwxr--r--. 1 root root 18 7月 11 21:41 test.sh
[root@bogon shell]# cat test.sh
echo "i am a boy"
[root@bogon shell]# touch test.sh  //修改了访问时间,不修改内容
[root@bogon shell]# ll test.sh
-rwxr--r--. 1 root root 18 7月 19 21:12 test.sh

[root@bogon shell]# cat test.sh
echo "i am a boy"

 

[root@bogon shell]# echo 123 //打印输出
123
[root@bogon shell]# echo "123"
123
[root@bogon shell]# echo "I am a oldboy"
I am a oldboy
[root@bogon shell]# echo "I am a oldboy" > o.txt //标准输出 重定向,鸠占鹊巢,覆盖原来的内容。
[root@bogon shell]# cat o.txt
I am a oldboy

[root@bogon shell]# echo "heheda" >> o.txt  //追加重定向,不覆盖。
[root@bogon shell]# cat o.txt
I am a oldboy
heheda

cat >>oldboy.txt <<oldboy

1

2

3

oldboy

[root@bogon shell]# cat >>oldboy.txt <<oldboy
>
> 1
>
> 2
>
> 3
>
> oldboy
[root@bogon shell]#

 

 

[root@bogon ~]# cp shell/ /tmp/  //拷贝目录
cp: 略过目录"shell/"
[root@bogon ~]# cp -r shell/ /tmp/
[root@bogon ~]# cp shell/ /tmp/ -a
cp:是否覆盖"/tmp/shell/test1.sh"? y
cp:是否覆盖"/tmp/shell/test2.sh"? ^C

[root@bogon ~]# rm -rf oldboy.log //f 强制删除;r递归删除

[root@bogon shell]# ll oldboy
总用量 4
-rwxr--r--. 1 root root 18 7月 19 21:47 test.sh
[root@bogon shell]# rmdir oldboy //删除空目录,鸡肋命令
rmdir: 删除 "oldboy" 失败: 目录非空

[root@bogon shell]# rm -rf oldboy
[root@bogon shell]# ll oldboy
ls: 无法访问oldboy: 没有那个文件或目录

 

//要求只打印前两行

[root@bogon ~]# cat >test.txt<<EOF
> test
> liyao
> oldboy
> EOF
[root@bogon ~]# grep -v oldboy test.txt //法1,head默认显示前10行 ,-v 排除
test
liyao
[root@bogon ~]# grep oldboy test.txt
oldboy

[root@bogon ~]# grep old test.txt
oldboy
[root@bogon ~]# grep -v old test.txt
test
liyao

[root@bogon ~]# head -2 test.txt   //法2
test
liyao
[root@bogon ~]# tail -2 test.txt
liyao
oldboy

[root@bogon ~]# cat test.txt |grep -v oldboy  //法3
test
liyao

 

//需要过滤liyao

[root@bogon ~]# sed /li/ test.txt   
sed:-e 表达式 #1,字符 4:遗漏命令
[root@bogon ~]# sed /li/p test.txt
test
liyao
liyao
oldboy
[root@bogon ~]# sed -n /li/p test.txt  //-n 取消原始默认输出
liyao

[root@bogon ~]# sed -n /liyao/p test.txt
liyao
[root@bogon ~]# sed -n /oldboy/p test.txt
oldboy

[root@bogon ~]# sed -n /^oldboy/p test.txt
oldboy
[root@bogon ~]# sed -n /^oldboy/d test.txt
[root@bogon ~]# sed /^oldboy/d test.txt    //法4结果,删除以oldboy开头的
test
liyao

[root@localhost ~]# sed /^ol/d test.txt
test
liyao

[root@localhost ~]# sed /ol/d test.txt
test
liyao

[root@bogon ~]# sed /oldboy/d test.txt  //法4结果,删除以oldboy开头的

[root@bogon ~]# sed '/oldboy/d' test.txt  //注意:加与不加单双引号都可以
[root@bogon ~]# sed "/oldboy/d" test.txt

test
liyao

[root@bogon ~]# sed "/old/d" test.txt
test
liyao

 

[root@bogon ~]# awk /[^oldboy]/ test.txt
test
liyao

[root@bogon ~]# awk /oldboy/ test.txt
oldboy

 

[root@bogon ~]# mkdir aa bb cc
[root@bogon ~]# mkdir -p ./test/a/b/c
[root@bogon ~]# ll test/a/b/c/
总用量 0

[root@bogon ~]# LANG=en
[root@bogon ~]# tree ./test/
./test/
  `-- a
    `-- b
      `-- c

3 directories, 0 files

[root@bogon ~]# ll /mnt/test.txt
-rw-r--r--. 1 root root 18 Jul 19 22:57 /mnt/test.txt
[root@bogon ~]# cp test.txt /mnt/
cp: overwrite `/mnt/test.txt'? ^C
[root@bogon ~]# \cp test.txt /mnt/  //法1,直接覆盖不提示

[root@bogon ~]# which cp
alias cp='cp -i'
/bin/cp
[root@bogon ~]# /bin/cp test.txt /mnt/  //法2   //unalias cp^C

别名的作用:通过给危险命令加一些保护参数,防止人为误操作;把许多复杂的字符串变成一个简单的字符串,便于记忆。

[root@bogon ~]# alias oldboy='echo "I am a oldboy"'
[root@bogon ~]# alias  //unalias oldboy
alias cp='cp -i'
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 oldboy='echo "I am a oldboy"'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@bogon ~]# oldboy
I am a oldboy

//别名定义永久生效如下文件中编辑:

也可:[root@bogon ~]# cat /etc/profile

 

//which 查看命令的路径,whereis,locate(建立数据库updatedb、locate cat),find

[root@bogon ~]# which cat
/bin/cat
[root@bogon ~]# ll /bin/cat
-rwxr-xr-x. 1 root root 47976 6月 22 2012 /bin/cat


[root@bogon ~]# find / -type f -name "cat" //find遍历所有目录
/bin/cat

[root@bogon ~]# find / -name "cat"
/bin/cat

[root@bogon ~]# find / -name "test.sh"
/root/shell/test.sh
/home/centos/test.sh

 

[root@bogon ~]# find / -type f -name "test.txt"    //重点!
/root/test.txt
/mnt/test.txt
[root@bogon ~]# find / -type f -name "test.txt" -exec rm -f {} \;

[root@localhost ~]# find / -type f -name "test.txt" -exec ls -l {} \;   //法1

[root@bogon ~]# find / -type f -name "test.txt"
[root@bogon ~]#

 

[root@bogon ~]# find /var/ -type s -exec ls -l {} \;

[root@localhost ~]# find / -type f -exec ls -l {} \;

 

//{}代表find找到的内容;-exec是将前面的命令交给后面的命令去执行;;是bash特殊命令,就用\转义;ls -l {} 是额外命令;
srwxrwxrwx. 1 root root 0 Jun 17 10:28 /var/run/dbus/system_bus_socket
srwxrwxrwx. 1 avahi avahi 0 Jun 17 10:28 /var/run/avahi-daemon/socket
srw-rw-rw-. 1 root root 0 Jun 17 10:28 /var/run/acpid.socket
srwxrwxrwx. 1 root root 0 Jun 17 10:28 /var/run/cups/cups.sock

[root@bogon ~]# touch /mnt/test.txt  
[root@bogon ~]# touch /tmp/test.txt
[root@bogon ~]# touch /etc/test.txt
[root@bogon ~]# find / -type f -name "test.txt"
/mnt/test.txt
/tmp/test.txt
/etc/test.txt
[root@bogon ~]# find / -type f -name "test.txt"|xarg rm -f
bash: xarg: command not found
[root@bogon ~]# find / -type f -name "test.txt"|xargs rm -f   //法2

[root@localhost ~]# find / -type f -name "test.txt"|xargs ls -l
[root@bogon ~]# find / -type f -name "test.txt"
[root@bogon ~]#

//

[root@bogon ~]# find /root/ -type f -mtime -4
/root/.viminfo
/root/shell/test.sh
/root/shell/oldboy.txt
/root/shell/o.txt
/root/.bash_history
/root/ett.txt
[root@bogon ~]# find /root/ -type f -mtime +4

[root@bogon ~]# find /root/ -type f -name "*.log" -mtime +4 |xargs rm -f

//指定目录下4

天以前的*.log文件删除

 

[root@bogon ~]# seq 5 //默认从1到5
1
2
3
4
5
[root@bogon ~]# man seq
[root@bogon ~]# seq -s " " 5 //分隔符为空格
1 2 3 4 5
[root@bogon ~]# seq -s "," 5
1,2,3,4,5
[root@bogon ~]# seq 2 5  //从2到5
2
3
4
5

[root@localhost ~]# seq -s "  " 2 5
2 3 4 5

[root@bogon ~]# seq 1 2 9  //步长为2
1
3
5
7
9
[root@bogon ~]# seq 9 2 1
[root@bogon ~]# seq 2 5|tac   //tac 反向显示
5
4
3
2

//查看ett.txt文件(100行)内第20行到30行的内容

[root@bogon ~]# touch ett.txt  //法1
[root@bogon ~]# seq 100>ett.txt
seq: 缺少操作数
请尝试执行"seq --help"来获取更多信息。
[root@bogon ~]# seq 100 > ett.txt
[root@bogon ~]# cat ett.txt

[root@bogon ~]# head -30 ett.txt | tail -11
20
21
22
23
24
25
26
27
28
29
30

[root@bogon ~]# sed -n 20,30p ett.txt  //法2   //操作行的利器:sed 擅长行

[root@bogon ~]# sed -n '20,30p' ett.txt  //注意:也可用‘’号(最好‘ ’)或者“”号

[root@bogon ~]# sed -n "20,30p" ett.txt 
20
21
22
23
24
25
26
27
28
29
30

[root@bogon ~]# sed -n 30p ett.txt
30

 

[root@bogon ~]# awk '{if(NR>19 && NR<31) print $0}' ett.txt  //法3 ,利用三剑客老大,擅长列

 //awk中的NR意为行号,$0打印整个符合的内容。  //注意:awk只能用' { }'号!
20
21
22
23
24
25
26
27
28
29
30

[root@bogon ~]# awk '{if(NR==30) print $0}' ett.txt
30

 

[root@bogon ~]# awk -F ":" '{print $1}' /etc/passwd  //打印该文件所有第一列

[root@localhost ~]# awk -F : '{print $1}' /etc/passwd  //指定的分隔符可以不带" "号

[root@localhost ~]# awk -F ":" '{print $1}' /etc/passwd|grep "min"
admin
ming
[root@localhost ~]# awk -F ":" '{print $1}' /etc/passwd|grep "root"
root
[root@localhost ~]# awk -F ":" '{print $1}' /etc/passwd|grep root
root
[root@localhost ~]# awk -F ":" '{print $1}' /etc/passwd|grep min
admin
ming

=========================================================

posted @ 2017-07-19 21:37  bkycrmn  阅读(224)  评论(0编辑  收藏  举报