分类 技术 下的文章

在Linux中,‘cd‘(改变目录)命令,是对新手和系统管理员来说,最重要最常用的命令。对管理无图形界面的服务器的管理员,‘cd‘是进入目录,检查日志,执行程序/应用软件/脚本和其余每个任务的唯一方法。对新手来说,是他们必须自己动手学习的最初始命令

Linux中15个cd命令举例

所以,请用心学习,我们在这会带给你15个基础的‘cd‘命令,它们富有技巧和捷径,学会使用这些了解到的技巧,会大大减少你在终端上花费的努力和时间

课程细节

  • 命令名称:cd
  • 代表:切换目录
  • 使用平台:所有Linux发行版本
  • 执行方式:命令行
  • 权限:访问自己的目录或者其余指定目录
  • 级别:基础/初学者
  1. 从当前目录切换到/usr/local
avi@tecmint:~$ cd /usr/local
avi@tecmint:/usr/local$
  1. 使用绝对路径,从当前目录切换到/usr/local/lib
avi@tecmint:/usr/local$ cd /usr/local/lib
avi@tecmint:/usr/local/lib$
  1. 使用相对路径,从当前路径切换到/usr/local/lib
avi@tecmint:/usr/local$ cd lib
avi@tecmint:/usr/local/lib$
  1. (a)切换当前目录到上一个目录
avi@tecmint:/usr/local/lib$ cd -
/usr/local
avi@tecmint:/usr/local$

(b)切换当前目录到上级目录

avi@tecmint:/usr/local/lib$ cd ..
avi@tecmint:/usr/local$
  1. 显示我们最后一个离开的工作目录(使用‘-’选项)
avi@tecmint:/usr/local$ cd --
/home/avi
  1. 从当前目录向上级返回两层
avi@tecmint:/usr/local$ cd ../../
avi@tecmint:/$
  1. 从任何目录返回到用户home目录
avi@tecmint:/usr/local$ cd ~
avi@tecmint:~$

avi@tecmint:/usr/local$ cd
avi@tecmint:~$
  1. 切换工作目录到当前工作目录(LCTT:这有什么意义嘛?!)
avi@tecmint:~/Downloads$ cd .
avi@tecmint:~/Downloads$

avi@tecmint:~/Downloads$ cd ./
avi@tecmint:~/Downloads$
  1. 你当前目录是“/usr/local/lib/python3.4/dist-packages”,现在要切换到“/home/avi/Desktop/”,要求:一行命令,通过向上一直切换直到‘/’,然后使用绝对路径
avi@tecmint:/usr/local/lib/python3.4/dist-packages$ cd ../../../../../home/avi/Desktop/
avi@tecmint:~/Desktop$
  1. 从当前工作目录切换到/var/www/html,要求:不要将命令打完整,使用TAB
avi@tecmint:/var/www$ cd /v<TAB>/w<TAB>/h<TAB>
avi@tecmint:/var/www/html$
  1. 从当前目录切换到/etc/v\_\_ \_,啊呀,你竟然忘了目录的名字,但是你又不想用TAB
avi@tecmint:~$ cd /etc/v*
avi@tecmint:/etc/vbox$

请注意:如果只有一个目录以‘v‘开头,这将会移动到‘vbox‘。如果有很多目录以‘v‘开头,而且命令行中没有提供更多的标准,这将会移动到第一个以‘v‘开头的目录(按照他们在标准字典里字母存在的顺序)

  1. 你想切换到用户‘av‘(不确定是avi还是avt)目录,不用TAB
avi@tecmint:/etc$ cd /home/av?
avi@tecmint:~$
  1. Linux下的pushed和poped

Pushed和poped是Linux bash命令,也是其他几个能够保存当前工作目录位置至内存,并且从内存读取目录作为当前目录的脚本,这些脚本也可以切换目录

avi@tecmint:~$ pushd /var/www/html
/var/www/html ~
avi@tecmint:/var/www/html$ 

上面的命令保存当前目录到内存,然后切换到要求的目录。一旦poped被执行,它会从内存取出保存的目录位置,作为当前目录

avi@tecmint:/var/www/html$ popd
~
avi@tecmint:~$
  1. 切换到名字带有空格的目录
avi@tecmint:~$ cd test\ tecmint/
avi@tecmint:~/test tecmint$

avi@tecmint:~$ cd 'test tecmint'
avi@tecmint:~/test tecmint$

