1、创建一个目录/data

记忆方法:英文make directorys缩写后就是mkdir。

命令:

  1. mkdir /data
  2. cd /;mkdir data
  3. #提示:使用分号可以在一行内分割两个命令。

实践过程:

  1. 方法一:
  2. [root@oldboy66 ~]# mkdir /data
  3. #查看data目录是否创建成功,ls是list列表的意思,-ld是ls的常用参数,是长格式查看目录属性,l表示长格式,d表示目录
  4. [root@oldboy66 ~]# ls -ld /data
  5. drwxr-xr-x. 2 root root 4096 Nov 30 13:40 /data
  6.  
  7. 方法二:
  8. #删除方法一创建的目录
  9. [root@oldboy66 ~]# rm -r /data
  10. #输入y表示确认删除,y是yes的缩写
  11. rm: remove directory `/data'? y
  12. #进入根目录/下
  13. [root@oldboy66 ~]# cd /
  14. #创建data目录,不带斜线/,因为已经进入了
  15. [root@oldboy66 /]# mkdir data
  16. #查看data目录本身
  17. [root@oldboy66 /]# ls -ld data
  18. drwxr-xr-x. 2 root root 4096 Nov 30 13:44 data

总结:

cd后跟相对路径或者绝对路径,表示进入目录,如果不跟任何东西,会进入当前用户的家目录。

相对路径概念:不从/开始,而是从当前目录开始,例如:data/,mnt/oldboy。

绝对路径概念:从/开始的目录,就叫绝对路径,例如:/data/,/mnt/oldboy。

cd命令记忆方法:change directory。

mkdir [-mp] [目录名称] ß建立目录

-m:这个参数用来指定要创建目录的权限,但是很少用,都会用chmod来处理。

如:mkdir –m 777 /tmp/test,即建立一个权限为777的目录。

-p:这个参数用来递归创建目录,mkdir的常用参数。

2、在/data下面建立一个文件oldboy.txt

命令:

  1. touch /data/oldboy.txt
  2. cd /data;touch oldboy.txt
  3. #创建文件也可以用echo等,只不过touch是专业的,也可用间接创建文件的命令,如vi,cat等。
  4. 例如:
  5. echo > /data/oldboy.txt
  6. > /data/oldboy.txt

实践过程:

  1. 方法一:
  2. #在/data目录下创建oldboy.txt
  3. [root@oldboy66 data]# touch /data/oldboy.txt
  4. #查看创建的oldboy.txt
  5. [root@oldboy66 data]# ls -l /data/oldboy.txt
  6. -rw-r--r--. 1 root root 0 Nov 30 14:04 /data/oldboy.txt
  7.  
  8. 方法二:
  9. [root@oldboy66 /]# cd /data
  10. #如果同名文件存在,不会提示也不好覆盖,会更新文件的时间戳
  11. [root@oldboy66 data]# touch oldboy.txt

总结:

touch"摸"。touch [文件名] 就是"摸"一下文件,如果文件不存在,就建立新文件,如果存在,就改变文件的访问时间atime等时间戳信息。

路径分隔区别:

windows的目录分隔D:\PIC\oldboy。

linux的目录分隔/data/。

3、为oldboy.txt增加内容为"I am studying linux"。

方法一:常规编辑方法

执行vi oldboy.txt进入vi编辑器(默认命令模式),点击a或i进入编辑模式,敲入内容I am studying linux,然后按键盘上的esc键退出编辑模式(进入到命令模式),最后敲:wq保存并退出。wq解释write quit。

此方法说明:

vi就是类似记事本一样的linux下的常用编辑器,如果想功能更丰富可以用vim代替vi,vi/vim的内部有很多的命令技术点,例如i就是insert,进入插入编辑模式的状态的意思,esc键是切换到命令模式,命令模式下可以敲冒号":"在后面才可以接命令参数,例如wq,w是write,q是quit。

vi 编辑器,相当于记事本,有编辑功能,但是较弱。

vim 复制编辑器,相当于emeditor,editplus,notepad++。

快捷键:TAB 命令、路径补全。

方法二:单行或多行文本插入常用命令,内容都是存放到文件的尾部。

  1. echo "I am studying linux" >>/data/oldboy.txt

实践过程:

  1. #特殊的编辑方法,通过echo命令使用单引号把引号的内容通过>>追加到/data/oldboy.txt,注意:是追加不是覆盖
  2. [root@oldboy66 data]# echo "I am studying linux" >>/data/oldboy.txt
  3. #检查追加的结果
  4. [root@oldboy66 data]# cat oldboy.txt
  5. I am studying linux

此法说明:

echo是一个打印输出内容的一个常用命令,配合">或>>"可以为文件覆盖及追加内容。">"意思为重定向,会清除文件里所有以前数据,">>"为内容追加,只在文件尾部追加需要的内容,还有一个较复杂不常用的类似命令printf。

特殊字符命令:

>重定向,会清除文件里所有以前的数据,增加

>>追加重定向,

方法三:写脚本常用,追加多行,内容都放在文件的尾部。

  1. cat >>/data/oldboy.txt<<EOF
  2. I am studying linux
  3. EOF
  4. #注意:结尾的EOF要顶格写,EOF也可以用别的字符替代,只要是一对就好。

方法二、方法三为命令行或脚本中常使用的办法,都很重要。

方法二用于单行文本,方法三可以是多行文件,文本中如果有特殊字符,如$等需要用\转义才行。

  1. echo '
  2. 111
  3. 222
  4. 333
  5. '>>oldboy.txt

方法四:

  1. [root@oldboy66 data]# cat >>/data/oldboy.txt
  2. I am studying linux

按ctrl+d或ctrl+c组合键两遍结束编辑。此方法为特殊编辑方法。

总结:

echo是一个打印输出内容的一个常用命令,配合">"或">>"可以为文件覆盖或追加内容。echo $PATH打印出PATH的值。

重定向:意思是将"数据传到其他地方"。将某个命令执行后本应该出现在屏幕的数据,传输到其他地方,执行命令时,这个命令可能会通过文件读入数据,经过处理之后,再将数据输出到屏幕。

>或1> 输出重定向:把前面输出的东西输入到后边的文件中,会删除文件原有内容。

>>或1>> 追加重定向:把前面输出的对象追加到后边的文件中,不会删除文件原有内容。

<或<0 输入重定向:输入重定向用于改变命令的输入,后面指定输入内容,前面跟文件名

<<或<<0 追加输入重定向: 后跟字符串,用来表示"输入结束",也可以ctrl+d来结束输入。

2> 错误重定向:把错误信息输入到后边的文件中,会删除文件原有内容。

2>> 错误追加重定向:把错误信息追加到后边的文件中,不会删除文件原有内容。

标准输入(stdin):代码为0,使用<或<<,数据流向从右向左。

标准正常输出(stdout):代码为1,使用>或>>,数据流向从左向右。

标准错误输出(stderr):代码为2,使用2>或2>>。

箭头的方向就是数据流的方向。

特殊写法:

  1. echo oldboy 2>a.txt 1>b.txt
  2. #2>&1 就是把标准错误重定向到标准输出
  3. echo oldboy &>log.txt
  4. #也可以用>&
  5. echo oldboy >log.txt 2>&1

4、把oldboy.txt文件拷贝到/tmp下

命令:

  1. cd /data
  2. cp oldboy.txt /tmp/
  3. 提示:加cp -a,cp,-p保持属性

总结:

cp [-aifpru] [源文件] [目标文件]

-a:相当于-pdr

-d:若源文件为链接文件(link file),则复制链接文件属性而非档案本身。

-f:强制,若目标档案已经存在且无法开启,则移除后再尝试。

-i:若目标文件已经存在时,在覆盖时会先询问。

-p:连同档案的属性一起复制过去,而非使用默认属性。

-r:递归,用于复制目录。

-u:若目标文件存在,则目标文件比源文件旧时才复制。

提示:如果源文件是多个,那么目的文件在最后,且是目录。

cp的重要参数apr。

5、把/data目录移动到/root下

命令:

  1. mv /data /root/
  2. 提示:如果希望带目录拷贝,尽量不要mv /data/ /root/,移动目录时,源目录结尾不要多余斜线。

总结:

mv [-ifu] [源文件/源目录] [目的文件/目的目录]

-i:如果目的文件已存在,询问是否覆盖

-f:强制执行,不会询问

-u:若目的文件存在,则比源文件新才会移动。

提示:如果源文件是多个,那么目的文件在最后,且是目录。

如:f1、f2是文件,/d1、/d2是目录

mv f1 f2:如果f2不存在,则相当于f1重命名为f2;如果f2存在,则f1重命名为f2,并覆盖f2 。

mv f1 /d1:如果/d1不存在,则把f1移动到/下,并重命名为d1;如果/d1存在,则把f1移动到/d1下。

mv /d1 /d2:如果/d2不存在,则把/d1重命名为/d2;如果/d2存在,则把/d1移动到/d2下。

mv /d2 f1:如果f1不存在,则把/d2移动到当前目录,并重命名为f1;如果f1存在,会提示f1是个文件,不能用目录覆盖。

6、进入root目录下的data目录,删除oldboy.txt

命令:

  1. cd /root/data/
  2. rm oldboy.txt

删除一个文件一般用rm oldboy.txt,此法会提示你确认。用rm –f oldboy.txt方法不会提示确认直接删除,比较危险。

对于文件的删除禁止用"rm –fr 文件名",这是杀鸡用牛刀的做法,必须禁止掉,最多用"rm –f 文件名"。rm –fr 一般用来强制删除目录不提示,非常危险。

建议:

使用mv替代rm,也就是把文件移动到/tmp下,然后等/tmp分区将要满时一次性删除,减少犯错。

find删除

  1. [root@oldboy66 data]# find /root/data/ -type f -exec rm -f {} \;

在脚本中删除文件或目录时生产环境的使用方法一般为:

1、和xargs搭配用法

  1. #删除15天以前的文件
  2. find . -type f -name "*.log" -mtime +15 |xargs rm -f
  3. #删除目录30天 慎用
  4. find . -type f -name "*.log" -mtime +30 |xargs rm -fr

2、使用find的-exec

  1. #在/logs目录中查找更改时间在5日以前的文件并删除它们
  2. find /logs -type f -mtime "*.log" -mtime +5 -exec rm {} \;

find命令的原理:

\ :特殊字符,让一个有特殊意义的字符,脱掉马甲。

.. :上级目录

. :当前目录

\. :代表.号

| :管道(把前一个命令结果的输出交给后一个程序进行继续处理)

-type :按文件类型查找

-name :按名字查找,查找的内容最好用双引号括起来。

! :取反。

删除目录下除了oldboy.txt外的所有文件:

  1. [root@oldboy66 data]# find /root/data -type f ! -name "oldboy.txt" |xargs rm -f
  2. [root@oldboy66 data]# find /root/data/ -type f ! -name "oldboy.txt" -exec rm {} \;

linux面试题:删除一个目录下所有文件,但保留一个指定文件。

7、退出到上级目录,删除data目录。

命令:

  1. cd ..或cd ../
  2. rm -r data或rmdir data
  3. #里面是空目录不需要用-rf。

总结:

.. :相对路径,表示当前目录的上一级目录,例如:/mnt/oldboy,mnt就是oldboy的上级目录。

. :相对路径,表示当前目录,即当前命令行的目录。

rm [-irf] [文件/目录] ß删除文件/目录

-i:询问用户是否正确删除,用y或n来回答。

-r:删除目录时加该选项,删除目录及目录下的文件和目录。

-f:强制删除,不用确认。

rmdir [-p] [目录名] ß用来删除空目录,-p表示递归删除目录,目录里不能有文件或者目录

如:/a/b/c

rmdir /a/b/c :会删除/a/b/c,而/a/b还在。

rmdir –p /a/b/c :会删除/a,/a/b,/a/b/c。

但是rmdir /a,rmdir –p /a/b都会出错,提示:Directory not empty。

8、限定输出

已知文件test.txt内容为:

test

liyao

oldboy

请给出打印test.txt内容时,不包含oldboy字符串的目录。

方法一:

head:头部,取文件的前N行,默认前10行,取出前三行-3 。

  1. [root@oldboy66 ~]# head -2 test.txt

方法二:

grep:过滤器,把想要的或者不想要的分离开,-v排除。

  1. [root@oldboy66 ~]# grep -v "oldboy" test.txt

提示:也可以使用cat test.txt|grep –v "oldboy",这个命令虽然能实现,但是执行效率差很多。

方法三:

sed:删除,d表示delete删除,p表示print打印,-n取消sed的默认输出,-i改变文件内容。

sed –n '/过滤的内容/处理的命令' 文件

  1. [root@oldboy66 ~]# sed -e '/oldboy/d' test.txt
  2. [root@oldboy66 ~]# sed /oldboy/d test.txt
  3. [root@oldboy66 ~]# sed -e /^oldboy/d test.txt
  4. [root@oldboy66 ~]# sed -n /[^oldboy]/p test.txt

方法四:

awk:

  1. [root@oldboy66 ~]# awk /[^oldboy]/ test.txt

9、用一条命令完成创建目录/oldboy/test,即创建/oldboy目录和/oldboy/test目录

命令:

  1. mkdir -p /oldboy/test

实践过程:

  1. #递归创建目录,一般第一级目录不存在时用-p,否则报错mkdir: cannot create directory `/oldboy/test': No such file or directory
  2. [root@oldboy66 /]# mkdir -p /oldboy/test

