Linux新手村必备!这些常用操作命令你掌握了吗?

YunDuanCode · · 682 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

在计算机的世界里,Linux操作系统以其强大的功能和灵活性受到了广大程序员和IT爱好者的喜爱。然而,对于初学者来说,Linux的操作命令可能会显得有些复杂和难以理解。 今天,我们就来一起探索一些Linux常用操作命令,让你的计算机操作更加流畅。 ### 一、目录操作 首先带大家了解一下Linux 系统目录: ``` ├── bin -> usr/bin # 用于存放二进制命令 ├── boot # 内核及引导系统程序所在的目录 ├── dev # 所有设备文件的目录(如磁盘、光驱等) ├── etc # 配置文件默认路径、服务启动命令存放目录 ├── home # 用户家目录,root用户为/root ├── lib -> usr/lib # 32位库文件存放目录 ├── lib64 -> usr/lib64 # 64位库文件存放目录 ├── media # 媒体文件存放目录 ├── mnt # 临时挂载设备目录 ├── opt # 自定义软件安装存放目录 ├── proc # 进程及内核信息存放目录 ├── root # Root用户家目录 ├── run # 系统运行时产生临时文件,存放目录 ├── sbin -> usr/sbin # 系统管理命令存放目录 ├── srv # 服务启动之后需要访问的数据目录 ├── sys # 系统使用目录 ├── tmp # 临时文件目录 ├── usr # 系统命令和帮助文件目录 └── var # 存放内容易变的文件的目录 ``` 下面我们来看目录操作命令有哪些 ``` pwd 查看当前工作目录 clear 清除屏幕 cd ~ 当前用户目录 cd / 根目录 cd - 上一次访问的目录 cd .. 上一级目录 ``` **查看目录内信息** ``` ll 查看当前目录下内容(LL的小写) ``` **创建目录** ``` mkdir aaa 在当前目录下创建aaa目录,相对路径; mkdir ./bbb 在当前目录下创建bbb目录,相对路径; mkdir /ccc 在根目录下创建ccc目录,绝对路径; ``` **递归创建目录(会创建里面没有的目录文件夹)** ``` mkdir -p temp/nginx ``` **搜索命令** ``` find / -name ‘b’ 查询根目录下(包括子目录),名以b的目录和文件; find / -name ‘b*’ 查询根目录下(包括子目录),名以b开头的目录和文件; find . -name ‘b’ 查询当前目录下(包括子目录),名以b的目录和文件; ``` **重命名** ``` mv 原先目录 文件的名称 mv tomcat001 tomcat ``` **剪切命令(有目录剪切到制定目录下,没有的话剪切为指定目录)** ``` mv /aaa /bbb 将根目录下的aaa目录,移动到bbb目录下(假如没有bbb目录,则重命名为bbb); mv bbbb usr/bbb 将当前目录下的bbbb目录,移动到usr目录下,并且修改名称为bbb; mv bbb usr/aaa 将当前目录下的bbbb目录,移动到usr目录下,并且修改名称为aaa; ``` **复制目录** ``` cp -r /aaa /bbb:将/目录下的aaa目录复制到/bbb目录下,在/bbb目录下的名称为aaa cp -r /aaa /bbb/aaa:将/目录下的aa目录复制到/bbb目录下,且修改名为aaa; ``` **强制式删除指定目录** rm -rf /bbb:强制删除/目录下的bbb目录。如果bbb目录中还有子目录,也会被强制删除,不会提示; **删除目录** - rm -r /bbb:普通删除。会询问你是否删除每一个文件 - rmdir test01:目录的删除 **查看树状目录结构** ``` tree test01/ ``` **批量操作** 需要采用{}进行参数的传入了。 ``` mkdir {dirA,dirB} # 批量创建测试目录 touch dirA/{A1,A2,A3} # dirA创建三个文件dirA/A1,dirA/A2,dirA/A3 ``` ### 二、文件操作 **删除** ``` rm -r a.java 删除当前目录下的a.java文件(每次会询问是否删除y:同意) ``` **强制删除** ``` rm -rf a.java 强制删除当前目录下的a.java文件 rm -rf ./a* 强制删除当前目录下以a开头的所有文件; rm -rf ./* 强制删除当前目录下所有文件(慎用); ``` **创建文件** ``` touch testFile ``` **递归删除.pyc格式的文件** ``` find . -name '*.pyc' -exec rm -rf {} \; ``` **打印当前文件夹下指定大小的文件** ``` find . -name "*" -size 145800c -print ``` **递归删除指定大小的文件(145800)** ``` find . -name "*" -size 145800c -exec rm -rf {} \; ``` **递归删除指定大小的文件,并打印出来** ``` find . -name "*" -size 145800c -print -exec rm -rf {} \; ``` - “.” 表示从当前目录开始递归查找 - “ -name ‘*.exe’ "根据名称来查找,要查找所有以.exe结尾的文件夹或者文件 - " -type f "查找的类型为文件 - “-print” 输出查找的文件目录名 - -size 145800c 指定文件的大小 - -exec rm -rf {} ; 递归删除(前面查询出来的结果) **split拆分文件** split命令:可以将一个大文件分割成很多个小文件,有时需要将文件分割成更小的片段,比如为提高可读性,生成日志等。 - b:值为每一输出档案的大小,单位为 byte。 - -C:每一输出档中,单行的最大 byte 数。 - -d:使用数字作为后缀。 - -l:值为每一输出档的行数大小。 - -a:指定后缀长度(默认为2)。 使用split命令将上面创建的date.file文件分割成大小为10KB的小文件: ``` [root@localhost split]# split -b 10k date.file [root@localhost split]# ls date.file xaa xab xac xad xae xaf xag xah xai xaj ``` 文件被分割成多个带有字母的后缀文件,如果想用数字后缀可使用-d参数,同时可以使用-a length来指定后缀的长度: ``` [root@localhost split]# split -b 10k date.file -d -a 3 [root@localhost split]# ls date.file x000 x001 x002 x003 x004 x005 x006 x007 x008 x009 ``` 为分割后的文件指定文件名的前缀: ``` [root@localhost split]# split -b 10k date.file -d -a 3 split_file [root@localhost split]# ls date.file split_file000 split_file001 split_file002 split_file003 split_file004 split_file005 split_file006 split_file007 split_file008 split_file009 ``` 使用-l选项根据文件的行数来分割文件,例如把文件分割成每个包含10行的小文件: ``` split -l 10 date.file ``` ### 三、文件内容操作 **修改文件内容** - vim a.java:进入一般模式 - i(按键):进入插入模式(编辑模式) - ESC(按键):退出 - :wq:保存退出(shift+:调起输入框) - :q!:不保存退出(shift+:调起输入框)(内容有更改)(强制退出,不保留更改内容) - :q:不保存退出(shift+:调起输入框)(没有内容更改) **文件内容的查看** - cat a.java 查看a.java文件的最后一页内容; - more a.java从 第一页开始查看a.java文件内容,按回车键一行一行进行查看,按空格键一页一页进行查看,q退出; l- ess a.java 从第一页开始查看a.java文件内容,按回车键一行一行的看,按空格键一页一页的看,支持使用PageDown和PageUp翻页,q退出。 **总结下more和less的区别** - less可以按键盘上下方向键显示上下内容,more不能通过上下方向键控制显示。 - less不必读整个文件,加载速度会比more更快。 - less退出后shell不会留下刚显示的内容,而more退出后会在shell上留下刚显示的内容。 **实时查看文件后几行(实时查看日志)** ``` tail -f a.java 查看a.java文件的后10行内容; ``` **前后几行查看** - head a.java:查看a.java文件的前10行内容; - tail -f a.java:查看a.java文件的后10行内容; - head -n 7 a.java:查看a.java文件的前7行内容; - tail -n 7 a.java:查看a.java文件的后7行内容; **文件内部搜索指定的内容** - grep under 123.txt:在123.txt文件中搜索under字符串,大小写敏感,显示行; - grep -n under 123.txt:在123.txt文件中搜索under字符串,大小写敏感,显示行及行号; - grep -v under 123.txt:在123.txt文件中搜索under字符串,大小写敏感,显示没搜索到的行; - grep -i under 123.txt:在123.txt文件中搜索under字符串,大小写敏感,显示行; - grep -ni under 123.txt:在123.txt文件中搜索under字符串,大小写敏感,显示行及行号; **终止当前操作** Ctrl+c和Ctrl+z都是中断命令,但是作用却不一样。 Ctrl+Z就扮演了类似的角色,将任务中断,但是任务并没有结束,在进程中只是维持挂起的状态,用户可以使用fg/bg操作前台或后台的任务,fg命令重新启动前台被中断的任务,bg命令把被中断的任务放在后台执行。 Ctrl+C也扮演类似的角色,强制终端程序的执行。 >你还在苦恼找不到真正免费的编程学习平台吗?可以试试【云端源想】!课程视频、知识库、微实战、云实验室、一对一咨询……你想要的全部学习资源这里都有,重点是现在还是免费的![点这里即可免费学习!](https://ydcode.cn/memberIndex?sourceId=650) **重定向功能** 可以使用 > 或 < 将命令的输出的命令重定向到test.txt文件中(没有则创建一个) ``` echo 'Hello World' > /root/test.txt ``` **1、grep(检索文件内容)** ``` grep [options] pattern file ``` - 全称:Global Regular Expression Print。 - 作用:查找文件里符合条件的字符串。 ``` // 从test开头文件中,查找含有start的行 grep "start" test* // 查看包含https的行,并展示前1行(-A),后1行(-B) grep -A 1 -B 1 "https" wget-log ``` **2、awk(数据统计)** ``` awk [options] 'cmd' file ``` - 一次读取一行文本,按输入分隔符进行切片,切成多个组成部分。 - 将切片直接保存在内建的变量中,$1,$2…($0表示行的全部)。 - 支持对单个切片的判断,支持循环判断,默认分隔符为空格。 - -F 指定分隔符(默认为空格) 1)将email.out进行切分,打印出第1/3列内容 ``` awk '{print $1,$3}' email.out ``` 2)将email.out进行切分,当第1列为tcp,第2列为1的列,全部打印 ``` awk '$1=="tcp" && $2==1{print $0}' email.out ``` 3)在上面的基础上将表头进行打印(NR表头) ``` awk '($1=="tcp" && $2==1)|| NR==1 {print $0}' email.out ``` 4) 以,为分隔符,切分数据,并打印第二列的内容 ``` awk -F "," '{print $2}' test.txt ``` 5)将日志中第1/3列进行打印,并对第1列的数据进行分类统计 ``` awk '{print $1,$3}' email.out | awk '{count[$1]++} END {for(i in count) print i "\t" count[i]}' ``` 6)根据逗号,切分数据,并将第一列存在文件test01.txt中 ``` awk -F "," '{print $1 >> "test01.txt"} ``` **3、sed(替换文件内容)** ``` sed [option] ‘sed commond’ filename ``` - 全名Stream Editor,流编辑器 - 适合用于对文本行内容进行处理 - sed commond为正则表达式 - sed commond中为三个/,分别为源内容,替换后的内容 **sed替换标记** ``` g # 表示行内全面替换。 p # 表示打印行。 w # 表示把行写入一个文件。 x # 表示互换模板块中的文本和缓冲区中的文本。 y # 表示把一个字符翻译为另外的字符(但是不用于正则表达式) \1 # 子串匹配标记 & # 已匹配字符串标记 ``` 1)替换解析 ``` sed -i 's/^Str/String/' replace.java ``` ![image.png](https://static.golangjob.cn/240125/0c27cad0d944669566be02a315087cb5.png) 2)将末尾的.替换为;(转义.) ``` sed -i 's/\.$/\;/' ``` 3)全文将Jack替换为me(g是全部替换,不加只替换首个) ``` sed -i 's/Jack/me/g/ replace.java ``` 4)删除replace.java中的空格(d是删除) ``` sed -i '/^ *$/d' replace.java ``` 5)删除包含Interger的行(d是删除) ``` sed -i '/Interger/d' replace.java ``` 6)多命令一起执行 ``` grep 'input' 123.txt | sed 's/\"//g; s/,/\n/g' ``` 7)替换后将数据保存在文中 ``` grep 123.txt | sed -n 's/\"//gw test01.txt' ``` 4、管道操作符| 可将指令连接起来,前一个指令的输出作为后一个指令的输入 ``` find ~ |grep "test" find ~ //查找当前用户所有文件 grep "test" //从文件中 ``` **使用管道注意的要点** - 只处理前一个命令正确输出,不处理错误输出。 - 右边命令必须能够接收标准输入流,否则传递过程中数据会被抛弃 - sed,awk,grep,cut,head,top,less,more,c,join,sort,split等 1)从email.log文件中查询包含error的行 ``` grep 'error' email.log ``` 2)获取到error的行,并取[]含有数字的 ``` grep 'error' email.log | grep -o '\[0-9\]' ``` 3)并过滤掉含有当前进程 ``` ps -ef|grep tomcat |grep -v ``` 4)替换后将数据保存在文中 ``` grep 123.txt | sed -n 's/\"//gw test01.txt' ``` 5)将文件123.txt,按,切分,去除",按:切分后,将第一列存到文件test01.txt中 ``` grep 'input' 123.txt | awk -F ',' '{print $2}' | sed 's/\"//g; s/,/\n/g' | awk -F ":" ``` **5、cut(数据裁剪)** - 从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。 - 也可采用管道输入。 ![image.png](https://static.golangjob.cn/240125/1de9ac99bdbbbb93f14ec8126d0bc037.png) **文件截取** ``` [root@VM-0-9-centos shell]# cut -d ":" -f 1 cut.txt ``` **管道截取** ``` [root@VM-0-9-centos shell]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin # 按:分割。截取第3列 [root@VM-0-9-centos shell]# echo $PATH | cut -d ":" -f 3 /usr/sbin # 按:分割。截取第3列之后数据 [root@VM-0-9-centos shell]# echo $PATH | cut -d ":" -f 3- /usr/sbin:/usr/bin:/root/bin [root@VM-0-9-centos shell]# ``` ### 四、系统日志位置 - cat /etc/redhat-release:查看操作系统版本 - /var/log/message:系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 - /var/log/message:系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 - /var/log/secure:与安全相关的日志信息 - /var/log/maillog:与邮件相关的日志信息 - /var/log/cron:与定时任务相关的日志信息 - /var/log/spooler:与UUCP和news设备相关的日志信息 - /var/log/boot.log:守护进程启动和停止相关的日志消息 **查看某文件下的用户操作日志** 到达操作的目录下,执行下面的程序: ``` cat .bash_history ``` ### 五、创建与删除软连接 **1、创建软连接** ``` ln -s /usr/local/app /data ``` 注意:创建软连接时,data目录后不加 / (加上后是查找其下一级目录); ![image.png](https://static.golangjob.cn/240125/b3083f89dba520f120d00b22ada1abc1.png) **2、删除软连接** ``` rm -rf /data ``` 注意:取消软连接最后没有/,rm -rf 软连接。加上/是删除文件夹; ![image.png](https://static.golangjob.cn/240125/b1ce3beef5c89f1bee8c671965f5920a.png) ## 六、压缩和解压缩 **tar** ![image.png](https://static.golangjob.cn/240125/02d8be878561b96f28bcc39aeef157a0.png) **压缩(-c)** ``` tar -cvf start.tar a.java b.java //将当前目录下a.java、b.java打包 tar -cvf start.tar ./* //将当前目录下的所欲文件打包压缩成haha.tar文件 tar -zcvf start.tar.gz a.java b.java //将当前目录下a.java、b.java打包 tar -zcvf start.tar.gz ./* //将当前目录下的所欲文件打包压缩成start.tar.gz文件 ``` **解压缩(-x)** ``` tar -xvf start.tar //解压start.tar压缩包,到当前文件夹下; tar -xvf start.tar -C usr/local //(C为大写,中间无空格) //解压start.tar压缩包,到/usr/local目录下; tar -zxvf start.tar.gz //解压start.tar.gz压缩包,到当前文件夹下; tar -zxvf start.tar.gz -C usr/local //(C为大写,中间无空格) //解压start.tar.gz压缩包,到/usr/local目录下; ``` **解压缩tar.xz文件** ``` tar xf node-v12.18.1-linux-x64.tar.xz ``` **unzip/zip** **压缩(zip)** ``` zip lib.zip tomcat.jar //将单个文件压缩(lib.zip) zip -r lib.zip lib/ //将目录进行压缩(lib.zip) zip -r lib.zip tomcat-embed.jar xml-aps.jar //将多个文件压缩为zip文件(lib.zip) ``` **解压缩(unzip)** ``` unzip file1.zip //解压一个zip格式压缩包 unzip -d /usr/app/com.lydms.english.zip //将`english.zip`包,解压到指定目录下`/usr/app/` ``` ### 七、Linux下文件的详细信息 ``` R:Read w:write x: execute执行 -rw-r--r-- 1 root root 34942 Jan 19 2018 bootstrap.jar ``` - 前三位代表当前用户对文件权限:可以读/可以写/不能执行 - 中间三位代表当前组的其他用户对当前文件的操作权限:可以读/不能写/不能执行 - 后三位其他用户对当前文件权限:可以读/不能写/不能执行图片 ![image.png](https://static.golangjob.cn/240125/8b6a98c657a49fc03eabb60e37177f0e.png) **更改文件的权限** ``` chmod u+x web.xml (---x------) 为文件拥有者(user)添加执行权限; chmod g+x web.xml (------x---) 为文件拥有者所在组(group)添加执行权限; chmod 111 web.xml (---x--x--x) 为所有用户分类,添加可执行权限; chmod 222 web.xml (--w--w--w-) 为所有用户分类,添加可写入权限; chmod 444 web.xml (-r--r--r--) 为所有用户分类,添加可读取权限; ``` ### 八、Linux终端命令格式 ``` command [-options] [parameter] ``` 说明: - command :命令名,相应功能的英文单词或单词的缩写 - [-options] :选项,可用来对命令进行控制,也可以省略 - parameter :传给命令的参数,可以是0个、1个或者多个 **查阅命令帮助信息** -help: 显示 command 命令的帮助信息; -man: 查阅 command 命令的使用手册,man 是 manual 的缩写,是 Linux 提供的一个手册,包含了绝大部分的命令、函数的详细使用。 **使用 man 时的操作键** ![image.png](https://static.golangjob.cn/240125/fbab968d944f3b64a4c82f5a0165940c.png) 以上就是一些Linux常用操作命令的介绍,希望对你有所帮助。 虽然这些只是Linux命令的冰山一角,但它们足以让你自如地运用Linux操作系统,记住,每一个命令都有其独特的用途和魅力。掌握了这些命令,你就能更加自如地在Linux世界中遨游。愿你在探索的道路上,发现更多的惊喜和乐趣!-

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

682 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传