学习笔记(3)

2023-01-31 03:01:57 学习笔记

1.* 匹配零个或多个字符(通配符中)

2.ls 的-d选项不仅仅可以显示指定目录的信息,还可以用来表示不递归子文件夹。

  # ls -dl /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

注意:

  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 可防止覆盖原有的同名备份

34.alias baketc='cp -av /etc/ /app/backup`date +%F`'

35.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 逐级删除由后至前查看是否为空,为空则删除

48.mkdir -pv /testdir/dir1/{x/{a,b},y/{a,b}}

49.mkdir -pv /test/dir2/{x/{a,b},y}

50.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个命令可以总结出 命令是先执行正确的输出,然后再执行错误的输出,并且只能后面的重定向可以再次使用前面的,前面的不能使用后面的


相关文章