Linux学习之Bash命令
1. man命令用来访问存储在Linux系统上的手册页面,如: man xtern如果不记得命令名,可以使用关键字搜索手册页,语法是:man -k 关键字2.遍历目录 cd命令cd destination绝对文件路径: 绝对文件路径总是以正斜线(/)作为起始,指明虚拟文件路径的根目录。如:cd/user/binpwd命令显示当前工作目录相对文件路径:相对文件路径不以代表根目录的正斜线(/)开头,而
1. man命令用来访问存储在Linux系统上的手册页面,如: man xtern
如果不记得命令名,可以使用关键字搜索手册页,语法是:man -k 关键字
2.遍历目录 cd命令
cd destination
绝对文件路径: 绝对文件路径总是以正斜线(/)作为起始,指明虚拟文件路径的根目录。如:
cd /user/bin
pwd命令显示当前工作目录
相对文件路径:相对文件路径不以代表根目录的正斜线(/)开头,而是以目录名(如果用户准备切换到当前工作目录下的一个目录)或是一个特殊字符开始。有两个特殊字符可用于相对文件路径中:
单点符(.),表示当前目录;
双点符(..),表示当前目录的父目录。
3. 文件和目录列表 ls命令
ls命令最基本的形式会显示当前目录下的文件和目录。基本的ls命令在某种意义上有点让人误解,它显示了当前目录下的文件和目录,但是并没有将全部都显示出来。Linux经常采用隐藏文件来保存配置信息。在Linux上,隐藏文件通常是文件名以点号开始的文件,这些文件并没有在默认的ls命令输出中显示出啦,因此我们称其为隐藏文件。要将隐藏文件和普通文件及目录一起显示出来,就得用到-a参数。
-R 参数是ls命令的另一个参数,叫做递归选项,列出了当前目录下包含的子目录中的文件。
-l 显示附加信息
过滤输出列表:
过滤输出列表是进行一个简单文本匹配的字符串。当用户指定特定文件的名称作为过滤器时,ls命令只会显示该文件的信息。当不知道要找的文件的确切名称,ls能够识别标准通配符,并在过滤器中用他们进行模式匹配:
问号(?):代表一个字符
星号(*)代表零个或多个字符。
如: ls -l my_script
ls -l my_scr?pt
ls -l my* ......
4. 处理文件
创建文件: touch命令
touch命令创建了你指定的新文件,并将你的用户名作为新文件的属主。但是文件的大小是零,因为只是创建了一个空文件。touch命令还可以用来改变文件的修改时间,这个操作并不需要改变文件的内容。
复制文件: cp命令
cp source destination
如果目标文件已经存在,cp命令可能并不会提醒这一点,最好加上 -i 选项,强制shell询问是否覆盖已有文件。
cp -R 命令,可以用它在一条命令中递归地复制整个目录的内容。
制表键自动补全,制表键自动补全允许你在输入文件名或目录名时按一下制表键,让shell帮忙将内容补充完整。
链接文件
符号链接:ln -s
硬链接: ln
重命名文件:mv命令
mv命令只影响文件名,但是inode编号和时间戳保持不变。
删除文件:rm命令
处理目录
创建目录: mkdir命令
要想同时创建多个目录和子目录,需要加入 -p 参数。 mkdir -p
删除目录:rmdir命令。
默认情况下。rmdir命令只能删除空目录。
rmdir -r 命令可以向下进入目录,删除其中的文件,然后再删除目录本身
rmdir -rf 命令可以一口气删除目录及其所有内容。
查看文件内容
file命令:它能够探测文件的内部,并决定文件是什么类型的。
查看整个文件:
cat命令:cat命令是显示文本文件中所有数据的得力工具。
cat -n :给所有行加上行号
cat -b:给有文本的行加上行号
cat -T: 不让制表符出现
more命令:显示文本文件的内容,但会在显示每页数据之后停下来
less命令: 除了支持more命令相同的命令集,它还包含更多的选项。
查看部分文件:
tail命令: 会显示文件最后几行的内容。默认是10行,也可以加-n,控制行数。
head命令:会显示文件开头那些行的内容。 -n
监测程序:
当程序运行在系统上时,我们称之为进程。要想监测这些进程,需要熟悉ps命令的用法。ps命令好比工具中的瑞士军刀,它能输出运行在系统上的所有程序的许多信息。
默认情况下,ps命令只会显示运行在当前控制台下的属于当前用户的进程。会显示进程ID(Process id,PID),它们运行在那个终端(tty),以及进程已用的CPU时间。
top 命令跟ps命令相似,能够显示进程信息,但它是实时显示的。
Kill命令:Kill命令可以通过进程id给进程发信号,默认情况下,kill命令会向命令行中列出的全部PID发送一个TERM信号。遗憾的是,你只能用进程的PID而不能用命令名,所以Kill命令有时并不好用。要发送进程信号,你必须是进程的属主或者或登录为root用户。TERM信号告诉进程可能的话就停止运行,不过,如果有不服管教的进程,那它通常会忽略这个请求,如果要强制终止,-s参数支持指定的其他信号。要检查kill命令是否有效,可在运行ps或top命令,看看问题进程是否已停止。
killall命令:支持通过进程名而不是PID来结束进程。也支持通配符。如killall http*,这个命令结束了所有以http开头的进程。
监测磁盘空间:
挂载存储媒体
linux文件系统将所有的磁盘都并入一个虚拟目录下,在使用心得存储媒体之前,需要把它放到虚拟目录下,这项工作称为挂载。
1.mount命令:默认情况下。mount命令会输出当前系统上挂载的设备列表。
mount命令提供如下四部分信息:
媒体的设备文件名
媒体挂载到虚拟目录的挂载点
文件系统类型
已挂载媒体的访问状态
要手动在虚拟目录中挂载设备,需要以root用户身份登录,或是以root用户身份运行sudo命令。手动挂载媒体设备的基本命令: mount -t type device directory
其中,type参数指定了磁盘被格式化的文件系统类型(vfat,Windows文件系统;ntfs,WindowsNT,XP,Vista以及Windows7中广泛使用的高级文件系统;iso9660,标准CD-ROM文件系统)。,后面两个参数定义了该存储设备的设备文件的位置以及挂载在虚拟目录中的位置,如 mount -t vfat /dev/sdb1 /media/disk.
2. umount 命令
从Linux系统中移除一个可移动设备时,不能直接从系统上移除,而应该先卸载。
umount [directory | device]
umount 命令支持通过设备文件或者是挂载点来指定要写在的设备。如果有任何程序正在使用设备上的文件,系统就不会允许卸载它。
3.df命令
df命令可以让你很方便地查看所有已挂载磁盘的使用情况。
df -h 把输出中的磁盘空间按照用户易读的形式显示,M,G。
4. du命令
du命令可以显示某个特定目录(默认情况下是单签目录)的磁盘使用情况。这一方法可用来快速判断系统上某个目录下是不是有超大文件。
du -c :显示所有已列出文件的总大小
du -h:按用户易读的格式输出大小
du -s:显示每个输出参数的总计
处理数据文件
1. 排序数据
sort命令:sort命令是对数据进行排序的。默认情况下,sort命令按照会话指定的默认语言的排序规则对文本中的数据进行排序。
sort -n 把数字识别成数字而不是字符,并且按值排序。
sort -M 能够识别三字符的月份名,并相应地排序。
2. 搜索数据: grep命令
grep [options] pattern [files] grep命令会在输入或指定的文件中查找包好匹配指定模式的字符的行,输出包含了匹配模式的行。
3.压缩数据
bizp2(.bz2,采用Burrows-Wheeler块排序文本压缩算法和霍夫曼编码)
compress(.Z,最初的Unix文件压缩工具,已经快没人用了)
gzip(.gz,GNU压缩工具,用Lempel-Ziv编码)
zip(.zip,Windows上PKZIP工具的Unix实现)
命令:
gzip: 用来压缩文件
gzcat:用来查看压缩过的文本文件的内容
gunzip:用来解压文件
gzip命令会压缩你在命令行指定的文件,也可以在命令行指定多个文件名甚至用通配符来一次性压缩批量文件。
归档数据:tar命令
Unix 和Linux上最广泛使用的归档工具是tar命令。
tar function [options] object1 object2 ...
function参数定义了tar命令应该做什么。
tar -cvf test.tar test/ test2/ //创建名为test.tar的归档文件,含有test和test目录内容。
在/etc/passwd文件中,在用户ID记录的第7个字段中列出了默认额shell程序,只要用户登录到某个虚拟控制台终端或是在GUI中启动终端仿真器,默认的shell程序就会开始运行。
默认的交互shell会在用户登录某个虚拟控制台终端或在GUI中运行终端仿真器时启动。不过还有另外一个默认shell是/bin/sh,它作为默认的系统shell,用于哪些需要在启动时使用的系统shell脚本。
并不是必须一直使用默认的交互shell。可以使用发行版中所有可用的shell,只需要输入对应的文件名就行了。例如,你可以直接输入命令/bin/dash来启动dash shell。可以输入exit来退出dash shell。
shell的父子关系
在CLI提示符后输入 /bin/bash命令或其他等效的bash命令时,会创建一个新的shell程序,这个shell程序被称之为子shell。子shell也拥有CLI提示符,同样会等待命令输入。在生成子shell进程时,只有部分父进程的环境被复制到子shell环境中,这会对包括变量在内的一些东西造成影响。子shell可以从父shell中创建,也可以从另一个子shell中创建。
exit命令不仅能够退出子shell,还能用来登出当前的虚拟控制台终端或终端仿真器软件,只需要在父shell中输入exit,就能够从容退出CLI。
就算不使用bash shell命令或是运行shell脚本,也可以生成子shell,一种方法就是使用进程列表。
进程列表:
可以在一行中指定要依次运行的一系列命令,这可以通过命令列表来实现,只需要在命令之间加入分号即可,如 pwd; ls; cd /etc; pwd; cd; pwd; ls。命令列表要想成为进程列表,这些命令必须包括在括号里,如(pwd; ls; cd /etc; pwd; cd; pwd; ls)。括号的加入使命令列表变成了进程列表,生成了一个子shell来执行对应的命令。
进程列表是一种命令分组,另一种命令分组是将命令放入花括号中,并在命令列表尾部加上分号。使用花括号进行命令分组并不会像进程列表那样创建出子shell。
在交互式shell中,一个高效的子shell用法就是使用后台模式。在后台模式中运行命令可以在处理命令的同时让出CLI,以供他用。
sleep命令接受一个参数,该参数是你希望等待(睡眠)的秒数,这个命令在脚本中常用于引入一段时间的暂停。要想将命令置入后台模式,可以在命令末尾加上字符&,如sleep 10&。
除了ps命令。也可以用jobs命令来显示后台作业信息。jobs命令可以显示出当前运行在后台模式中的所有用户的进程。jobs -l,可以显示出更多的信息。
后台模式非常方便,可以让我们在CLI中创建出有实用价值的子shell。
协程
协程可以同时做两件事,它在后台生成一个子shell,并在这个子shell中执行命令。要进行协程处理,得使用coproc命令,还有要在子shell中执行的命令,如 coproc sleep 10。除了会创建子shell外,协程基本上就是将命令置入后台模式。
外部命令和内建命令
外部命令,有时候也成为文件系统命令,是存在于bash shell之外的程序,它们并不是shell程序的一部分,外部命令通常位于 /bin,/user/bin,/sbin或/usr/sbin中。当外部命令执行时,会创建出一个子进程,这种操作被称为衍生,外部命令ps很方便显示出它的父进程以及自己所对应的衍生子进程。当进程必须执行衍生操作时,它需要花费时间和精力来设置新子进程的环境,所以说,外部命令多少还是有代价的。
内建命令不需要子进程来执行,它们已经和shell编译成一体,作为shell工具的组成部分存在,不需要借助外部程序文件来运行。所以内建命令的执行速度要更快,效率也更高。
可以使用type命令和which命令来查看是内建命令还是外部命令。
history命令:查看最近用过的命令列表。
输入 !!,然后按回车键,就能够唤出刚刚用过的那条命令来使用。
命令历史记录被保存在隐藏文件.bash_history中,它位于用户的主目录中。
查找文件 find命令: find . -name '文件名'
命令别名 alias命令:命令别名允许你为常用的命令(及其参数)创建另一个名称,从而将输入量减少到最低。
ctrl + c 命令,如果在Linux底下输入了错误的指令或参数,想让当前的程序停掉的话,可以输入这个命令。
ctrl + d命令,结束键盘输入,相当于 exit 命令。
shift + page up 往前翻页
shift + page down 往后翻页
更多推荐
所有评论(0)