avi@tecmint:~$ cd "test tecmint"/
avi@tecmint:~/test tecmint$
  1. 从当前目录切换到下载目录,然后列出它所包含的内容(使用一行命令)
avi@tecmint:/usr$ cd ~/Downloads && ls
...
.
service_locator_in.xls
sources.list
teamviewer_linux_x64.deb
tor-browser-linux64-3.6.3_en-US.tar.xz
.
...

我们尝试使用最少的词句和一如既往的友好,来让你了解Linux的工作和执行。

这就是所有内容。我很快会带着另一个有趣的主题回来的。


via: http://www.tecmint.com/cd-command-in-linux/

作者:Avishek Kumar 译者:su-kaiyao 校对:wxy

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

问题:我试着在Linux上构建一个程序,该程序的开发版本是使用“autogen.sh”脚本进行的。当我运行它来创建配置脚本时,却发生了下面的错误:

Can't exec "aclocal": No such file or directory at /usr/share/autoconf/Autom4te/FileUtils.pm line 326.
autoreconf: failed to run aclocal: No such file or directory

我怎样才能修复这个程序?

开发版本常常是通过autogen.sh使用程序源代码生成的,构建过程包括验证程序功能和生成配置脚本。autogen.sh脚本依赖于autoreconf来调用autoconf,automake,aclocal和其它相关工具。

丢失的aclocal是automake包的一部分,因此,要修复该错误,请安装以下包。

在Debian,Ubuntu或Linux Mint上:

$ sudo apt-get install automake

在CentOS,Fedora或RHEL上:

$ sudo yum install automake 

via: http://ask.xmodulo.com/fix-failed-to-run-aclocal.html

译者:GOLinux 校对:wxy

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

问题:我试着通过运行apt-get update命令来再次同步包索引文件,但是却出现了“404 无法找到”的错误,看起来似乎是我不能从先前添加的第三方PPA仓库中获取最新的索引。我怎样才能清除这些破损而且陈旧的PPA仓库呢?
Err http://ppa.launchpad.net trusty/main amd64 Packages
  404  Not Found
Err http://ppa.launchpad.net trusty/main i386 Packages
  404  Not Found
W: Failed to fetch http://ppa.launchpad.net/finalterm/daily/ubuntu/dists/trusty/main/binary-amd64/Packages  404  Not Found

W: Failed to fetch http://ppa.launchpad.net/finalterm/daily/ubuntu/dists/trusty/main/binary-i386/Packages  404  Not Found

E: Some index files failed to download. They have been ignored, or old ones used instead.

当你试着更新APT包索引时,“404 无法找到”错误总是会在版本更新之后发生。就是说,在你升级你的Ubuntu发行版后,你在旧的版本上添加的一些第三方PPA仓库就不再受新版本的支持。在此种情况下,你可以像下面这样来鉴别并清除那些破损的PPA仓库

首先,找出那些引起“404 无法找到”错误的PPA。

$ sudo apt-get update | grep "Failed" 

在本例中,Ubuntu Trusty不再支持的PPA仓库是“ppa:finalterm/daily”。

移除PPA仓库吧。

 $ sudo add-apt-repository --remove ppa:finalterm/daily 

你得去重复重复再重复,把上面找到的所有过时的PPA仓库一个一个地移除。

在移除所有过时的PPA仓库后,重新运行“apt-get update”命令来检查它们是否都被成功移除。


via: http://ask.xmodulo.com/find-remove-obsolete-ppa-repositories-ubuntu.html

译者:GOLinux 校对:Caroline

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

我在过去已经多次涉及到在UEFI模式下安装Ubuntu 14.04与Windows 8/8.1双启动的话题。 但是要怎么从Windows双启动中卸载Ubuntu呢?下面我们将看到的教程适用于任意的Linux操作系统,如Ubuntu,Linux Mint,Elementary OS或其它任意Linux发行版。

如果你认为在双启动模式下安装Ubuntu与Windows 8共存是件难事,而从Windows双启动中移除Ubuntu将是很简单的,你的想法并不是完全错误的。如果你有个Windows安装介质的话,从Windows双启动中卸载Linux将是轻而易举的。

这个教程将教你如何在有Windows 8/8.1安装介质的情况下将Linux从Windows 8或Windows 8.1双启动中完全移除。

将Ubuntu从Windows 8双启动中安全卸载

