热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux命令行大全总结(一)

阅读LinuxUNIX系统编程闲暇之余阅读Linux命令行大全这本书,想起当初毕业同学送给我时的场景,书很新,新到什么程度呢,

阅读Linux/UNIX系统编程闲暇之余阅读Linux命令行大全这本书,想起当初毕业同学送给我时的场景,书很新,新到什么程度呢,我说这书时昨天刚买的都没毛病。
本篇博客只记录一些印象不太深刻的内容,相对较简单或对我来说比较熟练的,不再记录.
shell是一个接受由键盘输入的命令,并将其传递给操作系统来执行的程序。bash是Bourne Again Shell的首字母缩写,Bourne Again Shell基于这样一个事实,即bash是sh的增强版本,而sh是最初的UNIX shell程序,由Steve Bourne编写。


结束终端会话

直接关闭终端窗口或是在shell提示符下输入exit命令,即可结束终端会话。
第一次登录系统时,当前工作目录被设置成主目录。每个用户账号都有一个主目录,作为普通用户操作时,这是唯一一个允许用户写文件的地方。
cd的快捷方式:
cd 将工作目录改变成主目录
cd - 将工作目录切换到先前的工作目录
cd ~ 切换到当前登录用户的主目录
cd ~username 切换到用户username的主目录


ls

ls可以指定多个目录显示,下面的例子显示用户主目录与/usr目录的内容
root@ubuntu:~# ls ~ /usr
/root:
display.c fun main main.o strtol tlpi-book workspace
display.o fun.c main.c playground strtol.c tlpi-dist
/usr:
bin games include lib local locale sbin share src

大部分命令使用的选项是在单个字符前加上连字符,如 -l。但是很多命令,包括GNU项目里的命令,也支持在单字前加两个连字符的长选项,并且很多命令允许长短选项一起使用。下面的例子:ls命令-l产生长格式输出,而t选项则表示以文件修改时间的先后将结果进行排序,加上长选项–reverse则结果以相反的顺序输出。


cp命令

cp命令用来复制文件和目录。它有两种不同的使用方式:
cp item1 item2
将单个文件或目录item1复制到文件或目录item2中。
cp item…… directory
将多个项目(文件或目录)复制进一个目录中
最常用的命令选项
-r –recursive 递归地复制目录及其内容,复制整个目录时需要该选项。
-u –update 当将文件从一个目录复制到另一个目录时,只会复制那些目标目录中不存在的文件或是目标目录相应文件修改时间较新的文件。


rm删除文件和目录

tips:当rm命令与通配符一起使用是应仔细检查输入的命令,可以使用ls预先对通配符做出测试,这显示将要删除的文件.


硬链接 软链接

Linux软链接与硬链接


man

man命令显示的手册文档被分成多个部分,它不仅包括用户命令,也包括系统管理命令、程序接口、文件格式等。
手册文档的组织结构:

1. 用户命令
2. 内核系统调用
3. C库函数程序接口
4. 特殊文件,如设备结点和驱动程序
5. 文件格式
6. 游戏和娱乐,如屏幕保护程序
7. 其它项
8. 系统管理命令

当我们查找的一个文件格式同时也是一个命令时,就要指明查找的部分,如果不指明查找的部分会显示第一次匹配的实例。
例如:
man 5 passwd 与 man passwd
man 5 passwd显示文件/etc/passwd的文件格式描述手册
man passwd会显示用户命令passwd
关于这一点可以用whatis来验证。

root@ubuntu:~# whatis ls
ls (1) - list directory contents
root@ubuntu:~# whatis passwd
passwd (5) - the password file
passwd (1) - change user password
passwd (1ssl) - compute password hashes

whatis程序显示匹配具体关键字的手册页的名字和对应的描述。


alias


这种设置有一个问题:shell会话结束时,这些别名会随之消失。


重定向

翻这本书到现在第六章,终于有点重要的内容,也是我所要重点学习的部分-重定向。


标准输入 标准输出 标准错误

默认情况下,标准输出和标准错误都被链接到屏幕上。
标准输入链接到键盘。I/O重定向的功能可以改变输出内容发送的目的地,也可以改变输入内容的来源。通常情况下,输入来自于键盘,输出内容显示在屏幕上,重定向可以改变这一惯例。


标准输出重定向