安装系统补装工具命令:

yum安装或者rpm安装、源代码安装

更新补丁执行(生产环境尽量不做,除非有已知的安全漏洞):

yum update

安装tree:

  1. [root@oldbo [root@oldboy66 /]# yum install tree -y
  2. #查询tree
  3. [root@oldboy66 /]# rpm -qa tree
  4. tree-1.5.3-3.el6.x86_64
  5. [root@oldboy66 /]# tree oldboy/
  6. oldboy/
  7. └── test
  8.  
  9. 1 directory, 0 files

tree:显示目录树结构

yum:linux里的包管理器,yum可以帮助解决依赖问题。

例如:yum install tree -y,作用下载tree包,然后调用rpm命令安装tree包,如果需要依赖包,会自动下载并提前安装。

rpm: -ivh(安装显示输出)

rpm –ivh 包名.rpm(提前下载好),rpm安装的最大问题是无法解决依赖问题。

10、已知/tmp目录下存在test.txt文件,如何执行命令才能把/mnt/test.txt拷贝到/tmp下覆盖掉/tmp/test.txt,而linux系统不提示是否覆盖(root权限下)。

命令:

方法一:

/bin/cp /mnt/test.txt /tmp/test.txt

方法二:

\cp /mnt/test.txt /tmp/test.txt

提示:此题就是屏蔽掉系统默认的对应命令别名,默认执行cp的操作是调用了别名的,所以提示覆盖。

cp命令默认是不会提示overwrite,但是cp的-i选项会提示,而一般Linux的用户环境文件~/.bashrc中会把cp命名成alias cp='cp -i'。这样在Linux下输入cp命令实际上运行的是cp –i,加上一个"\"符号或者写cp全路径/bin/cp就是让此次的cp命令不使用别名(cp -i)运行。

别名概念:

输入alias查找当前别名。

  1. [root@oldboy66 /]# alias
  2. alias cp='cp -i'
  3. alias l.='ls -d .* --color=auto'
  4. alias ll='ls -l --color=auto'
  5. alias ls='ls --color=auto'
  6. alias mv='mv -i'
  7. alias rm='rm -i'
  8. alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

取消别名设置:unalias(临时生效,重启失效)

  1. [root@oldboy66 /]# unalias cp
  2. [root@oldboy66 /]# alias
  3. alias l.='ls -d .* --color=auto'
  4. alias ll='ls -l --color=auto'
  5. alias ls='ls --color=auto'
  6. alias mv='mv -i'
  7. alias rm='rm -i'
  8. alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

添加别名设置:

  1. [root@oldboy66 /]# alias cp='cp -i'
  2. [root@oldboy66 /]# alias
  3. alias cp='cp -i'
  4. alias l.='ls -d .* --color=auto'
  5. alias ll='ls -l --color=auto'
  6. alias ls='ls --color=auto'
  7. alias mv='mv -i'
  8. alias rm='rm -i'
  9. alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

自定义别名oldboy:

  1. #设置oldboy为别名,执行echo I am oldboy linux
  2. [root@oldboy66 /]# alias oldboy="echo I am oldboy linux"
  3. #查看oldboy别名
  4. [root@oldboy66 /]# alias|grep oldboy
  5. alias oldboy='echo I am oldboy linux'
  6. [root@oldboy66 /]# oldboy
  7. I am oldboy linux
  8. #取消oldboy别名
  9. [root@oldboy66 /]# unalias oldboy
  10. [root@oldboy66 /]# alias|grep oldboy

自定义rm:

  1. [root@oldboy66 /]# alias rm='echo "rm can not be used,pls use mv"'
  2. [root@oldboy66 /]# alias|grep rm
  3. alias rm='echo "rm can not be used,pls use mv"'
  4. [root@oldboy66 /]# rm -fr /root/oldboy/
  5. rm can not be used,pls use mv -fr /root/oldboy/

方法三:

unalias cp

cp /mnt/test.txt /tmp/test.txt

提示:命令行处理别名仅在当时生效,重启系统后失效。

alias:查看以及定义别名

unalias:取消别名

~:用户的家目录,针对root,~就代表/root。

别名的配置文件,针对root用户/root/.bashrc;所有用户生效,/etc/bashrc或/etc/profile定义,生效执行soure /etc/bashrc或/etc/profile。

别名的作用:

1、通过给危险命令加一别保护参数,防止人为误操作。

2、把很多复杂的字符串或命令变成一个简单的字符串或命令。

11、只查看ett.txt文件(100行)内第20到第30行的内容。

命令:

sequence == seq序列

  1. #打印1到3
  2. [root@oldboy66 tmp]# seq 3
  3. 1
  4. 2
  5. 3
  6. #打印1到3
  7. [root@oldboy66 tmp]# seq 1 3
  8. 1
  9. 2
  10. 3
  11. 打印2到8
  12. [root@oldboy66 tmp]# seq 2 8
  13. 2
  14. 3
  15. 4
  16. 5
  17. 6
  18. 7
  19. 8
  20. #打印1到7的奇数
  21. [root@oldboy66 tmp]# seq 1 2 7
  22. 1
  23. 3
  24. 5
  25. 7
  26. #打印0到7的偶数
  27. [root@oldboy66 tmp]# seq 0 2 7
  28. 0
  29. 2
  30. 4
  31. 6

Usage: seq [OPTION]... LAST

or: seq [OPTION]... FIRST LAST

or: seq [OPTION]... FIRST INCREMENT LAST

-s:指定序列的分割符

  1. [root@oldboy66 tmp]# seq -s "--" 5
  2. 1--2--3--4--5
  3. [root@oldboy66 tmp]# seq -s "@" 5
  4. 1@2@3@4@5

生成ett文件,seq 100 >ett.txt。

  1. [root@oldboy66 tmp]# seq 100 >ett.txt

方法一:

tail:尾巴,取出文件的最后N行,默认最后10行,取最后三行-n 3 。

-f:跟踪一个文件的尾部实时变化(tail –f ett.txt)。

  1. [root@oldboy66 /]# head -30 ett.txt|tail -11
  2.  
  3. [root@oldboy66 /]# tail -81 ett.txt|head -11

方法二:

  1. #效率高(首选)
  2. [root@oldboy66 tmp]# sed -n '20,30p' ett.txt
  3. [root@oldboy66 tmp]# sed -n 20,30p ett.txt

取出第30行:

  1. [root@oldboy66 tmp]# sed -n '30p' ett.txt

sed命令与选项:

sed强大的功能,是由以下多种命令和选项联合工作的结果。sed通过指定某一地址来决定对哪些行来进行处理,如果没有指定地址,sed默认处理标准输入所有的行。地址的形式可以是数字,正则表达式,或两种结合。如果给出的是由逗号连接的两个地址,则表示sed要处理的内容就是该两个地址之间的行。

sed命令就是用来处理那些由地址指定的输入行。

命令

功能

a\

在当前匹配行的后面添加一行或多行文本内容

c\

更改当前匹配行的文本,替换成新的文本,原文本行内容消失

d

删除当前模式空间所有的内容

D

删除当前模式空间内第一个\n之前的内容

i\

在当前匹配行之前插入一行或多行文本内容

h

把模式空间的内容复制到保持空间,并覆盖当前保持空间的内容

H

把模式空间的内容追加到保持空间,原保持空间的内容依旧存在(注意两行之间的\n)

x

交换当前模式空间和当前保持空间的内容

g

与s联合使用时,表示对当前行全局匹配替换

g

取出当前保持空间的内容,并将其复制到模式空间,覆盖掉原模式空间的内容

G

取出当前保持空间的内容,并将其复制到模式空间,追加到原模式空间内容的后面(注意两行之间的\n)

p

打印匹配行

P

打印当前模式空间内容,直到第一个换行符(\n)为止

n

读取下一行内容,并复制到模式空间,取代原模式空间的内容

N

读取下一行内容,并复制到模式空间,追加到原模式空间内容的后面(注意两行之间的\n)

q

第一个模式匹配完成后退出或立即退出

r

从另一个文件中读取文本,并加入到当前匹配行后面

s

常说的查找并替换,用一个字符串替换成另一个

w

将匹配的行写入新的文件

y

将字符转换为另一个字符(对正则表达式不能使用y命令)

!

对所选行以外的所有行进行相应处理

=

显示匹配内容行的行号

sed选项:

选项

功能

-e

允许多项编辑

-f

后接sed脚本的文件名

-n

取消默认输出

-i

修改文件内容

打印:

sed –n '2p' oldboy.txt (打印第二行)

sed –n '$p' oldboy.txt (打印最后一行)

sed –n '1,3p' oldboy.txt (打印第1到3行)

sed –n '/yass/'p oldboy.txt (打印匹配yass的行)

sed –n '4,/The/'p oldboy.txt (在第四行匹配模式The,若匹配,则打印)

sed –n '/\$/'p oldboy.txt (匹配元字符$)

sed –n '1,$'p oldboy.txt (打印整个文件,只需将执行范围设为第一行到最后一行1,$,$意义最后一行)

sed –n '/.*ing/'p oldboy.txt (任意字符,使用模式/.*ing/查询以ing结尾的任意单次)

sed –n '/movie/=' oldboy.txt (打印匹配行的行号)

sed –n –e '/movie/p' –e '/movie/=' oldboy.txt (打印匹配行的内容和行号)

sed '=' oldboy.txt|tail -2 (显示行数或最大行号)

方法三:

  1. [root@oldboy66 tmp]# awk '{if(NR<31 && NR>19) print $1}' ett.txt
  2. [root@oldboy66 tmp]# awk '{if(NR<31 && NR>19) printf $1"\n"}' ett.txt

awk:一门语言,过滤内容(取列)

awk '{print $1}' 文件 ß$1第一列,$2第二列

awk –F "分隔符" '{print $1}' 文件 ß$1第一列,$2第二列,…,$(NF-1)(倒数第二列),$NF(最后一列)

案例:awk默认分隔符空格

  1. [root@oldboy66 tmp]# cat awk.txt
  2. oldboy oldgirl
  3. ddd fff
  4. [root@oldboy66 tmp]# awk '{print $1}' awk.txt
  5. oldboy
  6. ddd
  7. [root@oldboy66 tmp]# awk '{print $2}' awk.txt
  8. oldgirl
  9. fff

-F指定分隔符:

  1. [root@oldboy66 tmp]# awk -F ":" '{print $1}' /etc/passwd

指定输出行之间的分隔符:

  1. [root@oldboy66 tmp]# awk -F ":" '{print $1 "
    " $3 "==" $5}' /etc/passwd

总结:

head [-n] [文件名]:后面直接跟文件名,显示文件前10行。-n表示显示文件前n行。

tail [-nf] [文件名]:后面直接跟文件名,显示文件后10行。-n表示显示文件后n行。

方法四:

  1. [root@oldboy66 tmp]# cat ett.txt|grep 20 -A 10
  2. [root@oldboy66 tmp]# cat ett.txt|grep 30 -B 10
  3. [root@oldboy66 tmp]# cat ett.txt|grep 25 -C 5

-A:除了显示匹配的一行之外,并显示该行之后的num行。

-B:除了显示匹配的一行之外,并显示该行之前的num行。

-C:除了显示匹配的以后之外,并显示该行前后各num行。

12、分析图片服务日志,把日志(每个图片访问次数*图片大小的总和)排行,取top10,也就是计算每个url的总访问大小。

说明:这个功能可以用于IDC网站流量带宽很高,然后通过分析服务器日志哪些元素占用流量过大,进而进行优化或裁剪该图片,压缩js等措施。

13、把/oldboy目录及其子目录下所有以扩展名.sh结尾的文件中包含./hostlists.txt的字符串全部替换为./idctest_iplist。

命令:

  1. [root@oldboy66 tmp]# find ./ -name "*.sh" -type f -exec sed -i 's#./hostlists.txt#./idctest_iplist#g' {} \;

解析:

sed替换:

sed –i 's#oldboy#oldgirl#g' a.txt

s:查找并替换,用一个字符串替换成另一个。

g:与s联合使用时,表示对当前行全局匹配替换。

-i:修改文件内容。

#:分隔符,也可以用/、@等替换。

find查找:

find / -type f –name "a.txt"

组合:

替换当前目录下面所有文件名为test.txt中的oldboy为oldgirl。

  1. [root@oldboy66 tmp]# find ./ -name "test.txt" -type f|xargs sed -i 's#oldboy#oldgirl#g'
  2. [root@oldboy66 tmp]# find ./ -name "test.txt" -type f -exec sed -i 's#oldboy#oldgirl#g' {} \;
  3. [root@oldboy66 tmp]# sed -i 's#oldboy#oldgirl#g' `find ./ -name "test.txt" -type f`

查看:

  1. [root@oldboy66 tmp]# find ./ -name "test.txt" -type f|xargs cat
  2. [root@oldboy66 tmp]# find ./ -name "test.txt" -type f -exec cat {} \;
  3. [root@oldboy66 tmp]# cat `find ./ -name "test.txt" -type f`

特殊字符总结:

符号

作用

>

输出重定向符,重定向内容到文件,清除已有的内容,然后加入新内容,如果文件不存在还会创建文件

>>

追加输出重定向符,>>追加内容到文件(中间无空格)

<

输入重定向(箭头朝向就是数据流的方向)

<<

追加输入重定向

|

管道,就像一个真实管道一样,例如:水管左边进水,右边流出来。其他的功能,egrep "3306|1521" /etc/services

\

转义字符,让有意义的字符脱掉它代表的意义。例如:正则里$表示以什么结尾,用\$表示$符号本身。

~

当前用户的家目录

.或./

一个点号是当前目录,其他功能,正则,任意单个字符

..或../

两个点号是当前目录的上级目录

/

根目录,即linux里所有目录的顶点。也是路径分隔符,而windows里则为D:\工作目录\

;

命令分隔符

{}

生成字符或数字序列(seq),一般配合echo等命令使用,find里的{}意思是前面命令的结果,mkdir stu{1..100}

!

1、!+字母,表示调出最近一次以此字母开头的命令;2、!!表示使用最近一次操作的命令;3、!+数字,表示调出历史的第几条命令。

-

用户上一次所在的目录。-由OLDPWD变量控制。

常用快捷键:

tab命令或路径补全键,如果。

ctrl+c终止当前任务命令或程序。

ctrl+d退出当前用户环境。相当于exit、logout。

ctrl+l清屏。

ctrl+shift+c(ctrl+insert)ssh客户端SecureCRT里复制的命令。

ctrl+a:到开头

ctrl+e:到结尾

ctrl+u:剪切光标前

ctrl+k:删除光标后

Linux命令【第一篇】的更多相关文章

  1. Linux命令第一篇

    作业一: 1)   新建用户natasha,uid为1000,gid为555,备注信息为“master” natasha:x:1004:555:master:/home/natasha:/bin/ba ...

  2. Linux命令学习篇0——原产地

    昨天在用curl发送简单的HTTP请求做測试的时候发现自己每次使用的时候都是在网络上查看别人的演示样例才干想起来怎么用,这样效率太低了.尽管有网络依旧在,可是总感觉不是被自己掌握着,心里不踏实,回忆起 ...

  3. Linux命令-cut篇

    Cut 命令是常用的 Linux 命令,在这里总结一下平时常用的参数和用法,方便查证. 常用参数: -b:以字节为单位进行分割: -c:以字符为单位进行分割: -d:自定义分割符进行分割,默认为制表符 ...

  4. Linux命令进阶篇之一

    利用file命令查看那文件的类型 cd /etc 这里面的文件 命令:file 语法:file [-bLvz] 文件 解释:-b:显示结果,但是不显示文件名称 -L:直接显示符号链接所指向的文件的类型 ...

  5. Linux命令进阶篇-文件查看与查找

    上一篇的博客对于Linux如何在不同目录下跳转和查看目录下内容做出了总结,主要靠cd和ls,很常见也很实用.但是你看到目录下面那么多不同花花绿绿的文件,心里是不是痒痒,是不是想进去一探究竟,有办法! ...

  6. linux命令 网络篇

    linux常用命令 netstat 语法(命令)  主要查看端口状态 netstat  语法 netstat -t/tcp 显示Tcp传输协议连线状况; netstat -u/udp 显示UDP传输协 ...

  7. 在windows如何操控一些屌炸天的linux命令[利刃篇]

    作为开发者,也许你会说,不会linux简直弱爆了.是的,但是,倒底有多少人是真正在用linux进行开发工作呢,也许是我孤陋寡闻,但我相信,windows操作很多东西是真方便,不愿意使用linux直接开 ...

  8. 聊聊、Java 命令 第一篇

    网上很多讲 Javac 和 Java 命令的,我觉得还是要自己写一写,做一个自己的总结,也方便以后查询. 开始之前先看看 help 命令,基本上任何一个软件都会提供这个命令. 没有什么比 -help ...

  9. linux 命令进阶篇之二

    一.预备知识 选取init的进程. cat :由第一行开始显示文件内容 tac:由最后一行开始显示,有没有发现和cat是反过来写的 more:一页一页的显示内容 less:与more相似,但是可以往前 ...

  10. Linux命令进阶篇之二

    实验内容: cat :由第一行开始显示文件内容       tac:由最后一行开始显示,有没有发现和cat是反过来写的       more:一页一页的显示内容       less:与more相似, ...

