《Linux命令行与shell脚本编程大全》读后感

内核通过硬盘上的存储空间来实现虚拟内存,这块区域称为交换空间。内核不断地在交换空间和实际的物理内存之间反复交换虚拟内存中的内容,这使得系统以为它拥有比物理内存更多的可用内存。
只要Linux系统在运行,为运行中的程序换出内存页面的过程就不会停歇。
Linux有5个运行级,运行级为1时是单用户模式,运行级为3是标准运行级,运行级为5会启动图形化界面。
Linux发行版默认的shell都是bash shell,意思是Bourne again shell。
CLI:command line interface,命令行界面
Linux发行版通常使用Ctrl+Alt组合键配合F1或F7来进入图形界面。Ubuntu使用F7,而RHEL则使用F1。
tty 代表电传打字机 (teletypewriter)。这是一个古老的名词,指的是一台用于发送消息的机器。
默认bash shell提示符是美元符号($ ),这个符号表明shell在等待用户输入。
Linux则采用了一种不同的方式。Linux将文件存储在单个目录结构中,这个目录被称为虚拟目录 (virtual directory)。虚拟目录将安装在PC上的所有存储设备的文件路径纳入单个目录结构中。Linux虚拟目录结构只包含一个称为根 (root)目录的基础目录。根目录下的目录和文件会按照访问它们的目录路径一一列出,这点跟Windows类似。
Linux使用正斜线(/)而不是反斜线(\)在文件路径中划分目录。在Linux中,反斜线用来标识转义字符,要是用在文件路径中的话会导致各种各样的问题。
Linux虚拟目录中比较复杂的部分是它如何协调管理各个存储设备。在Linux PC上安装的第一块硬盘称为根驱动器 。根驱动器包含了虚拟目录的核心,其他目录都是从那里开始构建的。 Linux会在根驱动器上创建一些特别的目录,我们称之为挂载点 (mount point)。挂载点是虚拟目录中用于分配额外存储设备的目录。虚拟目录会让文件和目录出现在这些挂载点目录中,然而实际上它们却存储在另外一个驱动器中。
常见的目录名均基于文件系统层级标准(filesystem hierarchy standard,FHS)。Linux目录名称:
  /:虚拟目录的根目录,通常不会再这里存储文件
  /bin:二进制目录,存放许多用户级的GNU工具
  /boot:启动目录,存放启动文件
  /dev:设备目录,Linux在这里创建设备节点
  /etc:系统配置文件目录
  /home:主目录,Linux在这里创建用户目录
  /lib:库目录,存放系统和应用程序的库文件
  /media:媒体目录,可移动媒体设备的常用挂载点
  /mnt:挂载目录,另一个可移动媒体设备的常用挂载点
  /opt:可选目录,常用于存放第三方软件包和数据文件
  /proc:进程目录,存放现有硬件及当前进程的相关信息
  /root:root用户的主目录
  /sbin:系统二进制目录,存放许多GNU管理员级工具
  /run:运行目录,存放系统运作时的运行时数据
  /srv:服务目录,存放本地服务的相关文件
  /sys:系统目录,存放系统硬件信息的相关文件
  /tmp:临时目录,可以在该目录中创建和删除临时工作文件
  /usr:用户二进制目录,大量用户级的GNU工具和数据文件都存储在这里
  /var:可变目录,用以存放经常变化的文件,比如日志文件
pwd 命令可以显示出shell会话的当前目录,这个目录被称为当前工作目录 。
相对文件路径:允许用户指定一个基于当前位置的目标文件路径。相对文件路径不以代表根目录的正斜线(/)开头,而是以目录名或是一个特殊字符开始。
单点符(.)表示当前目录; 双点符(..)表示当前目录的父目录。
ls 命令查看当前目录下的文件和目录。
cat 命令是显示文本文件中所有数据的得力工具。
tail 命令会显示文件最后几行的内容。默认情况下,它会显示文件的末尾10行。
当程序运行在系统上时,我们称之为进程 (process)。想监测这些进程,需要熟悉ps 命令的用法。ps 命令好比工具中的瑞士军刀,它能输出运行在系统上的所有程序的许多信息。
ps命令支持3种不同类型的命令行参数:
  Unix风格,前面加单破折线
  BSD风格,前面不加破折线
  GNU风格,长参数,前面加双破折线
