linux的路上_linux学习笔记三

时间:2022-09-13 15:34:57

写在前面,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)