Nenad Latinović 发布的文章

唷,唷,极客们!我们回来了,来完成最后一章的CLT。今天,我们将讨论一下任务控制。在这个里头,我们也将学习怎样来控制运行在我们计算机上的进程!

一个例子

正如我们所学的,我们可以直接在CLI中输入程序名称来运行该程序。例如,dolphin。如果我们输入:

dolphin

……dolphin,这个文件管理器,就打开了。如果在这个进程打开时你查看终端,你会发现不能访问命令提示符了,而且你也不能在同一个窗口中写一个新命令进去了。如果你终止dolphin,提示符又会出现了,而你又能输入一个新命令到shell中去了。那么,我们怎么能在CLI运行一个程序时,同时又能获得提示符以便进一步发命令。

dolphin &

……现在你让dolphin文件管理器在后台运行了,终端就可以空出来输入你需要的另外一个命令了。

现在,假设你忘了在dolphin后面输入‘&’字符,你只需要输入‘ctrl+z’,它会停止你的进程并把它放到空闲列表中去。要继续停止的进程,输入:

bg

……它会从后台重启进程。

jobs, ps

由于我们在后台运行着进程,你可以使用jobs或者使用ps来列出它们。试试吧,只要输入jobs或者输入ps就行了。下面是我得到的结果:

nenad@linux-zr04:~> ps
PID TTY          TIME CMD
8356 pts/1    00:00:00 bash
8401 pts/1    00:00:00 dolphin
8406 pts/1    00:00:00 kbuildsycoca4
8456 pts/1    00:00:00 ps

杀死进程

如果有个进程无响应了,怎么来处理掉它呢?可以使用kill命令。让我们在先前提到的dolphin进程上试试。首先,我们必须使用ps来鉴别该进程的PID。在我上述情况中,dolphin的PID是8401。那么让我们来杀死它,我只要输入:

kill 8401

……那么,它就把dolphin给杀死了。

kill的更多细节

kill的存在,不仅仅是为了终止进程,它最初是设计用来发送信号给进程。当然,有许多kill信号可以使用,根据你使用的应用程序不同而不同。请看下面的表:

务必试试这些信号。

结尾

我们以本节课来结束我们的CLT系列和周二必达,我希望其他像我这样的新手们能设法在他们的思想中摆脱控制台的神秘而学习掌握一些基本技能。现在对你们而言,所有剩下来要做的事,就是尽情摆弄它吧(只是别把“/”目录搞得太乱七八糟,因而你也不会诋毁什么东西了 :D)。

我们将在不久的将来看到其它更多的东西,因为有更多的系列文章来自这些文章的出处。别走开,同时……

……尽情享受!


via: https://news.opensuse.org/2014/08/12/command-line-tuesdays-part-eight/

作者:Nenad Latinović 译者:GOLinux 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

嗨,极客们,我已经检查了我们的课程,今天我们在八章课程里的第七部分。这就是说下周二我们还有一次课程,但也是最后一次“命令行星期二”课程。所以,今天,我们讨论一些关于权限的问题!

众所周知,一台机器可能会有多名用户共同使用。为了保证用户之间互不干扰,就需要分配不同的权限。我们已经讨论了文件权限的问题,你可以轻轻点此回顾一下:

chmod

chmod命令被用来修改目录或者文件的权限。为了修改权限,首先你得输入chmod命令,之后你得输入规范的权限修改,然后你就可以把目录或者文件的权限修改成你想要的。这可以采用多种方式完成,但是肖茨先生喜欢八进制表示法。

把权限想象成一系列的位,每一个不为空的权限槽就是1,空的权限槽就是0。举个例子:

rwx = 111
rw- = 110

等等

看一下二进制表示法:

rwx = 111 --> in binary = 7
rw- = 110 --> in binary = 6
r-x = 101 --> in binary = 5
r-- = 100 --> in binary = 4

现在,如果你想把一个文件的权限改为:文件所有者和文件所有组拥有读,写,执行权限,但是其他用户没有该文件任何权限,我们可以这样做:

chmod 770 example_file

su 和 sudo

有些时候普通用户需要成为超级用户,这样才能完成一些任务(通常是一些安装软件任务)。为了暂时的获取超级用户权限,我们可以使用su程序,输入:

su

输入你的超级用户密码,你就成为超级用户了。但是,警告:别忘记用一会之后(不需要的话)就退出超级用户模式。

在openSUSE和Ubuntu也其它的一些可选工具,它叫做sudo,sudo只是在某些方面和su不同,它是分配给制定用户的特殊命令,不像su,你可以用你自己用户的密码执行sudo,而不需要超级用户密码,举个例子:

sudo zypper in goodiegoodie

修改文件和组所有权

想要改变文件的所有者,你可以在超级用户模式下运行chown,举个例子,如果我想把文件的所有权从‘nenad’改为‘suse’,我可以这样做:

