Linux日常小记_2

一、常用的路径配置

1. 在PATH中找到可执行文件程序的路径PATH
2. gcc找到头文件的路径C_INCLUDE_PATH
3. g++找到头文件的路径CPLUS_INCLUDE_PATH
4. 找到动态链接库的路径LD_LIBRARY_PATH(运行时路径)
5. 找到静态库的路径LIBRARY_PATH(编译时路径)

二、rsync的应用

2.1 代替scp,进行断点续传

$ rsync -azP pathtofileA pathtofileB

将fileA传到fileB,和scp的原理和方法一致,对于scp下载失败的文件也可以直接断点续传。z为采用压缩的方式进行传输,减少带宽的压力。

2.2 代替cp,进行增量拷贝

$ rsync -apP pathtofileA pathtofileB

其中p保留权限,而P则为查看进程。
rsync与cp相比,有一个比较重要区别就是在权限保持方面,默认不保持任何权限,所以如何用于同步一些需要一些权限的文件夹的时候,就得加上参数。

这是将pahtoffileA”下”的所有文件传到pathtofileB下,而非将pathtofileA目录本身直接传入pathtofileB下。

三、linux下拷贝隐藏文件

把/home/A目录中的所有文件(包括隐藏文件)复制到/home/B中

$ cp -a /home/A/. /home/B

注意下面几个区别

$ cp -fr /home/A/* /home/B  #将A中所有非隐藏文件拷到B文件下
$ cp -fr /home/A /home/B    #将A文件夹(包括所有文件)拷到B文件夹下

四、SSH密钥无法认证的问题

保证/home/xxx 的权限为 700,

/home/xxx/.ssh 的权限为 700,

/home/xxx/.ssh/authoried_keys的权限为600

在权限不足的情况下,一定要考虑所有上级目录的权限,以保证上级基本权限已开启!

五、ftp下无法使用ln -s的问题

使用mount –bind来代替ln -s就可以了。

六、提高pip的下载速度(以下载scipy为例)

$ pip install scipy -i http://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn

七、通配符与正则表达式(wildcard & regular expression)

通配符与正则表达式很容易混淆,首先要明白二者是不同的,个人感觉通配符用于Linux的shell命令(如文件名相关操作)中,而正则表达式用于文本内容中的字符串搜索和替换等。通配符是Linux系统本身就支持的,而正则表达式用于vim编辑器或awk程序,这些文本处理工具正是由于支持正则表达式才变得强大。

正则表达式比较复杂,而通配符则要简单很多,下面要分析通配符。

1. 通配符

  • [a-z]或[12]:匹配方括号中指定范围内的单个字符或方括号列出的其中一个字符。
  • [!9]:不匹配方括号中所列字符或指定范围内的单个字符。
  • * :匹配0个字符或多个字符。
  • ?:匹配任何单个字符,且不能为空字符。

由于shell会将字符?[ ] * 区别对待,因此在命令参数时如果需要用到这几个特殊字符,应将该参数用单引号标注或通过在特殊字符前加转义字符\。

需要说明的是:通配符看起来有点象正则表达式语句,但是它与正则表达式不同的,不能相互混淆。把通配符理解为shell 特殊代号字符就可。而且涉及的只有,*,? [] ,{} 这几种。

2. 正则表达式

  • . :匹配任何单个字符,功能上和通配符中的?符号相同。
  • [a-z]或[12]:功能上和通配符中的[]相同。
  • [^] :功能和通配符中的[!]相同。
  • * : 匹配该字符的前一个字符的0次或多次出现。

通配符参考网址:
http://www.cnblogs.com/chengmo/archive/2010/10/17/1853344.html

八、cmux 关于切换窗口的配置

set-window-option -g mode-keys vi
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

九、同步显示终端输出

方法:
a.双方同时登陆系统
b.演示方运行:

screen -S test  #建立一个叫test的会话

c.观看方运行:

screen -x test

九、解决locale的问题

问题表现:
远程登陆和使用locale命令均会出现错误

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

这是由于本机和远程在地址设置上面不相同造成造成的。原来在ssh在登录到远程机器中,会根据本地的区域配置,同步到所登陆的主机,但由于远程主机可能不支持本地的区域设置,所以提示以上错误,即本地的区域设置是en_US.UTF8,远程主机如果不支持这个远程,就会提示这个信息。

解决方案:
1、不要让ssh去修改远端的区域配置,在本机上(linux操作系统)按如下操作:

$ sudo vi /etc/ssh/ssh_config
找到SendEnv LANG LC_* 这一行,然后注释掉这一行,保存退出

2、让远程主机支持本地的区域配置
首先需要查询locale-gen的配置文件位置,可以通过man手册查询。
修改里面的

十、deb的解包与打包

#准备工作:建立解包和打包后的文件夹
$ mkdir extract
$ mkdir extract/DEBIAN
$ mkdir build
#解压出包中的文件到extract目录下
$ dpkg -X filename.deb extract/
#解压出包的控制信息extract/DEBIAN/下:
$ dpkg -e filename.deb extract/DEBIAN/
# 将extract下的文件重新打包放到build目录下,包的名称由控制信息决定
$ dpkg-deb -b extract/ build/

十一、关闭zsh的自动提示使用thefuck

  1. 在.zshrc最后加上 “unsetopt correct_all”
  2. thefuck 项目地址

十二、动态域名解析

DDNS ( Dynamic Domain Name Server )是动态域名服务的缩写。
DDNS 是将用户的动态 IP 地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态 IP 地址传送给位于服务商主机上的服务器程序,服务器程序负责提供 DNS 服务并实现动态域名解析。

如果只是为了 DDNS 可以用 Dnspod 有 API 可以直接操作…

并且通过 cron 定时任务,一行脚本的事…

*/15 * * * * curl -k -X POST https://dnsapi.cn/Record.Ddns -d 'login_email=登录邮箱&login_password=登录密码&format=json&domain_id=域名编号&record_id=记录编号&record_line=默认&sub_domain=子域名'