你有没有Windows 8安装介质以及是否已经安装了Windows 8.1在你系统上这都不重要。它同样工作得很好。但是我不能说在Windows 7上也一样。如果你身边有Windows安装盘,让我们开始从Windows双启动中移除Ubuntu的进程吧。

从双启动中删除Linux分为两部分。第一部分是删除Linux安装的所在分区。第二部分是修复Windows启动引导,因为简单地将Linux分区删除会引起“Grub rescue”错误

第一部分:在Windows下删除Linux分区

第一步:

登录Windows。按下 Windows+R 然后在其中运行 diskmgmt.msc 命令。它将会打开Windows磁盘管理工具。

第二步:

在你安装了Linux之后,就能很容易地从大小上分辨出Linux分区。另一个分辨Linux分区的提示是找没有文件系统以及驱动器卷标的分区。Windows分区通常用卷标进行标记,比如C,D,E等等,而且通常是NTFS或FAT文件系统。

就像你所能看到的,我在这里有三个Linux分区,因为我在安装Ubuntu时单独地创建了根分区(root),交换分区(swap)和家目录(home)。

Step 3: 第三步:

选择Linux分区,右键点击并选择 删除卷 选项。

如果出现了警告,在这里选择是即可。

Step 4: 第四步:

被删除的分区会变成一块可用的空闲空间。你可以用它来扩展已有的卷或创建一个新的Windows分区。我会建议你创建一个新的驱动器(或是卷或者分区,随便你怎么叫),因为这样子万一你将来又想将Linux和Winodws双启动时会简单一点。

第二部分:修复Windows启动引导

一旦你删除了Linux分区,就是时候修复Windows启动引导了。这里的图片看起来可能不是很清楚,因为相对于Windows来说在Ubuntu下对登录画面进行截图要简单的多。我用手机相机拍下了这些照片。

第一步:

插入Windows 8安装介质并重启你的电脑。在启动的时候按下F10或F12进入BIOS/UEFI,选择从可移除介质启动(boot from removable disk)

第二步:

选择修复你的计算机(repair your computer):

第三步:

在这里选择疑难解答(Troubleshoot):

第四步:

在疑难解答页面,选择高级选项(Advanced options):

第五步:

找到这里的命令提示符(command prompt):

第六步:

在命令行中输入下列命令来修复Windows启动引导:

bootrec.exe /fixmbr

正常情况下,它是立即生效的,你甚至都不用等。

第七步:

一旦完成了这一步,重启你的电脑,这次从硬盘正常启动。你应该能够启动进入Windows。如果你仍然看到Grub rescue错误,试试下面的步骤。

第八步:如果第六步中的方法不起作用

如果第六步中的命令不起作用,试试高级疑难解答中的自动修复选项。

它会花点时间查找问题然后修复它。

现在如果你重启的话,你应该能够正常进入Windows,不再看到任何的Grub rescue错误提示。

我希望这个指南能够帮助你将Ubuntu从Windows 8双启动中完全移除。欢迎提出任何问题与建议。


via: http://itsfoss.com/uninstall-ubuntu-linux-windows-dual-boot/

作者:Abhishek 译者:alim0x 校对:Caroline

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

如果你已经在IT圈内混久了, 应该对 SSH 这个了不起的工具及其安全特性有所耳闻吧. 本教程可以让你在短时间内掌握通过 SSH 安全便利地连接到远程计算机的技术.

如果你对 SSH 还没什么概念, 可以先访问 维基百科 进行了解.

基本用法

最简单的 SSH 命令只需要指定用户名和主机名参数即可. 主机名可以是 IP 地址或者域名. 命令格式如下:

$ ssh user@hostname

比如要在我的局域网内登录一个树莓派系统, 只需要简单的在命令行输入如下命令:

$ ssh [email protected]

命令中的 pi 和 10.42.0.47 分别是我的树莓派系统的用户名和局域网 IP 地址. 实际使用时主机名需要改成你的目标主机(局域网内或者远程)的 IP 地址.

basic ssh

如果你能够成功登陆, 那么下面的内容对你来说就轻而易举了.

使用其他端口

SSH 默认连接到目标主机的 22 端口上,但是由于各种原因你可能需要连接到其他端口.

$ ssh -p 10022 user@hostname

如上命令就是通过添加参数 -p 指定端口号为 10022.

远程执行命令

有时在远程主机执行一条命令并显示到本地, 然后继续本地工作是很方便的. SSH 就能满足这个需求:

$ ssh [email protected] ls -l

