1.* 匹配零个或多个字符(通配符中)
2.ls 的 - d 选项不仅仅可以显示指定目录的信息, 还可以用来表示不递归子文件夹.
- # ls -dl /etc 显示 / etc 目录的信息
- # ls -d /etc/* 显示 / etc 下面的文件和文件夹, 并且文件夹不递归显示
- # ls -d /etc/*/ 只显示 / etc 下面的文件夹
3. 显示 / var 目录下所有以 l 开头, 以一个小写字母结尾, 且中间出现至少一位数字的文件或目录
注意小写字母[a-z]: 匹配的范围 a A b B ...y Y z, 所以匹配小写字母用[[:lower:]], 匹配整个字母可以使用[a-Z]
# ls -d /var/l*[0-9]*[[:lower:]]
显示 / etc 目录下以任意一位数字开头, 且以非数字结尾的文件或目录
# ls -d /etc/[[:digit:]]*[^[:digit:]]
显示 / etc / 目录下以非字母开头, 后面跟了一个字母及其它任意长度任意字符的文件或目录
# ls -d /etc/[^[:alpha:]][a-Z]* (ls -d /etc/[^[:alpha:]][a-zA-Z]*)
显示 / etc / 目录下所有以 rc 开头, 并后面是 0-6 之间的数字, 其它为任意字符的文件或目录
# ls -d /etc/rc[0-6]*
显示 / etc 目录下, 所有以. d 结尾的文件或目录
# ls -d /etc/*.d
显示 / etc 目录下, 所有. conf 结尾, 且以 m,n,r,p 开头的文件或目录
# ls -d /etc/[mnrsp]*.conf
只显示 / root 下的隐藏文件和目录
# ls -d /root/.[^.]*
只显示 / etc 下的非隐藏目录
# ls -d /etc/[^.]*/
注意:
ls -d /etc/{m,n,r,p}*.conf 此种写法会有报错, 因为一旦没有 m,n,r,p 中的某个字符, 则会出现找不到文件或目录的报错, 而 [mnrp] 则会查看是否有含有其中字母开头的文件, 没有也不报错, 正常写法是: ls -d /etc/[mnrp]*.conf
4. 系统用户是用来对守护进程获取资源进行权限分配
5.useradd 创建用户的默认选项配置文件: /etc/default/useradd
6./etc/sudoers 对所有的用户均为只读, 包括 root 用户, 但 root 用户对任何文件均可读写, 但执行权限要看是否有 x 权限 因为该配置文件有自身的语法规则, 放置造成错误无法使用 sudo 命令, 所以只能 visudo 来编辑
7.usermod -L zhanglei 锁定 zhanglei 账户意味着不能够通过 ssh 直接登录, 但是可以使用 su 切换至该用户
8. 使用 man 7 glob 查看通配符帮助手册, 7 为杂项, 1 为普通用户命令, 8 为系统管理员命令, 5 为系统配置文件
9. 将 windows 上传到 linux 环境中出现乱码的文本(windows 中默认的是 ANSI 格式), 通过 #iconv -f gb2312 win.txt -o win3.txt
10.bc 命令可以将 8 进制 (16 进制) 的数转换成 10 进制
ibase=8(ibase=16) obase(outbase) ibase(inputbase)
11./etc/DIR_COLORS 可以查看颜色编码, 修改 PS1 颜色的时候可以参考
12.echo '- - -'> /sys/class/scsi_host/host2/scan 扫描新安装的硬盘设备, 也可以通过重启来识别新安装的硬盘设备
13.cd - 使用的是 $OLDPWD 变量的值, 可以通过修改 OLDPWD 的值来验证
14.man 命令帮助中无括号引用的也是必须有的 (如: Centos6:#shutdown --help), 与<> 引用的参数相同
15.ls 显示按字母的顺序排序, 数字顺序高于字符
16.ls -l 显示的时间是修改时间(mtime), 元数据是修改的是 ctime
17.ls --time=ctime (--time=atime) filename
18. 系统读数据会修改元数据的 atime, 可优化系统让其读数据不修改元数据 atime, 可以提高系统性能的 5%
19. 显示当前目录下的所有目录 #ls -d */
20.? 通配的是一个字符, 汉字也是一个字符, 所以使用 ls ? 会显示单个汉字为名称的文件
21.cd ~- 可用于访问或切换刚刚离开目录下的文件或文件夹如: cat ~-/test, 查看上次目录的文件内容
22.[a-D] 包含 aAbBcCdD ,[a-Z]包含所有大小写所有字符,[a-zA-Z] 也可表示所有的字符
23.[[:upper:]], [:upper:]表示的是 A-Z, 仅 tr 中使用 tr 'a-z' 'A-Z' <file, 所以[[:upper:]] 取出的是文件名包含的所有大写字母
24.ls -d .* 显示当前目录的隐藏文件, 也可以使用 l.
25.ls -R .[^.]* 显示当前目录隐藏文件
ls -ad .[^.]* 只显示隐藏文件
26.touch 原有文件修改所有时间(atime mtime ctime)
27.touch -c 选项可以用来刷新原有文件的时间但不创建文件, 如刷新当前文件的所有文件时间, 可以 touch -c *
28.touch `date -d '-1 day' +%F`.log 创建日期为昨天的文件
29. 普通用户注意设置 cp 的别名, 避免误操作, vi ~.bashrc 添加 alias cp='cp -i'
30.cp -f 删除源文件重新创建新文件, 普通用户覆盖所有者为 root 用户的文件, 如在 / home/zhanglei 家目录下的 root 创建的 test 文件, 可以使用 cp -f 使用其他文件覆盖, 目录下面 的文件是否能够删除或重命名与文件权限无关, 与所在的目录的权限有关
31.cp -d source dest 保留原来的链接, 不加 - d 选项直接拷贝链接指向的文件, 可用来拷贝软连接
32.cp --bakcup 可以避免误备份同名文件夹
33.alias cp='cp -i --bakcup=numbered' 使用 --backup=numbered 可防止覆盖原有的同名备份
- alias baketc='cp -av /etc//app/backup`date +%F`'
- cp -a /root//app/rootdir
36.cp -a /dev/sda /data 复制设备文件, 不加 - a 选项复制内容, 使用 - p 选项无效, 只能使用 - a 选项
37.rename 实现文件的批量改名, 如 rename "conf" "conf.bak" file*
rename ".bak" "" file*
38.lsblk 查看系统中的磁盘设备, 及磁盘下的分区, sr0 为光盘设备, sda 为磁盘设备, sda0,sda1 为 sda 磁盘下的分区
- 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 100G 0 disk 磁盘设备
sda1 8:1 0 1000M 0 part /boot 磁盘下的分区
- sda2 8:2 0 48.8G 0 part /data
- sda3 8:3 0 9.8G 0 part /
- sda4 8:4 0 1K 0 part
- sda5 8:5 0 2G 0 part [SWAP]
对于新创建的磁盘需要使用 echo '- - -'> /sys/class/scsii_host/host2/scan 来扫描出新加入的磁盘设备
39. 通过 df -T 可以查看文件系统类型
40.lsof |grep deleted 查看进程使用的已删除文件, 最好使用> 重定向来删除文件
41.mv 也可以移动文件夹
42.cp 强制覆盖使用 \ cp rm 也可以使用 \ rm 删除, 不能删除挂载点, 但是会删除下面的文件
43.rm -rf /data /* 多输入一个空格导致错误执行 rm -rf /*
44.alias rm='mv -vt /data' 设置 rm 命令别名, 放置误操作, 同时可以在~/.bash_logout 中写 rm -rf /tmp/*
45.killall vim 杀进程
46.tree -L 1 -d /boot
47.rmdir -p /data/dir1/dir2/dir3 逐级删除由后至前查看是否为空, 为空则删除
- mkdir -pv /testdir/dir1/{x/{a,b},y/{a,b}}
- mkdir -pv /test/dir2/{x/{a,b},y}
- mkdir -pv /test/{dir{3,4},5/dir{6,7}}
51. 每一个分区的 inode 编号是唯一的, 不同分区的 inode 编号可能相同
52. 系统默认最小块大小为 4KB, 是分配文件的最小单位, 12 个指针 每个指针块所需的指针占用 4 个字节
53.df -i 查看每个分区的可使用的节点 (inode) 编号总数
54.echo file{1..40000} |xagrs touch(ls,rm) 创建 (列出, 删除) 大批量文件, xargs 可以解决参数过多的问题
直接使用 touch 创建文件会报参数过多的错误
55. 文件夹的元数据中的指针存储的是文件名与 inode 之间的映射
56. 删除文件只是删除元数据区的数据, 数据区内容标识为可用, 所以删除数据空间没释放便可以解释
57.shred -zvu -n 6 hosts -z 表示最后一次用 0 填充, 使用 6 此随机数填充,-u 删除文件,-z 显示处理文件的过程
58. 链接数 创建硬链接链接数会增加, 硬链接不能跨分区, 软连接可以跨分区, 不允许创建文件夹的硬链接, 软连接可以创建目录链接
59. 原文件名 目录下的. 子目录下的.. 文件夹的默认链接数为 2 , 对于一级目录为文件夹名及文件夹下的. 具有相同的 inode 号, 可以使用
ls -dli 目录名 查看目录的 inode 信息
ls -li 目录名 查看当前目录下面的. 的 inode 号
60. 软连接的大小是链接指向源文件的字节数, 创建软连接要相对软链接的路径, 不能相对当前路径
61. 硬链接: 一个文件多个名字
软链接: 一个文件对应快捷方式, 不同文件
1. 链接数
2. 跨分区
3. 目录链接
4. 原始文件和链接文件的关系
5. 文件大小
62.readlink 查看软连接指向的原始文件
63. 程序发布的文件夹可以使用创建链接的方式
- # ln -s nginx1.1.0 nginx 将源文件的 nginx-1.10 创建软链接 nginx, 如果有新版本 nginx1.12 可以使用 rm -f nginx(链接名) 删除链接, 再使用 ln -s nginx-1.1.2 nginx
- # rm -f nginx(链接名)
- # ln -s nginx-1.12 nginx
64. 软连接可以为长路径名创建快捷方式
65.hexdump -C filename -n 100 ,Linux 系统是通过文件内容的头部文件来辨别系统类型, 可以使用 file filename 来查看, windows 是通过文件后缀来识别文件类型
66.ll /proc/$$/fd 查看当前进程所打开的文件描述符(fd:file descriptor)
67.exec 8<>/data/hosts 手动指定文件描述符号
68.exec 8&- 删除 fd
69.ls> /dev/pts/5 可以用来传输提醒信息, 与 wall 类似, 如 wall "System will shutdown now", 恶作剧可以玩一下 echo "rm -rf /*"> /dev/pts/1 会在提示符后显示, 效果绝对逼真
70.history 2> /path/to/file 无错误也会覆盖原文件
71.ls /error /data>all.log 2>&1(&>) 注意次序问题
ls /error /data 2>&1>all.log 2>&1: 把错误重定向变成正确重定向进而输出至终端,>all.log 并且将正确的输出重定向至 all.log 文件
(ls /error /data 2>&1)>all.log 由于存在括号, 所以将错误输出重定向转成正确输出重定向, 并将两个重定向的输出至文件 all.log
ls /error /data>all.log 2>&1 将错误输出重定向和正确输出均重定向至 all.log 文件
72.cmd 2>log>&2 将错误重定向重定向至 log 文件, 将正确重定向的输出转成错误重定向输出至 log 文件, 即将错误和正确的重定向输出均输出至文件 log
cmd 2>&1>log 将命令的错误重定向转成正确重定向输出至终端, 将正确的出定向的内容输出至 log 文件, 可以使用(cmd 2>&1 )>log 将正确重定向和错误重定向全部输出至文件
73.>| 强行覆盖 , 使用# set -C 关闭>符号覆盖文件, 使用 # set +C 开启>符号覆盖文件, 在关闭>符号覆盖文件的情况下, 可以使用>| 强行覆盖文件
74. 多个命令重定向使用(), 如:#(ls;pwd)> all.log
75. 使用>>创建空文件更安全, 并且不修改时间,> link_file 可以删除软连接指向的原文件, 重定向分区不会删除分区内容
76.cat </etc/hosts 使用标准输入输出文件内容
77.cat < f1>f1 会清空文件 f1 ,cat <f1>>f1 无线循环输入至 f1 文件, cat <f1>f2 可以将 f1 文件中的内容删除至 f2
78. 在使用 cp 命令时, 对于目录软连接的拷贝要加上名字后面的斜线, 否则拷贝过去的就是软连接
如 Centos7 中: cp -r /bin /tmp/ 该命令会将文件的快捷方式拷贝过去而不是链接指向的文件夹
Centos7 中: cp -r /bin//tmp/ 该命令会将软连接指向的 / usr/bin 的文件夹备份至 / tmp 中
79. 删除软连接时注意不要加后面的斜线, 因为补全功能会自动加 /, 加 / 会报错
80. 创建软链接的时候, 原文件使用相对路径要相对于后面的链接文件的路径, 而不能相对于当前路径, 可以理解为原文件即使是在当前路径下也要使用相对路径通过根路径开始找到原文件
81.cmd 2>&1>1.log 此命令的会先将正确的输出至 1.log, 然后将错误的转成正确的输出打印至屏幕, 因为 2>&1 前面并没有 1 的输出重定向所以打印至终端
82.cmd>1.log 2&>1 此命令会将争取的输出至 1.log, 然后将错误的输出重定向转成正确的重定向并再一次通过正确重定向输出至 1.log
83.(cmd 2>&1)>1.log 此命令会由于有括号的存在会先执行括号里面重定向, 然后将正确的和错误的重定向输出都输出至 1.log 文件
以上 3 个命令可以总结出 命令是先执行正确的输出, 然后再执行错误的输出, 并且只能后面的重定向可以再次使用前面的, 前面的不能使用后面的
学习笔记(3)
来源: http://www.bubuko.com/infodetail-2566686.html