Some Howtos

Table of Contents

1 转换文本文件编码

下面介绍Linux下转换文本文件编码的几种方法。

方法一,在Vim中直接转换文件编码(Vim正确识别后才能使用这种方法):
比如将一个文件转换成utf-8格式:

:set fileencoding=utf-8

通过:set fileencoding可以查看文件编码,这个文件编码仅是Vim自动识别的,不一定是正确的文件编码。如果Vim自动识别错误,则无法通过set fileencoding=XXX的方式来转换编码!只有正确识别了才能转换编码。

方法二,使用 iconv 命令进行转换。
iconv的命令格式如下(很容易记住:-f from-code、-t to-code):

$ iconv -f encoding -t encoding inputfile

比如将一个UTF-8编码的文件转换成GBK编码 ,其命令为:

$ iconv -f GBK -t UTF-8 file1 -o file2

方法三,使用 recode 工具。详情可参考 man recode 。下面是使用 recode 实现dos2unix等功能:

alias dos2unix='recode dos/CR-LF..l1'
alias unix2win='recode l1..windows-1250'
alias unix2dos='recode l1..dos/CR-LF'

2 16进制方式查看文件

假设文件file1的内容为1234567890qwertyuiopasdfghjklzxcvbnm,如何仅显示文件内容的16进制编码,不要显示位置信息和ASCII码解析信息呢?

方法一,使用 od 。如:

$ od -An -tx1 file1
 31  32  33  34  35  36  37  38  39  30  71  77  65  72  74  79
 75  69  6f  70  61  73  64  66  67  68  6a  6b  6c  7a  78  63
 76  62  6e  6d  0a

方法二,使用 hexdump 。如:

$ hexdump -e '16/1 "%2X " "\n"' file1
31 32 33 34 35 36 37 38 39 30 71 77 65 72 74 79
75 69 6F 70 61 73 64 66 67 68 6A 6B 6C 7A 78 63
76 62 6E 6D  A

方法三,使用 xxd 。如:

$ xxd -p -c 16 file1
31323334353637383930717765727479
75696f706173646667686a6b6c7a7863
76626e6d0a

注:xxd如果不显示位置信息和ASCII码解析信息就无法为每个字节中增加一个空格。

3 压缩和解压文件

3.1 tar支持gz和bz2

gzip生成的文件一般带后缀tar.gz
bzip2生成的文件一般带后缀tar.bz2

tar支持打包和解包:
-c 打包选项
-x 解包选项

-z 通过gzip的支持进行压缩/解压缩:此时文件名一般为 *.tar.gz
-j 通过bzip2的支持进行压缩/解压缩:此时文件名一般为 *.tar.bz2
-Z 通过compress的支持进行压缩/解压缩;此时文件名一般为 *.Z

打包命令:

$ tar -cf file.tar file              # 打包file和file.tar
$ tar -czf file.tar.gz file          # 打包file和file.tar.gz
$ tar -cjf file.tar.bz2 file         # 打包file和file.tar.bz2

相应的解包命令:

$ tar -xf file.tar
$ tar -xzf file.tar.gz
$ tar -xjf file.tar.bz2

仅解压压缩包中的某个文件(或文件夹)
把要解压的文件(或文件夹)直接写在压缩文件名后面即可。假设1.tar.gz中有文件usr/share/pixmaps/1.png:

$ tar -zxvf 1.tar.gz usr/share/pixmaps/1.png

使用-C选项可以解压到指定目录,如:

$ tar -zxvf 1.tar.gz -C /path/to/extract

注:目录必须先存在。

3.2 zip格式

3.2.1 查看zip中的文件列表(zipinfo)

查看压缩文件的文件列表,有下面两种方法:

$ unzip -l filename.zip
$ zipinfo filename.zip

3.2.2 解压zip格式文件

解压全部文件:

$ unzip -x filename.zip               # 解压到当前文件夹
$ unzip filename.zip                  # 同上
$ unzip filename.zip -d dir1          # 解压到dir1中

仅解压zip文件中的指定内容:

$ unzip filename.zip test/1.txt

仅解压filename.zip中子目录test中的1.txt,如果filename.zip中不存在test/1.txt,则会报错。

在Windows下压缩的文件名中有中文的zip文件,在Linux下解压时会出现乱码。这时可以指定字符集(下文中的GBK换成CP936或GB18030都行),就能正确解压含有中文的zip文件了。

$ unzip -O GBK file.zip                # 指定编码解压文件

注:有些unzip不支持-O选项。在支持-O的unzip中,查看man unzip也找不到关于-O选项的说明。

3.2.3 压缩zip格式文件

压缩(或更新)文件:

$ zip file1.zip file1

把file1压缩为file1.zip(如果file1.zip存在,则只是更新里面的对应文件)

压缩(或更新)文件夹:

$ zip -r files.zip file1 file2 file3 dir/

把文件file1,file2,file3和文件夹dir全部打包到files.zip中(如果file.zip存在,则只是更新里面的对应文件)。-r选项指定你想递归地包括所有包括在dir目录中的文件。

3.3 7z格式

首先,安装相应软件:

$ apt-get install p7zip

解压7z格式文件可以使用 7zr 命令(注: 7z 命令是p7zip-full的组件):

$ 7zr x file.7z

4 配置alternatives

下面以配置java为例,分别介绍Ubuntu系统和Redhat系统如何配置alternatives。

Ubuntu系统中:

$ sudo update-alternatives --config java
$ sudo update-alternatives --config javac

http://wiki.ubuntu.org.cn/Java安装配置

Redhat系统中:

$ sudo /usr/sbin/alternatives --config java
$ sudo /usr/sbin/alternatives --config javac

如果找不到新安装的java,则使用下面命令:

$ sudo /usr/sbin/alternatives --install ...

https://access.redhat.com/site/documentation/en-US/JBoss_Communications_Platform/5.0/html/Platform_Installation_Guide/sect-Configuring_Java.html

5 增加用户到sudoers

下面介绍三种将用户增加到sudoers的方法。

方法一,把用户加入到sudo用户组:

$ gpasswd -a jack sudo

方法二,直接用下面命令进行操作:

$ visudo

方法三,编辑/etc/sudoers文件,下面以“让jack用户获得sudo使用权”为例,说明具体步骤。

1.切换到超级用户root

$ su root

2.查看/etc/sudoers权限,可以看到当前权限为440

$ ls -all /etc/sudoers
-r--r----- 1 root root 744  6月  8 10:29 /etc/sudoers

3.更改权限为777

$ chmod 777 /etc/sudoers

4.编辑/etc/sudoers

$ vi /etc/sudoers

5.在root ALL=(ALL:ALL) ALL 下面添加一行

jack    ALL=(ALL)ALL

然后保存退出。
第一个ALL是指网络中的主机,我们后面把它改成了主机名,它指明jack可以在此主机上执行后面的命令。第二个括号里的ALL是指目标用户,也就是以谁的身份去执行命令。最后一个ALL是指命令名了。

6.把/etc/sudoers权限改回440

$ chmod 440 /etc/sudoers

7.操作完成,切换到jack用户测试一下。

参考:http://blog.sina.com.cn/s/blog_6ffa25ae01015vz9.html


Author: cig01

Created: <2011-06-04 Sat 00:00>

Last updated: <2018-04-20 Fri 19:31>

Creator: Emacs 25.3.1 (Org mode 9.1.4)