比如上面这个命令就会枚举远程主机的主目录内容并在本地显示. 是不是很酷? 你可以尝试下其他命令看看.

remote command

挂载远程文件系统

另外一个很赞的基于 SSH 的工具叫 sshfs. sshfs 可以让你在本地直接挂载远程主机的文件系统.

$ sshfs -o idmap=user user@hostname:/home/user ~/Remote

比如下面这条命令:

$ sshfs -o idmap=user [email protected]:/home/pi ~/Pi

该命令就将远程主机 pi 用户的主目录挂载到本地主目录下的 Pi 文件夹.

要详细了解可以参考 sshfs 教程.

X11 图形界面

假如现在你想要在远程主机运行一个图形界面的程序, SSH 已经帮你想到了! 用前面提到的 SSH 基本命令加上参数 -X 连接到远程主机即可开启 X11 转发功能. 登录后你可能觉得没什么差别, 但是当你运行一个图形界面程序后就会发现其中的不同的.

$ ssh -X [email protected]

$ pistore

如果你想在运行图形界面程序的同时做些别的事情, 只需要简单地在命令末尾加一个 & 符号.

$ pistore&

X11 forwarding

转义字符

SSH 提供了多样的转义字符功能. 用 SSH 连接到任意一台远程主机然后输入 ~? 你就可以看到支持的转义字符和功能说明列表. 以下例子展示了 ~#~C 的效果.

escape sequences

配置 SSH

如果你需要改变 SSH 的配置, 请用你喜好的文本编辑器打开 /etc/ssh/sshd\_config 进行编辑. 比如你想改变登陆的标语, 在配置文件中找到下面这行:

#Banner none

删除 # 字符(取消该行的注释), 将 none 替换为包含你期望显示内容的文件地址. 修改后该行应该类似这样:

Banner /etc/issue

在配置文件 /etc/ssh/sshd\_config 中你还可以找到端口号, 空闲超时时间等配置项. 配置项大都比较容易理解, 但是保险起见在你修改一些不是很确定的配置项时最好参考下 SSH 的帮助文档.

构建 ssh 密钥对

运行以下命令创建密钥对:

$ ssh-keygen -t dsa

此命令会要求你输入密码(可以留空), 然后就会生成密钥并会显示一张该密钥对应的随机图.

generate key pair

寻找主机密钥

在你准备添加密钥之前不妨先用以下命令看看是否已经添加了对应主机的密钥了.

$ ssh-keygen -F 10.42.0.47

find hostkey

删除主机密钥

某些情况下, 比如主机地址更改或者不再使用某个密钥, 你就可能需要删除某个密钥.

$ ssh-keygen -R 10.42.0.47

用以上命令就可删除. 这比手动在 ~/.ssh/known\_hosts 文件中删除要方便很多.

remove hostkey

总结

通过以上的内容你应该可以轻松使用 SSH 了. SSH 还有很多功能值得你去发掘, 这就要看你的想象力了。


via: http://linoxide.com/linux-command/pocket-guide-linux-ssh-command/

作者:Bobbin Zachariah 译者:henryfour 校对:Caroline

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

Hello,我是——邪恶君子!今天呢,给大家分享一下Linux上iSCSI的搭建,通过文字+图像的解说,不管你是小白还是菜鸟,都能够让你掌握搭建iSCSI的精华所在!

废话不多说,看招:

首先呢,给大家说一下本次教程的环境:系统版本:RedHat Enterprise Linux 6.2

在搭建iSCSI前呢,先把SELinux禁用;关闭防火墙并清空所有规则。并配置好yum源(直接挂载本地光盘,yum源指向本地就行)。

开始搭建

首先要安装一个包:scsi-target-utils-1.0.14-4.el6.x86\_64

#yum -y install scsi-target-utils

在这或许会有人抱怨了,邪恶啊,这么长的名字记不住肿么办?不要怕,没事,邪恶教你一招:直接执行命令#yum -y install scsi-target* 也可以,这下简单多了吧。

好了,安装完以后,要启动服务,iSCSI的服务为tgtd,直接启动就行了

#service tgtd start
#chkconfig tgtd on (设为开机启动)

到此,我们安装完毕,简单吧!!!

创建iSCSI

在创建前呢,你要在你的电脑上先分出一个区用来搭建iSCSI存储。邪恶这次是分出一个5G大小的分区来创建iSCSI,给大家附上我的分区图:

大家看到了吧,sda5,大小为5G!

