2015年9月

FISH(friendly interactive shell)是一个用户友好的命令行 shell,主要是用来进行交互式使用。shell 就是一个用来执行其他程序的程序。

FISH 特性

自动建议

fish 会根据你的历史输入和补完来提供命令建议,就像一个网络浏览器一样。注意了,就是Netscape Navigator 4.0!

漂亮的VGA 色彩

fish 原生支持 term256, 它就是一个终端技术的艺术国度。 你将可以拥有一个难以置信的、256 色的shell 来使用。

理智的脚本

fish 是完全可以通过脚本控制的,而且它的语法又是那么的简单、干净,而且一致。你甚至不需要去重写。

基于 web 的配置

对于少数能使用图形计算机的幸运儿, 你们可以在网页上配置你们自己的色彩方案,以及查看函数、变量和历史记录。

帮助手册补全

其它的 shell 支持可配置的补全, 但是只有 fish 可以通过自动转换你安装好的 man 手册来实现补全功能。

开箱即用

fish 将会通过 tab 补全和语法高亮使你非常愉快的使用shell, 同时不需要太多的学习或者配置。

在ubuntu 15.04 上安装FISH

打开终端,运行下列命令:

sudo apt-add-repository ppa:fish-shell/release-2
sudo apt-get update
sudo apt-get install fish

使用FISH

打开终端,运行下列命令来启动FISH:

fish

欢迎来到 fish,友好的交互式shell,输入指令 help 来了解怎么使用fish。

阅读FISH 文档 ,掌握使用方法。


via: http://www.ubuntugeek.com/fish-a-smart-and-user-friendly-command-line-shell-for-linux.html

作者:ruchi 译者:oska874 校对:wxy

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

Linux 4.2 内核涉及到史上最多的贡献者数量,内核开发者 Jonathan Corbet 如是说。

西雅图报道。Linux 内核持续增长:代码量在增加,代码贡献者数量也在增加。而随之而来的一些挑战需要处理一下。以上是 Jonathan Corbet 在今年的 LinuxCon 的内核年度报告上提出的主要观点。以下是他的主要演讲内容:

Linux 4.2 内核已经于上月底释出。Corbet 强调有 1569 名开发者为这个版本贡献了代码,其中 277 名是第一次提交代码。

越来越多的开发者的加入,内核更新非常快,Corbet 估计现在大概 63 天就能产生一个新的内核里程碑。

Linux 4.2 涉及多方面的更新。其中一个就是引进了 OverLayFS,这是一种只读型文件系统,它可以实现在一个容器之上再放一个容器。

网络系统对小包传输性能也有了提升,这对于高频金融交易而言非常重要。提升的方面主要集中在减小处理数据包的时间的能耗。

依然有新的驱动中加入内核。在每个内核发布周期,平均会有 60 到 80 个新增或升级驱动中加入。

另一个主要更新是实时内核补丁,这个特性在 4.0 版首次引进,好处是系统管理员可以在生产环境中打上内核补丁而不需要重启系统。当补丁所需要的元素都已准备就绪,打补丁的过程会在后台持续而稳定地进行。

Linux 安全, IoT 和其他关注点

过去一年中,安全问题在开源社区是一个很热的话题,这都归因于那些引发高度关注的事件,比如 Heartbleed 和 Shellshock。

“我毫不怀疑 Linux 代码对这些方面的忽视会产生一些令人不悦的问题”,Corbet 原话。

他强调说过去 10 年间有超过 3 百万行代码不再被开发者修改,而产生 Shellshock 漏洞的代码的年龄已经是 20 岁了,近年来更是无人问津。

另一个关注点是 2038 问题,Linux 界的“千年虫”,如果不解决,2000 年出现过的问题还会重现。2038 问题说的是在 2038 年一些 Linux 和 Unix 机器会死机(LCTT译注:32 位系统记录的时间,在2038年1月19日星期二晚上03:14:07之后的下一秒,会变成负数)。Corbet 说现在离 2038 年还有 23 年时间,现在部署的系统都会考虑 2038 问题。

Linux 已经启动一些初步的方案来修复 2038 问题了,但做的还远远不够。“现在就要修复这个问题,而不是等 20 年后把这个头疼的问题留给下一代解决,我们却享受着退休的美好时光”。

