0728linux基础内容小记

~-  上一个工做目录node

~+  当前工做目录linux


touch f{1..100} 建立名为f1~f100的文件git

touch f{a..z}  建立名为fa~fz的文件bash

[:lower:] 任意小写字母ide

[:upper:] 任意大写字母spa

[:digit:] 任意数字,至关于0-9操作系统

[:alpha:] 任意大小写字母指针

[:alnum:] 任意数字或字母orm

[:space:] 空格blog

[:punct:] 标点符号


1.显示/var目录下全部以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录

ls /var/l*[[:digit:]]*[[:lower:]]

2.显示/etc目录下以任意一位数字开头,且以非数字结尾的文件或目录

 ls /etc/[0-9]*[^0-9]

3.显示/etc目录下以非字母开头,后面跟了一个字母及其余任意长度任意字符的文件或目录

ls /etc/[^[:alpha:]][[:alpha:]]*

4.显示/etc目录下全部以m开头以非数字结尾的文件或目录

ls /etc/m*[^0-9]

5.显示/etc目录下全部以.d结尾的文件或目录

ls -da /etc/*.d

6.显示/etc目录下,全部的.conf结尾,且以m,n,r,p开头的文件或目录

ls -da /etc/[mnrp]*.conf

  

touch命令

-a  仅改变atime

-m  仅改变mtime

-c  文件存在则刷新,不存在也不会建立

-t [YY]MMDDhhmm[.ss] 改变atimemtime

touch  -t 201605051010.30 file1

wKioL1eav9OwpSBxAACBzpN7pK8175.png


cp命令

-a 归档,至关于-dR --preserv=all

-d --no-dereference --preserv=links 不复制原文件,只复制连接名

-p 等同--preserv=mode,ownership,timestamp

-r recursive 递归

-v verbose

cp -r /etc/sysconfig/ /testdir/xxx

 没有xxx目录,则把sysconfig目录复制到testdir下并重命名为xxx

cp -r /etc/sysconfig/ /testdir/xxx

 已存在xxx目录,则sysconfig复制为xxx目录中的子目录


1.定义别名命令baketc,天天将/etc目录下全部文件,备份到/testdir独立的子目录下,并要求子目录格式  为backupYYYY-mm-dd,备份过程可见

alias baketc='cp -rpv /etc/ /tmp/testdir1/backup-`date +%F`'


2.建立/testdir/rootdir目录并复制/root全部下文件到该目录内,要求保留原有权限

cp -R  --preserve=mode /root/ /testdir/rootdir


建多层目录,例

mkdir -pv /testdir/dir1/{x,y}/{a,b}
mkdir -pv /testdir/dir2/{x/{a,b},y}
mkdir -pv /testdir/dir{3,4,5/{dir{6,7}}}



inode工做原理图wKioL1ebE1vTFx_FAAzLroAY3tI137.png


wKiom1ebQCvxLDzdAAGYCS-WP8I056.png

wKiom1ebCQeAz59tAAEeU7b1Iu4184.png

wKioL1ea_laj5XfQAABjlQioxVQ116.png

mv 移动并重命名文件a.txt,不影响文件的用户数据及 inode 号



wKioL1ebRGiBYX_kAABFYkd66ec325.png

它们的inode和data block是同样的,改其中一个的内容,另外一个的内容也随之变化,说明它们是同一个文件,至关于一个文件两个名字 -rw-r--r-- 2   2是连接数。还能够继续作硬连接如ln bb cc,连接数随之增长为3。

删除如bb文件,aa和cc依然存有数据,连接数减小为2。

建立硬连接不能跨分区或文件系统

wKioL1ebAwqxonYEAAA_6fBzZok008.png

不能对目录进行建立,只可对文件建立

wKioL1ebAhagjceGAAAizMQ3xrc279.png



有时候磁盘空间未满,但不能建立文件,多是inode耗尽

实验耗尽inode号

for id in {1..204800};do touch f$id;echo f$id is created;done
watch -n1 'df -i'    // df -i 查看inodes大小,wathc -n1 每秒查看执行结果

建立的文件即便为空,自己的元数据也会占用磁盘空间


ls -i  // inode 不一样分区的节点号有可能相同


wKioL1ebCiGDghoGAAG6zrMWewM547.png

ln -s source softlink

原始文件相对路径:相对于软连接文件路径,而不是相对于当前工做目录

wKiom1ebCzHxZhvUAAA0oW3VJT4924.png


wKiom1ebC_Hy-dCHAAA-G_3U3XU999.png

find /testdir/ -samefile /testdir/aa   // 查看路径/testdir有相同inode的全部硬连接
find /testdir/ -lname aa    // 查找在路径/testdir下的文件aa的软连接


file descriptor 文件描述符

ps aux 看到某个进程的pid

cd /proc/PID/fd 看到有文件


当前tty0

ls > /dev/pts/1     // 将ls命令的结果发送到tty1终端上了



stdinput 0

stdouput 1

stderr   2


BADCOMMAND 2> file  记录错误信息


正确错误信息都输出在同一个文件,例:

ls /etc/issue xxx &> file1

等价于

ls /etc/issue xxx > file1 2>&1

wKiom1eayzPC2ulKAAAlcTHwkMs689.png


(ls;pwd)>f3      //多条命令(用括号引发来)同时执行输出到一个文件


ls /testdir/ xxx 1> right.txt 2> fail.txt

wKiom1eazTzCRvpyAAA6kx7naxs675.png


set+C 容许覆盖

set-C 禁止覆盖,能够追加

wKioL1eazySgGzKwAAA00w-_a98107.png 


echo cenotos | passwd --stdin wang &> /dev/null
mail -s hello user1

hi

how are you

.                //以点结束

EOT


cat /var/spool/mail/user1 能够读到邮件

或者user1登陆  敲命令 mail 能够收到邮件


群发邮件,将邮件内容保存到一个文件mail.txt

mail -s tongzhi user1 < mail.txt   每次将user1更改用户便可




练习题


一、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中 

cat /etc/issue|tr 'a-z' 'A-Z' > /tmp/issue.out

二、将当前系统登陆用户的信息转换为大写后保存至/tmp/who.out文件中 

 echo `who`|tr 'a-z' 'A-Z' > /tmp/who.out

三、一个linux用户给root发邮件,要求邮件标题为”help”,邮件正文以下:

Hello, I am 用户名,the system version is here,pleasehelp me to check it ,thanks!

操做系统版本信息 

echo -e "I am `whoami`.\nThe system is `cat /etc/redhat-release `."|mail -s help root

四、将/root/下文件列表,显示成一行,并文件名之间用空格隔开  

ls -1 /root/ |tr '\n' ' '    //方法一

echo $(ls -a)                      //方法二

五、file1文件的内容为:”1 2 3 4 5 6 7 8 9 10” 计算出全部数字的总和   

cat file1 |tr ' ' '\n'|awk '{sum+=$1}END{print sum}'  //方法一

i=$((`tr " " "+" < file1`));echo $i           //方法二

echo '1 2 3 4 5 6 7 8 9 10'|tr ' ' '+'|bc     //方法三
echo $[`echo '1 2 3 4 5 6 7 8 9 10'|tr ' ' '+'`]

六、删除Windows文本文件中的'^M'字符  

sed -i "s/\^M//g" wintxt    //方法一

cat a.txt|tr -d '\015' > f2  再cat -A f2 看到没^M了   // ^M对应十进制13,八进制015 //方法二

七、处理字符串“xt.,l 1 jr#!$mn2 c*/fe3 uz4”,只保留其中的数字和空格  

cat string1|tr -d [[:alpha:]][[:punct:]] 或
echo 'xt.,l 1 jr#!$mn2 c*/fe3 uz4'|tr -d -c '[:digit:] \n'

八、将PATH变量每一个目录显示在独立的一行  

echo $PATH|tr ':' '\n'

九、删除指定文件的空行   

sed /^$/d file2 或 sed /^[[:space:]]*$/d file2   //方法一

cat b.txt|tr -s '\n'   //方法二

十、将文件中每一个单词(字母)显示在独立的一行,并没有空行   

cat /etc/init.d/functions |tr -cs '[:alpha:]' '\n'
相关文章
相关标签/搜索