每 15 分钟更新一次

如果分配是外网动态IP,这样可以一试。

十三、剪切板与选择缓冲区

linux系统存在剪切板和选择缓冲区,其中选择缓冲区(X11 selection buffer)为实时的,当鼠标或键盘选择内容时,选择缓冲区就会刷新,将选择内容放入;而剪切板(clipboard)则需要特定的操作才会重新刷新写入当前选择缓冲区的内容。

在大多数软件中CTRL+C和CTRL+INSERT都是刷新剪切板,而CTRL+V和SHIFT+INSERT则为粘贴剪切板,而在相当多的终端中,CTRL+SHIFT+C和CTRL+SHIFT+V用于来刷新和粘贴剪切板,而SHIFT+INSTERT则为粘贴选择缓冲区。

十四、fcitx开启英文提示

  1. 激活到并且进入Fcixt的英文输入状态,点击任意输入框.
  2. 按 ctrl+alt+H ,以激活 spell hint状态.
  3. 输入几个英文字母,即可弹出候选单词(即自动补全功能),可以按alt加数字,以选取候选单词.

十五、man手册高亮

在~/.bashrc中添加

# Highlight the man manual export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;31m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;32m'

然后source ~/.bashrc即可

十六、录屏与GIF制作

使用Recordmydesktop即可录屏,生成ogv文件。然后使用mplayer将其转换成jpg文件,再通过covert转换成gif。

$ mplayer -ao null video.ogv -vo jpeg:outdir=.
$ convert *.jpg video.gif

十七、Centos7 不支持ntfs挂载

安装ntfs-3g这个软件包即可。

$ sudo yum list |grep ntfs
$ sudo yum install ntfs-3g.x86_64  #根据上面查询结果安装即可

然后正常方式挂载就行

十八、修改U盘卷标(名称)

在桌面上改,使用GParted即可,不过修改卷标需要先去除挂载。这种方法支持中文,所以还是相当不错的。

