Linux

echo heool > /root 

回在root目录下打印这段话

shutdown +10 10分钟后关机,其他远程登陆用户也会收到此提示

wall hello  所有远程登陆用户可以接受到此命令

shell 俗称 壳 它提供了用户与内核进行交互操作的一种接口,它接受用户输入的命令并把命令送入内核去执行。

shell实际上是一个命令解释器,它通过解释用户输入的命令并把它传输给系统内核去执行,  shell有自己的编程语法,允许用户自己编写由shell命令组成的程序。

内部命令,在系统启动时就调入内存,常驻内存的执行效率高;外部命令,是系统软件的功能,用户需要时才从硬盘中读取。如何区分这两种命令可以使用type pwd 命令。

shell提示符,就是命令行开头的那一段带用户名的字符串,#代表root用户,$代表普通用户。su - 用户名 -代表将环境变量和家目录都切换。shell提示符包含三部分,第一部分代表用户名,第二部分代表主机名,第三部分代表 当前目录,如果为~代表家目录,其他为具体目录。退出当前用户用exit命令。

cat shells 可以查看当前系统支持几种shell命令。具体使用哪个,取决于你的用户配置。linux前期命令出错两种可能一种是单词拼错,另一种就是所在目录不对。

head 命令用于查看文件的开头内容,默认是10行,有一个参数-n 代表查看几行。

head passwd 第一行的最后代表当前用户使用的shell命令。

linux命令基本的格式就是 命令-选项-参数。

ls -l 可以查看文件详细内容,如ls -l /bin/sh ,会显示当前文件是一个超链接,linux中也叫软连接,原理是一样的,你会发现bin下面的几种不同的shell命令其实指向的都是bin目录下的bash类型的shell命令。

ls 后面可以跟目录也可以跟文件,如果什么也不加就是当前目录内容。-l是列出文件的详细信息,如创建者,创建时间,文件的读写权限等。

ls -l 显示的详细信息具体代表的意思

drwxr-xr-x.   2 root root 0 9月  16 19:39 block

d代表此文件是一个目录,.前面的代表文件的读写权限,2代表链接个数,第一个root代表所有者,第二个root代表用户所属组名,0代表文件大小,后面是最后一次修改的时间月份,最后面是文件名。

d代表目录,l代表链接文件,b代表块设备文件,c代表字符设备文件,p代表管道文件,-代表普通文件。这些信息代表了这个文件真实是一个什么东西,比如windows中.exe结尾的是二进制可执行文件,但是linux中后缀名是没有任何系统意义的。

文件的读写权限中有三段,分别代表了拥有者,所属组,其他人的读写权限。

链接数这里指的是硬链接,硬链接和软连接在使用上没有什么区别,区别在于硬链接是在将不同的文件指向了同一块物理区域,可以使用ls -li目录查看最左边的值inode值代表了一个内存区域,硬链接删除其中一个文件,另一个文件依然有效,只要有一个文件链接到这块内存区域,这块内存区域的内容就不会消失,而软连接实际上保存的是一个绝对路径,当你把此绝对路径下的内容删除了,你再次点击自然就无效了。

linux中不同的颜色代表了不同的文件类型,蓝色代表目录,黑色的代表文件,浅蓝色代表链接,红色代表压缩文件,绿色代表可执行文件,黑底黄字代表设备文件。 

ls 目录 -a 可以看到隐藏文件,linux中认为.开头的文件就是隐藏文件,所以只要文件开头以.开头那么这个文件使用ls是看不到的。

ls -dl 目录 -d是查看目录,不看文件。

ls -lS 目录 会按照文件的大小进行排序。 ls -lSh 目录 会按照大小m单位显示内容。

别名 ll和ls -l是等价的,使用type ll可以看到是ll是ls -l的别名,然后使用alias命令可以自定义别名  alias q='vim...'。删除别名是unalias 别名。另外这种别名只是临时的一旦启动系统这个别名就消失了,vim /root/.bashrc 在文件最后一行插入别名命名门命令,然后source /root/.bashrc 即可生效。如果想创建一个所以用户都可以使用的别名,修改/etc/.bashrc;还有一种方式,修改/root/.bash_profile,在最后添加也可以;vim它然后添加。

