当前位置: 首页 > Linux

Linux笔记:核心思想、常用命令和脚本语法

时间:2023-04-07 01:50:52 Linux

总结在《鸟哥的 Linux 私房菜 - 基础学习篇》,图片也来自这里。核心思想目录树结构(directorytree)Linux系统是基于目录树结构的,这是它的核心思想。目录,即文件夹。Linux系统相当于一个文件夹,Linux系统中的所有数据要么对应一个文件夹,要么对应一个文件。例如,如果您创建一个新用户,您实际上创建了一个新文件夹。一个用户对应一个文件夹。目录树结构:上图中的矩形是文件夹,wave是文件,根目录是/。这个/很聪明。在macOS中,如果您将文件test.md下载到/Users/username/Desktop/,那么该文件将被下载到桌面。第一个/是根目录。如果你写成Users/用户名/Desktop/,那么文件会被下载到currentDerectory/Users/用户名/Desktop/。Linux系统采用的是目录树结构,但实际上数据是存储在磁盘分区中的,那么问题来了:目录树和磁盘分区是什么关系?这时候就涉及到一个概念,叫做“挂载”。目录树与磁盘分区的关系Mounting其实就是建立目录树与磁盘分区的关系。目录只是一个标识,我们可以自定义叫什么,一个磁盘分区对应一个目录。我们经常使用U盘,假设一个U盘是一个磁盘分区,我们在Windows电脑上插入一个叫partition1的U盘,可能电脑多了一个F盘,那么目录就是F,相当于挂了目录F加载到U盘,访问F访问partition1中的内容。如果再插入一个假定为partition2的U盘,系统应该会多出一个H盘,相当于在partition2上挂载目录H。假设F盘下会有一个存放很多影片的movie文件夹,我们可以直接将movie文件夹挂载到partition2,这样movie中的影片就存放在partition2中,不会占用F盘的空间。在Linux系统中也是如此。比如在搭建Linux环境时,/home可以单独挂载到一个磁盘分区上。更多信息请看鸟哥Linux安装方式,选择磁盘分区常用命令命令含义选项示例--helpls--helpmanmanualmanmanlslist-a,--all-h,--human-readable-l,--long列表格式ls-ah:显示目录下所有文件夹,包括隐藏文件夹ls-l==llcdchangedirectorycd相当于cd~,~当前用户根目录cd/根目录cd..上一级cd../。.上两层cd../上一层目录cd/当前目录下一个目录rmremove-d,--directorty-r,--recursive-f,--forcerm<文件>rm-d<目录>rm-rf<目录>rm*.pdfcatconcatenatecat<文件>mkdirmakedirecotrymkdir<目录>touchcreateafiletouchmvmovemoveoldnamenamemove/<目录>cpcopycptesttest.bakzip-r,--recursezip-rtest.ziptest/unzipunziptest.ziptartapeorarchive-f,--file=ARCHIVE-c,--create-t,--list-v,--verbose-x,--extract-z,--gzip,--gunzip,--ungziptar-cfarchive.tarfoobar:创建文件foo和bar作为archive.tartar-tvfarchive.tar:列出所有archive.tar中的文件详细信息tar-xfarchive.tar:fromarchiveExtractallfilesfrome.tartarxvzfredis-stable.tar.gz:extractallfilesfromredis-stable.tar.gzdetailpwdprintworkingdirectorypwdshrunascriptshtest.sh相当于./test.shstartstartnotepad++启动Typoravivisualvivimviimprovedvimvi/vimvi和vim三种模式都是修改的命令,后者是增强版前者,输入该命令后,将出现三种修改文件的方式。通用命令模式(commandmode):看不到你输入的内容。编辑模式(插入模式):直接修改文件内容。命令行模式(command-linemode)):底线,:或/或?以下命令开头,详细含义请参考vim程序编辑器常用命令以O开头从上一列开始r替换方式,替换一次R总是替换uUndoCtrl+r取消undo,相当于U?0linebeginningend/$lineendGlastcolumngg1G,firstcolumnn下移n列Ctrl+ffall,下一页Ctrl+bbefore,uppagexdeleteXdeletepreviousdddeletecurrentColumnd$deletefromthe当前位置到列末yy复制当前列编辑模式:命令含义Esc退出编辑模式,进入通用命令模式命令列命令模式:命令含义:w保存:w!强制保证:q退出:q!forceExit:wq退出保存,相当于ZZ/word搜索关键字:setnu显示行号:1,$s/word1/word2/gcword1被word2/word替换搜索时,可以用n跳转到下一个搜索结果,N跳转到上一个搜索结果脚本语法遍历。示例:打印出当前路径下所有文件夹目录的脚本,名为traverse.sh,内容如下:#!/bin/bashforiin$(ls$(PWD))doif[-d$i];thencd$ipwdcd..fi#ifreverse,表示ifendsdone执行脚本:shtraverse.sh更多信息请参见学习Shell脚本和其他常用命令##Userpasswd#修改用户密码whoami#查看当前用户名##logless#查看最新日志tail-f#查看实时日志grep-5#查看日志关键字key五行上下grep-5#输出日志上下五行关键字keyto##processps-ef|grepWeChat#查看进程名WeChat的信息,开头的数字是idkill-96002(开头的数字最多)#杀死进程id为6002的进程sed-i's/word1/werd2/g'#将中的word1替换为word2(sed--streameditor)xclip-selc<#复制其内容而不打开df-h#查看磁盘分区和目录信息(df--显示空闲磁盘空间)echo$PATH#输出的内容$PATHReferenceslinux-commansmanmarkdown-set-table-column-witdthlinux-current-directorybash_loop_list_strings将文件内容复制到剪贴板而不显示其内容nts