随机推荐

  1. c#与java的区别

    经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...

  2. 实时的.NET程序错误监控产品Exceptionless

    Exceptionless可以对ASP.NET, Web API, WebForms, WPF, Console, 和 MVC 应用提供错误监控.上传.报表服务.使用时需要在Exceptionless ...

  3. 回首经典的SQL Server 2005

    原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com SQL Server是我使用时间最长的数据库,算起来已经有10年了.上世纪90年代,微软在软件开发的所有领域高歌猛 ...

  4. Android 获取meta-data中的数据

    在 Android 的 Mainfest 清单文件中,Application,Activity,Recriver,Service 的节点中都有这个的存在.很多时候我们可以通过 meta-data 来配 ...

  5. ExtJS 4.2 组件介绍

    目录 1. 介绍 1.1 说明 1.2 组件分类 1.3 组件名称 1.4 组件结构 2. 组件的创建方式 2.1 Ext.create()创建 2.2 xtype创建 1. 介绍 1.1 说明 Ex ...

  6. [C#] 简单的 Helper 封装 -- CookieHelper

    using System; using System.Web; namespace ConsoleApplication5 { /// <summary> /// Cookie 助手 // ...

  7. ASP.NET Core 中文文档 第四章 MVC(4.3)过滤器

    原文:Filters 作者:Steve Smith 翻译:刘怡(AlexLEWIS) 校对:何镇汐 ASP.NET MVC 过滤器 可在执行管道的前后特定阶段执行代码.过滤器可以配置为全局有效.仅对控 ...

  8. HTML+CSS 项目总结

    在过去的大概一个月的学习,基本掌握了HTML+CSS的用法和特性. 这个星期老师给我们布置了一个PC端的实战项目,并且要求在3-4天内完成,我不惜废寝忘食,在紧迫的时间内大致地完成了,但是有些效果不能 ...

  9. “风投云涌”:那些被资本看中的IT企业的风光与辛酸

         进入七月份以来,纷享销客获得D轮融资1亿美元,撼动业界,资本与IT联姻令一部分创业者眼红的同时,没有人注意到背后的风险. 科技与资本的结合,是当今经济社会前行的宏大主题.相关统计显示,软件行 ...

  10. MySQL+Amoeba实现数据库主从复制和读写分离

    MySQL读写分离是在主从复制的基础上进一步通过在master上执行写操作,在slave上执行读操作来实现的.通过主从复制,master上的数据改动能够同步到slave上,从而保持了数据的一致性.实现 ...