su
[输入密码]
chown suse example_file

同样地,我也可以改变组的所有权,使用稍有不同的chgrp命令,很简单:

chgrp suse_group example_file

下一次

正如我所阐述的,下一次我们就会结束这个系列。在此之后,相信你会做出自己的选择,和我一起徜徉在终端的黑暗之中,只有一个绿色的闪烁光标作为灯塔。在那之前,极客们,记住

....享受更多的乐趣!


via: https://news.opensuse.org/2014/08/05/command-line-tuesdays-part-seven/

作者:Nenad Latinović 译者:su-kaiyao 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

不管怎样,让我们继续我们今天的日程吧:输入/输出重定向。

我们已经用过的大多数命令,都把他们的结果张贴到了终端显示中。然而,我们也可以让这些命令的显示放进一个文件、设备中,或者作为其它命令的输入,一切都在重定向

标准输出

那么,命令行程序主要是怎么工作的呢?它们会将命令的结果丢给一个叫做标准输出的设备,然后,标准输出会将这些结果发送到你的显示设备上,这样你就可以畅快地阅读这些信息了。然而,你也可以让命令的结果显示到一个文本文件中,像这样,用“>”字符(我的例子):

man zypper > man.txt

这儿我所干的是, 我想要获得zypper的一个帮助页。但是,我想要把它放到一个文本文件中去,因而我可以在我需要他们的时候(例如,在论坛、IRC寻求帮助时)很方便地读取这些结果。所以,这个命令做的是,保存man zypper输出结果到我的家目录中的man.txt,这样你可以看到,我可以用gedit来打开它:

如果我重复了该命令,或者使用不同的命令重定向到了同名文件,那么它就会被一次又一次地覆盖。所以,在那种情况下,如果我想要把输出结果重定向并附加到现存文件中,我唯一能做的事情就是下一次使用“>>”来替换“>”。

标准输入

许多命令也可以接受来自称之为标准输入的设备的输入。默认情况下,输入来自键盘,然而也可以来自一个文件。要重定向它,使用跟前面相反的字符:‘<’。

请看下面的例子:

sort < man.txt

管道

要想把多个命令连接到一起,你可以使用管道。管道所要做的是,将一个命令的标准输出注入到另一个命令的标准输入。肖茨先生的最爱:

ls – l | less

通过使用‘| less’这个小把戏,你可以让任何命令滚动输出。 过滤器

过滤器

过滤器是管道中常用的程序。过滤器获取标准输入,对它进行操作,然后把结果发送到标准输出。它们可以以一种相当强大的方式处理信息。这儿提供了一个程序列表,大多数都是用作过滤器的。它们可以用于执行、查询,或者将帮助页重定向到它们,然后再重定向到一个文件!

过滤器:sort, uniq, grep (我们发现这一个东西遍布论坛,因此我建议大家深入研究一下), fmt, pr, head, tail, tr, sed, awk。

结束

我们只剩下几个课程来阐述CLI的基本用法了,到成熟期的时候,我希望大家都会对CLI兴趣会增多一点了,也希望大家在萧条期也进行一些探索!而在你们动手干的时候,我希望你们…… 玩得不亦乐乎!


via: https://news.opensuse.org/2014/07/30/command-line-somedays-part-six/

作者:Nenad Latinović 译者:GOLinux 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

对,你也许已经猜到了又是我们相见的时候了。这一次我们将会学习如何使用命令工作。因此,事不宜迟,我们直入正题吧。

肖茨先生指出,到现在为止,我们学习了一些神奇的命令及其参数和选项,而今天正是我们揭开他们那神秘面纱一角的一天。我们将会学习如下的一些命令及其作用:type, which, help和man。但是在此之前,我么先学习一下——

什么是命令?

我们可以将命令分为四个种类。

1)可执行的程序:命令可以是一个可执行程序。如果你在前面的课程中有遍历过你的系统,这也是你应该做的。你也许已经发现了/user/bin这个目录,你看到很多的像transmission-gtk, deluge-gtk等的名字。对我们新手来说,现在这些可以编译成二进制文件或者用脚本语言编写的可执行程序具体是什么并不太重要。重点是,他们是可执行文件,你可以运行它们。找到/user/bin这个目录,列出里面的文件,随便挑一个去运行它。

2)shell内置命令: bash提供了一系列的shell内置命令,例如,cd命令就是一个shell内置命令。

3)shell函数:内置于系统环境中的小型的shell脚本。现在我们简单的提及一下它,因为在后面的几个星期中我们将要学习它。

4)别名:你可以基于其他命令定义你自己的命令。我们也会在后面的课程中学习到。

现在,知道我们要处理的命令的哪一类是有意义的。我们可以使用type命令查看。

type