ls -l /usr/bin > ls-ouput.txt
这里我们将创建/usr/bin目录的一个长列表信息,并把这个显示结果输出到文件ls-output.txt.我们可以使用ls -l ls-output.txt查看文件情况。
接着可以把目录名换成一个不存在的目录名,例如:
ls -l /bin/usr > ls-ouput.txt
我们会收到错误提示:No such file or directory,由于我们没有重定向标准错误,所以错误信息还是直接打印在屏幕上。
这个时候我们通过ls -l命令查看ls-output.txt,吃惊的发现文件被清空了!
原因是我们使用>来重定向标准输出时,目的文件通常会从文件头部重新写。由于ls命令执行后没有任何标准输出,所以重定向操作开始重新改写这个文件,并在出现错误的情况下停止操作,最终导致了该文件内容被删除。
这就为我们提供了一种快速清空文件内容的方法:

> ls-output.txt

如果要在文件后面追加内容,而不是每次都从头开始写入的话可以使用>>来实现,下面的操作执行了两次,文件ls-output的大小翻倍.


标准错误重定向

标准输入 输出 错误对应的文件描述符分别是0 1 2,那么我们重定向标准错误可以采用如下方法:
ls -l /bin/usr 2> ls-error.txt
如果ls信息显示有误,会将相应的错误信息写入文件ls-error.txt,如果ls信息显示无误则列出相应目录的内容。
文件描述符2紧放在重定向符之前,将标准错误重定向到ls-error.txt文件中。


将标准错误和标准输出重定向到同一个文件

第一种传统方法:
ls -l /bin/usr > ls-output.txt 2>&1
使用这个方法将执行两个重定向操作。首先重定向标准输出到ls-output.txt文件中,然后使用标记符2>&1把文件描述符2(标准错误)重定向到文件描述符1(标准输出)中.
第二种方法:
ls -l /bin/usr &> ls-output.txt
在这个例子中只使用了一个标记符“&>”就把标准输出和标准错误都重定向到了ls-output.txt.
操作示例:

上面的例子我们演示了使用第一种方法可以重定向标准错误和标准输出,由于标准输出内容较多,所以我们只显示了10行来验证。


处理不想要的输出

可以通过输出重定向到/dev/null的特殊文件中来实现。例:
ls -l /bin/usr 2> /dev/null
可以抑制一个命令的错误信息。


标准输入重定向

cat 命令
读取一个或多个文件,并把他们复制到标准输出文件。
合并多个文件:
假如有文件被拆分成如下文件:
movie.mpeg.001 movie.mpeg.002 movie.mpeg.003 movie.mpeg.004 …… movie.mpeg.099
可以使用如下命令将它们重新连接在一起:
cat movie.mpeg.0* > movie.mpeg
由于通配符按顺序扩展,因此这些参数将按照正确的顺序来排列。
假如文件ls-output.txt里面有abcdefgh内容,我用如下命令:
cat 使用重定向符号”<”,我们将把标准输入的源从键盘变为文件ls-output.txt.


管道

管道操作符 | 可以把一个命令的标准输出传送到另一个命令的标准输入中。
ls -l /usr/bin | less
使用less命令可以分页显示任意命令的输入&#xff0c;该命令将它的结果发送到标准输出。
ls /bin /usr/bin | sort | less
把/bin和/usr/bin目录下所有可执行程序合并成一个列表&#xff0c;并且按照顺序排序。
ls /bin /usr/bin | sort | uniq | less
uniq命令会剔除掉/bin 和/usr/bin目录下都有得文件名&#xff0c;只显示一次。
ls /bin /usr/bin | sort | uniq | wc -l
可以查看已排好序的列表中条目数。


tee

在执行Linux命令时&#xff0c;我们可以把输出重定向到文件中&#xff0c;比如 ls >a.txt&#xff0c;这时我们就不能看到输出了&#xff0c;如果我们既想把输出保存到文件中&#xff0c;又想在屏幕上看到输出内容&#xff0c;就可以使用tee命令了。要注意的是&#xff1a;在使用管道线时&#xff0c;前一个命令的标准错误输出不会被tee读取。


echo



这本书看到这又一个惊喜&#xff0c;就是出现了这个花括号扩展&#xff0c;按照年份 月份甚至日期创建文件夹都变得如此轻松。
查看可用的变量列表可以使用如下命令&#xff1a;
printenv | less