其实,在这里简单的提一下,分区的大小你自己随便定,也可以是一个硬盘,都行!

接下来呢,就是激动人心的时刻,关键来了哦,邪恶所说的精华就是接下来的内容,看招:

执行下面的三条命令:

#tgtadm --lld iscsi --mode target --op new --tid 1 -T iqn.mailtest.com.20140916:disk1
#tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 -b /dev/sda5
#tgtadm --lld iscsi --mode target --op bind --tid 1 -I ALL

给大家简单解释一下命令,建议大家在执行前先执行一下

#tgtadm --help

看一下命令的帮助文档。

第一条命令,只需掌握 --tid后面的参数“1”,这个“1”在这里就是个编号,你也可以设为2,不过建议大家从1开始,习惯嘛!然后就是-T后面的参数,-T后面的参数自己随便写,但记住一点就行,需以iqn开头,然后后面的你想怎么起都行,一般都是"iqn.hostname:diskX",hostname就是你的主机名,X代表编号。

第二条命令,需要记住--tid后面的参数必须要和第一条的一样, --lun后面的参数也是代表编号,和第一条命令的--tid类似,-b后面就跟你要搭建iSCSI的分区就行。

第三条命令,更简单,只需注意--tid后面的参数要和第一条、第二条的一样,其实第二条和第三条都是以第一条的为基准的,然后就是-I后面的参数,这里设置为ALL是代表允许所有的IP都可以访问。你也可以设置为个别的IP,具体的可以参考帮助文档。

执行完以后,可以执行

#tgt-admin -s

查看一下自己创建的iSCSI,这里把我自己搭建效果图给大家附上

从图上可以看到,刚才自己创建的iSCSI Target及编号,也可以看到自己创建的lun和编号,最下面可以显示出用的哪个分区创建的。

到此,搭建完毕,是不是很简单!

这在儿,有个要点需记住,那就是开机后,上面3条命令创建的iSCSI会失效,要想开机后还有,那就把上面的3条命令添加到/etc/rc.d/rc.local里面,看图:

这样,以后在重启或关机后再开机就可以保证创建的iSCSI失效了!

或许到这儿,就会有人问了:“邪恶,你为什么不讲一下理论知识?”。

邪恶回答你的很简单:一讲理论就讲的多了,就需要花很大的文字去讲解,而且邪恶也不敢保证理论讲的是否正确。邪恶在此顺便给大家说一下,邪恶的原则是通过自己的实践和自己的心得和体会,尽量的写的精简点,然后分享给大家,让菜鸟和小白都能快速掌握,至于理论知识,百度上一大堆,都解释的很详细,一看就明白!

客户端测试

接下来,邪恶再给大家讲一下怎么验证自己搭建的iSCSI是否可用,同时也讲一下客户端的操作!看招:

首先,客户端需要先安装iscsi-initiator-utils包,执行命令安装:

#yum -y install iscsi-initiator-utils

如果这两个包的名字也记不住肿么办,没问题,邪恶我再教你一招,直接执行命令:#yum -y install iscsi-init*

安装完毕后,启动相应的服务,并设置为开机启动,命令:

#service iscsi start
#chkconfig iscsi on
#service iscsid start
#chkconfig iscsid on

好了,到此呢,准备工作已准备完毕,各位,接下来就是见证神奇的时刻:

在客户端执行下面两条命令:

#iscsiadm -m discovery -t sendtargets -p 10.30.12.121:3260(效果看下图)

到这一步就可以看出,你服务端创建的iSCSI Target 的编号和名称。这条命令只需记住-p后面跟iSCSI服务的地址就行了,也可以是主机名,都可以!3260是服务的端口号,默认的!

#iscsiadm -m node -T iqn.mailtest.com.20140916:disk1 -p 10.30.12.121:3260 -l(效果看下图)

好了,已经看到successful。成功了!验证和客户端都是这样操作的,两条命令就okay了!

简单吧!这时,你就可以执行#fdisk -l 查看自己的分区了,会多出一个硬盘,效果见图:

看到了吧,我已经用红色的框框给大家标注出来了,是不是很神奇呢?

各位!到此,整个教程就结束了!你是否学会了呢!不管是否掌握了,先给自己鼓个掌吧,辛苦自己可以从头仔细认真的学到尾!谢谢大家的支持,希望可以多多交流!欢迎大家指出有错误的地方,或者写的不好的地方,供改进,促提升!