写在前面,linux学习笔记记录了本人的学习linux过程及学习的一些心得。
- linux学习最好是命令行。好处是通过命令行可以熟悉系统功能的命令,而这是sh脚本的内容。为以后自动化打下基础。能更好的理解一些计算机方面的概念,如管道通信,重定向等。
- 我比较推崇索引式学习方法。多找共性,多建索引,少记具体内容(能通过索引找到的内容),毕竟人脑有限,把资源留给有价值的知识是一种战略。linux指令千千万万,没必要全记住,但是重要的几个指令还是要记住的,比如man、ls。
- 学习书籍是鸟哥私房菜,进度基本上也是和书籍一致的,学习笔记实例。
vi/vim:linux通用编辑器
一般指令模式:
G : 光标移动到最后一行
1G/gg:光标移动到第一行
yy : 复制光标所在行 nyy
p/P: 行后粘贴/行前粘贴
x/X: 向后删除/向前删除一个字符
dd ; 删除整行d0、d$、ndd
:n1,n2s/word1/word2/g :用word2替换n1,n2之间的word1
u : 复原前一个动作
ctrl+r :重做上一个动作
. : 重复前一个动作
编辑模式:
i : 光标当前位置插入
a : 光标下一个字符处开始插入
o :光标下一行处开始插入
R :替换光标处文字
指令列模式:
:w :写入 :w [filename] :另存为filename :r [filename] :嵌入filename
:w!:强制写入
:q :退出
:q!:强制推出
:wq!:强制写入并退出
ZZ :安全离开
:set nu :设置行号 :set nonu :隐藏行号
alias : 查看系统指令别名
区块操作:
v : 字符选择
V :行选择
ctrl + v : 区域选择
y/p/d :复制/粘贴/删除
多文件编辑:vim file1 file2 ...
:files :查看vim打开了哪些文件
:n :编辑下一个文件
:N :编辑上一个文件
多窗口编辑:
:sp :打开新窗口,显示当前文件
:sp [filename] :打开新窗口,显示指定文件
ctrl+w :切换窗口
自动补全功能:
ctrl+x -> ctrl+n 依据当前文件已有内容补全
ctrl+x -> ctrl+f 依据文件名(正在编辑的文件所在目录下的文件名)
ctrl+x -> ctrl+o 依据内嵌语法补全 (程序编辑器)
:set all 查看vim设定
DOS与linux的断行符:
DOS(^M$) linux($)转换软件:dos2unix
语系编码转换:
iconv: 语系命令
iconv -f 原来编码 -t 新编码 filename [-o newfile]
bash实战:
配置文件 : /etc/passwd
type :type [-tpa] commandname 查看指令类型
常见环境变量:PATH\HOME\MAIL\SHELL等(环境变量大写,自定义变量小写)
自定义变量,并设置为环境变量:export var=te\ st\"te st"\'te st'
unset :取消变量: unset var
取变量内容 ${var} ;取指令内容:$(ls -a)
env : 查看环境变量
set : 查看所有变量(包括环境变量)
read :读取键盘输入 read [-pt] variable
declare\typeset: 声明变量类型,默认值是字符串 declare [-aixr] variable
declare -x/+x variable : 设置\取消环境变量
declare -p variable : 查看变量类型
ulimit : 文件系统限制指令 ulimit [-SHacdfltu] [配额]
#/## : 从前面删除变量内容 ${PATH#/*:}
%/%% : 从后面删除变量内容 ${PATH%:*bin}
/或者//:替换
检查变量是否设定:
var=${str-expr}/${str:-expr}/${str?'无此变量'}
alias : 给指令起别名 alias cls='clear' h='history'
history : 查看操作历史指令 n/ -c/ -raw/ /!n /!!/!vim
login shell 会读取
/etc/issue /etc/motd:登录显示信息设置
/etc/profile(所有用户) ~/.bash_profile(单个用户):环境设置 (需要重新登录)
no-login shell(不需要输入用户名密码就能进入bash环境的情况) 会读取
~/.bashrc : 设置no-login shell 环境
source: 使配置生效,不需要重新登录 source/. 配置文件
stty : 设置终端信息 stty erase ^h
stty -a :查看终端设置
set : 设置终端环境 set [-uvCHhmBx] set [+uvCHhmBx]取消设置
$- : 显示目前set设定值 echo $-
>>/> : 数据流重导输出
正确错误写入两个文件 find /etc -name profile > ~/right 2> ~/error
正确错误写入一个文件 find /etc -name profile > ~/list 2>&1
<</< : 数据流重导输入
cat > file : 用cat建立一个文件
cat > file << "exit" : 一直输入直到遇到exit
cat > file < ~/.bashrc : 用cat复制一个文件
echo "error message" 2> /dev/null 1>&2 : 先设置不输出错误信息,然后把正确信息转换成错误信息
管道通信:
last : 输出登录过系统的用户信息
head :输出文件的第一部分
cut :截取数据 cut -d '分割符' -f fields
cut -c 字符区间(12-)
grep: 取出指定信息 grep [-acinv]
sort :排序 sort [-fbMnrtuk] [file or stdin]
uniq :去重 uniq [-ic]
wc :计算输出数据的信息 wc [-lwm]
tee :双重导向 tee [-a] file
tr : 删除/替换文字 tr [-ds] SET1
col :输入转换 col [-xb]
col -x :将输入的tab转换成对应的空格
expand :tab转空格 expand [-t] file
join :连接文件(需要经过排序处理) join [-ti12] file1 file2
paste :粘贴 paste [-d] file1 file2
split : 分割文件 split [-bl] file prefix
xargs :参数代换 xargs [-Oepn] command
xargs妙用:find /usr/sbin -perm /7000 | xargs ls -l
id :显示组或用户id(只能接受一个参数) id 组名/用户名
指令写错时 ^u(ctrl+u)