至于终端下修改U盘和硬盘的卷标,可以使用下面方法:(假设已知u盘的设备为/dev/sdc和分区为/dev/sdc1

# 去除挂载的硬盘和U盘
$ sudo umount /dev/sdc1
# 查看硬盘或U盘的文件类型
$ sudo blkid
/dev/sda1: TYPE="ext4"
/dev/sdb1: LABEL="Win7M-gM-3M-;M-gM-;M-^_M-gM-^[M-^X" TYPE="ntfs"
/dev/sdc1: TYPE="vfat" LABEL="Disk1"
# 可以看到/dev/sdc1 的文件类型为vfat(即fat32),卷标为Disk1
# 但是/dev/sdb1的卷标中文乱码了

下面修改分别修改/dev/sdb1和/dev/sdc1的卷标。

# 在/etc/mtools.conf最后一行增加 mtools_skip_check=1。
$ sudo echo "mtools_skip_check=1" >> /etc/mtool.conf
# 修改/dev/sdc1 的卷标名为 ”abc"
mlabel -i /dev/sdc1 ::abc

上述方法仅支持fat格式,而ntfs格式则无法使用该方法。

十九、修改linux下类型名与图标名的关联

事实上,文件类型名和图标是通过图标的名称相关联的。
以docx为例:

$ mimetype --all ./filename.docx
./filename.docx: application/vnd.openxmlformats-officedocument.wordprocessingml.document
./filename.docx: application/zip
./filename.docx: application/octet-stream

可以看出docx的文件归属到三种类型,其中最优先的类型是:application/vnd.openxmlformats-officedocument.wordprocessingml.document
故图标的名称即为:

application-vnd.openxmlformats-officedocument.wordprocessingml.document.svg

其中svg是为矢量图标类型,可以换成jpg,png之类的。

而对于应用类型的图标主要放在/usr/share/icons/hicolor/以及~/.local/share/icons/hicolor相应的目录下。

对于这些图标的寻找顺序和优先级还不甚明了,但是根据一般的情况应该是个人用户下优先,系统图标优先。

那么如果修改linux下的判定文件类型呢?参考下面的网址

http://www.68idc.cn/help/server/linux/20150713436321.html

二十、解决shadowsock多用户问题

原因:ss-server不支持多用户(port_password)的写法,而应该改用ss-manager来支持.
其中config.json的配置文件写法为:

{
"server":"0.0.0.0",
"local_address": "127.0.0.1",
"local_port":1080,
"port_password":
{     "8381": "foobar1",
      "8382": "foobar2",
      "8383": "foobar3",
      "8384": "foobar4"
},
"timeout":300,
"method":"aes-256-cfb",
"fast_open": false
}

由于shadowsock的服务配置使用的是ss-server,即不支持这种配置的写法,所以要使用下面的命令才能生效

$ ss-manager -c /etc/shadowsocks-libev/config.json --manager-address 127.0.0.1:1080

将这个命令保存到启动项/etc/rc.local,或者直接用nohup挂起即可。
当然要记得将iptables中的端口打开.

二十一:图盘图标

解决ubuntu14.04的部分托盘图标不显示和网页云音乐图标左置的问题。

$ sudo apt-add-repository ppa:fixnix/indicator-systemtray-unity
$ sudo apt-get update
$ sudo apt-get install indicator-systemtray-unity

To change the mode position: press the middle mouse button on the indicator. The horizontal position can be changed: scrolling the mouse over the indicator.
Settings can be changed in gsettings:/net/launchpad/indicator/systemtray (use dconf-editor).

参见:https://github.com/GGleb/indicator-systemtray-unity

二十二:安装IBUS-RIME输入法

22.1 安装

$ sudo apt-get install ibus-rime librime-data-wubi

Rime 安装完后默认只有朙月拼音和仓颉五代,要用五笔还是得修改一下。实际上 Rime 默认是带五笔86和五笔拼音方案的,它们在/usr/share/rime-data 里,只要复制到用户文件夹 (~/.config/ibus/rime) 中并且修改一下 default.yaml 文件,然后重启一下输入法就可以了.

$ sudo cp -r /usr/share/rime-data/* ~/.config/ibus/rime/
$ vim ~/.config/ibus/rime/default.yaml
# 然后将schema_list添加"-schema:wubi_pinyin",保存退出
$ ibus restart

之后将ibus切换到中洲陨输入法,然后即可使用F4来切换输入源即可。关于这些schema:的名称,可以直接查看该文件夹下的.yaml文件即可看到。wubi_pinyin实为五笔与拼音的混输方案,而wubi86才为使用z键进入拼音反查的输入法,这点和fcitx的输入法是有所不同的。

22.2 设置

ibus输入法本身的设置非常的简单,可以认为是基本上没有什么设置。可通过命令

$ ibus-setup

来打开,其实系统设置中内置了ibus的输入法设置,可以在那儿设置输入源的切换。输入法的重启也很简单:

$ ibus restart

几个重要设置未找到解决方案:

* 如何配置第二第三候选键
* 如何配置英文优先的切换输入法环境(能配置,但是切找效果较差)
* 如何配置vim下的中英切换策略
* IBUS-RIME输入法无法在menedelay下使用

22.3 上述问题的解决方案

RIME输入法是配置灰常自由的输入法,只是基本纯文本的配置,让很多人觉得无所适从。关于配置文件的说明可以参考github:RIME.

1. 如何配置默认英文
    将相应的配置文件*.yaml中下swithches:-name:ascii_mode下的reset置设为1即可。
2. 如何设置第二候选键
    rime可以设置键位绑定,而第二候选键和选词2功能性重复,所以直接将第二候选键绑定到数字2上即可。
    将相应的配置文件*.yaml下添when paging accept: ; send Shift
3. 使用其它的IBUS输入法作为替代方案。
4. vim 下不再使用系统的输入法,而使用vimim或者ywvim作为vim下的输入法解决方案。缺点就是要使用两套输入法激活手段,有时候会弄混。
此条目发表在LINUX, 软件安装分类目录,贴了标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。