vim !$   !$代表获取上一行命令的最后一部分内容 ,比如你上一行的最后一部分是个目录比较长 ,你现在又想查看此目录,可以使用ls -dl !$ 即可。

/etc/profile或者bashrc是全局变量,而/root/.bashrc或者/root/.bashrc是用户变量

cd ~ 或者什么也不加 代表切换到当前用户的家目录也叫宿主目录 cd - 代表返回切换前的目录。

history命令是查看历史命令,历史命令被保存在/root/.bash_history文件中,如果你登陆到一个服务器那么你的历史命令就会被保存在这个文件中,这个文件的保存动作是在服务器重启时执行,可以通过直接删除这个文件或者在.bash_history文件中的init 0之前添加history -c命令,即可删除本次本终端上的历史命令。如果想删除全部内容可以直接删除文件。

查找历史命令可以通过上下键选中,另一种时ctrl+r 然后输入命令的关键字,然后会在history中从下往上匹配,如果找到所需要的命令然后按下键盘右键即可选中然后回车执行。另一种方法是打开history然后输入!+左边的数字回车即可直接执行历史命令。还有一种是!+字符串会搜索最近一次以字符串开头的命令,这个命令如果没有打开历史命令,直接执行可能会执行到错误的命令。

ctrl+c终止前台允许的程序; ctrl+d等价于exit即退出终端;ctrl+l清屏;ctrl+r搜索命令;!$引用上一个命令的左后一个参数;

linux中有硬件时钟和系统时钟两种时钟,查看硬件时钟命令是hwclock,date查看系统时钟,正常情况是一样的,系统时钟是独立运行的,时区,CST中国标准时间,GMT格林尼治时间,UTC世界标准时间,修改时间使用的是date命令,date -s 字符串时间,如'2020-02-03 22:30',如果直接输入date会显示全部时间信息,如果只是希望显示年月日,可以date "+%F",这样就会只显示年月日 ,比如你希望创建一个日期文件可以通过此命令获取年月日, %F代表了完整的日期格式%Y-%m-%d,其中%y代表年份最后两位数位(00-99);%Y年份;%m代表month(01-12);%d代表按月记的日期,%M代表minute(00-59);%H小时(00-23);%S代表秒(00-60),如果希望得到日期的字符串而不是日期格式的字符串就可以使用date "+%Y%m%d"命令。如果不希望显示当前年月而是往后的某个年月,可以使用命令date -d '+1 months' +%F,另外一个好用的命令是time,这个命令后面跟需要测试耗时的命令可以得到这个测试命令的具体函数分析,其中分析中real代表实际使用时间,user代表用户状态使用时间,sys代表内核使用时间,另外所谓的linux指的是内核而不是我们所操纵的操作系统,而GUN+LINUX内核才是我们所说的Linux系统,GUN指我们不是unix的意思,大概就是一种嘲讽,指unix先开源后来又收费的不守信行为,GUN制定了一些我们熟知的外壳命令和组件,它本身的内核没有开发出来,所以一般是使用Linux内核代替。

如果对一个命令不清楚,可以使用man命令查看,man指手册,打开后会是这个命令的使用手册,q直接退出。另外的帮助命令是-h 和--help但是有些命令-h是不可以的,比如find命令,这个使用就需要使用--help命令。

关机命令,shuntdown,init 0;reboot;poweroff。shutdown -h +10十分钟后关机 shutdown -h 23:00关机;shutdown -r 23:00重启;shutdown -h now立即关机。

init 0-6 启动级别:0关机运行级别不能设置为0;1单用户模式,root权限用于系统维护,禁止远程登录,类似window的安全模式;2多用户模式没有网联和NFS,没啥用;3终端操作模式,就是我们常用的服务器模式;4保留;5GUI图形界面模式;6重启模式,Centos8切换终端模式和图像界面需要使用更复杂的命令了,这个需要的时候再记。查看系统的运行切换级别使用runlevel命令。

