紫悦博客

不进则退,退一步万丈悬崖!

0%

目录点击这里:每天一个linux命令

昨天学习了创建文件和目录的命令mkdir ,今天学习一下linux中删除文件和目录的命令: rm命令。rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。

rm是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令(比如在/(根目录)下执行rm * -rf)。所以,我们在执行rm之前最好先确认一下在哪个目录,到底要删除什么东西,操作时保持高度清醒的头脑。

命令格式

1
rm [选项] 文件… 

命令功能

删除一个目录中的一个或多个文件或目录,如果没有使用- r选项,则rm不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。

命令参数

  • -f, –force 忽略不存在的文件,从不给出提示。
  • -i, –interactive 进行交互式删除
  • -r, -R, –recursive 指示rm将参数中列出的全部目录和子目录均递归地删除。
  • -v, –verbose 详细显示进行的步骤
  • –help 显示此帮助信息并退出
  • –version 输出版本信息并退出

命令实例

实例一:删除文件file,系统会先询问是否删除。

命令:

1
rm 文件名

输出:

1
2
3
4
5
6
7
[root@localhost test1]# ll
总计 4
-rw-r--r-- 1 root root 56 10-26 14:31 log.log
root@localhost test1]# rm log.log
rm:是否删除 一般文件 “log.log”? y
root@localhost test1]# ll
总计 0[root@localhost test1]#

说明:
输入rm log.log命令后,系统会询问是否删除,输入y后就会删除文件,不想删除则数据n。

实例二:强行删除file,系统不再提示。

命令:

1
rm -f log1.log

输出:

1
2
3
4
5
6
[root@localhost test1]# ll
总计 4
-rw-r--r-- 1 root root 23 10-26 14:40 log1.log
[root@localhost test1]# rm -f log1.log
[root@localhost test1]# ll
总计 0[root@localhost test1]#

实例三:删除任何.log文件;删除前逐一询问确认

命令:

1
rm -i *.log

输出:

1
2
3
4
5
6
7
8
9
[root@localhost test1]# ll
总计 8
-rw-r--r-- 1 root root 11 10-26 14:45 log1.log
-rw-r--r-- 1 root root 24 10-26 14:45 log2.log
[root@localhost test1]# rm -i *.log
rm:是否删除 一般文件 “log1.log”? y
rm:是否删除 一般文件 “log2.log”? y
[root@localhost test1]# ll
总计 0[root@localhost test1]#

实例四:将 test1子目录及子目录中所有档案删除

命令:

1
rm -r test1

输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@localhost test]# ll
总计 24drwxr-xr-x 7 root root 4096 10-25 18:07 scf
drwxr-xr-x 2 root root 4096 10-26 14:51 test1
drwxr-xr-x 3 root root 4096 10-25 17:44 test2
drwxrwxrwx 2 root root 4096 10-25 17:46 test3
drwxr-xr-x 2 root root 4096 10-25 17:56 test4
drwxr-xr-x 3 root root 4096 10-25 17:56 test5
[root@localhost test]# rm -r test1
rm:是否进入目录 “test1”? y
rm:是否删除 一般文件 “test1/log3.log”? y
rm:是否删除 目录 “test1”? y
[root@localhost test]# ll
总计 20drwxr-xr-x 7 root root 4096 10-25 18:07 scf
drwxr-xr-x 3 root root 4096 10-25 17:44 test2
drwxrwxrwx 2 root root 4096 10-25 17:46 test3
drwxr-xr-x 2 root root 4096 10-25 17:56 test4
drwxr-xr-x 3 root root 4096 10-25 17:56 test5
[root@localhost test]#

实例五:rm -rf test2命令会将 test2 子目录及子目录中所有档案删除,并且不用一一确认

命令:

1
rm -rf  test2 

输出:

1
2
3
4
5
6
7
[root@localhost test]# rm -rf test2
[root@localhost test]# ll
总计 16drwxr-xr-x 7 root root 4096 10-25 18:07 scf
drwxrwxrwx 2 root root 4096 10-25 17:46 test3
drwxr-xr-x 2 root root 4096 10-25 17:56 test4
drwxr-xr-x 3 root root 4096 10-25 17:56 test5
[root@localhost test]#

实例六:删除以 -f 开头的文件

命令:

1
rm -- -f

输出:

1
2
3
4
5
6
7
[root@localhost test]# touch -- -f
[root@localhost test]# ls -- -f
-f[root@localhost test]# rm -- -f
rm:是否删除 一般空文件 “-f”? y
[root@localhost test]# ls -- -f
ls: -f: 没有那个文件或目录
[root@localhost test]#

也可以使用下面的操作步骤:

1
2
3
4
5
[root@localhost test]# touch ./-f
[root@localhost test]# ls ./-f
./-f[root@localhost test]# rm ./-f
rm:是否删除 一般空文件 “./-f”? y
[root@localhost test]#

实例七:自定义回收站功能

命令:

1
myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; }

输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@localhost test]# myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir -p $D; 	mv "$@" $D && echo "moved to $D ok"; }
[root@localhost test]# alias rm='myrm'
[root@localhost test]# touch 1.log 2.log 3.log
[root@localhost test]# ll
总计 16
-rw-r--r-- 1 root root 0 10-26 15:08 1.log
-rw-r--r-- 1 root root 0 10-26 15:08 2.log
-rw-r--r-- 1 root root 0 10-26 15:08 3.log
drwxr-xr-x 7 root root 4096 10-25 18:07 scf
drwxrwxrwx 2 root root 4096 10-25 17:46 test3
drwxr-xr-x 2 root root 4096 10-25 17:56 test4
drwxr-xr-x 3 root root 4096 10-25 17:56 test5
[root@localhost test]# rm [123].log
moved to /tmp/20121026150901 ok
[root@localhost test]# ll
总计 16drwxr-xr-x 7 root root 4096 10-25 18:07 scf
drwxrwxrwx 2 root root 4096 10-25 17:46 test3
drwxr-xr-x 2 root root 4096 10-25 17:56 test4
drwxr-xr-x 3 root root 4096 10-25 17:56 test5
[root@localhost test]# ls /tmp/20121026150901/
1.log 2.log 3.log
[root@localhost test]#

