admin

Linux学习笔记(4)
#参考:鸟哥的私房菜基础篇第11章#这次笔记主要记录的是shell的一些基本知识编码big5 与utf-8 中文...
扫描右侧二维码阅读全文
23
2018/06

Linux学习笔记(4)

参考:鸟哥的私房菜基础篇第11章

#这次笔记主要记录的是shell的一些基本知识

编码

big5 与utf-8
中文编码有big5 gb2312 utf8等
中文编码在使用big5写入某些数据库系统时会发生错误,建议用utf-8
但是在windows XP上的软件经常默认使用big5 编码

乱码:只要GNOME TERMINAL 的编码和文件本身的编码一致,就不会乱码

Shell 简介与基本语法

shell实际上是提供用户操作系统的一个接口,保证输入命令与内核之间的通信
广义的shell指的是能够操作应用程序的接口 狭义的shell指的是命令行方面的软件

echo
echo PATH echo $PATH $符号表示读取变量值 echo 可以直接显示环境变量

设置变量:

不能有空格 如myname = dreamboy
如果变量的值中要带空格需要加转义符号 或者用引号括起来(双引号中的$name变量保留原值,而单引号中的$变为一般字符)

子进程:

在一个shell中打开另一个shell) 是无法使用父进程中的变量的,除非用export将变量变成环境变量

如果有一个很长的路径经常需要访问,那么可以把它定义在变量中并放在bash的配置文件里

关于login-shell 与non-login shell

加载的bash配置文件可以参考该网址https://www.cnblogs.com/jonathanlin/p/3969329.html
login-shell 会读取/etc/profile 和 ~/.bash_profile或~/.bash_login或~/.profile      (这三者按顺序与存在性依次去读取)
non-login shell 读取~/.bashrc
source ~/.bashrc 与. ~/.bashrc 都表示读取bash 的配置文件bashrc

除了echo的其他一些用户交互命令

read -py 读取来自键盘的输入
-p 后面可以接提示符
-t 后面可以接等待的秒数
declare -aixr 声明变量的类型
-a 数组
-i 整数
-x 环境变量 与export 的结果相同
-r 将变量设置为readonly类型 只可读
如declare -i sum=100+300+500

将declare +aixr 可以取消设置
用declare -p 查看变量的类型

变量默认类型为字符串,所以默认情况下
sum = 100+300
echo $sum 得到的结果是 100+300

数组的定义

var[index] = content
这里的var是数组名称

命令别名的设置

alias rm='rm-i'
alias vi='vim'
unalias 取消

bash登录界面的欢迎信息(即tty1~tty6)

那些内容放在 cat /etc/issue 中
用telnet 登录主机显示的信息是存放在/etc.issue.net中的
/etc/motd 中也可以存放一些用户登录后可以取得的信息,比如主机的定时维护等

linux 中的通配符与几个特殊符号

*代表0到无穷多个任意字符
?代表一定有一个任意字符
[]代表一定有一个在括号内中的字符,如[abcd]表示一定有abcd 中的一个字符
[^abc]则表示反向选择,只要是非a b c就接受

数据流重定向

stdin 0 < 或<<
stdout 1 > 或 >>
stderr 2 2> 或 2>>
(其中>会覆盖原来的同名文件,而>>则是在尾部追加)
例子:
将stdout与stderr分别存到不同的文件中
find /home -name .bashrc > list_right 2> list_error
将错误数据丢弃(/dev/null 垃圾黑洞)
find /home -name .bashrc 2> /dev/null
将正确与错误的数据写入到同一个文件中且保证顺序
find /home -name .bashrc > list 2>&1

<表示把要有键盘输入的内容改由文件内容代替
如 cat > catfile < ~/.bashrc
<<代表结束输入
cat > catfile << "eof" 用eof 来终止一次输入

双向重定向 tee

一个输出到对应文件 一个在屏幕输出
last | tee right.list | cut -d ' ' -f1

 

多个无关命令的顺序执行 用;

 

相关命令的执行

&& cmd1&&cmd2 必须cmd1 正确执行才执行cmd2
|| cmd1||cmd2 cmd1 执行完毕且为错误才执行cmd2
二者的组合顺序一般是cmd1 && cmd2 || cmd3

 

管道命令 pipe |

 

#选取命令
cut -dfc

-d 后面接分隔字符,与 -f 一起使用
-f 依据 -d 的分隔字符将一段信息切割成数段,用-f取出第几段的意思
-c 以字符为单位取出固定字符区间 (如cut -c 12-)
例子: last | cut -d ' ' -f1

grep -acinv

-c 计算找到 '查找字符串' 的次数
-i 忽略大小写
-n 顺便输出行号
-v 反向选择

几个较好用的排序与统计命令

sort -fbMnrtuk

-f 忽略大小写差异
-r 反向排序
-u 就是uniq,相同的数据中,只出现 一行代表
-n 使用纯数字来排序(默认是文本格式)
-k 以那个区间来进行排序
-t 分隔符,默认的分隔符是TAB
如 cat /etc/passwd | sort -t ':' -k 3 -n 表示的是以/etc/passwd 中的第三列为依据来排

uniq -ic  排序完成后,将重复的数据仅列出一个显示

-i 忽略大小写字符的不同
-c 进行计数

wc 统计字数

-l 仅列出行数
-w 列出英文单字数
-m 列出字符总数

常用的压缩命令

compress 与uncompress (针对.Z的文件) -r 连同目录下的也给予压缩 -c 表示将压缩数据同时输出 源文件会不见
gzip 用于处理*.gz 与 *.zip 等 -c 输出到屏幕(可以重定向保留源文件) -d 解压缩
bzip2 针对.gz 与.bz2 的文件 -c 输出屏幕  -d 解压缩 -k 保留源文件

tar

tar [-j|-z] [cv] [-f 新建的文件名] filename 打包与压缩  -j表示加入tar.bz2的支持 -z表示加入.tar.gz
tar [-j|-z] [xv] [-f 新建的文件名] [-C 目录] 解压缩 (-C 参数可以实现在指定目录下的解压缩)
-P 参数  保留绝对路径 允许备份数据中含有根目录存在
tar -jcv -f filename.tar.bz2 sourcefilename 这里的filename是我们自己写的,且注意不要落下 sourcefilename
tar -jxv -f filename.tar.bz2 -C 则会自动生成解压出的文件的名字

经常备份/etc目录是个好习惯
tar -zpcv -f /root/etc.tar.gz /etc

关闭触摸板

sudo modeprobe -r psmouse
恢复: sudo modprobe psmouse

Last modification:March 13th, 2019 at 07:06 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment