The Linux Command Line 学习笔记
第一部分 学习shell
第一章 什么是shell
第二章 文件中的跳转
第三章 探究操作系统
ls — 列出目录内容
- -l(长格式显示)
- -t(修改时间排序)
- -r(–reverse相反的顺序)
- -a(–all列出所有文件包括隐藏文件)
- -F(–classify列出名字后加指示符)
- -h(长格式列出时文件大小单位更直观)
- -S(文件大小排序)
file — 确定文件类型
file filename
打印出文件内容的简单描述less(less is more) — 浏览文件内容(色即是空)
less filename
浏览文本文件的一个程序- q (退出less程序)
- b or Page Up (上翻一页)
- space or Page Down (下翻一页)
- G (已到最后一行)
- g or 1G (移到开头一行)
- /charaters (向前查找)
- n (查找下一个)
- h (帮助)
Linux常见系统目录
- / (根目录)
- /bin (系统启动和运行所必须的二进制程序)
- /boot ( Linux 内核、 启动加载程序等)
- /dev (设备结点,“一切都是文件”)
- /etc (所有系统层面的配置文件如用户账号列表)
- /home (在/home 下,给每个用户分配一个目录。普通用户只能在他们自己的目录下创建文件。)
- /root (root 帐户的家目录)
- /tmp (存储由各种程序创建的临时文件)
- /usr (/usr目录可能是最大的一个。包含普通用户所需要的所有程序和文件。)
符号链接
建立符号链接便于系统的更新
第四章 操作文件和目录
通配符
-
- (匹配任意多个字符(包括零个或一个))
- ? (匹配任意一个字符(不包括零个) )
- [characters] (匹配任意一个属于字符集中的字符 )
- [!characters] (匹配任意一个不是字符集中的字符)
- [[:class:]] (匹配任意一个属于指定字符类中的字符)
- [:alnum:] 匹配任意一个字母或数字
- [:alpha:] 匹配任意一个字母
- [:digit:] 匹配任意一个数字
- [:lower:] 匹配任意一个小写字母
- [:upper] 匹配任意一个大写字母
-
mkdir - 创建目录
mkdir dir1 dir2 dir3
cp - 复制文件和目录
cp item1 item2
(复制单个文件或目录”item1”到文件或目录”item2”)cp item... directory
(复制多个项目(文件或目录)到一个目录下)- -a, –archive (复制文件和目录,以及它们的属性,包括所有权和权限。)
- -i, –interactive (在重写已存在文件之前,提示用户确认。)
- -r, –recursive (递归地复制目录及目录中的内容。当复制目录时, 需要这个选项(或者-a 选项) )
- -u, –update (更新文件或复制不存在文件)
- -v, –verbose (显示翔实的命令操作信息 )
mv - 移动和重命名文件
mv item1 item2
:把文件或目录 “item1” 移动或重命名为 “item2”mv item... directory
:把一个或多个条目从一个目录移动到另一个目录中。rm - 删除文件和目录
rm item...
:“item”代表一个或多个文件或目录。ln - 创建链接
ln file link
:创建硬链接ln -s item link
:创建符号链接
第五章 使用命令
命令
- 一个可执行程序
- 一个shell内部命令(builtins)
- 一个shell函数
- 一个命令别名
识别命令
- type - 显示命令的类型(以上4种之一)
type command
- which - 显示一个可执行程序的位置
which command
- type - 显示命令的类型(以上4种之一)
得到命令文档
- help - 得到shell内部命令的帮助文档
help command
- –help - 显示用法信息
command --help
- man - 显示程序手册页
man program
- apropos - 显示适当的命令(搜索参考手册列表,基于某个关键字的匹配项)
apropos keyword
- whatis - 显示非常简洁的命令说明
whatis command
- info - 显示程序 Info 条目 (一个命令程序手册页的替代物)
info command
- help - 得到shell内部命令的帮助文档
alias - 创建你自己的命令
- 创建
alias name='string'
- 删除
unalias name
- 创建
第六章 重定向
- 标准输入文件(stdin),描述符为0:默认连接到键盘
- 标准输出文件(stdout),描述符为1:默认连接到屏幕
标准错误文件(stderr),描述符为2:默认连接到屏幕
重定向标准输出
使用 “>” 重定向符,其后跟着文件名(> 从目标文件开头重写,可用来删除文件内容或是建新文件)
ls -l /usr/bin > ls-output.txt
- “>>”重定向符,结果追加到文件后面。
ls -l /usr/bin >> ls-output.txt
- #### 重定向标准错误
ls -l /bin/usr 2> ls-error.txt
:2为标准错误的文件描述符 - #### 重定向标准输出和错误到同一个文件
ls -l /bin/usr > ls-output.txt 2>&1
:1为标准输入的文件描述符
或
ls -l /bin/usr &> ls-output.txt
- #### 处理不需要的输出
/dev/null :位存储桶,接受输入,但输入不做任何处理
ls -l /bin/usr 2> /dev/null
重定向标准输入
cat
读取一个或多个文件,然后复制它们到标准输出
cat [file]
复制标准输入到标准输出
cat > [fiel]
创建简短的文本文件
pipelines(管道线):操作符“|”,一个命令的 标准输出可以管道到另一个命令的标准输入
command1 | command2
- 用 less 来一页一页地显示任何命令的输出
ls -l /usr/bin | less
- 用 less 来一页一页地显示任何命令的输出
filters(过滤器):把几个命令放在一起组成一个管道线
- sort - 排序
ls /bin /usr/bin | sort | less
- uniq - 报道或忽略重复行
ls /bin /usr/bin | sort | uniq | less
/bin /usr/bin | sort | uniq -d | less
查看重复的数据列表 - wc - 显示文件所包含的行,字和字节数。”-l”只输出行数
ls /bin /usr/bin | sort | uniq | wc -l
grep - 输出匹配行
grep pattern [file...]
ls /bin /usr/bin | sort | uniq | grep zip
-i
(忽略大小写)-v
(只输出不匹配的行)- head / tail - 打印文件开头部分/结尾部分
- ’-n 5’ 5行
- ‘-f’ 持续监测
- tee - 从 Stdin 读取数据,并同时输出到 Stdout 和文件
ls /usr/bin | tee ls.txt | grep zip
- sort - 排序
第七章 从shell眼中看世界
- echo - 显示一行文本
(字符)展开
在标准输出中打印出它的文本参数
echo this is a test
echo *
路径名展开
这种通配符工作机制叫做路径名展开。
echo D*
echo *s
echo .*
可以展开隐藏文件
波浪线展开
当波浪线字符(“~”)后接一个单词时,展开成指定用户的家目录,如果没有指定用户名,则是当前用户的家目录
echo ~cyc
echo ~
算术表达式展开
格式为
$((expression))
例
echo $((2 + 2))
** 为 取幂
花括号展开
可以从一个包含花括号的模式中 创建多个文本字符串
例:
[me@linuxbox ~]$ echo Front-{A,B,C}-Back
Front-A-Back Front-B-Back Front-C-Back
echo Number_{1..5}
echo {Z..A}
也可以嵌套
echo a{A{1,2},B{3,4}}b
输出的结果为aA1b aA2b aB3b aB4b
参数展开
例:
echo $USER
命令替换
把一个命令的输出作为一个展开模式来使用
例:
echo $(ls)
引用
双引号
把文本放在双引号中, shell 使用的特殊字符,除了 $,\ (反斜杠),和 `(倒引号)之外, 则失去它们的特殊含义,被当作普通字符来看待。这意味着单词分割,路径名展开, 波浪线展开,和花括号展开都被禁止,然而参数展开,算术展开,和命令替换 仍然执行。
例:
echo "this is a test"
执行结果是:this is a test
单引号
禁止所有的展开
例:
echo 'text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER'
结果为:text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER
转义字符
字符前加个反斜杠\