使用ps 命令的关键不在于记住所有可用的参数,而在于记住最有用的那些参数。
top 命令跟ps 命令相似,能够显示进程信息,但它是实时显示的。
以root用户身份登录系统时,使用killall 命令要特别小心,因为很容易就会误用通配符而结束了重要的系统进程。这可能会破坏文件系统。
mount命令用来挂载磁盘、U盘、CD-ROM等。
df命令可以查看所有已挂载磁盘的使用情况。
du命令可以显示某个特定目录的磁盘使用情况。
grep命令可以在文件中查找数据。
“.bz2”、“.Z”、“.gz”、“.zip”、“.tar”、“.tgz”都是压缩文件
gzip命令可以来压缩文件
tar命令用来归档,也能用来解压缩文件。
ps -f 命令也能够表现子shell的嵌套关系,因为它能够通过PPID列显示出谁是谁的父进程。
在一行中指定要依次运行的一系列命令。这可以通过命令列表来实现,只需要在命令之间加入分号(;)即可。
type 命令来了解某个命令是否是内建的。
history命令可以显示最近用过的命令,通常历史记录中会保存最近的1000条命令。
alias命令可以为常用的命令创建另一个名称,可以创建命令的别名。需要注意的是,命令别名属于内部命令,一个别名仅在它所被定义的shell进程中才有效。
env或printenv命令可以查看全局环境变量。
系统环境变量采用全大写字母,以区别于普通用户的环境变量。
要显示个别环境变量的值,可以使用printenv 命令,但是不要用env 命令。
echo命令也可以显示环境变量,但是得在前面加上$。在变量名前加上$ 可不仅仅是要显示变量当前的值。它能够让变量作为命令行参数。
set 命令会显示为某个特定进程设置的所有环境变量,包括局部变量、全局变量以及用户定义变量。
echo命令设置环境变量,如果要给变量赋一个含有空格的字符串值,必须用单引号来界定字符串的首和尾。没有单引号的话,bash shell会以为下一个词是另一个要执行的命令。
创建全局环境变量的方法是先创建一个局部环境变量,然后再把它导出到全局环境中。 这个过程通过export 命令来完成,变量名前面不需要加$。注意:子shell甚至无法使用export 命令改变父shell中全局环境变量的值。
unset 命令删除环境变量,删除时不使用$ 。
PATH 环境变量定义了用于进行命令和程序查找的目录。如果命令或者程序的位置没有包括在PATH 变量中,那么如果不使用绝对路径的话,shell是没法找到的。
大多数Linux发行版只用这四个启动文件中的一到两个: HOME/.bash_profile $HOME/.bashrc $HOME/.bash_login $HOME/.profile 注意,这四个文件都以点号开头,这说明它们是隐藏文件(不会在通常的ls 命令输出列表中出现)。
对全局环境变量来说(Linux系统中所有用户都需要使用的变量),可能更倾向于将新的或修改过的变量设置放在/etc/profile文件中,但如果升级了所用的发行版,这个文件也会跟着更新,那所有定制过的变量设置可就都没有了。最好是在/etc/profile.d目录中创建一个以.sh结尾的文件。把所有新的或修改过的全局环境变量设置放在这个文件中。
存储个人用户永久性bash shell变量的地方是$HOME/.bashrc文件。这一点适用于所有类型的shell进程。
现在,绝大多数Linux系统都将用户密码保存在另一个单独的文件中(叫作shadow文件,位置在/etc/shadow)。只有特定的程序(比如登录程序)才能访问这个文件。
useradd命令用于创建新用户。
userdel命令用于删除用户,默认只删除用户信息不会删除关联文件,加上-r参数,会删除HOME目录及邮件目录。
usermod命令是用户账户修改工具中最强大的一个,可以修改大部分字段,加上对应的命令行参数即可。
finger命令可以非常方便地查看Linux系统上的用户信息。
Linux系统上共享文件的方法是创建组。
fdisk命令用来对存储设备进行分区,以便安装文件系统。
Linux支持逻辑卷管理,这是一种跨多个存储设备创建虚拟分区的方法。这种方法允许你轻松地扩展一个已有文件系统,而不用完全重建。
dpkg命令可以列出包中的所有文件。
aptitude命令安装软件包。如apitude search wine……apitude install wine……apitude purge wine……
aptitude 默认的软件仓库位置是在安装Linux发行版时设置的。具体位置存储在文件/etc/apt/sources.list中。
要找出系统上已安装的包,可在shell提示符下输入如下命令: yum list installed。
手动下载rpm 安装文件并用yum 安装,这叫作本地安装 。基本的命令是: yum localinstall package_name.rpm。
从源码安装软件,先tar解压,然后list看有什么文件,再用make命令编译源码,最终会创建可执行文件。
vim编辑器、nano编辑器、KWrite编辑器、gedit编辑器
posted @ 2025-01-03 09:28  IT王师傅  阅读(32)  评论(0)    收藏  举报