推荐阅读
  • 在Linux/WSL环境中,本文对Shell任务的并行处理进行了详细的测试与分析。通过多种并行处理技术,如GNU Parallel和xargs,探讨了如何有效提升任务执行效率和系统资源利用率。实验结果表明,合理配置并行参数能够显著缩短任务完成时间,提高系统整体性能。此外,文章还介绍了Shell脚本编写的基本原则和最佳实践,为读者提供了实用的参考。 ... [详细]
  • 全面解析:Hadoop技术栈中的Linux操作系统概览
    全面解析:Hadoop技术栈中的Linux操作系统概览 ... [详细]
  • 从用户转型为开发者:一场思维升级的旅程 | 专访 StarRocks Committer 周威
    从用户转变为开发者,不仅是一次角色的转换,更是一场深刻的思维升级之旅。本次专访中,StarRocks Committer 周威分享了他如何在这一过程中逐步提升技术能力与思维方式,为开源社区贡献自己的力量。 ... [详细]
  • 本文深入探讨了IO复用技术的原理与实现,重点分析了其在解决C10K问题中的关键作用。IO复用技术允许单个进程同时管理多个IO对象,如文件、套接字和管道等,通过系统调用如`select`、`poll`和`epoll`,高效地处理大量并发连接。文章详细介绍了这些技术的工作机制,并结合实际案例,展示了它们在高并发场景下的应用效果。 ... [详细]
  • 系统管理员可以通过多种方法实时监控Linux系统中的用户活动,包括当前已登录的用户及其正在进行的操作。利用特定的命令和工具,管理员可以轻松获取这些信息,确保系统的安全性和稳定性。例如,使用`who`、`w`或`last`等命令可以快速查看当前登录的用户及其活动详情。 ... [详细]
  • 本文详细介绍了在Ubuntu操作系统中使用GDB调试工具深入分析和调试标准库函数`printf`的源代码过程。通过具体步骤和实例,展示了如何设置断点、查看变量值及跟踪函数调用栈,帮助开发者更好地理解`printf`函数的工作原理及其内部实现细节。 ... [详细]
  • 在对文件或目录执行详细信息列表操作时,会看到一串字符。这串字符以每三个一组的形式出现,分别代表了用户、用户组及其他用户的访问权限。通过深入解析这些权限设置,可以更好地理解和管理系统的安全性与访问控制。 ... [详细]
  • 在操作系统中,阻塞状态与挂起状态有着显著的区别。阻塞状态通常是指进程因等待某一事件(如I/O操作完成)而暂时停止执行,而挂起状态则是指进程被系统暂时移出内存,以释放资源或降低系统负载。此外,本文还深入分析了`sleep()`函数的实现机制,探讨了其在不同操作系统中的具体实现方式及其对进程调度的影响。通过这些分析,读者可以更好地理解操作系统如何管理进程的不同状态以及`sleep()`函数在其中的作用。 ... [详细]
  • 本指南详细介绍了如何使用 `apt-get` 命令在 Ubuntu 系统上部署 MySQL 5、Apache 2、PHP 5 及 phpMyAdmin。首先,建议读者查阅 Ubuntu 的官方文档以获取更多背景信息。通过本文,您将逐步了解每个软件包的安装过程及其配置方法,确保系统环境的稳定性和安全性。此外,还将提供一些常见问题的解决方案,帮助用户顺利完成部署。 ... [详细]
  • PJSIP 编译与开发指南:深入解析 PJSIP 库的应用与优化
    PJSIP 编译与开发指南:深入解析 PJSIP 库的应用与优化 ... [详细]
  • 在Linux环境中,通过编写Shell脚本来实现自定义命令的创建与激活,能够极大地简化服务器上多个子系统的管理操作。例如,通过简单的命令如“tt”,即可快速查看各个应用程序的名称及其运行状态,从而提高系统维护的效率和便捷性。 ... [详细]
  • 在整理旧文件时,发现了几篇关于2011年MiniGUI技术的博客,虽然内容已显陈旧,但仍然具有一定的参考价值。这些文章详细探讨了MiniGUI的帧缓冲技术、图形渲染引擎以及输入处理机制,为理解早期嵌入式系统的图形界面开发提供了宝贵资料。 ... [详细]
  • NanoPi2 使用体验深入解析(续篇)
    随着Raspberry Pi的问世,开源硬件领域迎来了前所未有的发展,激发了全球范围内的创新热潮。在中国,这一趋势同样催生了一系列类似的开发板,例如NanoPi 2。本文作为前篇的延续,将深入探讨NanoPi 2的实际使用体验,从性能、兼容性到应用场景,进行全面分析。 ... [详细]
  • 综合实训 201521440015
    Chinesepeople’publicsecurityuniversity网络对抗技术实验报告实验五综合渗透学生姓名常泽远年级15区队4指导教师高见信息技术与网络安全学院2018 ... [详细]
  • 软件开发史上最具影响力的十位编程大师(附图解)
    在软件开发领域,有十位编程大师对行业发展产生了深远影响。本文基于国外知名社区的一项评选,通过图文并茂的形式,详细介绍了这十位杰出人物,包括游戏开发先驱John Carmack等,为读者呈现了他们卓越的技术贡献与创新精神。 ... [详细]
author-avatar
彦廷孟颖益皓
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有