你可以使用type + command来查看你要使用的命令属于什么类型。你只要输入type command就可以得到命令类型的输出,如下:

type mkdir

或者

type ls

从上面例子可以看出‘ls’命令实际上是‘\_ls’的别名。(LCTT译注:不同机器上的别名定义可能不同,比如RedHat/Centos系列上,ls实际上是‘ls --color=auto’的别名,而这个‘\_ls’想必是openSUSE上的情况。)

which

有时(虽然在桌面系统中很少会出现这种情况),在一台机器中存在一个可执行程序的多个版本。为了找到某个可执行程序的准确位置,我们可以使用which命令。which命令只对可执行程序有用。

which transmission-gtk

如今,多数的命令都会附带说明文档,因此,当你在没有网络的的情况下使用命令行时,你不能在论坛或者IRC上提问,但是你又必须要知道某个命令的准确用法。此时你有两种解决方法,第一个是——

help

help命令对shell内置命令有用(在上面的第二类中我们有提到过)。所以,你可以选择一个shell内置命令为例,如cd,简单的输入help cd即可。你会得到一个有用的页面,去试一下看cd为我们提供了什么功能。该页面列出了该命令的用法和可选项(选项列在方括号中,表明它们是可选的,如果方括号中有垂直分隔符分隔某些选项,则这些选项是互斥的,不要同时使用他们!)

--help

(LCTT译注:Linux上的命令中,通常单字符参数前使用一个破折号,而多个字符的长参数则使用两个破折号,原文此处用的是“-help”,实际上这种情况很少,所以修正为“--help”)

help只对shell内置命令有用。但是很多的可执行程序有--help选项。其作用类似于help命令,但是你必须在你要查看帮助的命令后输入 --help。例如,transmission-gtk --help。试一下看在改该可执行程序中有什么可选项可以使用。

man

多数的可执行程序都提供一个正式发说明文档。你可以使用man命令查看这份说明文档。试一下只输入man program,看有什么输出。在你的系统中随便找一个程序去尝试一下。例如,我们试一下man transmission-gtk。你会打开了一个由目录分割的文件。这个文件包含该程序是什么、做什么和你可以怎样去使用它等的信息。但是这个文件并没有提供使用范例,因为它不是一个指导手册。(LCTT译注,man里面有时候也会带有一些范例,但是往往不会很详细,另外还有一个info命令,通常能得到更多的使用帮助。不过真正理解每个命令的各种用户,还是要多查阅各种资料,并亲自试验才行。)

这周我们就到先讲这里了。

我想再花一分钟来感谢大家对本节的建议和贡献。是你们让这个系列的文章变得越来越好,我希望在你们的帮助下,我们这些新用户在夏季结束前可以使用基本的命令行工具。你们是最棒的。像我一样的新用户们,我们都会感到失落,坚持到底,我们的付出总会有回报的!


via: https://news.opensuse.org/2014/07/15/command-line-tuesdays-part-five/

译者:cvsher 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

大家好。新的一周,新的冒险!

今天,我们将会学习使用四个相当简单的命令去操作文件。好,废话少说,我们开始吧。

在开始学习这些命令之前,我们先稍微说些题外话,讲讲“通配符”的用处。

通配符

使用图形工具区复制、粘贴、新建目录等操作也许很容易,但是若想完成一些更复杂的任务,例如仅仅将一个目录下的所有.html文件复制到另一个目录中、或者只复制在某个目录中不存在的文件,这时命令行也许会比较方便。我们回到通配符的学习中,通配符是shell的基本功能,它是一个由一些特殊字符组成的集合,它让你可以用一些简单的规则来选择出某些文件。(通配符可以出现在文件名中,用于指定文件名的字符个数和字母的大/小写等规则)。

如下表 :

下面是肖茨先生给出的一些实例,如下表:

如果你使用一个包含文件名参数的命令,你就可以使用通配符。

cp

cp是一个用于复制文件或者目录的命令,它的用法相当的简单。进入到你想复制的文件所在的目录,然后使用如下命令

cp file1 file2 -复制一个文件

或者

cp file1 file2 ... directory -从当前工作目录复制多个文件到指定的目录。

下表是肖茨先生给出的cp命令的一些选项:

mv

mv是今天的第二个命令,我们可以使用mv来重命名一个文件或目录,或者移动一个文件或目录。我们可以这样使用mv命令。

mv filename1 filename2 -若想将文件filename1重命名为filename2。

或者

mv file directory -若想将一个文件移动到某个目录。

下表是一些mv命令的实例

rm

rm命令是用于删除文件或目录,它的用法比较直接,如下:

rm file

或者

rm -r driectory

这里也有一个包含rm其他选项的表

但是,使用rm命令时要小心点。因为并没有撤销删除的选项,因此使用rm命令式要格外的小心,避免对你的系统造成不必要的破坏。