linux中一切皆文件,包括光驱,设备等,光驱在linux中是/etc/sr0或者/etc/cdrom这个设备是/etc/sr0的软连接,linux中所有的磁盘和设备都需要挂载才能使用,挂载命令是mount命令,mount /etc/sr0 /mnt将光驱挂载在/mnt目录。

然后使用rpm -ivh /mnt/BaseOS/package/tree~.rpm就可以不通过yum命令安装tree命令,直接在系统镜像源中的rpm包安装。centos8中可以直接使用dnf install 命令而不使用yum命令。

 which查看某个命令在那个目录。file是查看文件类型,ELF代表可执行二进制文件。

linux系统的目录,其中/代表根目录,是linux系统文件系统的入口所有的文件,目录,设备都在根目录下;bin是binary的缩写,常用的二进制命令目录,类似的还有usr/bin,其中放着用户常用的gnu工具,另外有些命令并不是二进制文件,如yum命令,其实paython写的脚本你可以用vim打开,包括dnf也是paython写的;/boot命令存放的是系统启动的相关启动文件包括内核kenrel的启动文件,使用uname -r查看系统内核版本号;/dev目录存分的是linux的设备文件,如/dev/sda*就是我们的磁盘分区;/etc目录是常见的二进制安装包配置文件路径和服务器启动命令目录,如/etc/pasword用户信息文件,/etc/shadow用户密码文件,/etc/group存储用户组信息,/etc/fstab系统开机启动自动挂载分区列表,/etc/hosts设定用户自己的ip与主机名对应的信息;home目录是普通用户的家目录;/lib目录存放的是库文件和函数库;/mnt和/media这两个目录是用来临时挂载存储设备的挂载目录,光驱cdrom和u盘等设备的目录,/mnt/hgfs这个目录是安装wmware-tools后的复制文件夹功能目录;/opt目录是可选择安装软件的目录,一般情况是空的;/proc是系统运行时的进程和内核信息,只会在系统运行时存在的目录,比如查看cpu信息cat /proc/cpuinfo命令;/sys命令是系统运行时操作系统的硬件信息;/run运行目录,存放系统运行时的数据,比如进程PID文件等;/src服务存放目录存放我们本地服务的相关文件;/sbin存放的是涉及系统管理的命令,它是root超级管理员可执行命令的存放地方,普通用户无权执行,/tmp存放临时文件的目录,操作系统会定期去删除这些没有被用到的文件,使用ls -ld目录查看文件权限,会发现/tmp目录下的权限在最后一位有一个t,代表了这个文件任何人可以删除和创建,但只能被root和owner删除;/var系统运行和软件运行时产生的系统日志信息,如/var/log存放的是系统日志;/usr存放的用户自己安装的命令和软件;根目录下的lib和lib64目录存放着系统最基本的动态链接共享库,包含了许多被/bin和/sbin中程序使用的库文件,作用类似于window中的DLL文件,注意.a是静态库,在编译时被加载到二进制文件中 .so是动态库文件只在运行时才加载到进程的内存空间中。

绝对路径是以/开始的路径,相对路径是以. ..开头的路径。

touch 文件名{1..20}它会同时创建20个文件,以花括号的内容结尾的文件名。

stat命令是查看文件属性的包括文件的时间属性。find / -mtime -1 查找一天以内生成的文件/

 chmod +x 文件 给这个文件加可执行权限;chmod 777 文件 给这个文件所有权限。

> 重定向命令,比如echoml默认会在终端输出信息,可以使用>将输出的信息重定向到一个文件里面,如果此文件存在就删除重新创建,如果不存在就创建,如果希望追加使用>>

mkdir创建目录命令,如果希望上级命令不存在时一起创建,使用mkdir -p 目录名。