物联网(IoT)也是 Linux 关注的领域,Linux 是物联网嵌入式操作系统的主要占有者,然而这并没有什么卵用。Corget 认为日渐臃肿的内核对于未来的物联网设备来说肯定过于庞大。

现在有一个项目就是做内核最小化的,获取足够的支持对于这个项目来说非常重要。

“除了 Linux 之外,也有其他项目可以做物联网,但那些项目不会像 Linux 一样开放”,Corbet 说,“我们不能指望 Linux 在物联网领域一直保持优势,我们需要靠自己的努力去做到这点,我们需要注意不能让内核变得越来越臃肿。”


via: http://www.eweek.com/enterprise-apps/a-look-at-whats-next-for-the-linux-kernel.html

作者:Sean Michael Kerner 译者:bazz2 校对:wxy

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

作为开源爱好者,你一定读过 ESR(Eric S. Raymond)的里程碑著作《大教堂与集市》,甚至在各种开源集会中多次见过他的身影。

上个月,ESR 在 www.patreon.com 上发起来一份捐赠众筹,请求大家帮助他,让他能继续为互联网世界奉献。以下是他的众筹全文:

Every time you use a Web browser, locate yourself on Google Maps, draw money from an ATM, or play on a game console, you rely on computer code I wrote and gave away.

每当你使用浏览器、在 Google 地图上定位、从 ATM 里面取钱、或者玩主机游戏时,你都用到了我编写和贡献的那些计算机代码。

The Internet was built by people like me. We're still out there, patiently building things and fixing bugs and putting in our time to make sure your world keeps working. We're mostly volunteers, because there is no way to wrap a business model around the most essential services. We do what we do for love, and because software is our art - and because, in the Internet-dependent 21st century, we know civilization would be lost without us just as surely as if the roads and sewers and power grid stopped working.

互联网是由像我这样的人构建的。我们仍然在工作,耐心的建设、修复问题、花费我们的时间来让你的世界继续工作。我们大多是志愿者,因为没有办法将这些基础服务包装到一个商业模式上。我们为爱而工作,因为软件就是我们的艺术,也因为我们知道,在离不了互联网的21世纪,如果没有我们,文明就将不再,就像没有了道路、下水道和电网一样。