mkdir

mkdir是用于创建目录.它是今天最简单的一个命令:

mkdir directory

看,目录成功创建了!

这是本周的内容,下周二再见,致以最真诚的问候!


via: https://news.opensuse.org/2014/07/08/command-line-tuesdays-part-four/

译者:cvsher 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

今天,肖茨先生将带领我们游历文件系统的第一部分。我们将学到如何访问、列出目录内的文件,以及首次介绍一些选项的运用。OK,让我们开始学习这周的第一个命令。

ls

ls 是一个用来列出目录内文件的命令。通过添加选项来实现多种不同的用途。简单起见,你可以只需键入 ls 。但是,你也可以在命令后面添加一个选项,它会帮助你修饰你的命令。如果你想要随意摆弄一些信息时,这会帮到你的。举例来说,当你要从一个命令的大量输出中找寻指定信息,你可以用选项缩小范围来实现。

这就是选项的基础概念。我们可以用下面书写格式表示:

command(命令) -option(选项) argument(参数)

命令,恩...,我们可以输入 pwd、 ls, 或者我们到目前为止所有学过的命令。

以上我们已经阐述了选项的目的。但是我们需要注意一下书写格式:在前头添加一个破折号。所以,如果选项为 l, 你需要在命令后键入-l

参数是一个命令的操作对象(在这个例子中,它是一个目录,我们将会学到如何浏览它们)。

接着,让我们尝试在主目录里尝试用 ls 命令列出 /etc 目录内容。这次我们先不添加选项。

就这样,列出了一大堆的文件。它们还根据颜色进行了分类。蓝色的是目录,白色的为普通文件,绿色的似乎是某种 shell 脚本文件。除此之外,还有其他不同的颜色来代表不同的文件类型。

接下来,你可以在刚才的命令里添加 -l 选项。添加选项 -l 后也会列出同样的文件和目录,但是以长格式方式输出。如果你需要查看更多信息的话,这个选项将是不错的选择。

长格式

这样,用了长格式后,你可以看到更详细的信息,以及在每行开头类似-rw-r--r-- 令人抓狂的标示。实际上,这只是一种组合,代表了各种意义的信息。

(File Name)就是文件的名称。(Modification time)是文件最后修改的时间。(Size) 用 byte 计量的文件大小。(Group) 是组的名称,和拥有者一起构成文件权限。(Owner) 是文件拥有者的名称。最最重要的…

…文件权限

文件权限在长格式每一行的开端都显得非常的杂乱。第一个字符代表文件类型。如果是 'd' , 意味着它是一个目录。如果是 '-' , 意味着它是一个一般文件。接下来的三个字符分别代表拥有者的可读, 可写 ,可执行的权限。再接着三个字符表示组成员的享有的文件权限,而最后三个字符表示其他人(既不是拥有者也不是同组)对文件的享有权限。

例如,如果有个文件在长格式下显示为:-rw-r--r--, 这说明这是个普通文件(首字符 '-'),拥有者享有可读可写权限,但是没有可执行权限,导致拥有者无法执行该文件(首字符'-'后'rw-'),用户组和其他用户只享有可读权限(你不难发现'r--'字段在后面出现了两次 。如果用户组是 'rwx' 而不是 'r-',则意味着它们可读,可写,可执行)。

ls 的下个选项是 ls -la .. ,-a 它会列出所有的文件,包括隐藏文件。在通常情况下,隐藏文件是不可见的。用长格式列出当前工作目录下的父目录的所有文件。

less

less 是一个可以显示你的文本文件的命令。举例来说,你要在 /etc 下找寻名为 os-release 的文本文件。你可以使用 ls /etc 成功实现,而现在你想要阅读它的内容。

你只需要使用 less /etc/os-release。

..就这样了。

你要如何控制 less 呢?

简单的, 你只需要动动键盘就行了!

less 一次只会显示一个页面的文本。往前翻页你需要按 Page Up, 或者 'b'。往后翻页你可以按Page Down, 或者 空格。大写的G会跳转到文本的末尾,1G会跳转到文本的开端。/字符会在文本内搜索指定字符(例如,如果你输入 /suse ,它会找寻所有文本含有的 suse 并标记出来)。n 会重复执行你的搜索,h会显示所有的选项(h,即帮助的意思)。

按q退出 less 命令。

file

file 会显示文件的类型,是否是你要找的 ASCII 文本,还是 jpg 图片,bash 脚本等。让我们用 /etc/os-release 执行练习。

这样,如你所见,os-release 是一个 ASCII 文本文件。 请尝试其他文件,并观察结果。

下回见了,记住…

…一定要玩的开心啊!


via: https://news.opensuse.org/2014/07/01/command-line-tuesdays-part-three/

译者:Luoxcat 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出