Linux学习之路-Linux---20171120
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux学习之路-Linux---20171120相关的知识,希望对你有一定的参考价值。
一、linux 简单命令总结
1、基础命令
ls 命令(list):列出指定目录下的内容
[[email protected]~]#which ls
alias ls='ls --color=auto' 别名
/bin/ls 物理地址
ls [OPTION]... [FILE]...
常用参数: -a --all:显示所有文件,包括.和..在内所有隐藏的文件
-A --almost-all:显示所以文件,不包括.和..在内的
-l use a long listing format使用长格式,显示属性信息
-h --human-readable:对数值做单位换算
-d 仅查看目录自身属性
-R recursive,目录递归通过
-r reverse,降序(逆序)显示
-i 显示文件的inode号码
-1 文件分行显示
-S 按从大到小排序
–t 按mtime排序
–u 配合-t选项,显示并按atime从新到旧排序
–U 按目录存放顺序显示
–X 按文件后缀排序
lscpu 命令 :查看计算机cpu信息
[[email protected]~]#lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2 ----->这是cpu的个数
On-line CPU(s) list: 0,1
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 2
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 42
Model name: Intel(R) Core(TM) i5-2435M CPU @ 2.40GHz
CPU MHz: 2394.609
BogoMIPS: 4789.21
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 3072
lsblk 命令 : 查看块设备信息
[[email protected]~]#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 3.7G 0 rom /media/CentOS_6.9_Final
sda 8:0 0 200G 0 disk -----> 硬盘信息情况
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 48.8G 0 part /
├─sda3 8:3 0 19.5G 0 part /app
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 2G 0 part [SWAP]
lsusb 命令 :查看usb设备
[[email protected]~]#lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 005: ID 0e0f:0008 VMware, Inc.
df 命令(report file system disk space usage) :查看磁盘使用状态
df [OPTION]... [FILE]...
常用参数:-h:human-readable,单位换算,易于人读
-l:查看本地磁盘文件系统
-i:查看inode使用情况而非blocks
[[email protected]~]#df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda2 3203072 134233 3068839 5% /
tmpfs 125514 4 125510 1% /dev/shm
/dev/sda3 1281120 13 1281107 1% /app
/dev/sda1 65536 38 65498 1% /boot
/dev/sr0 0 0 0 - /media/CentOS_6.9_Final
free 命令 :显示系统中可用和已用内存的数量
free [-b | -k | -m | -g | -h] [-o] [-s delay ] [-c count ] [-a] [-t] [-l] [-V]
常用参数:-b开关显示以字节为单位的内存量
-k开关(默认设置)dis-以千字节播放
-m开关以兆字节显示它
-g开关显示它以千兆字节为单位
-h开关显示所有输出字段自动缩放到最短(三数字)表示,包括单位。这使得这些值是可读的
-l开关显示详细的低和高内存统计信息
[[email protected]~]#free -h
total used free shared buffers cached
Mem: 980M 427M 553M 424K 62M 178M
-/+ buffers/cache: 186M 793M
Swap: 2.0G 0B 2.0G
cat 命令(concatinate):连接文件并在标准输出上打印
cat [OPTION]... [FILE]...
常用参数 : -A 显示所有 相当于-vET
-b 非空的输出行数
-E 显示结束符,在每行的末尾显示$
-n 对显示出的行进行编号
-s 挤压空白抑制重复空行输出
-T 显示标签 显示TAB字符为^I
如果没有FILE,或者FILE是 - 读取标准输入
[[email protected]~]#cat /proc/swaps -----> 查看虚拟内存信息
Filename Type Size Used Priority
/dev/sda5 partition 2097148 0 -1
ceho 命令 :回显命令、显示字符
[SHORT-OPTION]... [STRING]...
常用参数: -n:不自动附加换行符;即都在一行显示;
-e:启用转义符,使能转义符\;
\a 发出警告声
\b 退格键
\c 最后不加上换行符号
\n 换行且光标移至行首
\r 回车,即光标移至行首,但不换行
\t 插入tab
\\插入\字符
\0nnn 插入nnn(八进制)所代表的ASCII字符
echo -e '\033[43;31;5mmagedu\033[0m'
\xHH插入HH(十六进制)所代表的ASCII字
显示变量,没有赋值内容为空
[[email protected]~]#echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[[email protected]~]#echo $ABC
-----> $ABC 变量没有赋值,所以为空
[[email protected]~]#
bash是弱类型的编程语言,不严格区分数据类型,意味着把所有数据统统当做字符串处理
字符串类型的数据可不加引号
引号有三种类型:'' 、"" 、 ``
引号:字符串引用符号
'' 单引号:强引用;其内部的变量不会替换
"" 双引号:弱引用;其内部的变量会被替换为普通字符
`` 反引号:命令引用符号
who 命令 : 显示登录当前系统的用户
[OPTION]... [ FILE | ARG1 ARG2 ]
常用参数: -a 显示详细信息,相当于-b -d --login -p -r -t -T -u同时用的效果
-r 仅显示运行级别
-b 仅显示系统本次的启动时间
[[email protected]/root]$who -a
system boot 2017-11-20 18:30
run-level 3 2017-11-20 21:06 last=5
LOGIN tty3 2017-11-20 18:30 2201 id=3
LOGIN tty2 2017-11-20 18:30 2199 id=2
LOGIN tty4 2017-11-20 18:30 2204 id=4
LOGIN tty5 2017-11-20 18:30 2206 id=5
LOGIN tty6 2017-11-20 18:30 2208 id=6
tty1 2017-11-20 21:06 2250 id=:0 term=0 exit=0
pts/0 2017-11-20 21:06 0 id=/0 term=0 exit=0
root + tty1 2017-11-21 02:14 05:58 4562
root + pts/0 2017-11-21 02:15 . 4596 (192.168.27.1)
w 命令:显示登录的用户及正在执行的命令
[options] user [...]
常用参数: -f --from:只显示从哪来的
-i --ip-addr:只显示ip地址,不显示主机名
[[email protected]~]#w
08:09:11 up 13:39, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM [email protected] IDLE JCPU PCPU WHAT
root tty1 - 02:14 5:54m 0.05s 0.05s -bash
root pts/0 192.168.27.1 02:15 0.00s 0.32s 0.04s w
whoami 命令:显示当前有效的用户ID(su命令切换用户时可用)
[[email protected]/root]$whoami
L
alias 命令:定义或显示别名
[-p] [name[=value] ... ]
alias NAME='VALUE'
在命令行中定义的别名,仅对当前shell进程有效
如果想永久有效,要定义在配置文件中
仅对当前用户:~/.bashrc
对所有用户有效:/etc/bashrc
[[email protected]/root]$alias
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
hash 命令 : 缓存表
系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中
当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,
如果不存在,将会去PATH路径下寻找。利用hash缓存表可大大提高命令的调用速率
?hash常见用法 : hash 显示hash缓存
hash –l 显示hash缓存,可作为输入使用
hash –p path name 将命令全路径path起别名为name
hash –t name 打印缓存中name的路径
hash –d name 清除name缓存
hash –r 清除缓存
[[email protected]/root]$hash
hits command
2 /usr/bin/who
1 /usr/bin/whoami
1 /usr/bin/man
1 /usr/bin/info
备注:在别人机器上做了坏事别忘记清空hash表
history 命令 :已用过的命令历史列表
[-c] [-d offset] [n]
?history -anrw[filename]
?history -psarg[arg...]
常用参数:-c: 清空命令历史
-d offset: 删除历史中指定的第offset个命令
n: 显示最近的n条历史
-a: 追加本次会话新执行的命令历史列表至历史文件
-r: 读历史文件附加到历史列表
-w: 保存历史列表到指定的历史文件
-n: 读历史文件中未读过的行到历史列表
-p: 展开历史参数成多行,但不存在历史列表中
-s: 展开历史参数成一行,附加在历史列表后
?快捷方法 : !n 执行history命令输出对应序号n的命令
? !-n 执行history历史中倒数第n个命令
? ctrl-r来在命令历史中搜索命令
(reverse-i-search)`’
?Ctrl+g:从历史搜索模式退出
?使用up(向上)和down(向下)键来上下浏览从前输入的命令
command !string:^ 从命令历史中搜索以string 开头的命令,并获取它的第一个参数
? command !string:$ 从命令历史中搜索以string 开头的命令,并获取它的最后一个参数
?command !string:n 从命令历史中搜索以string 开头的命令,并获取它的第n个参数
?command !string:* 从命令历史中搜索以string 开头的命令,并获取它的所有参数
command !^ : 利用上一个命令的第一个参数做cmd的参数
?command !$ : 利用上一个命令的最后一个参数做cmd的参数
?command !* : 利用上一个命令的全部参数做cmd的参数
?command !:n : 利用上一个命令的第n个参数做cmd的参数
?command !n:^ 调用第n条命令的第一个参数
?command !n:$ 调用第n条命令的最后一个参数
?command !n:m 调用第n条命令的第m个参数
?command !n:* 调用第n条命令的所有参数
*命令历史相关环境变量:
$HISTSIZE:
shell进程的缓冲区保留的历史命令的条数;
$HISTFILESIZE:
命令历史文件可保存的历史命令的条数;
默认均为1000;
$HISTFILE:存放当前用户的命令历史文件,默认为~/.bash_history
存放在/etc/profile 或~/.bash_profile
?$HISTTIMEFORMAT="%F %T" 显示时间
[[email protected]/root]$HISTTIMEFORMAT="%F %T"
[[email protected]/root]$history
1 2017-11-21 08:11:22lsblk
23 2017-11-21 08:46:17HISTTIMEFORMAT="%F %T"
24 2017-11-21 08:46:20history
? $HISTIGNORE="str1:str2*:…" 忽略str1命令,str2开头的历史
? 控制命令历史的记录方式:
环境变量:HISTCONTROL
ignoredups默认,忽略重复的命令,连续且相同为“重复”
[[email protected]/root]$echo $HISTCONTROL
ignoredups
ignorespace忽略所有以空白开头的命令
ignoreboth相当于ignoredups, ignorespace的组合
erasedups删除重复命令
?export 变量名="值“
2、bash 特性
bash的特性之一:命令别名
bash的特性之二:命令历史
shell进程会保存期会话中用户曾经执行过的命令;命令通过其“命令历史”文件来持久保存此前执行过的命令;每个用户都有其自己专用的命令历史文件;
shell登录后会读取命令历史文件,把以前的旧命令都载入进来,而用户登录后执行的新命令会在该shell的缓冲区中;当shell正常退出时,会把缓冲区中的新命令追加到命令历史文件中;
意外退出可能不会保存历史命令;本次登录的进程运行过的命令保存在缓冲中,开机前的命令保存在命令历史文件中;
?
重复前一个命令,有4种方法:重复前一个命令使用上方向键,并回车执行
按!! 并回车执行
? 输入!-1 并回车执行
? 按Ctrl+p 并回车执行
? !:0 执行前一条命令(去除参数)
? Ctrl + n 显示当前历史中的下一条命令,但不执行
? Ctrl + j 执行当前命令
? !string 重复前一个以“string”开头的命令
? !?string 重复前一个包含string的命令
?!string:p仅打印命令历史,而不执行
?!$:p 打印输出!$ (上一条命令的最后一个参数)的内容
?!*:p打印输出!*(上一条命令的所有参数)的内容
^string删除上一条命令中的第一个string
? ^string1^string2将上一条命令中的第一个string1替换为string2
? !:gs/string1/string2将上一条命令中所有的string1都替换为string2
?
要重新调用前一个命令中最后一个参数:
?!$ 表示
?Esc, .(点击Esc键后松开,然后点击. 键)
?Alt+ .(按住Alt键的同时点击. 键)
bash特性之三:快捷键
Ctrl + l 清屏,相当于clear命令
?Ctrl + o 执行当前命令,并重新显示本命令
?Ctrl + s 阻止屏幕输出,锁定
?Ctrl + q 允许屏幕输出
?Ctrl + c 终止命令
?Ctrl + z 挂起命令
?Ctrl + a 光标移到命令行首,相当于Home
?Ctrl + e 光标移到命令行尾,相当于End
?Ctrl + f 光标向右移动一个字符
?Ctrl + b 光标向左移动一个字符
?Alt + f 光标向右移动一个单词尾
?Alt + b 光标向左移动一个单词首
?Ctrl + xx 光标在命令行首和光标之间移动
?Ctrl + u 从光标处删除至命令行首
?Ctrl + k 从光标处删除至命令行尾
?Alt + r 删除当前整行
Ctrl + w 从光标处向左删除至单词首
?Alt + d 从光标处向右删除至单词尾
?Ctrl + d 删除光标处的一个字符
?Ctrl + h 删除光标前的一个字符
?Ctrl + y 将删除的字符粘贴至光标后
?Alt + c 从光标处开始向右更改为首字母大写的单词
?Alt + u 从光标处开始,将右边一个单词更改为大写
?Alt + l 从光标处开始,将右边一个单词更改为小写
?Ctrl + t 交换光标处和之前的字符位置
?Alt + t 交换光标处和之前的单词位置
?Alt + N 提示输入指定字符后,重复显示该字符N次
?注意:Alt组合快捷键经常和其它软件冲突
gnome-terminal
应用程序->附件->终端
?支持多个“标签”shell的图形化终端模拟器
?Ctrl-Shift-n 创建新窗口
?Ctrl-Shift-q关闭当前窗口
?Ctrl-Shift-t 创建一个标签页
?Ctrl-Shift-w 关闭一个标签页
?Ctrl-PaUp/PgUn切换到下一个/前一个标签页
?Ctrl-Shift-c 复制选中的文本
?Ctrl-Shift-v 把文本粘帖到当前光标处
bash I/O重定向和管道基础特性
程序:指令+数据
读入数据:Input
可用于输入的设备:文件;键盘设备、文件系统上的常规文件、网卡设备、鼠标、硬盘
输出数据:Output
可用于输出的设备:文件;显示器、文件系统上的常规文件、网卡设备
fd(file descriptor) :打开的文件都有一个fd: file descriptor (文件描述符)
? Linux给程序提供三种I/O设备
?标准输入(STDIN)-0默认接受来自键盘的输入
?标准输出(STDOUT)-1默认输出到终端窗口
?标准错误(STDERR)-2默认输出到终端窗口
? I/O重定向:改变默认位置
STDOUT(输出)和STDERR(错误)可以被重定向到文件
命令 操作符号 文件名
支持的操作符号包括:
> 把STDOUT重定向到文件
2> 把STDERR重定向到文件
&> 把所有重定向都输入到指定文件中(包含错误、正确全部)
?> 文件内容会被覆盖 COMMAND > /PATH/TO/SOMEFILE
?>> 原有内容基础上,追加内容 COMMADN >> /PATH/TO/SOMEFILE
2> 覆盖重定向错误输出数据流 COMMAND 2> /PATH/TO/SOMEFILE
?2>> 追加重定向错误输出数据流 COMMAND 2>> /PATH/TO/SOMEFILE
shell的功能开关
set -C 禁止将内容覆盖已有文件,但可追加
>| file 强制覆盖
set +C 允许覆盖
标准输出和错误输出各自定向至不同位置
COMMAND > /path/to/file.out2> /path/to/error.out
合并标准输出和错误输出为同一个数据流进行重定向
? &> 覆盖重定向
?&>> 追加重定向
?COMMAND > /path/to/file.out2>&1 (顺序很重要)
? COMMAND >> /path/to/file.out2>&1
1>&2 对的变成错误的
2>&1 错的变成正确的
( ) : 合并多个程序的STDOUT
(cal2007;cal2008)> all.txt
> 命令 :创建新的文件或者情况文件内容
> 符号可以创建新的文件,如果创建文件已存在,将把文件内容全部清空
故创建新的文件这个符号要慎用,尽量用touch命令创建新的文件
但在生产中,如果有大的文件存在,在删除前可以先用 > 来清空在删除文件
touch 命令 : 更改文件时间戳
[OPTION]... FILE...
常用参数:-a 仅改变atime和ctime
-m 仅改变mtime和ctime
-t 指定atime和mtime的时间戳 [[CC]YY]MMDDhhmm[.ss]
-c 如果文件不存在,则不予创建
stat 命令(display file or file system status) : 显示文件或文件系统状态
显示内容包括:文件路径、文件大小、文件占用block、每个IO block大小
文件类型、文件所在设备的主/次设备号
文件的inode、文件被硬链接次数
文件权限、文件的属主UID、文件的属组GID
环境(SELinux)
access time:atime,文件最近一次被访问的时间;
modify time:mtime,文件最近一次被修改(内容)的时间(即数据);只要数据变了元数据一定会变
change time:ctime,文件最近一次改动的时间(元数据)
stat [OPTION]... FILE...
文件的数据组成部分:
元数据(metadata):存放于文件系统中的inode里;
数据(data):存放在data blocks里
cp 命令 (copy) :复制文件和目录
单源复制:cp [OPTION]... [-T] SOURCE DEST
多源复制:cp [OPTION]... SOURCE... DIRECTORY:目标必须是目录
cp [OPTION]... -t DIRECTORY SOURCE...
SRC是文件:
如果目标不存在:新建DEST,并将SRC中内容填充至DEST中
如果目标存在:如果DEST是文件:将SRC中的内容覆盖至DEST中,基于安全,建议为cp命令使用-i选项
如果DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中
常用参数: -i,--interactive:交互式复制,即覆盖目标文件之前提醒用户确认
-a,--archive:归档复制;备份时才会使用;相当于-dR --preserve=all;
-f,force:强制覆盖目标文件
-R,-r,--recursive:递归复制目录及其内容
--backup=numbered 目标存在,覆盖前先备份加数字后缀
-P,--no-dereference:复制链接文件本身,而非默认的复制链接文件指向的原文件内容
-d:相当于--no-dereference;复制链接本身(默认为复制链接文件的原文件内容)
-u: --update 只复制源比目标更新文件或目标不存在的文件
-v: --verbose
--preserve[=ATTR_LIST]:mode: 权限
ownership: 属主属组
timestamp
links
xattr
context
all
注意:仅管理员有权限复制时保留属主和属组属性;
mv 命令(move (rename) files) : 移动文件、文件夹或者重命名
单源移动:mv [OPTION]... [-T] SOURCE DEST
多源移动:mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
注意:原文件目录与目标文件目录相同时,为rename;否则为move
不区分目录和文件,直接move
常用选项:
-i,--interactive:交互式复制,移动时,如果目标文件存在时提示用户确定是否覆盖(仅root用户)
-f,force:强制移动(相当于先删除原文件,在复制新文件过来),覆盖前不提示
rm 命令 (remove files or directories):删除一切(跑路命令)
[OPTION]... FILE...
即能删除文件又能删目录,但删目录时要用递归-r选项
常用选项:
-r, -R, --recursive:递归删除目录及其内容
-f,force:强制删除,不提示确认
-i,--interactive:交互式,提示确认
rm -rf /* 自杀的方法( 最好玩的命令)
建议在生产环境中,要自建回收站!禁用rm直接操作。
把rm定义为mv的别名,可以删除文件及目录,但不可以加 -r 选项
[[email protected]~]#alias rm=`mv -t /app/recycle`
mkdir 命令 :创建目录
[OPTION]... DIRECTORY...
常用参数:-p 存在不报错,且可自动创建所需的各目录
-v --verbose:显示创建过程
-m --mode=MODE:直接给定目标目录的权限
rmdir 命令 :(remove directory)只能删除空目录
[OPTION]... DIRECTORY...
常用参数: -p 递归删除父空目录
-v 显示详细信息
?rm-r 递归删除目录树
tree 命令 从标准输入读取并写入标准输出和文件-显示目录树
[OPTION]... [FILE]...
常用参数:-a 使用追加输出重定向,而非默认的覆盖输出
-d 只显示目录
-L level:指定显示的层级数目
-P pattern: 只显示由指定pattern匹配到的路径
-o filename:保存在文件中
文件通配符bash 的特性 glob(globbing):
man 7 golb 帮助文档
glob:文件名通配;在于快速引用多个符合条件的文件;文件名整体匹配度检测;
* 匹配零个或多个字符
?? 匹配任何单个字符
~ 当前用户家目录
~mage 用户mage家目录
~+ 当前工作目录
~- 前一个工作目录
?[0-9] 匹配数字范围
?[a-z] 字母
?[A-Z] 字母
?[wang] 匹配列表中的任何的一个字符
?[^wang] 匹配列表中的所有字符以外的字符
[]:匹配指定集合内的任意单个字符;
[abc]:单个含有a或b或c;
[a-z],[A-Z]:单个字母不区分大小写;
[0-9]:单个数字;
[a-z0-9]:单个数字或字母;
预定义的字符类:man 7 glob
[:digit:] 任意数字,相当于0-9
[:lower:] 任意小写字母
[:upper:] 任意大写字母
[:alpha:] 任意大小写字母
[:alnum:] 任意数字或字母
[:blank:] 水平空白字符
[:space:] 水平或垂直空白字符
[:punct:] 标点符号
[:print:] 可打印字符
[:cntrl:] 控制(非打印)字符
[:graph:] 图形字符
[:xdigit:] 十六进制字符
tr 命令 :(translate or delete characters)替换、压缩或删除字符
[OPTION]... SET1 [SET2]
常用参数:-c -C --complement:取字符集的补集,取代所有不属于第一字符集的字符;
-d --delete:删除所有属于第一字符集的字符,删除所有属于第一字符集的字符;
-s --squeeze-repeats:把连续重复的字符以单独一个字符表示,把连续重复的字符以单独一个字符表示;
-t --truncate-set1:将第一个字符集对应字符转化为第二字符集先删除第一字符集较第二字符集多出的字符。
使用 < 来重定向标准输入,某些命令能够接受从文件中导入的STDIN
tr‘a-z’‘A-Z’< /etc/issue 该命令会把/etc/issue中的小写字符都转换成写写字符
? tr–d abc < /etc/fstab 删除fstab文件中的所有abc中任意字符
?cat > file
mage
wangxiaochun
按ctrl+d离开,可以使用文件来代替键盘的输入
? Cat > filea< fileb
使用“<< 终止词”命令从键盘把多行重导向给STDIN
?直到终止词位置的所有文本都发送给STDIN
? 有时被称为就地文本(heretext)
mail-s"PleaseCall"[email protected]<<END
>HiWang,
>
>Pleasegivemeacallwhenyougetin.Wemayneed
>todosomemaintenanceonserver1.
>
>Detailswhenyou'reon-site
>Zhang
>END
管道(使用符号“|”表示)用来连接命令
命令1 | 命令2 | 命令3 | …
? 将命令1的STDOUT发送给命令2的STDIN,命令2的STDOUT发送到命令3的STDIN
?STDERR默认不能通过管道转发,可利用2>&1 或|& 实现
?最后一个命令会在当前shell进程的子shell进程中执行用来
?组合多种工具的功能
ls | tr 'a-z' 'A-Z'
tee 命令:从标准输入读取并写入标准输出和文件
tee - read from standard input and write to standard output and files
tee [OPTION]... [FILE]...
-a:使用追加输出重定向,而非默认的覆盖输出;
COMMAND | tee /PATH/TO/SOMEFILE
使输出即输出到文件一份,又输出到屏幕上一份;
[[email protected]/app]#which cat | tee /app/f1
/bin/cat
[[email protected]/app]#cat f1
/bin/cat
more 命令 :分页查看文件
more [options] file [...]
-d: 显示翻页及退出提示
less 命令 :一页一页地查看文件或STDIN输出
less file[...]
less命令是man命令使用的分页器
/ 文本搜索文本
n/N 跳到下一个或上一个匹配
ls-l/etc|less
mail:通过电子邮件发送输入
用户邮箱在/var/spool/mail/目录下
echo"testemail"|mail-s "test"[email protected]
lpr:把输入发送给打印机
echo"testprint"|lpr-Pprinter_name
- 符号
示例:
将/home 里面的文件打包,但打包的数据不是记录到文件,而是传送到stdout,经过管道后,
将tar -cvf-/home 传送给后面的tar -xvf-, 后面的这个-则是取前一个命令的stdout,因此,
就不需要使用临时file了
tar -cvf-/home | tar -xvf-
二、inode(index node)索引节点
表中包含文件系统所有文件列表
一个节点(索引节点)是在一个表项,包含有关文件的信息(元数据)
包括:文件类型,权限,UID,GID
链接数(指向这个文件名路径名称个数)
该文件的大小和不同的时间戳
指向磁盘上文件的数据块指针
有关文件的其他数据
inode 表结构如图:
inode 表如图:
cp和inode
cp命令,分配一个空闲的inode号,在inode表中生成新条目,在目录中创建一个目录项,
将名称与inode编号关联,拷贝数据生成新的文件
rm和inode
rm命令,链接数递减,从而释放的inode号可以被重用,把数据块放在空闲列表中
删除目录项,数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖。
mv和inode
如果mv命令的目标和源在相同的文件系统,作为mv命令,用新的文件名创建对应新的目录项
删除旧目录条目对应的旧的文件名,不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动!
如果目标和源在一个不同的文件系统,mv相当于cp和rm
硬链接
指向同一个inode的多个文件路径
特性:
a 目录不支持硬链接
b 硬链接不能跨文件系统;因为不同文件系统的inode是独立管理的,
编号也是从0开始的,所以不能跨文件系统引用文件的inode编号
c 创建硬链接会增加inode引用计数;
创建硬链接会增加额外的记录项以引用文件,对应于同一文件系统上一个物理文件
每个目录引用相同的inode号,创建时链接数递增
删除文件时:rm命令递减计数的链接,文件要存在,至少有一个链接数
当链接数为零时,该文件被删除
不能跨越驱动器或分区
语法:
ln filename [linkname]
-v:verbose,显示过程;
-s:创建符号链接;
软链接(符号链接)
指向一个文件路径的另一个文件路径;inode的号不同;
特性:
a 符号链接与原文件是两个各自独立的文件,各有自己的inode;对原文件创建符号链接不会增加inode引用计数
b 支持对目录创建符号链接,且可以跨文件系统;
c 删除符号链接文件,不影响原文件,但删除原文件,符号链接文件指定的路径即不存在,此时会变成无效的链接;
ln -s src link_file
-v:verbose,显示过程;
注意:符号链接文件的大小是其指向文件的路径字符串的字节数;
软和硬链接区别
a 本质不同:
硬链接是同一个文件,软链接不是同一个文件
b 删除
硬链接不影响,软链接失效
c 创建
硬链接数加1,软链接数不变
d 跨分区
硬链接不可以,软链接可以
e 目录
硬链接不可以为目录,软链接可以
id 命令 :打印真实有效的用户和组ID
id [OPTION]... [USER]
常用参数:-Z, - 上下文只打印当前用户的安全上下文
-g,--group只打印有效的组ID
-G,--groups 打印所有组ID
-n,--name 打印一个名字,而不是一个数字,为-ug
-r,--real用-ugG打印真实的ID而不是有效的ID
-u,--user 只打印有效的用户ID
-z, - 零 使用NUL字符分隔条目,而不是空格;
[[email protected]/]#id L uid=1000(L) gid=1000(L) groups=1000(L)
个人总结内容杂乱,总结信息为个人理解及老师课件内容,请勿见怪!!
以上是关于Linux学习之路-Linux---20171120的主要内容,如果未能解决你的问题,请参考以下文章