man可以查询所有命令[内置命令除外]的用法,或者使用命令 --help,例如:mkdir --help
内置命令查询帮助:help cd【cd是内置命令】
条件删除命令:find /目录 -type f -name "文件名" -exec rm {} \;【常用】
find中其他部分属性:
-mtime +7:删除7天前的文件
!:取反
-o:交集,或者
-a:并集,并且
将*.txt的文件一起删除:find /目录 -type f -name "*.txt" |xargs rm -f
排除test字符显示:grep -v test abc.txt【-v表示排除,显示非test字符的信息】
仅显示test字符:grep test abc.txt
读abc.txt文件的前两行内容:head -2 abc.txt
生成1到20的数字至a.txt中:seq 20 >a.txt【每个数字自带换行】
横着生成1到20的数字:seq -s " " 20【" ":空格隔开】
查看a.txt文件中倒数第5行内容:tail -5 a.txt
显示abc目录树:tree /abc/【此命令会展示abc目录下的所有子目录】
覆盖文件不提示:\cp /abc/a.txt /ccc/【cp前+上\就不会提示,或者绝对路径/bin/cp,提示的原因在于alias:别名】
别名设置,输入net就会将网卡信息显示:alias net='cat /etc/sysconfig/network-scripts/ifcfg-eno16777736'【定义别名永久生效:/etc/profile—全局生效,~/.bashrc—当前用户生效 】
取a.txt中20~30行的内容:
head -30 a.txt|tail -11
sed -n '20,30'p a.txt【p:打印的意思】常用!
awk '19 grep 20 -A 10 a.txt【-A:除了显示匹配的一行之外,并显示该行之后的num行】 grep 30 -B 10 a.txt【-B:除了显示匹配的一行之外,并显示该行之前的num行】 grep 25 -C 5 a.txt【-C:除了显示匹配的一行之外,并显示该行之前后各num行】 将a.txt中abc字符替换成def:sed -i 's#abc#def#g' a.txt【s:查找替换,g:全局替换,-i:修改文件内容,-e:允许多项编辑,#:分隔符——可以用/@等替换】 将/aaa目录中以及子目录中所有.sh的文件中的abc字符更改为def字符: find /aaa -type f -name '*.sh'|xargs sed -i 's#abc#def#g' sed -i 's#abc#def#g' `find /aaa -type f -name '*.sh'` [find /aaa -type f -name '*.sh' |xargs cat 这条命令可以直接打印出aaa目录下所有sh文件的内容] | 管道 .. 上一级目录 . 当前目录 / 所有目录的顶点,也是路径的分隔符 ; 命令分隔符 !m 调出最近使用m开头的命令 !! 调出最近使用的命令 !2 执行第2条使用的历史命令【!2使用前,先history调出历史记录id,再判断使用哪个命令】 cd - 返回上一次所在的目录 ctrl+R 搜索使用的命令 cat /etc/redhat-release 看操作系统 uname -r 看内核版本 uname -m 看64位或32位 uname -n 查看主机名 export TMOUNT=10 连接超时时间设置10s【临时生效】 export HISTSIZE=5 设置命令历史记录为5条【临时生效】 export HISTFILESIZE=5 设置命令历史文件记录为5条【文件在~/.bash_history】临时生效 永久生效需要在/etc/profile文件中添加, 或者echo 'export TMOUNT=10' >>/etc/profile,然后source /etc/profile使配置文件生效 远程linux服务器的时候不让别人看见linux的版本和内核:> /etc/issue route -n 查看网关 -n:表示输出不换行 -e:表示启用反斜杠转义 \n\t:分别表示换行、制表符 上锁文件,不允许文件被操作: chattr +i /etc/passwd【不允许passwd文件被编辑或删除】 非交互式的设置linux账号密码: echo "密码"|passwd --stdin 账号【更好的显示设置的密码】 不重启linux即可修改selinux的状态 getenforce【查看当前selinux的状态】 setenforce 0【设置后立即生效】 在子目录可创建多个目录:mkdir -p /a/b/{test1,test2}/c 【,逗号区分目录,test1和test2都包含了c目录】 时长使用的系统命令及其参数详解: ls:罗列当前目录下的文件及目录 ls -a:显示当前目录下所有的文件 ls -l:有序的显示当前目录下的文件及其文件或目录的属性 ls -h:直观显示每个文件的大小 ls -d:只显示目录 ls -F:为目录文件添加斜杠 ls -r:反向排序 ls -t:按照修改文件时间的顺序排序 ls -i:查看inode节点 cp:复制命令 cp -a:复制后的文件也会带有被复制文件的属性 cp /etc/ssh/sshd_config{,.ori} :命令的意思是复制sshd_config文件到/ssh目录下并重命名为sshd_config.ori mv:移动或重命名文件 mv test{1,2}.txt:重命名test1.txt为test2.txt rm:删除【慎用,一般用find删除或mv移动到/tmp目录下】 rm -rf test:-r是递归,-f是强制删除 find:查找文件 find . -type f -name "*.txt" mtime -7 :查看系统最近7天创建的后缀为txt的文件 -type:指定文件类型,f:普通文件,d:目录 -mtime:按照文件的修改时间查找文件,-7:七天之内,+7:七天之前【一般是修改文件内容】 -atime:访问时间[access] -ctime:修改时间[change]【文件的属性改变】 -name:按照文件的名称查找文件 !:取反 find . -type f -name "*.txt" -exec mv {} /tmp/ \; -exec: {}:代表找出的文件 \;:转义字符[格式] find . -type f -name "*.txt"|xargs -i mv {} /tmp/ xargs:从标准输入(管道或stdin、输入重定向)获取数据,并将数据转换成命令行的参数 -n:指定每个命令行参数的个数 -i/I:将xargs的每项名称,一行一行赋值给{},可以用{}代替(就是把数据量转换成一行一行的内容,让不支持批量处理的命令按此执行) inode:称为索引节点,存放文件的属性信息以及作为文件的索引(指向文件的实体) block:表示文件的存储位置 stat test.txt:查看test.txt的属性 df -i:查看文件系统inode总量以及剩余量 df -lh:查看磁盘的使用量 磁盘空间是否满了,是由两项参数决定:①inode或②block满了,就无法加载文件。 inode的小结: 1)磁盘被分区并格式化为ext4文件系统后会生成一定数量的inode和block。 2)inode称为索引节点,存放文件的属性信息以及作为文件的索引(指向文件的实体)。 3)ext3/ext4文件系统的block存放的是文件的实际内容。 4)inode是磁盘上的一块存储空间,centos6非启动分区inode默认大小为256字节,centos5是128字节。 5)inode的表现是形式一串数字,不同的文件对应的inode(一串数字)在文件系统是唯一的。 6)inode节点号相同的文件,互为硬链接文件,可以认为是一个文件的不同入口。 7)ext3/ext4文件系统下,一个文件被创建后至少要占用一个inode和一个block。 8)ext3/ext4文件系统下,正常情况下(非硬链接下)一个文件占用且只能占用一个inode。 9)block是用来存储实际数据的,每个block的大小一般有1k,2k,4k几种。其中引导分区等为1k,其他普通分区多为4k(Centos6)。 10)如果一个文件很大,就需要占用多个block,如果文件很小(0.01k),至少占用1个block,并且这个block多余的空间就浪费了,即无法再存储其它数据。 11)inode大小和总量查看(-i表示忽略大小写) dumpe2fs /dev/sda1|egrep -i "block size|inode size" dumpe2fs /dev/sda1|egrep -i "block count|inode count" 【dumpe2fs:查看文件系统内部信息(元数据)】 默认block count一般会大于inode count的数量 12)查看inode的总量和使用量 命令df -i 13)查看文件的inode信息方法 ls -li或stat test.txt 14)如何生成及指定inode大小 格式化命令:mkfs.ext4 -b 2048 -I 256 /dev/sdb 删除inode步骤: ①查看文件 ls -lhi ②删除 rm `find . -inum 159004`或 find .-inum 159004 -exec rm {} \; 文件删除恢复ext3grep 查看用户登录信息: last:查看用户登录信息,数据文件在var/log/wtmp lastlog:显示最近登录过的用户信息,数据文件/var/log/lastlog 文件类型区分: d(directory):目录 -(regular file):普通文件 l(link):符号链接文件,实际上它指向另一个文件 b(block):块设备和其他的外围设备,是特殊类型的文件 硬链接知识小结: 1、具有相同inode节点号的多个文件是互为硬链接文件。 2、删除硬链接文件或删除源文件其中之一,文件实体并未被删除。 3、只有删除了源文件以及所有对应的硬链接文件,文件实体才会被删除。 4、当所有的硬链接文件及源文件被删除后,再存放新的数据会占用这个文件的空间,或者磁盘fsck检查的时候,删除的数据也会被系统回收。 5、硬链接文件就是文件的另一个入口(相当于超市的前门或后门)。 6、可以通过给文件设置硬链接文件,来防止重要文件被误删。 7、通过执行命令"ln 源文件 硬链接文件",即可完成创建硬链接。 8、硬链接文件是普通文件,因此可以用rm命令删除。 9、对于静态文件(没有进程正在调用的文件)来讲,当对应硬链接数为0(i_link),文件就被删除。i_link的查看方法(ls -l结果的第三列就是)。 软链接知识小结: 1、软链接类似Windows的快捷方式(可以通过readlink查看其指向) 2、软链接类似一个文本文件,里面存放的是源文件的路径,指向源文件实体。 3、删除源文件,软链接文件依然存在,但是无法访问指向的源文件。 4、失效的时候一般是白字红底闪烁提示。test_soft_link_file -> test_file 5、ln -s 源文件 软链接文件【即可完成创建软链接】 6、软链接和源文件是不同类型的文件,也是不同的文件,inode号也不同。 7、软链接文件的类型为(l),可以用rm命令删除。 格式化显示时间属性: ls -l --time-style=long-iso 目录或文件 查看文件的时间属性: stat 文件或目录 本地时间与阿里云时间同步: 特殊环境变量: PATH 所有命令的路径所在地,用冒号隔开 例子:export PATH=$PATH:$HOME/bin:/sbin LANG 字符集变量 批量重命名文件: 将所有文件名包含_test字符串的文件的名称修改成空 basename:从当前文件所在路径中截取文件名 dirname:从当前文件所在的路径中获取所有目录 Linux系统下默认权限控制umask介绍: 文件的权限从666到644的由来 6 6 6 0 2 2【umask】 ------ 6 4 4 umask都为偶数,直接相减; umask有奇数时,得出结果后奇数位+1。 目录的权限777 特殊权限位基本说明: linux系统基本权限位为9位权限,但还有额外3位权限位,共12位权限: suid s(有 x) S 4 用户对应的权限位(用户对应的3位上) sgid s(有 x) S 2 用户组对应的权限位用户组对应的3位上) sticky t(有 x) T 1 其他用户对应的权限位 设置小结: suid:chmod 4755 file 或者 chmod u+s file sgid:chmod 2755 file 或者 chmod g+s file useradd:添加用户 -e expire_date:账号终止日期,日期格式为MM/DD/YY【chage -l 用户名:查看用户过期时间】 -g initial_group:预设新建用户属于哪个现有的组。 -G group,[...]预设新建用户属于多个现有的组,每个组用,分隔开 -M :不建用户家目录,一般用于创建虚拟用户时不建家目录,部署服务时需要创建虚拟用户 -s shell:用户登入后使用shell名称,默认值为不填写,系统预设的登入shell(根据/etc/default/useradd预设的值) -u uid:指定用户的id,必须唯一。 -m :创建家目录 -d:指定家目录 7天之内禁止修改密码 60天以后必须修改密码 密码过期前10天开始提醒 密码过期30天停权 此命令也可以chage -m 7 -M 60 -W 10 -I 30 test su 切换用户身份 -加载环境变量,-c以指定用户身份执行任务 企业应用场景:以指定用户身份开机自启动服务 su - test -c '/bin/bash /home/test/bin/test.sh' sudo 可以让普通用户拥有root权限去执行命令,sudo的配置文件路径在/etc/sudoers visudo 通过visudo编辑/etc/sudoers,可以检查语法。 sudo 日志审计设置 echo "Defaults logfile=/var/log/sudo.log">>/etc/sudoers【记录用户sudo使用的命令】 split 按照指定的行数或大小分割文件 -l 指定行数 split -l 10 /etc/inittab test_【将inittab文件以每10行分割成不同的test_*文件】 -a 指定生成文件后缀长度 split -l 10 -a 3 /etc/inittab test_ -d 使用数字后缀 split -l 10 -d /etc/inittab new_ -b 指定分割文件大小 split -b 200K /test/test.tar.gz paste 合并每个文件的行 paste test.txt abc.txt 【合并test和abc这两个文件】 paste -sb '=\n' test.txt【-s:把内容换成串行,-d:指定分隔符】 sort 以行为单位进行排序 -n 从小到大排序 -r 从大到小排序 -u 压缩相同的行 sort -t: -k2 test.txt【-t:指定分隔符】 wc 统计文件行数、单词数、字节数 -c 字节数 -m 字符数 -l 行数 -L 最长行的长度 -w 单词数 diff 比较文件内容的不同也可以比较目录内文件的不同 a 增加 c 改变 d 删除 vimdiff 可视化文件对比工具 tr 替换字符 tr 'abc' 'ABC' < test.txt tr '[a-c]' '[A-B]' < test.txt -d 删除字符 tr -d 1 < test.txt ls|tee test.txt == ls > test.txt && cat test.txt tee -a 追加重定向【等于 '>>'】 文件里的字符串批量替换: 查看web状态: Windows与Linux之间的文本传输:echo -ne "abc\n\tabc"
ntpdate ntp1.aliyun.com
rename "_test" "" *
[root@localhost ~]basename /root/test/test.jpg
test.jpg
passwd -n 7 -x 60 -w 10 -i 30 test
vim test.conf
:%s#被换字符串#新字符串#g
[root@localhost ~]# curl -I 192.168.13.128 2>/dev/null|head -1
HTTP/1.1 200 OK
[root@localhost ~]# curl -I -s 192.168.13.128|head -1
HTTP/1.1 200 OK
yum -y install lrzsz
#rz:将Windows上的文件上传到Linux中;
#sz test.txt:将Linux上的test.txt文件下载到Windows中。