rm -rf / 会提示递归操作危险,无法执行,而rm -rf /*就会把系统挂掉。rmdir 删除空文件目录。linux -r 一般指递归,-f一般指强制。

cat命令一次性显示文件全部内容;more以分页的形式显示内容,回车翻一行,空格翻一屏;less命令和more类似,但是less可以后退翻页,more不支持而且到底部more会直接退出而less不会退出,less空格是下翻页,回车是下翻行,less也可以查找。按下q退出。

head和tail相反,都是默认显示10行,-n 代表显示几行,-f在tail中代表动态显示几行。

SSH之所以能够保证安全,原因在于它采用了非对称加密技术(RSA)加密了所有传输的数据,使用ssh命令可以远程登陆linux系统。

 xfs文件系统的备份和恢复

  xfs提供了xfsdump和xfsrestore工具协助xfs文件系统中的数据进行备份,xfsdump按照inode顺序备份一个xfs文件系统。centos7开始选择xfs格式作为默认的文件系统,而不再是以前的ext,但仍支持ext4,xfs转为大数据产生,单个文件系统可支持最大为8eb,单个文件最大支持16tb,不仅数据量大,而且可扩展性高,通过xfsdump和xfsrestore来备份和恢复。xfs支持热备份。

  xfs的备份级别分为两种,默认为0,即完全备份,另外1到9为增理备份。

 df命令为disk free的缩写,用于显示目前linux系统文件系统磁盘使用情况统计,常用的参数 -h可读性的。

vim和vi不是一个安装包的命令,可以使用rpm -qf /usr/bin/vim查看,或者通过 rpm -qf `which vim` 反引号查看,反引号的意思是先执行这条命令,然后把这条命令的输出作为rpm命令的输入。进入插入模式,小写i是在当前光标位置前插入,大写i是在行首位置前插入,我之前一直是shift+i,原来是大写i;a是在当前字符后插入,A是当当前行尾插入;o是一下行插入即另起一行,O是上一行插入;x向后删除一个字符等同于delete,X向前删除一个字符;u撤销一步,每按一次撤销一步;ctrl+r恢复,每按一次恢复一次;r替换,这个是真好用,在命令模式下,光标停在需要修改的字符位置按下r,然后再按下希望替换的字符即可。如果不希望保存并还原可以使用e!命令。光标移动除了移动键,还可以使用hjkl代表左下上右。0和home都是切换到行首,$和end都是切换到行尾。gg快速到文档首。G定位到文档尾。使用/字符串查找内容时使用N和n代表山下翻,:noh可以取消高亮显示或者故意查找一个不存在的内容。查找的时候我们希望查找以什么开头的文字可以使用/^加字符串的形式查找。如果希望查找以什么结尾使用/字符串+$的形式。vim +数字 文件可以打开并直接光标再数字所代表的行,+但是不带数字会进入文件最后一行。

vim删除复制粘贴撤销,yy复制整行,复制n行是nyy,比如2yy表示复制2行;dd删除,以行尾单位,删除当前光标所在行,删除n行为ndd,比如2dd;p代表粘贴,剪贴是dd,在linux中删除文字就是剪切;x代表删除光标所在的字符;D从光标处删除到行尾;u撤销,ctrl+r恢复,r替换。ctrl+v进入可是快模式,就是可以矩形选择文字;R擦除,改写,进入替换模式。

可视化模式,ctrl+v,也称为列模式,类似于notepad++中的列模式,常用于服务器配置文件删除注释等,ctrl+v进入可视化模式后移动上下左右光标定义块,然后按下d删除,就可以删除一整列的注释,当然也可以整列添加。

 在linuxvim编辑模式中,如果希望复制其他文件中的内容,可以使用在命令行模式下,使用命令获取其他文件中的内容,比如希望获取我另外的一个文件中我记得内容,可以使用:!cat 我的文件,然后在vim原本基础上会显现处你的文件的内容,然后复制,按enter,粘贴,这个很好用,还可以是ifconfig等等命令。还有一种方式就是我希望我的文件的内容全部读到这个文件中,这样我就可以不用再复制了,方法是:r 文件,这样你文件中的内容就会被写到光标的后面。

vim命令行模式下替换,有全部替换和分行替换两种,全部替换是s,分行替换是%;具体是:1 ,3 s/替换的内容/替换后的内容,如果希望1到3行全部替换掉,而不是替换到单个词,1,3 s/*/* g,在后面加上g;另一种是%开头,:% s/替换内容/替换后的内容 g,如果希望不区分大小写,把g替换为gi;另外/被叫做分隔符,分隔符是可以自行定义的,比如我可以使用:% s@替换的内容@替换后的内容@g,一样可以区分大小写的替换。