说明:
上面的操作过程模拟了回收站的效果,即删除文件的时候只是把文件放到一个临时目录中,这样在需要的时候还可以恢复过来。

参考资料:http://codingstandards.iteye.com/blog/983531

目录点击这里:每天一个linux命令

linux mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。

命令格式

1
mkdir [选项] 目录...

命令功能

通过 mkdir 命令可以实现在指定位置创建以 DirName(指定的文件名)命名的文件夹或目录。要创建文件夹或目录的用户必须对所创建的文件夹的父文件夹具有写权限。并且,所创建的文件夹(目录)不能与其父目录(即父文件夹)中的文件名重名,即同一个目录下不能有同名的(区分大小写)。

命令参数

-m, –mode=模式,设定权限<模式> (类似 chmod),而不是 rwxrwxrwx 减 umask

-p, –parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;

-v, –verbose 每次创建新目录都显示信息

–help 显示此帮助信息并退出
–version 输出版本信息并退出

命令实例:

实例1:创建一个空目录

命令:

1
mkdir test1

输出:

1
2
3
4
5
[root@localhost soft]# cd test
[root@localhost test]# mkdir test1
[root@localhost test]# ll
总计 4drwxr-xr-x 2 root root 4096 10-25 17:42 test1
[root@localhost test]#

实例2:递归创建多个目录

命令:

1
mkdir -p test2/test22

输出:

1
2
3
4
5
6
7
8
[root@localhost test]# mkdir -p test2/test22
[root@localhost test]# ll
总计 8drwxr-xr-x 2 root root 4096 10-25 17:42 test1
drwxr-xr-x 3 root root 4096 10-25 17:44 test2
[root@localhost test]# cd test2/
[root@localhost test2]# ll
总计 4drwxr-xr-x 2 root root 4096 10-25 17:44 test22
[root@localhost test2]#

实例3:创建权限为777的目录

命令:

1
mkdir -m 777 test3

输出:

1
2
3
4
5
6
7
8
[root@localhost test]# mkdir -m 777 test3
[root@localhost test]# ll
总计 12drwxr-xr-x 2 root root 4096 10-25 17:42 test1
drwxr-xr-x 3 root root 4096 10-25 17:44 test2
drwxrwxrwx 2 root root 4096 10-25 17:46 test3
[root@localhost test]#
说明:
test3 的权限为rwxrwxrwx

实例4:创建新目录都显示信息

命令:

1
mkdir -v test4

输出:

1
2
3
4
5
6
[root@localhost test]# mkdir -v test4
mkdir: 已创建目录 “test4”
[root@localhost test]# mkdir -vp test5/test5-1
mkdir: 已创建目录 “test5”
mkdir: 已创建目录 “test5/test5-1”
[root@localhost test]#

实例五:一个命令创建项目的目录结构

参考:http://www.ibm.com/developerworks/cn/aix/library/au-badunixhabits.html

命令:

1
mkdir -vp scf/{lib/,bin/,doc/{info,product},logs/{info,product},service/deploy/{info,product}}

