经验集

Posted by ivo Blog on March 15, 2015

直接解压的话可能会出现中文乱码的问题(有时候它会自动帮你处理),为了解决这个问题,我们可以在解压时指定编码类型

使用-O(英文字母,大写o)参数指定编码类型

unzip -O GBK 中文压缩文件.zip

压缩文件格式 参数 *.tar.gz -z *.tar.xz -J *tar.bz2 -j

我们先来试试用dd命令从标准输入读入用户输入到标准输出或者一个文件

# 输出到文件 $ dd of=test bs=10 count=1 # 或者 dd if=/dev/stdin of=test bs=10 count=1 # 输出到标准输出 $ dd if=/dev/stdin of=/dev/stdout bs=10 count=1

前面说到dd在拷贝的同时还可以实现数据转换,那下面就举一个简单的例子:将输出的英文字符转换为大写再写入文件

$ dd if=/dev/stdin of=test bs=10 count=1 conv=ucase

使用dd命令创建虚拟镜像文件

通过上面一小节,你应该掌握了dd的基本使用,下面就来使用dd命令来完成创建虚拟磁盘的第一步

从/dev/zero设备创建一个容量为256M的空文件

$ dd if=/dev/zero of=virtual.img bs=1M count=128 $ du -h virtual.img

mount命令的一般格式如下:

mount [options] [source] [directory] 一些常用操作

mount [-o [操作选项]] [-t 文件系统类型] [-w|rw|ro] [文件系统源] [挂载点] 我们现在直接来挂载我们创建的虚拟磁盘镜像到/mnt目录

$ mount -o loop -t ext4 virtual.img /mnt # 也可以省略挂载类型,很多时候mount会自动识别

# 以只读方式挂载 $ mount -o loop ro virtual.img /mnt # 或者mount -o loop,ro virtual.img /mnt

简单的顺序执行你可以使用;来完成,比如上述操作你可以

$ sudo apt-get update;sudo apt-get install some-tool;some-tool # ~~~~~它运行它的,你可以去干其它事了~~~~~~~

我们使用which来查找是否安装某个命令,如果找到就执行该命令,否则什么也不做(虽然这个操作没有什么实际意义,但可帮你更好的理解一些概念)

$ which cowsay>/dev/nullcowsay -f head-in ohch~ 你如果没有安装cowsay,你可以先执行一次上述命令,你会发现什么也没发生,你再安装好之后你再执行一次上述命令,你也会发现一些惊喜

上面的就是用来实现选择性执行的,它表示如果前面的命令执行结果(不是表示终端输出的内容,而是表示命令执行状态的结果)返回0则执行后面的,否则不执行,你可以从$?环境变量获取上一次命令的返回结果

表是逻辑与,而且还有一个   表示逻辑或,同样shell也有一个   ,它们的区别就在于,shell中的这两个符号除了也可用于表示逻辑与和或之外,就是可以实现这里的命令执行顺序的简单控制。   在这里就是与相反的控制效果,当上一条命令执行结果为≠0($?≠0)时则执行它后面的命令
$ which cowsay>/dev/null   echo cowsay has not been install, please run sudo apt-get install cowsay to install
除了上述基本的使用之外,我们还可以结合这和   来实现一些操作,比如
$ which cowsay>/dev/nullecho exist   echo not exist

cut命令,打印每一行的某一字段

打印/etc/passwd文件中以:为分隔符的第1个字段和第6个字段分别表示用户名和其家目录

$ cut /etc/passwd -d : -f 1,6

打印`/etc/passwd文件中每一行的前N个字符

# 前五个(包含第五个) $ cut /etc/passwd -c -5 # 前五个之后的(包含第五个) $ cut /etc/passwd -c 5- # 第五个 $ cut /etc/passwd -c 5 # 2到5之间的(包含第五个) $ cut /etc/passwd -c 2-5

# 行数 $ wc -l /etc/passwd # 单词数 $ wc -w /etc/passwd # 字节数 $ wc -c /etc/passwd # 字符数 $ wc -m /etc/passwd # 最长行字节数 $ wc -L /etc/passwd

默认为字典排序

$ cat /etc/passswd | sort 反转排序

$ cat /etc/passwd | sort -r 按特定字段排序

$ cat /etc/passwd | sort -t’: -k 3 -t参数用于指定字段的分隔符,这里是以:作为分隔符;-k 字段号用于指定对哪一个字段进行排序。这里/etc/passwd文件的第三个字段为数字,默认情况下是一字典序排序的,如果要按照数字排序就要加上-n参数

uniq命令只能去连续重复的行,不是全文去重,所以要达到预期效果,我们只能先排个序了

$ history cut -c 8- cut -d -f 1 sort uniq
# 或者$ history cut -c 8- cut -d -f 1 sort -u  

linux默认提供了三个特殊设备,用于终端的显示和输出,分别为stdin(标准输入,对应于你在终端的输入),stdout(标准输出,对应于终端的输出),stderr(标准错误输出,对应于终端的输出)。

文件描述符 设备文件 说明 0 /dev/stdin 标准输入 1 /dev/stdout 标准输出 2 /dev/stderr 标准错误

  1. 新建文件 Linux下有多种方法新建文件。其中使用cat就是方法之一.

# cat > operating_system 输入完成后,按Ctrl-D存盘退出

向文件中追加内容 当你使用两个 > 符时, 会将第一个文件中的内容追加到第二个文件的末尾。 举例 :

# cat /root/linux » /root/desktop

# cat /root/desktop

# 将标准错误重定向到标准输出,再将标准输出重定向到文件,注意要将重定向到文件写到前面 $ cat Documents/test.c~ hello.c >somefile 2>1 # 或者只用bash提供的特殊的重定向符号将标准错误和标准输出同时重定向到文件 $ cat Documents/test.c~ hello.c >somefilehell