It's hard to notice us, because we're not the people who write the programs you can easily see. Ours is the software behind the software - the programs and service libraries that paint pixels on your display, move bits along the wires, allow hardware to talk to other hardware. (For those of you more technically inclined, I'm talking about systems code rather than applications.)

你很难注意到我们,因为我们并非编写你常见程序的人。我们编写的是软件背后的软件——这些程序和服务库在你显示器上渲染像素、沿着电路移动字节、让硬件互相通讯。(说的更技术些,我这里说的是系统代码而不是应用。)

Though I'm a techie, I'm in a situation similar to a fine artist because the market has not figured out how to value and reward the work I feel called to do. Unlike most artists, it wouldn't be difficult for me to get a well-paid job - but then I'd have to work on what an employer wants, rather than what the world actually needs.

虽然我是一个技术人员,但我现在的这种处境更像一位优秀的艺术家,因为市场上没有办法评估我的价值和奖励我做的事情。不像大多数艺术家,我要找一份收入不菲的工作并不困难——但是这样我就得为这份薪水而工作了,而不是真正在世界所需要的地方奉献自己。

Pledge to me so I can keep delivering what the world actually needs.

请为我捐款吧,让我能继续为世界而奉献。

你可能会吃惊,ESR 这样伟大的人,怎么会面临生活困窘?

那是因为,奥巴马医改法案让他的妻子丢掉了全职工作及医保,另外,这个医改法案让个人健康保险费用涨到了“天上”。所以,他现在每个月要支出超过了按揭的费用。他每个月去看医生的费用就需要 $973,而这笔钱没有了着落。

如果你也愿意为我们的 ESR 捐赠一点——哪怕是 $1,那么请点此:https://www.patreon.com/esr?ty=h

截止到本文发稿时,ESR 已经达成了第一个里程碑 $500(购买测试装备来改进 NTP 互联网时间服务)。目前正在准备完成第二个里程碑 $973(每月医保支出) ,现在已经有110为捐赠者,每月达到了 $615 的捐赠。

在得到捐赠一个月之后,ESR 写了一篇博文,讲述了他是如何支配这些钱的:

在8月2号我去度假之前,我建立了一个捐赠众筹页。这件事的背景是我现在为 NTPsec 工作并获得了一些稳定的收入,但并不多。我的书的版税持续减少,而且我的妻子 Cathy 自从奥巴马医改法案使她失去她的全职的法律工作后,接手了所有她能接到的法律合同工作,但也收入甚微。另外,我们那辆开了八年的车也出了问题,修它的费用比它自身价值都贵得多,而房子也需要一个新的屋顶了,它看起来已经破得不行了。

(没错,我们的确有一些储蓄跟股票。但是,不,我不想碰这些资金,因为我还不想到我真的老的时候得去领救助金过活,或者因为挨冻受饿而死。况且,即便这样子做不会跟我的价值观相冲突,但是指望2035年的美国政府能够让我有足够的钱来购买食物和住所的这种想法再愚蠢不过了。)

稍微使我惊讶的是,在一个月的捐献中,这个页面吸引了67个赞助者,总共捐赠409.17美元,我当初想不到能得到这么多捐赠,毕竟这个网站看起来完全是面向那些头戴贝雷帽、鼻子穿环的艺术家人群的。但它确实管用,一定程度上。

所有这些也是为什么现在我新发布的公告出现在 Patreon 上(基本上所有的),而不是博客上。这是我最接近艺术内容的东西了,而它也确实也增加了捐赠金额。

第一个月份的 Patreon 捐款只够让我给 Great Beast 装额外 32GB 内存,这是为了进行 GCC 的 Subversion-to-Git 转换的工作需要的。它解决不了多少(例如说)医疗保险问题,感谢那位专权的混蛋,不断地插手干涉把医疗费用搅得齐天高。(还因此牵连了我妻子的工作--这事件在心理上对她伤害不少)

如果你喜欢这个博客,请慷慨地捐赠吧。无论你以“娱乐”之名,还是以“支持 GNOME 的基础建设,让文明延续下去”之名,每个人的一点点帮忙能使我们走得更远。

无论你承认与否,email并没有消亡。对那些对命令行至死不渝的 Linux 高级用户而言,离开 shell 转而使用传统的桌面或网页版邮件客户端并不适应。归根结底,命令行最善于处理文件,特别是文本文件,能使效率倍增。

幸运的是,也有不少的命令行邮件客户端,而它们的用户大都乐于帮助你入门并回答你使用中遇到的问题。但别说我没警告过你:一旦你完全掌握了其中一个客户端,你会发现很难回到基于图形界面的客户端!

要安装下述四个客户端中的任何一个是非常容易的;主要的 Linux 发行版的软件仓库中都提供此类软件,并可通过包管理器进行安装。你也可以在其它的操作系统中寻找并安装这类客户端,但我并未尝试过也没有相关的经验。

Mutt

许多终端爱好者都听说过甚至熟悉 Mutt 和 Alpine, 他们已经存在多年。让我们先看看 Mutt。

Mutt 支持许多你所期望 email 系统支持的功能:会话,颜色区分,支持多语言,同时还有很多设置选项。它支持 POP3 和 IMAP 这两个主要的邮件传输协议,以及许多邮箱格式。自从1995年诞生以来, Mutt 就拥有了一个活跃的开发社区,但最近几年,新版本更多的关注于修复问题和安全更新而非提供新功能。这对大多数 Mutt 用户而言并无大碍,他们钟爱这样的界面,并支持此项目的口号:“所有邮件客户端都很烂,只是这个烂的没那么彻底。”

Alpine

Alpine 是另一款知名的终端邮件客户端,它由华盛顿大学开发,设计初衷是作为一个开源的、支持 unicode 的 Pine (也来自华盛顿大学)的替代版本。

Alpine 不仅容易上手,还为高级用户提供了很多特性,它支持很多协议 —— IMAP, LDAP, NNTP, POP, SMTP 等,同时也支持不同的邮箱格式。Alpine 内置了一款名为 Pico 的可独立使用的简易文本编辑工具,但你也可以使用你常用的文本编辑器: vi, Emacs等。

尽管 Alpine 的升级并不频繁,不过有个名为 re-alpine 的分支为不同的开发者提供了开发此项目的机会。

Alpine 支持在屏幕上显示上下文帮助,但一些用户会喜欢 Mutt 式的独立说明手册,不过它们两个的文档都很完善。用户可以同时尝试 Mutt 和 Alpine,并由个人喜好作出决定,也可以尝试以下的几个新选择。

Sup

Sup 是我们列表中能被称为“大容量邮件客户端”的二者之一。自称“为邮件较多的人设计的命令行客户端”,Sup 的目标是提供一个支持层次化设计并允许为会话添加标签进行简单整理的界面。

由于采用 Ruby 编写,Sup 能提供十分快速的搜索并能自动管理联系人列表,同时还允许自定义插件。对于使用 Gmail 作为网页邮件客户端的人们,这些功能都是耳熟能详的,这就使得 Sup 成为一种比较现代的命令行邮件管理方式。

Notmuch

"Sup? Notmuch." Notmuch 作为 Sup 的回应,最初只是重写了 Sup 的一小部分来提高性能。最终,这个项目逐渐变大并成为了一个独立的邮件客户端。

Notmuch 是一款相当精简的软件。它并不能独立的收发邮件,启用 Notmuch 的快速搜索功能的代码实际上是设计成一个程序可以调用的独立库。但这样的模块化设计也使得你能使用你最爱的工具进行写信,发信和收信,集中精力做好一件事情并有效浏览和管理你的邮件。

这个列表并不完整,还有很多 email 客户端,它们或许才是你的最佳选择。你喜欢什么客户端呢?


via: http://opensource.com/life/15/8/top-4-open-source-command-line-email-clients

作者:Jason Baker 译者:KevinSJ 校对:wxy

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

我成功地在 Ubuntu 15.04 下用 Gnome Network Manager 创建了一个无线AP热点。接下来我要分享一下我的步骤。请注意:你必须要有一个可以用来创建AP热点的无线网卡。如果你不知道如何确认它的话,在终端(Terminal)里输入iw list

如果你没有安装iw的话, 在Ubuntu下你可以使用sudo apt-get install iw进行安装.

在你键入iw list之后, 查看“支持的接口模式”, 你应该会看到类似下面的条目中看到 AP:

Supported interface modes:

* IBSS
* managed
* AP
* AP/VLAN
* monitor
* mesh point

让我们一步步看:

1、 断开WIFI连接。使用有线网络接入你的笔记本。

2、 在顶栏面板里点击网络的图标 -> Edit Connections(编辑连接) -> 在弹出窗口里点击Add(新增)按钮。

3、 在下拉菜单内选择Wi-Fi。

4、 接下来:

a、 输入一个链接名 比如: Hotspot 1

b、 输入一个 SSID 比如: Hotspot 1

c、 选择模式(mode): Infrastructure (基础设施)

d、 设备 MAC 地址: 在下拉菜单里选择你的无线设备

5、 进入Wi-Fi安全选项卡,选择 WPA & WPA2 Personal 并且输入密码。 6、 进入IPv4设置选项卡,在Method(方法)下拉菜单里,选择Shared to other computers(共享至其他电脑)。

7、 进入IPv6选项卡,在Method(方法)里设置为忽略ignore (只有在你不使用IPv6的情况下这么做) 8、 点击 Save(保存) 按钮以保存配置。 9、 从 menu/dash 里打开Terminal。 10、 修改你刚刚使用 network settings 创建的连接。

使用 VIM 编辑器:

sudo vim /etc/NetworkManager/system-connections/Hotspot

或使用Gedit 编辑器:

gksu gedit /etc/NetworkManager/system-connections/Hotspot

把名字 Hotspot 用你在第4步里起的连接名替换掉。

a、 把 mode=infrastructure 改成 mode=ap 并且保存文件。 b、 一旦你保存了这个文件,你应该能在 Wifi 菜单里看到你刚刚建立的AP了。(如果没有的话请再顶栏里 关闭/打开 Wifi 选项一次)

11、你现在可以把你的设备连上Wifi了。已经过 Android 5.0的小米4测试。(下载了1GB的文件以测试速度与稳定性)


via: http://www.linuxveda.com/2015/08/23/how-to-create-an-ap-in-ubuntu-15-04-to-connect-to-androidiphone/

作者:Sayantan Das 译者:jerryling315 校对:wxy

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

当你进入了 Linux 的世界,在下载安装 了某个 Linux 发行版,体验了 Linux 桌面并安装了一些你喜爱和需要的软件之后,应该去了解下 Linux 真正的魅力所在:命令行。每一个 Linux 命令其实就是一个程序,借助这些命令,我们可以办到非常多的事情。下面将会为大家介绍一下几个常用的命令。

如何寻求帮助?

在 Linux 下遇到问题,最重要的是要自己寻求帮助,下面是三种寻求帮助的方法。

man

man 是 Linux 的帮助手册,即 manual 。因为大多数程序都会自带手册,所以可以通过 man 命令获取帮助。执行以后,在 man page 页面中按 q 退出。

获取 ls 的帮助

$ man ls

查看有多少(针对不同方面的)同名的手册

$ man -f ls
ls (1)               - list directory contents
ls (1p)              - list directory contents

查看特定的手册

$ man 1p ls

info

man 不同的是,可以像浏览网页一样在各个节点中跳转。

从文档首页开始浏览

$ info

获取特定程序的帮助

$ info program

help

除了上面的两种方法外,还有一种简单使用的方法,那就是 --help 参数,一般程序都会有这个参数,会输出最简单有用的介绍。

$ man --help       ### 获取 man 的帮助
$ info --help      ### 获取 info 的帮助
$ ls --help        ### 获取 ls 的帮助

如何简单操作?

Terminal(终端) 中,有许多操作技巧,这里就介绍几个简单的。

光标

  • up(方向键上) 可以调出输入历史执行记录,快速执行命令
  • down(方向键下) 配合 up 选择历史执行记录
  • Home 移动光标到本行开头
  • End 移动光标到本行结尾
  • PgUp 向上翻页
  • PaDN 向下翻页
  • ctrl + c 终止当前程序

Tab 补全

Tab 补全是非常有用的一个功能,可以用来自动补全命令或文件名,省时准确。

  • 未输入状态下连按两次 Tab 列出所有可用命令
  • 已输入部分命令名或文件名,按 Tab 进行自动补全,多用你就肯定会喜欢的了。

常用命令

以下命令按照通常的使用频度排列。

cd

cd 是打开某个路径的命令,也就是打开某个文件夹,并跳转到该处。

$ cd path      ### path 为你要打开的路径。

其中 path 有绝对路径和相对路径之分,绝对路径强调从 / 起,一直到所在路径。相对路径则相对于当前路径来说,假设当前家目录有etc 文件夹(绝对路径应为 /home/username/etc),如果直接 cd etc 则进入此文件夹,但若是 cd /etc/ 则是进入系统 etc ,多琢磨一下就可以理解了。另外在 Linux 中, . 代表当前目录, .. 代表上级目录,因此返回上级目录可以 cd ..

ls

lslist ,列出文件。

$ ls       ### 仅列出当前目录可见文件
$ ls -l    ### 列出当前目录可见文件详细信息
$ ls -hl   ### 列出详细信息并以可读大小显示文件大小
$ ls -al   ### 列出所有文件(包括隐藏)的详细信息

注意: Linux 中 以 . 开头的文件或文件夹均为隐藏文件或隐藏文件夹。

pwd

pwd 用于返回当前工作目录的名字,为绝对路径名。

$ pwd
/home 

mkdir

mkdir 用于新建文件夹。

$ mkdir folder
$ mkdir -p folder/subfolder    ### -p 参数为当父目录存在时忽略,若不存在则建立,用此参数可建立多级文件夹

rm

rmremove ,删除文件。

$ rm filename      ### 删除 filename
$ rm -i filename   ### 删除 filename 前提示,若多个文件则每次提示
$ rm -rf folder/subfolder/  ### 递归删除 subfolder 下所有文件及文件夹,包括 subfolder 自身
$ rm -d folder     ###  删除空文件夹

cp

cpcopy ,复制文件。

$ cp source dest            ### 将 source 复制到 dest
$ cp folder/*  dest         ### 将 folder 下所有文件(不含子文件夹中的文件)复制到 dest
$ cp -r folder  dest        ### 将 folder 下所有文件(包含子文件夹中的所有文件)复制到 dest

mv

mvmove ,移动文件。

$ mv source  folder        ### 将 source 移动到 folder 下,完成后则为  folder/source
$ mv -i source folder      ### 在移动时,若文件已存在则提示 **是否覆盖** 
$ mv source dest           ### 在 dest 不为目录的前提下,重命名 source 为 dest

cat

cat 用于输出文件内容到 Terminal 。

$ cat /etc/locale.gen     ### 输出 locale.gen 的内容 
$ cat -n /etc/locale.gen  ### 输出 locale.gen 的内容并显示行号

more

morecat 相似,都可以查看文件内容,所不同的是,当一个文档太长时, cat 只能展示最后布满屏幕的内容,前面的内容是不可见的。这时候可用 more 逐行显示内容。

$ more /etc/locale.gen
$ more +100 /etc/locale.gen       ### 从 100 行开始显示

less

lessmore 相似,不过 less 支持上下滚动查看内容,而 more 只支持逐行显示。

$ less /etc/locale.gen
$ less +100 /etc/locale.gen

nano

nano 是一个简单实用的文本编辑器,使用简单。

$ nano  filename       ### 编辑 filename 文件,若文件不存在,则新打开一个文件,若退出时保存,则创建该文件

编辑完后,ctrl + X 提示是否保存,按 y 确定保存即可。

注意:在使用过程中可用 ctrl + G 获取帮助。

reboot

reboot 为重启命令。

# reboot         ### '$' 和 '#' 的区别在于 '$' 普通用户即可执行  
                 ### 而 '#' 为 root 用户才可执行,或普通用户使用 'sudo'

poweroff

poweroff 为关机命令。

# poweroff  ### 马上关机 

ping

ping 主要用于测试网络连通,通过对目标机器发送数据包来测试两台主机是否连通,及延时情况。

$ ping locez.com    ### 通过域名 ping,若 DNS 未设置好,可能无法 ping 通
$ ping linux.cn
PING linux.cn (211.157.2.94) 56(84) bytes of data.
64 bytes from 211.157.2.94.static.in-addr.arpa (211.157.2.94): icmp_seq=1 ttl=53 time=41.5 ms
64 bytes from 211.157.2.94.static.in-addr.arpa (211.157.2.94): icmp_seq=2 ttl=53 time=40.4 ms
64 bytes from 211.157.2.94.static.in-addr.arpa (211.157.2.94): icmp_seq=3 ttl=53 time=41.9 ms
^C
--- linux.cn ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 40.406/41.287/41.931/0.644 ms

$ ping 211.157.2.94   ### 通过 IP 地址 ping ,若无法 ping 通可能是网络连接出现问题

grep

grep 主要用于返回匹配的项目,支持正则表达式。

$ grep PATTERN filename      ### 返回所有含有 PATTERN 的行
$ grep zh_CN /etc/locale.gen ### 返回所有含 zh_CN 的行

mount

mount 用于挂载一个文件系统,需要 root 用户执行。一个磁盘可分为若干个分区,在分区上面可以创建文件系统,而挂载点则是提供一个访问的入口,将一个分区的文件系统挂载到某个目录中,称这个目录为挂载点,并且可以通过这个挂载点访问该文件系统中的内容。

例如一块硬盘在 Linux 中表示为 /dev/sda 那么它上面的分区应该表示为 /dev/sda1/dev/sda2

# mount                       ### 输出系统目前的挂载信息
# mount /dev/sda1 /mnt        ### 将 sda1 挂载到 /mnt 中
# cd /mnt                     ### 直接通过 /mnt 访问内容
# mount -o remount,rw  /mnt   ### 重新挂载 sda1 到 /mnt 并设置为 可读写 
# mount -a                    ### 挂载 fstab 文件配置好的文件系统

umount

umountmount 相反,是卸载一个挂载点,即取消该入口。

# umount /mnt                 ### 卸载 /mnt 这个挂载点的文件系统
# umount -a                   ### 卸载所有已挂载的文件系统 

tar

tar 主要用于创建归档文件,和解压归档文件,其本身是没有压缩功能的,但可以调用 gzipbzip2 进行压缩处理。
参数解释:

  • -c 创建归档
  • -x 解压归档
  • -v 显示处理过程
  • -f 目标文件,其后必须紧跟 目标文件
  • -j 调用 bzip2 进行解压缩
  • -z 调用 gzip 进行解压缩
  • -t 列出归档中的文件
$ tar -cvf filename.tar .       ### 将当前目录所有文件归档,但不压缩,注意后面有个 ’.‘ ,不可省略,代表当前目录的意思 
$ tar -xvf filename.tar         ### 解压 filename.tar 到当前文件夹
$ tar -cvjf filename.tar.bz2 .  ### 使用 bzip2 压缩
$ tar -xvjf  filename.tar.bz2   ### 解压 filename.tar.bz2 到当前文件夹
$ tar -cvzf filename.tar.gz     ### 使用 gzip  压缩
$ tar -xvzf filename.tar.gz     ### 解压 filename.tar.gz 到当前文件夹
$ tar -tf   filename            ### 只查看 filename 归档中的文件,不解压

ln

ln 主要用于在两个文件中创建链接,链接又分为 Hard Links (硬链接)和 Symbolic Links (符号链接或软链接),其中默认为创建硬链接,使用 -s 参数指定创建软链接。

  • 硬链接主要是增加一个文件的链接数,只要该文件的链接数不为 0 ,该文件就不会被物理删除,所以删除一个具有多个硬链接数的文件,必须删除所有它的硬链接才可删除。
  • 软链接简单来说是为文件创建了一个类似快捷方式的东西,通过该链接可以访问文件,修改文件,但不会增加该文件的链接数,删除一个软链接并不会删除源文件,即使源文件被删除,软链接也存在,当重新创建一个同名的源文件,该软链接则指向新创建的文件。
  • 硬链接只可链接两个文件,不可链接目录,而软链接可链接目录,所以软链接是非常灵活的。
$ ln source dest       ### 为 source 创建一个名为 dest 的硬链接
$ ln -s source dest    ### 为 source 创建一个名为 dest 的软链接

chown

chown 用于改变一个文件的所有者及所在的组。

# chown user filename        ### 改变 filename 的所有者为 user
# chown user:group filename  ### 改变 filename 的所有者为 user,组为 group
# chown -R root folder       ### 改变 folder 文件夹及其子文件的所有者为 root

chmod

chmod 永远更改一个文件的权限,主要有 读取写入执行 ,三种权限,其中 所有者用户组其他 各占三个,因此 ls -l 可以看到如下的信息

-rwxr--r-- 1 locez users   154 Aug 30 18:09 filename

其中 r=readw=writex=execute

# chmod +x filename        ### 为 user ,group ,others 添加执行权限
# chmod -x filename        ### 取消 user , group ,others 的执行权限
# chmod +w filename        ### 为 user 添加写入权限
# chmod ugo=rwx filename   ### 设置 user ,group ,others 具有 读取、写入、执行权限
# chmod ug=rw filename     ### 设置 user ,group 添加 读取、写入权限
# chmod ugo=--- filename   ### 取消所有权限

useradd

useradd 用于添加一个普通用户。

# useradd -m -g users -G audio -s /usr/bin/bash newuser     
### -m 创建 home 目录, -g 所属的主组, -G 指定该用户在哪些附加组, -s 设定默认的 shell ,newuser 为新的用户名

passwd

passwd 用于改变用户登录密码。

$ passwd                 ### 不带参数更改当前用户密码
# passwd newuser         ### 更改上述新建的 newuser 的用户密码 

whereis

whereis 用于查找文件、手册等。

$ whereis bash 
bash: /usr/bin/bash /etc/bash.bashrc /etc/bash.bash_logout /usr/share/man/man1/bash.1.gz /usr/share/info/bash.info.gz
$ whereis -b bash       ### 仅查找 binary
bash: /usr/bin/bash /etc/bash.bashrc /etc/bash.bash_logout
$ whereis -m bash       ### 仅查找 manual
bash: /usr/share/man/man1/bash.1.gz /usr/share/info/bash.info.gz

find

find 也用于查找文件,但更为强大,支持正则,并且可将查找结果传递到其他命令。

$ find . -name PATTERN    ### 从当前目录查找符合 PATTERN 的文件
$ find /home -name PATTERN -exec ls -l {} \;  # 从 /home 文件查找所有符合 PATTERN 的文件,并交由 ls 输出详细信息 

wget

wget 是一个下载工具,简单强大。

$ wget -O newname.md https://github.com/LCTT/TranslateProject/blob/master/README.md     ### 下载 README 文件并重命名为 newname.md
$ wget -c url     ### 下载 url 并开启断点续传

恭喜你,你已经学习了完了26 个基础的 Linux 命令。虽然这里只是一些最基础的命令,但是熟练使用这些命令就踏出了你从一位 Linux 新手成为 Linux 玩家的第一步!