输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[root@localhost test]# mkdir -vp scf/{lib/,bin/,doc/{info,product},logs/{info,product},service/deploy/{info,product}}
mkdir: 已创建目录 “scf”
mkdir: 已创建目录 “scf/lib”
mkdir: 已创建目录 “scf/bin”
mkdir: 已创建目录 “scf/doc”
mkdir: 已创建目录 “scf/doc/info”
mkdir: 已创建目录 “scf/doc/product”
mkdir: 已创建目录 “scf/logs”
mkdir: 已创建目录 “scf/logs/info”
mkdir: 已创建目录 “scf/logs/product”
mkdir: 已创建目录 “scf/service”
mkdir: 已创建目录 “scf/service/deploy”
mkdir: 已创建目录 “scf/service/deploy/info”
mkdir: 已创建目录 “scf/service/deploy/product”
[root@localhost test]# tree scf/
scf/
|-- bin
|-- doc
| |-- info
| `-- product
|-- lib
|-- logs
| |-- info
| `-- product
`-- service
`-- deploy
|-- info
`-- product
12 directories, 0 files
[root@localhost test]#

目录点击这里:每天一个linux命令

Linux中用 pwd 命令来查看”当前工作目录”的完整路径。 简单得说,每当你在终端进行操作时,你都会有一个当前工作目录。在不太确定当前位置时,就会使用pwd来判定当前目录在文件系统内的确切位置。

命令格式

1
pwd [选项]

命令功能

查看”当前工作目录”的完整路径

常用参数

一般情况下不带任何参数

如果目录是链接时:

格式:pwd -P 显示出实际路径,而非使用连接(link)路径。

常用实例

实例1:用 pwd 命令查看默认工作目录的完整路径

命令:

1
pwd

输出:

1
2
3
[root@localhost ~]# pwd
/root
[root@localhost ~]#

实例2:使用 pwd 命令查看指定文件夹

命令:

1
pwd

输出:

1
2
3
4
[root@localhost ~]# cd /opt/soft/
[root@localhost soft]# pwd
/opt/soft
[root@localhost soft]#

实例3:目录连接链接时,pwd -P 显示出实际路径,而非使用连接(link)路径;pwd显示的是连接路径

命令:

1
pwd -P

输出:

1
2
3
4
5
6
[root@localhost soft]# cd /etc/init.d 
[root@localhost init.d]# pwd
/etc/init.d
[root@localhost init.d]# pwd -P
/etc/rc.d/init.d
[root@localhost init.d]#

实例4:/bin/pwd

命令:

1
/bin/pwd [选项]

选项:

-L 目录连接链接时,输出连接路径

-P 输出物理路径

输出:

1
2
3
4
5
6
7
8
[root@localhost init.d]# /bin/pwd 
/etc/rc.d/init.d
[root@localhost init.d]# /bin/pwd --help
[root@localhost init.d]# /bin/pwd -P
/etc/rc.d/init.d
[root@localhost init.d]# /bin/pwd -L
/etc/init.d
[root@localhost init.d]#

实例5:当前目录被删除了,而pwd命令仍然显示那个目录

输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@localhost init.d]# cd /opt/soft
[root@localhost soft]# mkdir removed
[root@localhost soft]# cd removed/
[root@localhost removed]# pwd
/opt/soft/removed
[root@localhost removed]# rm ../removed -rf
[root@localhost removed]# pwd
/opt/soft/removed
[root@localhost removed]# /bin/pwd
/bin/pwd: couldn't find directory entry in “..” with matching i-node
[root@localhost removed]# cd
[root@localhost ~]# pwd
/root
[root@localhost ~]#

目录点击这里:每天一个linux命令

Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的。所以,学习Linux 常用命令,首先就要学好 cd 命令的使用方法技巧。

命令格式:cd [目录名]

命令功能:切换当前目录至dirName

常用范例

例一:进入系统根目录

命令:
cd /

输出:[root@localhost ~]# cd /

说明:进入系统根目录,上面命令执行完后拿ls命令看一下,当前目录已经到系统根目录了

命令:cd .. 或者 cd ../

输出:

1
2
3
4
5
6
[root@localhost soft]# pwd
/opt/soft
[root@localhost soft]# cd ..
[root@localhost opt]# cd ../
[root@localhost /]# pwd
/

说明:

进入系统根目录可以使用cd ..一直退,就可以到达根目录

命令:cd ../../

输出:

1
2
3
4
5
6
[root@localhost soft]# pwd
/opt/soft
[root@localhost soft]# cd ../../
[root@localhost /]# pwd
/
[root@localhost /]#

说明:使用cd 命令实现进入当前目录的父目录的父目录。

例二:使用 cd 命令进入当前用户主目录

“当前用户主目录”和”系统根目录”是两个不同的概念。进入当前用户主目录有两个方法。

命令1:cd

输出:

1
2
3
4
5
[root@localhost soft]# pwd
/opt/soft
[root@localhost soft]# cd
[root@localhost ~]# pwd
/root

命令2:cd ~

输出:

1
2
3
4
5
6
[root@localhost ~]# cd /opt/soft/
[root@localhost soft]# pwd
/opt/soft
[root@localhost soft]# cd ~
[root@localhost ~]# pwd
/root

例三:跳转到指定目录

命令:cd /opt/soft

输出:

1
2
3
4
5
6
7
[root@localhost ~]# cd /opt/soft
[root@localhost soft]# pwd
/opt/soft
[root@localhost soft]# cd jdk1.6.0_16/
[root@localhost jdk1.6.0_16]# pwd
/opt/soft/jdk1.6.0_16
[root@localhost jdk1.6.0_16]#

说明:

跳转到指定目录,从根目录开始,目录名称前加 / ,当前目录内的子目录直接写名称即可

例四:返回进入此目录之前所在的目录

命令:cd -

输出:

1
2
3
4
5
6
7
8
9
[root@localhost soft]# pwd
/opt/soft
[root@localhost soft]# cd -
/root
[root@localhost ~]# pwd
/root
[root@localhost ~]# cd -
/opt/soft
[root@localhost soft]#

例五:把上个命令的参数作为cd参数使用。

命令:cd !$

输出:

1
2
3
4
5
6
7
[root@localhost soft]# cd !$
cd -
/root
[root@localhost ~]# cd !$
cd -
/opt/soft
[root@localhost soft]#

启动FirewallD服务:

1
2
systemctl enable firewalld.service        #设置开机启动
systemctl start firewalld.service #开启服务

查看防火墙状态:

1
systemctl status firewalld

区域管理

网络区域简介

通过将网络划分成不同的区域,制定出不同区域之间的访问控制策略来控制不同程序区域间传送的数据流。例如,互联网是不可信任的区域,而内部网络是高度信任的区域。网络安全模型可以在安装,初次启动和首次建立网络连接时选择初始化。该模型描述了主机所连接的整个网络环境的可信级别,并定义了新连接的处理方式。有如下几种不同的初始化区域:

  • 阻塞区域(block):任何传入的网络数据包都将被阻止。
  • 工作区域(work):相信网络上的其他计算机,不会损害你的计算机。
  • 家庭区域(home):相信网络上的其他计算机,不会损害你的计算机。
  • 公共区域(public):不相信网络上的任何计算机,只有选择接受传入的网络连接。
  • 隔离区域(DMZ):隔离区域也称为非军事区域,内外网络之间增加的一层网络,起到缓冲作用。对于隔离区域,只有选择接受传入的网络连接。
  • 信任区域(trusted):所有的网络连接都可以接受。
  • 丢弃区域(drop):任何传入的网络连接都被拒绝。
  • 内部区域(internal):信任网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接。
  • 外部区域(external):不相信网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接。

注:firewalld的默认区域是public。

显示支持的区域列表

1
firewall-cmd --get-zones

设置为家庭区域

1
firewall-cmd --set-default-zone=home

查看当前区域

1
firewall-cmd --get-active-zones

设置当前区域的接口

1
firewall-cmd --get-zone-of-interface=enp03s

显示所有公共区域(public)

1
firewall-cmd --zone=public --list-all

临时修改网络接口(enp0s3)为内部区域(internal)

1
firewall-cmd --zone=internal --change-interface=enp03s

永久修改网络接口enp03s为内部区域(internal)

1
firewall-cmd --permanent --zone=internal --change-interface=enp03s

服务管理

显示服务列表

Amanda, FTP, Samba和TFTP等最重要的服务已经被firewalld提供相应的服务,可以使用如下命令查看:

1
firewall-cmd --get-services

允许SSH服务通过

1
firewall-cmd --enable service=ssh

禁止SSH服务通过

1
firewall-cmd --disable service=ssh

打开TCP的8080端口

1
firewall-cmd --enable ports=8080/tcp

临时允许Samba服务通过600秒

1
firewall-cmd --enable service=samba --timeout=600

显示当前服务

1
firewall-cmd --list-services

添加HTTP服务到内部区域(internal)

1
2
firewall-cmd --permanent --zone=internal --add-service=http
firewall-cmd --reload #在不改变状态的条件下重新加载防火墙

端口管理

打开端口

打开443/TCP端口

1
firewall-cmd --add-port=443/tcp

永久打开3690/TCP端口

1
firewall-cmd --permanent --add-port=3690/tcp

永久打开端口好像需要reload一下,临时打开好像不用,如果用了reload临时打开的端口就失效了.其它服务也可能是这样的,这个没有测试

1
firewall-cmd --reload

查看防火墙,添加的端口也可以看到

1
firewall-cmd --list-all

直接模式

firewalld包括一种直接模式,使用它可以完成一些工作,例如打开TCP协议的9999端口

1
2
firewall-cmd --direct -add-rule ipv4 filter INPUT 0 -p tcp --dport 9000 -j ACCEPT
firewall-cmd --reload

关闭服务的方法

你也可以关闭目前还不熟悉的firewalld防火墙,而使用iptables,命令如下:

1
2
3
4
5
systemctl stop firewalld
systemctl disable firewalld
yum install iptables-services
systemctl start iptables
systemctl enable iptables

目录点击这里:每天一个linux命令

ls命令是linux下最常用的命令。ls命令就是list的缩写缺省下ls用来打印出当前目录的清单如果ls指定其他目录那么就会显示指定目录里的文件及文件夹清单。 通过ls 命令不仅可以查看linux文件夹包含的文件而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。ls 命令在日常的linux操作中用的很多!

命令格式

ls [选项] [目录名]

命令功能

列出目标目录中所有的子目录和文件。

常用参数

-a, –all 列出目录下的所有文件,包括以 . 开头的隐含文件

-A 同**-a**,但不列出.(表示当前目录)和..(表示当前目录的父目录)。

-c 配合 -lt:根据 ctime 排序及显示 ctime (文件状态最后更改的时间)配合 -l:显示 ctime 但根据名称排序否则:根据 ctime 排序

-C 每栏由上至下列出项目

  • –color[=WHEN] 控制是否使用色彩分辨文件。WHEN 可以是’never’、’always’或’auto’其中之一

-d, –directory 将目录象文件一样显示,而不是显示其下的文件。

-D, –dired 产生适合 Emacs 的 dired 模式使用的结果

-f 对输出的文件不进行排序,-aU 选项生效,-lst 选项失效

-g 类似 -l,但不列出所有者

-G, –no-group 不列出任何有关组的信息

-h, –human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G)

–si 类似 -h,但文件大小取 1000 的次方而不是 1024

-H, –dereference-command-line 使用命令列中的符号链接指示的真正目的地

  • –indicator-style=方式 指定在每个项目名称后加上指示符号<方式>:none (默认),classify (-F),file-type (-p)

-i, –inode 印出每个文件的 inode 号

-I, –ignore=样式 不印出任何符合 shell 万用字符<样式>的项目

-k–block-size=1K,以 k 字节的形式表示文件的大小。

-l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。

-L, –dereference 当显示符号链接的文件信息时,显示符号链接所指示的对象而并非符号链接本身的信息

-m 所有项目以逗号分隔,并填满整行行宽

-o 类似 -l,显示文件的除组信息外的详细信息。

-r, –reverse 依相反次序排列

-R, –recursive同时列出所有子目录层

-s, –size 以块大小为单位列出所有文件的大小

-S 根据文件大小排序

–sort=WORD 以下是可选用的 WORD 和它们代表的相应选项:

  • extension -X status -c

  • none -U time -t

  • size -S atime -u

  • time -t access -u

  • version -v use -u

-t 以文件修改时间排序

-u 配合 -lt:显示访问时间而且依访问时间排序

  • 配合 -l:显示访问时间但根据名称排序

  • 否则:根据访问时间排序

-U 不进行排序;依文件系统原有的次序列出项目

-v 根据版本进行排序

-w, –width=COLS 自行指定屏幕宽度而不使用目前的数值

-x 逐行列出项目而不是逐栏列出

-X 根据扩展名排序

-1 每行只列出一个文件

–help 显示此帮助信息并离开

–version 显示版本信息并离开

常用范例

例一:列出/home/peidachang文件夹下的所有文件和目录的详细资料

命令:

1
ls -l -R /home/peidachang

在使用 ls 命令时要注意命令的格式:在命令提示符后,首先是命令的关键字,接下来是命令参数,在命令参数之前要有一短横线“-”,所有的命令参数都有特定的作用,自己可以根据需要选用一个或者多个参数,在命令参数的后面是命令的操作对象。在以上这条命令ls -l -R /home/peidachang中,ls 是命令关键字,-l -R是参数,/home/peidachang是命令的操作对象。在这条命令中,使用到了两个参数,分别为lR,当然,你也可以把他们放在一起使用,如下所示:

命令:

1
ls -lR /home/peidachang

这种形式和上面的命令形式执行的结果是完全一样的。另外,如果命令的操作对象位于当前目录中,可以直接对操作对象进行操作;如果不在当前目录则需要给出操作对象的完整路径,例如上面的例子中,我的当前文件夹是peidachang文件夹,我想对home文件夹下的peidachang文件进行操作,我可以直接输入 ls -lR peidachang,也可以用 ls -lR /home/peidachang

例二:列出当前目录中所有以t开头的目录的详细内容,可以使用如下命令:

命令:

1
ls -l t*

可以查看当前目录下文件名以“t”开头的所有文件的信息。其实,在命令格式中,方括号内的内容都是可以省略的,对于命令ls而言,如果省略命令参数和操作对象,直接输入“ ls ”,则将会列出当前工作目录的内容清单。

例三:只列出文件下的子目录

命令:

1
ls -F /opt/soft |grep /$  

列出 /opt/soft 文件下面的子目录
输出:

1
2
3
4
[root@localhost opt]# ls -F /opt/soft |grep /$
jdk1.6.0_16/
subversion-1.6.1/
tomcat6.0.32/

命令:

1
ls -l /opt/soft | grep "^d"

列出 /opt/soft 文件下面的子目录详细情况

输出:

1
2
3
4
[root@localhost opt]#  ls -l /opt/soft | grep "^d"
drwxr-xr-x 10 root root 4096 09-17 18:17 jdk1.6.0_16
drwxr-xr-x 16 1016 1016 4096 10-11 03:25 subversion-1.6.1
drwxr-xr-x 9 root root 4096 2011-11-01 tomcat6.0.32

例四:列出目前工作目录下所有名称是s 开头的档案,愈新的排愈后面,可以使用如下命令:

命令:

1
ls -ltr s*

输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@localhost opt]# ls -ltr s*
src:
总计 0
script:
总计 0
soft:
总计 350644
drwxr-xr-x 9 root root 4096 2011-11-01 tomcat6.0.32
-rwxr-xr-x 1 root root 81871260 09-17 18:15 jdk-6u16-linux-x64.bin
drwxr-xr-x 10 root root 4096 09-17 18:17 jdk1.6.0_16
-rw-r--r-- 1 root root 205831281 09-17 18:33 apache-tomcat-6.0.32.tar.gz
-rw-r--r-- 1 root root 5457684 09-21 00:23 tomcat6.0.32.tar.gz
-rw-r--r-- 1 root root 4726179 10-10 11:08 subversion-deps-1.6.1.tar.gz
-rw-r--r-- 1 root root 7501026 10-10 11:08 subversion-1.6.1.tar.gz
drwxr-xr-x 16 1016 1016 4096 10-11 03:25 subversion-1.6.1

例五:列出目前工作目录下所有档案及目录;目录于名称后加”/“, 可执行档于名称后加”*”

命令:

1
ls -AF

输出:

1
2
[root@localhost opt]# ls -AF
log/ script/ soft/ src/ svndata/ web/

例六:计算当前目录下的文件数和目录数

命令:

1
2
ls -l * |grep "^-"|wc -l ---文件个数  
ls -l * |grep "^d"|wc -l ---目录个数

例七: 在ls中列出文件的绝对路径

命令:

1
ls | sed "s:^:`pwd`/:"

输出:

1
2
3
4
5
6
7
[root@localhost opt]# ls | sed "s:^:`pwd`/:" 
/opt/log
/opt/script
/opt/soft
/opt/src
/opt/svndata
/opt/web

例九:列出当前目录下的所有文件(包括隐藏文件)的绝对路径, 对目录不做递归

命令:

1
find $PWD -maxdepth 1 | xargs ls -ld

输出:

1
2
3
4
5
6
7
8
[root@localhost opt]# find $PWD -maxdepth 1 | xargs ls -ld
drwxr-xr-x 8 root root 4096 10-11 03:43 /opt
drwxr-xr-x 2 root root 4096 2012-03-08 /opt/log
drwxr-xr-x 2 root root 4096 2012-03-08 /opt/script
drwxr-xr-x 5 root root 4096 10-11 03:21 /opt/soft
drwxr-xr-x 2 root root 4096 2012-03-08 /opt/src
drwxr-xr-x 4 root root 4096 10-11 05:22 /opt/svndata
drwxr-xr-x 4 root root 4096 10-09 00:45 /opt/web

例十:递归列出当前目录下的所有文件(包括隐藏文件)的绝对路径

命令:

1
find $PWD | xargs ls -ld 

例十一:指定文件时间输出格式

命令:

1
ls -tl --time-style=full-iso

输出:

1
2
3
[root@localhost soft]# ls -tl --time-style=full-iso 
总计 350644
drwxr-xr-x 16 1016 1016 4096 2012-10-11 03:25:58.000000000 +0800 subversion-1.6.1

命令:

1
ls -ctl --time-style=long-iso

输出:

1
2
3
[root@localhost soft]# ls -ctl --time-style=long-iso
总计 350644
drwxr-xr-x 16 1016 1016 4096 2012-10-11 03:25 subversion-1.6.1

扩展

  1. 显示彩色目录列表
    打开/etc/bashrc, 加入如下一行:
    alias ls="ls --color"
    下次启动bash时就可以像在Slackware里那样显示彩色的目录列表了, 其中颜色的含义如下:
    1. 蓝色–>目录
    2. 绿色–>可执行文件
    3. 红色–>压缩文件
    4. 浅蓝色–>链接文件
    5. 灰色–>其他文件

来源:http://www.cnblogs.com/peida/archive/2012/10/23/2734829.html

来源:http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html

文件目录操作命令:

  1. 每天一个linux命令(1):ls命令
  2. 每天一个linux命令(2):cd命令
  3. 每天一个linux命令(3):pwd命令
  4. 每天一个linux命令(4):mkdir命令
  5. 每天一个linux命令(5):rm 命令
  6. 每天一个linux命令(6):rmdir 命令
  7. 每天一个linux命令(7):mv命令
  8. 每天一个linux命令(8):cp 命令
  9. 每天一个linux命令(9):touch 命令
  10. 每天一个linux命令(10):cat 命令

PHP


修改时区,编辑PHP配置文件

1
vi php.ini

找到

1
;date.timezone =

改为

1
date.timezone = PRC

Mysql


1
max_connections = 1000

Nginx


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
worker_processes  8;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
worker_rlimit_nofile 65535;


events {
use epoll;
worker_connections 65535;
}


http {

server_names_hash_bucket_size 128;
client_header_buffer_size 2k;
large_client_header_buffers 4 4k;
client_max_body_size 8m;

fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 4k;
fastcgi_buffers 8 4k;
fastcgi_busy_buffers_size 8k;
fastcgi_temp_file_write_size 8k;

}

Apache


prefork 模式:

1
2
3
4
5
6
7
8
<IfModule mpm_prefork_module>
ServerLimit 20000
StartServers 20 #指定服务器启动时建立的子进程数量
MinSpareServers 20 #指定空闲子进程的最小数量
MaxSpareServers 40 #指定空闲子进程的最大数量
MaxRequestWorkers 20000 #指定同一时间客户端最大接入请求的数量(单个进程并发线程数),任何超过该限制的请求都将进入等候队列,一旦一个连接被释放,队列中的请求将得到服务
MaxConnectionsPerChild 0 #指定每个子进程在其生存周期内允许伺服的最大请求数量,默认为10000,0表示子进程永远不结束 注意2.3.13版本以前的用 MaxClients
</IfModule>

ulimit

1
vi /etc/security/limits.conf

最后增加:

1
2
3
4
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535

用户管理

1
mysql>use mysql;

查看

1
mysql> select host,user,password from user;

创建

1
mysql> create user zx_root IDENTIFIED by 'xxxxx';   //identified by 会将纯文本密码加密作为散列值存储

修改

1
mysql>rename user feng to newuser; //mysql 5之后可以使用,之前需要使用update 更新user表

删除

1
mysql>drop user newuser;

//mysql5之前删除用户时必须先使用revoke 删除用户权限,然后删除用户,mysql5之后drop 命令可以删除用户的同时删除用户的相关权限

更改密码

1
2
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
mysql> update mysql.user set password=password('xxxx') where user='otheruser'

查看用户权限

1
mysql> show grants for zx_root;

赋予权限

1
mysql> grant select on dmc_db.*  to zx_root;

回收权限

1
mysql> revoke select on dmc_db.* from  zx_root;  //如果权限不存在会报错

上面的命令也可使用多个权限同时赋予和回收,权限之间使用逗号分隔

1
mysql> grant select, update, delete, insert on dmc_db.* to  zx_root;

如果想立即看到结果使用

1
flush privileges;

命令更新

设置权限时必须给出一下信息

  1. 要授予的权限
  2. 被授予访问权限的数据库或表
  3. 用户名

grant和revoke可以在几个层次上控制访问权限

  1. 整个服务器,使用 grant ALL 和revoke ALL
  2. 整个数据库,使用on database.*
  3. 特点表,使用on database.table
  4. 特定的列
  5. 特定的存储过程

user表中host列的值的意义

Host 说明
% 匹配所有主机
localhost localhost不会被解析成IP地址,直接通过UNIXsocket连接
127.0.0.1 会通过TCP/IP协议连接,并且只能在本机访问;
::1 ::1就是兼容支持ipv6的,表示同ipv4的127.0.0.1

例子

grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利。

1
2
3
4
grant select on testdb.* to common_user@'%'
grant insert on testdb.* to common_user@'%'
grant update on testdb.* to common_user@'%'
grant delete on testdb.* to common_user@'%'

或者,用一条 MySQL 命令来替代:

1
grant select, insert, update, delete on testdb.* to common_user@'%'

grant 数据库开发人员,创建表、索引、视图、存储过程、函数。。。等权限。

grant 创建、修改、删除 MySQL 数据表结构权限。

1
2
3
grant create on testdb.* to developer@'192.168.0.%';
grant alter on testdb.* to developer@'192.168.0.%';
grant drop on testdb.* to developer@'192.168.0.%';

grant 操作 MySQL 外键权限。

1
grant references on testdb.* to developer@'192.168.0.%';

grant 操作 MySQL 临时表权限。

1
grant create temporary tables on testdb.* to developer@'192.168.0.%';

grant 操作 MySQL 索引权限。

1
grant index on testdb.* to developer@'192.168.0.%';

grant 操作 MySQL 视图、查看视图源代码 权限。

1
2
grant create view on testdb.* to developer@'192.168.0.%';
grant show view on testdb.* to developer@'192.168.0.%';

grant 操作 MySQL 存储过程、函数 权限。

1
2
3
grant create routine on testdb.* to developer@'192.168.0.%'; -- now, can show procedure status
grant alter routine on testdb.* to developer@'192.168.0.%'; -- now, you can drop a procedure
grant execute on testdb.* to developer@'192.168.0.%';

grant 普通 DBA 管理某个 MySQL 数据库的权限。

1
grant all privileges on testdb to dba@'localhost'

其中,关键字 “privileges” 可以省略。

grant 高级 DBA 管理 MySQL 中所有数据库的权限。

1
grant all on *.* to dba@'localhost'

MySQL grant 权限,分别可以作用在多个层次上。

grant 作用在整个 MySQL 服务器上

1
2
grant select on *.* to dba@localhost; -- dba 可以查询 MySQL 中所有数据库中的表。
grant all on *.* to dba@localhost; -- dba 可以管理 MySQL 中的所有数据库

grant 作用在单个数据库上

1
grant select on testdb.* to dba@localhost; -- dba 可以查询 testdb 中的表。

grant 作用在单个数据表上

1
grant select, insert, update, delete on testdb.orders to dba@localhost;

grant 作用在表中的列上

1
grant select(id, se, rank) on testdb.apache_log to dba@localhost;

grant 作用在存储过程、函数上

1
2
grant execute on procedure testdb.pr_add to 'dba'@'localhost'
grant execute on function testdb.fn_add to 'dba'@'localhost'

GRANT命令使用说明

先来看一个例子,创建一个只允许从本地登录的超级用户feihong,并允许将权限赋予别的用户,密码为test@feihong.111

1
GRANT ALL PRIVILEGES ON *.* TO feihong@'localhost' IDENTIFIED BY '[email protected]' WITH GRANT OPTION;

GRANT命令说明:

  • ALL PRIVILEGES 是表示所有权限,你也可以使用select、update等权限提到的权限。
  • ON 用来指定权限针对哪些库和表。
  • *.* 中前面的*号用来指定数据库名,后面的*号用来指定表名。
  • TO 表示将权限赋予某个用户。
  • feihong@'localhost' 表示feihong用户,@后面接限制的主机,可以是IP、IP段、域名以及%,%表示任何地方。注意:这里%有的版本不包括本地,以前碰到过给某个用户设置了%允许任何地方登录,但是在本地登录不了,这个和版本有关系,遇到这个问题再加一个localhost的用户就可以了。
  • IDENTIFIED BY 指定用户的登录密码。
  • WITH GRANT OPTION 这个选项表示该用户可以将自己拥有的权限授权给别人。注意:经常有人在创建操作用户的时候不指定WITH GRANT OPTION选项导致后来该用户不能使用GRANT命令创建用户或者给其他用户授权。

备注:可以使用GRANT重复给用户添加权限,权限叠加,比如你先给用户添加了一个select权限,然后又给用户添加了一个insert权限,那么该用户就同时拥有了select和insert权限。

注意:修改完权限以后 一定要刷新服务,或者重启服务,刷新服务用:FLUSH PRIVILEGES

Linux文件查找命令find,xargs


find命令的格式:

1
find pathname -options [-print -exec -ok ...]

find 命令的参数:

-perm

按照文件权限模式查找

读权限:r:4 写权限:w:2 执行权限:x:1

文件属主具有读、写权限: rw:4+2=6

其他用户具有读权限:r:4

-type

查找的文件类型

-type f 文件

-type d 目录

-type l 符号链接文件

-exec

-exec 参数后面跟的是 command命令

command命令的终止,使用 ‘;’ (分号)来判定,在后面必须有一个 ‘;’

‘{}’,使用{}来表示文件名,也就是find前面处理过程中过滤出来的文件,用于command命令进行处理

对于不同的系统,直接使用分号可能会有不同的意义, 使用转义符 ‘'在分号前明确说明

xargs

find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。

sed


sed简介:

sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

sed脚本是一个sed的命令清单,启动Sed时以-f选项引导脚本文件名。Sed对于脚本中输入的命令非常挑剔,在命令的末尾不能有任何空白或文本,如果在一行中有多个命令,要用分号分隔。以#开头的行为注释行,且不能跨行。

关于sed的hold space(内存缓冲区)和pattern space(模式空间)

sed在处理文件的时候,每一行都需要存放在一个叫“模式空间”的临时缓存区。每处理完一行,便清理一次(pattern space),并把下一行再次放入该临时缓冲区。

而保留空间(hole space),是当sed用到h命令的时候,把匹配的模式放在一个叫做”hold buffer”的保留缓冲里,但需要使用G(sed的取得命令)的时候,sed 从这个保留空间(hold space)中取得。

sed 是以行为单位进行读取,读取后的内容存放在pattern space。

holding space是通过h,H,x,g,G命令和pattern space产生关连,利用这5个特性可以辅助pattern space解决问题。

g

表示行内全面替换,当前处理行进行全局替换。

G

获得内存缓冲区的内容,并追加到当前模板块文本的后面。
函数参数G 与g 唯一差别是, sed执行g 时, 数据盖掉(overwrite) pattern space 内原来的数据
而G , 数据则是”添加(append)” 在pattern space 原来数据后。

‘;’号

如果在一行中有多个命令,要用分号隔开。

s/re/string

用string替换正则表达式re。

d

从模板块(Pattern space)位置删除行。

函数参数d 表示删除数据行, 其指令格式如下:

[address1[ ,address2]] d

对上述格式有下面几点说明:

函数参数d 最多与两个地址参数配合。

sed执行删除动作情况如下:

将pattern space 内符合地址参数的数据删除。

将下一笔资料读进pattern space 。

重新执行sedscript。

n

读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。

函数参数n 表示读入下一行资料。

其指令格式如下:

[address1[ ,address2]] n

对上述格式有下面几点说明:

函数参数n 最多配合两个地址参数。

sed执行读入下一行动作的情况如下:

输出在pattern space 的数据。

将下一笔资料读到pattern space。

执行下一个编辑指令。

-n, –quiet, –silent

安静模式,取消默认输出。

x

交换pattern和hold space

p

打印模式空间的行,通常 p 会与参数 sed -n 一起使用

N

追加下一行数据到模式空间,数据行间以换行字符(embedded newline character)分隔。

函数参数N 表示添加下一笔资料在pattern space 内。

其指令格式如下:

[address1 ,[address2]] N

对上述格式有下面几点说明:

函数参数N 最多配合两个地址参数。

sed执行时, 将下一行数据读入并添加在pattern space 内, 数据行间以换行字符(embedded newline character)分隔。

此外, 在替换时, 换行字符可用\n 来match。

=

打印当前行号

.

匹配一个非换行符的字符

h

拷贝模板块的内容到内存中的缓冲区。

!

表示后面的命令对所有没有被选定的行发生作用。

$

锚定行的结束 如:/sed$/匹配所有以sed结尾的行。也可以表示文件最后一行。

1

表示文件第一行

-e

直接在指令列模式上进行 sed 的动作编辑,允许多台编辑。

:label

表示建立一个标签label

b

跳转命令,这个命令是无条件跳转

ba表示跳转到标签a处

q

退出Sed。

D

删除模板块的第一行。

函数参数D 与d 的比较如下:

当pattern space 内只有一数据行时, D 与d 作用相同。

当pattern space 内有多行资料行时D 表示只删除pattern space 内第一行资料; d 则全删除。

D 表示执行删除后, pattern space 内不添加下一笔数据, 而将剩下的数据重新执行sedscript ; d 则读入下一行后执行sedscript。

grep


grep简介:

grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、 egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是 fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux 使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。

-l

打印匹配模板的文件清单

-r

递归地搜索目录。在缺省情况下,按照到目录的链接。

^

锚定行的开始

[^]

匹配一个不在指定范围内的字符

\w

匹配文字和数字字符,也就是[A-Za-z0-9]

x{m,}

重复字符x,至少m次,如:’o{5,}‘匹配至少有5个o的行。

‘\w{3,}‘即是至少有4个字符的已登录用户

$

锚定行的结束 如:/sed$/匹配所有以sed结尾的行。

awk


关于awk:

awk是一种用于处理文本的编程语言工具。AWK 实用工具的语言在很多方面类似于 shell 编程语言,尽管 AWK 具有完全属于其本身的语法。在最初创造 AWK 时,其目的是用于文本处理,并且这种语言的基础是,只要在输入数据中有模式匹配,就执行一系列指令。该实用工具扫描文件中的每一行,查找与命令行中所给定 内容相匹配的模式。如果发现匹配内容,则进行下一个编程步骤。如果找不到匹配内容,则继续处理下一行。

awk命令的语法

1
awk '{pattern + action}' {filenames}

其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。花括号 ({}) 不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。

$0,关于awk的字段

实用工具将每个输入行分为记录和字段。记录是单行的输入,而每条记录包含若干字段。默认的字段分隔符是空格或制表符,而记录的分隔符是换行。虽然在默认情况下将制表符和空格都看作字段分隔符(多个空格仍然作为一个分隔符),但是可以将分隔符从空格改为任何其它字符。

当 AWK 读取输入内容时,整条记录被分配给变量 $0。每个字段以字段分隔符分开,被分配给变量 $1、$2、$3 等等。一行在本质上可以包含无数个字段,通过字段号来访问每个字段。

BEGIN和END

在awk 中两个特别的表达式,BEGIN和END,这两者都可用于pattern中,提供BEGIN和END的作用是给程序赋予初始状态和在程序结束之后执行一些扫尾的工作。任何在BEGIN之后列出的操作(在{}内)将在awk开始扫描输入之前执行,而END之后列出的操作将在扫描完全部的输入之后执行。因此,通常使用BEGIN来显示变量和预置(初始化)变量,使用END来输出最终结果。

gsub(r,s,t)

在字符串t中用字符串s和正则表达式r匹配的所有字符串。返回值是替换的个数。如果没有给出t,默认是$0。

NR

表示awk开始执行程序后所读取的数据行数.

$0

表示当前处理的整行数据

Linux的cut命令


cut命令可以从一个文本文件或者文本流中提取文本列,具体的说就是在文件中负责剪切数据用的。cut是以每一行为一个处理对象的,这种机制和sed是一样的。

1
cut -d'分隔字元' -f fields

参数∶

-d ∶后面接分隔字元。与 -f 一起使用;

-f ∶依据 -d 的分隔字元将一段讯息分割成为数段,用 -f 取出第几段的意思;

-c ∶以字元 (characters) 的单位取出固定字元区间;

关于WC命令:


该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。

该命令各选项含义如下:

wc -m filename:显示一个文件的字符数

wc -l filename:显示一个文件的行数

wc -L filename:显示一个文件中的最长行的长度

wc -w filename:显示一个文件的字数

关于ls命令


ls 命令经常要使用,通过使用 ls 命令可以查看linux文件夹包含的文件,查看文件权限(包括目录、文件夹、文件权限),查看目录信息等等,ls 命令在平常的linux操作中使用很频繁,所以这里介绍下 ls 命令的相关使用方法。

选项说明:

-a 用于显示所有文件和子目录(保罗点文件)。

-l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。

-r 将目录的内容清单以英文字母顺序的逆序显示。

-t 按文件修改时间进行排序,而不是按文件名进行排序。

关于sort命令


Sort命令的功能是对文件中的各行进行排序。Sort命令有许多非常实用的选项,这些选项最初是用来对数据库格式的文件内容进行各种排序操作的。实际上,Sort命令可以被认为是一个非常强大的数据管理工具,用来管理内容类似数据库记录的文件。

-n
按照数字方式排序。不加-n参数时排序结果根据最左面的数字开始,等同于字母的比较方式。按算术值对数字字段排序。数字字段可包含前导空格、可选减号、十进制数字、千分位分隔符和可选基数符。对包含任何非数字字符的字段进行数字排序会出现无法预知的结果。

-r 颠倒指定排序的顺序。

-k 作用是根据某个列来排序,默认是第1列(从1开始)。

-t 表示分割符,以:分割,默认情况下以空格分割

-nrk 5 即是按照数字方式倒序排序,根据文件属性的第5列即是文件大小排序

关于tr命令


通过使用 tr,可以非常容易地实现 sed 的许多最基本功能。可以将 tr 看作为 sed 的(极其)简化的变体。使用tr命令可以用一个字符来替换另一个字符,或者可以完全除去一些字符,也可以用它来除去重复字符。

tr的命令格式为:

1
tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"] < input-file

-c

用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。

-d

删除字符串1中所有输入字符。

-s

删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。

string1_to_translate_from

要转换的原字符串

string2_to_translate_to

想要转换成的字符串

除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。

本文链接:http://www.itzhai.com/linux-sed-awk-grep-cut-find-frequently-used-commands-such-as-introduction.html