如果我们希望vim显示行号,在命令行模式:set nu即可;关掉就是:set nonu;取消高亮使用:noh;如果希望行号显示永久显示,需要在/etc/vimrc修改,其会影响所有的用户,如果只是想自己使用,修改~/.vimrc;如echo "set nu" > ~/.vimrc即可。

如果希望vim同时打开两个文件,命令是vim -o a b;这种方式下:q只会退出一个,需要退出两次,:qa会全部退出;前面是上下打开,大写的O会左右打开;两个文件光标更换为ctrl+w+w,两次w光标就会去另一个文件中了。当然你也可以打开三个或多个。

如果只是单纯的想对比两个文件的区别,可以使用diff命令,diff a b 会显示出两个文件不同。还有一种方法就是vimdiff a b 这种方式会高亮显示不同点。当然vimdiff也是支持多个文件的对比的。很好用。

 linux下文件乱码的问题解决,使用iconv命令转码,参数-f 原始文本编码,-t目标文本编码,-o 输出文件名。

linux下文件的换行方式和windows下是不一样的,因此可以通过unix2dos将linux下的换行转换为windows下的换行;或者使用dos2unix将winodws下的换行转换为linux的换行。

linux文件系统由三部分组成:文件名,inode,block。windows也由这三部分组成,即文件名,inode文件的元数据信息,block真正存放的据。linux下使用ls -i 文件 命令查看文件属性,通过stat命令查看inode中包含的内容(这个命令相当于windows下右击查看属性)。

源文件编译分三步,第一步是./configure 命令执行环境监测,同时生成makefile文件,第二步是make,调用makefile文件,将源文件自动化编译成为可执行的二进制文件,在编译的时候make -j4 会以四线程的方式编译,会提升编译效率,前提是你的cpu支持四线程,按下top然后按下数字1就可以看到你的cpu格数。

linux下install和cp都是复制命令,但是install是可以加-m 777 复制文件权限的。666读写777读写执行。

修改服务器ip地址,临时修改是通过【ifconfig 网卡名称 ip地址 网关】 但是重启失效;多个网卡可以配置多个不在同一个网段的ip。ip查看除了ifconfig命令外还有ip命令,如ip addr show | more命令,如给不想要某个临时ip,可以使用ip addr delete ip地址 dev ens33(网卡)命令。网络配置在7以前是通过network命令,在7以后是通过NetworkManager进程来管理,8以后又变了,命令是systemctl status/restart NentManager,centos的网络相关的配置文件都是在/etc/sysconfig/network-scripts目录下 ,里面存放的是网卡信息配置文件(关于网络地址配置这里是最重要的配置),如果网络不可达,可以尝试修改其中的网卡内容BOOTPROTO为dhcp(动态获取),如果希望增加ip,7上是通过在网卡配置文件中加IPADDR=新的ip地址,然后调用service network restart命令,8则是通过nmcli connection down 网卡&&nmcli connection up命令来重新开启网卡即重新加载,这个命令比service network restart好在它只是断调一个网卡而不是全部网络服务重新启动。linux下的host主机信息在/etc/hosts文件下,永久修改命令是hostnamectl set-hostname 主机名,使用hostname命令查看;如果临时修改就是直接hostname 主机名。

关闭防火墙,systemctl disable firewalld命令设置防火墙开机不启动,使用systemctl is-enabled firewalld命令查看此服务是否为开机启动的。还有systemctl list-units列出所有启动unit,systemctl list-units --type service列举出所有service类型的启动unit。

/etc/fstab是用来存放文件系统的静态信息的文件,包括我们的磁盘,自动挂载磁盘就是在此处设置,mount -a是自动挂载设备文件。

yum的配置信息通常都配置在/etc/yum.repos.d目录下,最新的centos在yum源上不需要再配置了,因为这些配置源中存放的是列表,linux会先ping这些全世界的yum源,那个yum源回馈速度最快就选用那个yum源。

原文地址:https://www.cnblogs.com/YsirSun/p/13688084.html