随便整理的一些自己实际使用过程中的知识点
不定期整理更新…
Linux/windows文件在换行符的区别
换行操作使用两个字符:一个字符<Return>
来移到第一列,另一个字符<Line feed>
来新增一行。
计算机产生以后,存储较为昂贵,在如何解决回车换行这个老问题上,人们产生了不同的意见:
UNIX
人认为在到达一行的结尾时新增一行(LF) Mac
人则认同(CR)的解决办法 MS
人则坚持(CRLF)的方法
将windows文件转换为unix:
vi xx.txt
ESC进入命令模式
:set ff = unix
:wq
尤其需要注意的是shell、python等脚本需要保存为unix格式,因为不然你在linux下直接运行时会提示:No such file or directory,因为Linux把换行符也当成脚本解释器的一部分了。
字符编码
ASCII
:python默认编码,只能表示数字、英文字母和一些特殊符号,不能表示汉字(1字节)GB2312
:中文编码(然后逐渐扩展为GBK、GB18030)(2字节)unicode
:用于内存中存储,可表示汉字,固定长度(4字节,字符编码转换的媒介)utf-8
:用于磁盘文件存储,可表示汉字,可变长度(英文占用1字节,中文占用3字节)(美国字符1个字节,欧洲2个字节,东南亚3个字节)
如:s=’中文’ 如果是在utf-8的文件中,该字符串就是utf8编码,如果是在gb2312的文件中,则其编码为gb2312。 这种情况下,要进行编码转换,都需要先用 decode方法将其转换成unicode编码,再使用encode方法将其转换成其他编码。 通常,在没有指定特定的编码方式时,都是使用的系统默认编码创建的代码文件。
#python
str1.decode('utf-8') #表示将utf-8编码的字符串str1转换成unicode编码
str2.encode('gb2312') #表示将unicode编码的字符串str2转换成gb2312编码
shell端编码显示问题
- vi ~/.vimrc #编辑:set fileencoding=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
- source ~/.vimrc #激活
点击查看详细内容
set incsearch
set hlsearch
set ignorecase smartcase
set backupcopy=yes
set laststatus=2
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8
set number
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
文件访问
./是当前目录 ../是父级目录 /是根目录
cat input_file | head -n 1000 显示前面1000行
cat input_file | tail -n 1000 显示最后1000行
cat input_file | tail -n +1000 从1000行开始显示,显示1000行以后的
cat input_file | tail -n +1000 | head -n 2000 从第1000行开始,显示2000行。即显示1000~2999行
sed -n '5,10p' input_file 查看文件的第5行到第10行
cat input_file | awk -F '\t' '{print $1}' 打印第一列
touch a.c 新建文件a.c
tar -czvf test.tar.gz a.c 压缩a.c文件为test.tar.gz
tar -xzvf test.tar.gz 解压test.tar.gz
cat xx.txt | python xx.py 跑脚本
rz 上传文件
sz 下载文件(大文件:sz -be)
-b 以二进制方式传输(binary)
-e 对控制字符转义(escape),这可以保证文件传输正确
awk的一般语法格式为:
- awk [-参数 变量] ‘BEGIN{初始化}条件类型1{动作1}条件类型2{动作2}…END{后处理}’
最常用快捷键
alt+tab:切换当前的运行程序
crtl+l 清 屏
ctrl+c 强制中断程序的执行
ctrl+z 将任务中断,但是此任务并没有结束,他仍然在进程中他只是维持挂起的状态,用户可以使用fg/bg操作继续前台或后台的任务,
- fg命令重新启动前台被中断的任务
- bg命令把被中断的任务放在后台执行
自定义命令
vi ~/.bash_profile #编辑:alias hdpn='/home/.../hadoop'
source ~/.bash_profile #激活
点击查看详细内容
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
unset USERNAME
alias hdpn='/home/caijiayue/hadoopclient/hadoop/hadoop/bin/hadoop'
权限操作
- Linux下文件的权限类型一般包括
读
,写
,执行
。对应字母为 r、w、x。 - Linux下权限的粒度有
拥有者
、群组
、其它组
三种。每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限 (即-rwxrwxrwx
)。
ps:第一位标识文件属性:d目录(即文件夹)、-文件、l链接文件、s该文件无论由什么用户启动,最众都会被超级用户去执行、b可供存储的接口设备、c串行端口设备如圆形插头的鼠标和键盘等等
- Linux上通常使用
chmod命令
对文件的权限进行设置和更改(例如chmod 775 xx文件
、chmod -R 774 xx文件夹
)。
磁盘操作
df -h 查看内存:
Filesystem Size Used Avail Use% Mounted on
/dev/s1 441G 255G 186G 58% /home/ssd0
/dev/s1 2.7T 1.9T 811G 71% /home/disk0
du -h –max-depth=1 当前目录中文件夹所含大小:
102M ./hadoop_output_history
114M ./hadoop_output_new
find . -size +1000M 列出当前目录下所有大于1000M的文件:
./gs/data/ann_dict
./gs/data/topic_dict