Hits: 1

指令名称 : chmod
使用权限 : 所有使用者
使用方式 : chmod [-cfvR] [–help] [–version] mode file…
说明 : Linux/Unix 的档案调用权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所调用。
参数 :
mode : 权限设定字串,格式如下 : [ugoa…][[+-=][rwxX]…][,…],其中
u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
-c : 若该档案权限确实已经更改,才显示其更改动作
-f : 若该档案权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
–help : 显示辅助说明
–version : 显示版本
范例 :将档案 file1.txt 设为所有人皆可读取 :
chmod ugo+r file1.txt
将档案 file1.txt 设为所有人皆可读取 :
chmod a+r file1.txt
将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :
chmod ug+w,o-w file1.txt file2.txt
将 ex1.py 设定为只有该档案拥有者可以执行 :
chmod u+x ex1.py
将目前目录下的所有档案与子目录皆设为任何人可读取 :
chmod -R a+r *
此外chmod也可以用数字来表示权限如 chmod 777 file
语法为:chmod abc file
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
r=4,w=2,x=1
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=7。
范例:
chmod a=rwx file

chmod 777 file
效果相同
chmod ug=rwx,o=x file

chmod 771 file
效果相同
若用chmod 4755 filename可使此程序具有root的权限.
指令名称 : chown
使用权限 : root使用方式 : chmod [-cfhvR] [–help] [–version] user[] file…说明 : Linux/Unix 是多人多工作业系统,所有的档案皆有拥有者。利用 chown 可以将档案的拥有者加以改变。一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限。把计 :user : 新的档案拥有者的使用者 IDgroup : 新的档案拥有者的使用者群体(group)-c : 若该档案拥有者确实已经更改,才显示其更改动作-f : 若该档案拥有者无法被更改也不要显示错误讯息-h : 只对于连结(link)进行变更,而非该 link 真正指向的档案-v : 显示拥有者变更的详细资料-R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)–help : 显示辅助说明–version : 显示版本范例 :
将档案 file1.txt 的拥有者设为 users 群体的使用者 jessie :
chown jessie:users file1.txt

将目前目录下的所有档案与子目录的拥有者皆设为 users 群体的使用者 lamport :
chmod -R lamport:users *
-rw——- (600) — 只有属主有读写权限。
-rw-r–r– (644) — 只有属主有读写权限;而属组用户和其他用户只有读权限。
-rwx—— (700) — 只有属主有读、写、执行权限。
-rwxr-xr-x (755) — 属主有读、写、执行权限;而属组用户和其他用户只有读、执行权限。
-rwx–x–x (711) — 属主有读、写、执行权限;而属组用户和其他用户只有执行权限。
-rw-rw-rw- (666) — 所有用户都有文件读、写权限。这种做法不可取。
-rwxrwxrwx (777) — 所有用户都有读、写、执行权限。更不可取的做法。
以下是对目录的两个普通设定:

drwx—— (700) – 只有属主可在目录中读、写。
drwxr-xr-x (755) – 所有用户可读该目录,但只有属主才能改变目录中的内容。

————————————————————————–

运行 .sh 文件类型的文件:
用file命令测试一下看是什么类型的
file xxxx.sh
如果是Bourne-Again shell script 可以sh xxxx.sh 或者chmod +x xxxx.sh 再./xxx.sh
一般 .sh 的直接添加x(可执行属性) chmod +x xxx.sh 然后./xxx.sh就可以了

cat

cat 命令用于连接文件并打印到标准输出设备上。
使用权限
所有使用者

语法格式
cat [-AbeEnstTuv] [–help] [–version] fileName
参数说明:
-n 或 –number:由 1 开始对所有输出的行数编号。

-b 或 –number-nonblank:和 -n 相似,只不过对于空白行不编号。

-s 或 –squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。

-v 或 –show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。

-E 或 –show-ends : 在每行结束处显示 $。

-T 或 –show-tabs: 将 TAB 字符显示为 ^I。

-A, –show-all:等价于 -vET。

-e:等价于”-vE”选项;

-t:等价于”-vT”选项;

实例:
把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里:

cat -n textfile1 > textfile2
把 textfile1 和 textfile2 的文档内容加上行号(空白行不加)之后将内容附加到 textfile3 文档里:

cat -b textfile1 textfile2 >> textfile3
清空 /etc/test.txt 文档内容:

cat /dev/null > /etc/test.txt
cat 也可以用来制作镜像文件。例如要制作软盘的镜像文件,将软盘放好后输入:

cat /dev/fd0 > OUTFILE
相反的,如果想把 image file 写到软盘,输入:

cat IMG_FILE > /dev/fd0

列出所有的系统用户
cat /etc/passwd | awk -F “:” ‘{print $1}’
注:

1. OUTFILE 指输出的镜像文件名。
2. IMG_FILE 指镜像文件。
3. 若从镜像文件写回 device 时,device 容量需与相当。
4. 通常用制作开机磁片。

 mount 挂载 解释与使用

mount,也就是挂载。如果是让电脑自己挂载Windows的分区,也就是你直接在文件管理器里点击那些Windows的盘符,系统就会帮助你自动挂载,不过其挂载后的名称太长太复杂,不方便终端操作。所以还是手动挂载吧。关于挂载mount的更加详细的介绍,请自己去看看,直接在你的终端输入命令

man mount

好的,下面说具体怎么挂载,mount的命令选项有很多,这里只说几个。

1.看看mount的用法

mount -a [-t|-O] … : mount all stuff from /etc/fstab
mount device : mount device at the known place
mount directory : mount known device here
mount -t type dev dir : ordinary mount command

一般比较常用的是最后一种,甚至,你可以省略-t选项,因为Ubuntu会帮助你确定filesystem type,也就是文件系统类型,我们要挂载的windows分区,一般是fat和ntfs。

还是补充说一下最后一个用法里的几个命令选项。

-t 指出要挂载的分区的文件系统类型(注意,不是文件类型),windows分区常用的是fat(如果你用的另外一个系统是Windows XP,而且没有用分区魔术师之类的软件转换过你的分区的话),和ntfs(如果你用的是Windows 7)。

dev这个不是选项,是命令参数,dev就是device的缩写,这里写上你要挂载的硬件,http://www.linuxidc.com 具体如何表示,请看后文。

dir就是挂载点,你想要把硬件挂载到哪里就写上。

2.当然我们得要知道我们的硬件,我们这里只说硬盘,其他的硬件当然也可以挂载。用fdisk命令可以查看硬盘情况,或者准确的说,应该是可以查看分区情况。注意,这个命令需要root权限。

sudo fdisk -l

你应该会看到类似我这样的信息

Disk /dev/sda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders, total 156301488 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x624aa2e0

Device Boot Start End Blocks Id System
/dev/sda1 16128 24595514 12289693+ 7 HPFS/NTFS/exFAT
/dev/sda2 24595515 147797999 61601242+ f W95 Ext’d (LBA)
/dev/sda5 24595578 83891429 29647926 7 HPFS/NTFS/exFAT
/dev/sda6 83892224 87812020 1959898+ 82 Linux swap / Solaris
/dev/sda7 87799808 147818584 30009388+ 83 Linux

这里的sdax(x为数字,代表第几个分区)就是我的SCSI硬盘了,如果你的硬盘是IDE接口的,应该为hdx(同样这里的x也是数字)。Linux和Windows不同,他用sd表示SCSI硬盘,用hd来表示IDE硬盘,用字母a,b,c,d等来表示第几块硬盘,用数字来表示硬盘上的第几个分区。另外需要注意一点的是,逻辑分区的数字标号是从5开始的,1到4留给主分区,也就是说Linux规定每块硬盘最多有4个主分区,而Windows则只有一个主分区(其实就是我们常说的系统所在的盘,一般是C盘)。

3.查看了分区情况,我们就可以根据需要进行挂载操作了。比如我想要挂载sda1,对应的是Windows下的主分区,也就是C盘。我应该使用这样的命令。

sudo mkdir /mnt/driver_c #在/mnt目录下建立一个/driver_c做挂载点

sudo mount /dev/sda1 /mnt/driver_c

okay,这样子,Windows下的C盘就被挂载到了/mnt/driver_c目录下了,当然,你可以将分区挂载到任意的的目录下,这里只是习惯挂载这/mnt目录下。

再如,我现在要挂载原来Windows下的D盘到 /mnt/driver_d下。前面说过,Windows下只有C盘是住分区,其他的都是逻辑分区。这里的D盘就是第二个逻辑分区,应该就是sda5。所以,挂载D盘应该使用下面的命令。

sudo mkdir /mnt/driver_cd #在/mnt目录下建立一个/driver_d做挂载点

sudo mount /dev/sda5 /mnt/driver_d

4.当然了,在你不许要访问那些分区的时候,最后将他们卸载,以免操作失误。卸载的命令非常简单,umount dev,直接在umount后加上要卸载的device就可以了。比如,我现在要卸载刚才我们挂载了的C盘。我应该输入这样命令

sudo umont /dev/sda1

如果是要卸载我们刚才挂载的D盘,应该用这样的命令

sudo umount /dev/sda5

指令名称 : smbclient

smbclient(选项)(参数)

-B<ip地址>:传送广播数据包时所用的IP地址;
-d<排错层级>:指定记录文件所记载事件的详细程度;
-E:将信息送到标准错误输出设备;
-h:显示帮助;
-i<范围>:设置NetBIOS名称范围;
-I<IP地址>:指定服务器的IP地址;
-l<记录文件>:指定记录文件的名称;
-L:显示服务器端所分享出来的所有资源;
-M<NetBIOS名称>:可利用WinPopup协议,将信息送给选项中所指定的主机;
-n<NetBIOS名称>:指定用户端所要使用的NetBIOS名称;
-N:不用询问密码;
-O<连接槽选项>:设置用户端TCP连接槽的选项;
-p<TCP连接端口>:指定服务器端TCP连接端口编号;
-R<名称解析顺序>:设置NetBIOS名称解析的顺序;
-s<目录>:指定smb.conf所在的目录;
-t<服务器字码>:设置用何种字符码来解析服务器端的文件名称;
-T<tar选项>:备份服务器端分享的全部文件,并打包成tar格式的文件;
-U<用户名称>:指定用户名称;
-w<工作群组>:指定工作群组名称。

实例
列出某个IP地址所提供的共享文件夹

smbclient -L 198.168.0.1 -U username%password
像ftp客户端一样使用smbclient

smbclient //192.168.0.1/tmp -U username%password
执行smbclient命令成功后,进入smbclient环境,出现提示符:smb:/>

这里有许多命令和ftp命令相似,如cd 、lcd、get、megt、put、mput等。通过这些命令,我们可以访问远程主机的共享资源。输入?或help可以看到相关命令;

直接一次性使用smbclient命令

smbclient -c “ls” //192.168.0.1/tmp -U username%password

smbclient //192.168.0.1/tmp -U username%password
smb:/>ls
功能一样的。

创建一个共享文件夹

smbclient -c “mkdir share1” //192.168.0.1/tmp -U username%password
如果用户共享//192.168.0.1/tmp的方式是只读的,会提示NT_STATUS_ACCESS_DENIED making remote directory /share1

指令名称 : wget

10个 Wget 命令的实际案例. Wget 是一个用于下载文件的免费工具,它支持大多数常用的Internet协议,包括 HTTP, HTTPS, 以及 FTP.

Wget这个名字来源于 World Wide Web + get. Wget 有很多功能,可以很方便地做到下载大型文件,递归下载,一次下载多个文件以及镜像web网站和FTP站点.

Wget是非交互式的,但是使用起来相当的灵活. 你可以在脚本,cron任务,终端等地方调用它.
它可以在用户未登陆的情况下运行在后台. 也就是说你可以开始下载文件,然后退出系统,wget会在后台运行直到完成任务.

在本文中,我将演示一些wget的使用例子, 这些例子都很常见,比如下载文件,比如镜像整个网站.

1. 下载单个文件

wget最常用也是最简单的用法就是用来下载单个文件.
你可以用下面命令想下载最新版的WordPress
wget https://wordpress.org/latest.zip
从中可以看出,wget还会显示出下载的进度, 当前下载速度, 文件大小, 当前日期时间 以及待下载文件的名称.
在我们的例子中, wget会下载文件并以”latest.zip”为名存放到当前目录中.zip” name.

2. 下载文件并重命名

若你想以其他名称保存下载的文件,可以使用 =-O= 选项:
wget -O wordpress.zip https://wordpress.org/latest.zip
wget会下载文件并以”wordpress.zip”为名存放到当前目录中.zip” name.

3. 指定下载目录

使用 =-p= 选项指定下载目录:
wget -P /opt/wordpress https://wordpress.org/latest.zip
就会把文件下载到 /opt/wordpress 目录中.

4. 限制下载速度

当你下载大型文件时,可能耗时很长,这事你可以限制wget的下载速度以防止它把整个带宽都占满了.
下面命令就将下载速度限制在了每秒300k:
wget –limit-rate=300k https://wordpress.org/latest.zip

5. 断点续传

在下载大型文件时,可能会由于网络连接抖动造成下载中断.
为了避免重新下载,可以使用 =-c= 选项进行断点续传:
wget -c https://wordpress.org/latest.zip
若下载中断后你没有用 =-c= 进行断点续传,而是重新下载, wget 会在文件名后加上 “.1” 防止与前面下载的文件重名.

6. 后台下载

当下载大型文件时, 可以使用 =-b= 选项让wget在后台下载文件.
wget -b http://example.com/big-file.zip
输出内容会写入同目录下的 “wget-log” 文件, 这样你就可以用下面命令来检查下载状态了:
tail -f wget-log

7. 设置重试次数

若网络有问题导致下载时常中断,就可以使用 =-tries= 选项增加重试次数:
wget -tries=100 https://example.com/file.zip

8. 下载多文件

若你想同时下载多个文件,你可以将要在的文件URL存放在一个文本文件中(假设该文件名为download.txt).
下面命令创建一个文本文件:
touch download.txt
然后可以用 nano 编辑该文件,输入所有想下载的文件URL:
nano download.txt
http://example.com/file1.zip
http://example.com/file2.zip
http://example.com/file3.zip
保存该文件, 然后使用 =-i= 选项下载文本文件中保存的所有文件:
wget -i download.txt

9. 下载FTP文件

wget还支持下载FTP文件,可以为它设置用户名和密码,如下所示:
wget –ftp-user=username –ftp-password=password ftp://url-to-ftp-file

10. 下载整个网站

你甚至可以用wget下载完整的站点, 然后进行离线浏览. 方法是使用如下命令:
wget –mirror –convert-links –page-requisites —-no-parent -P /path/to/download https://example-domain.com
—mirror 会开启镜像所需要的所有选项.
–convert-links 会将所有链接转换成本地链接以便离线浏览.
–page-requisites 表示下载包括CSS样式文件,图片等所有所需的文件,以便离线时能正确地现实页面.
–no-parent 用于限制只下载网站的某一部分内容.
此外, 你可以使用 =P= 设置下载路径.

向终端发信息

mesg查看是否可以接受消息?is y就可以接消息;
w查看用户,
发信息:write 用户名 或 write 用户名 /dev/pts/序号

中文man安装使用

安装manpages-zh:sudo apt install manpages-zh

终端临时设置别名cman,用于显示中文:alias cman=‘man -M /usr/share/man/zh_CN’
单个用户永久设置别名:修改 ~/.bashrc 添加一个alias :  alias cman=’man -M /usr/share/man/zh_CN’
让所有用户都生效:sudo gedit /etc/bash.bashrc;添加一个alias :  alias cman=’man -M /usr/share/man/zh_CN’

重启一个终端就可以用cman查看中文man手册了,当然查英文手册还是用man。

apt与apt-get

在开始对比 apt 与 apt-get 命令的区别之前,我们先来看看这两个命令的背景,以及它们要试图达到的目的。

Debian 作为 Ubuntu、Linux Mint 和 elementary OS 等 Linux 操作系统的母板,其具有强健的「包管理」系统,它的每个组件和应用程序都内置在系统中安装的软件包中。Debian 使用一套名为 Advanced Packaging Tool(APT)的工具来管理这种包系统,不过请不要把它与 apt 命令混淆,它们之间是其实不是同一个东西。

在基于 Debian 的 Linux 发行版中,有各种工具可以与 APT 进行交互,以方便用户安装、删除和管理的软件包。apt-get 便是其中一款广受欢迎的命令行工具,另外一款较为流行的是 Aptitude 这一命令行与 GUI 兼顾的小工具。

如果你已阅读过我们的 apt-get 命令指南,可能已经遇到过许多类似的命令,如apt-cacheapt-config 等。如你所见,这些命令都比较低级又包含众多功能,普通的 Linux 用户也许永远都不会使用到。换种说法来说,就是最常用的 Linux 包管理命令都被分散在了 apt-getapt-cache 和 apt-config 这三条命令当中。

apt 命令的引入就是为了解决命令过于分散的问题,它包括了 apt-get 命令出现以来使用最广泛的功能选项,以及 apt-cache 和 apt-config 命令中很少用到的功能。

在使用 apt 命令时,用户不必再由 apt-get 转到 apt-cache 或 apt-config,而且 apt 更加结构化,并为用户提供了管理软件包所需的必要选项。

简单来说就是:apt = apt-get、apt-cache 和 apt-config 中最常用命令选项的集合。

apt与apt-get之间的区别

通过 apt 命令,用户可以在同一地方集中得到所有必要的工具,apt 的主要目的是提供一种以「让终端用户满意」的方式来处理 Linux 软件包的有效方式。

apt 具有更精减但足够的命令选项,而且参数选项的组织方式更为有效。除此之外,它默认启用的几个特性对最终用户也非常有帮助。例如,可以在使用 apt 命令安装或删除程序时看到进度条。

apt 还会在更新存储库数据库时提示用户可升级的软件包个数。

如果你使用 apt 的其它命令选项,也可以实现与使用 apt-get 时相同的操作。

apt和apt-get命令之间的区别

虽然 apt 与 apt-get 有一些类似的命令选项,但它并不能完全向下兼容 apt-get 命令。也就是说,可以用 apt 替换部分 apt-get 系列命令,但不是全部。

apt 命令 取代的命令 命令的功能
apt install apt-get install 安装软件包
apt remove apt-get remove 移除软件包
apt purge apt-get purge 移除软件包及配置文件
apt update apt-get update 刷新存储库索引
apt upgrade apt-get upgrade 升级所有可升级的软件包
apt autoremove apt-get autoremove 自动删除不需要的包
apt full-upgrade apt-get dist-upgrade 在升级软件包时自动处理依赖关系
apt search apt-cache search 搜索应用程序
apt show apt-cache show 显示装细节

当然,apt 还有一些自己的命令:

新的apt命令 命令的功能
apt list 列出包含条件的包(已安装,可升级等)
apt edit-sources 编辑源列表

需要大家注意的是:apt 命令也还在不断发展, 因此,你可能会在将来的版本中看到新的选项。

apt-get已弃用?

目前还没有任何 Linux 发行版官方放出 apt-get 将被停用的消息,至少它还有比 apt 更多、更细化的操作功能。对于低级操作,仍然需要 apt-get

我应该使用apt还是apt-get?

既然两个命令都有用,那么我该使用 apt 还是 apt-get 呢?作为一个常规 Linux 用户,系统极客建议大家尽快适应并开始首先使用 apt。不仅因为广大 Linux 发行商都在推荐 apt,更主要的还是它提供了 Linux 包管理的必要选项。

最重要的是,apt 命令选项更少更易记,因此也更易用,所以没理由继续坚持 apt-get

小结

最后结大家提供两点使用上的建议:

apt 可以看作 apt-get 和 apt-cache 命令的子集, 可以为包管理提供必要的命令选项。

apt-get 虽然没被弃用,但作为普通用户,还是应该首先使用 apt

aptitude

aptitude 与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具。与 apt-get 不同的是,aptitude 在处理依赖问题上更佳一些。举例来说,aptitude 在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。以下是笔者总结的一些常用 aptitude 命令,仅供参考。
命令 作用
aptitude update 更新可用的包列表
aptitude upgrade 升级可用的包
aptitude dist-upgrade 将系统升级到新的发行版
aptitude install pkgname 安装包
aptitude remove pkgname 删除包
aptitude purge pkgname 删除包及其配置文件
aptitude search string 搜索包
aptitude show pkgname 显示包的详细信息
aptitude clean 删除下载的包文件
aptitude autoclean 仅删除过期的包文件

有的问题 apt-get 解决不了,必须使用 aptitude 解决,有的问题,用 aptitude 解决不了,必须使用 apt-get

aptitude 解决得更好的地方: install, remove, reinstall(apt-get无此功能), show(apt-get无此功能), search(apt-get无此功能), hold(apt-get无此功能), unhold(apt-get无此功能),
apt-get 解决得更好的地方: source(aptitude无此功能), build-dep (低版本的aptitude没有build-dep功能)
apt-get 跟 aptitude 没什么区别的地方:update, upgrade (apt-get upgrade=aptitude safe-upgrade, apt-get dist-upgrade=aptitude full-upgrgade)

dpkg

dpkg -i package.deb #安装包
dpkg -r package #删除包
dpkg -P package #删除包(包括配置文件)
dpkg -L package #列出与该包关联的文件
dpkg -l package #显示该包的版本
dpkg –unpack package.deb #解开 deb 包的内容
dpkg -S keyword #搜索所属的包内容
dpkg -l #列出当前已安装的包
dpkg -c package.deb #列出 deb 包的内容
dpkg –configure package #配置包

dpkg -i package #安装包
dpkg -R /usr/local/src #安装一个目录下面所有的软件包
dpkg –unpack package #解开一个包,如果和-R一起使用,参数可以是一个目录
dpkg –configure package #重新配置和释放软件包
dpkg -r package #删除包
dpkg –merge-avail #合并包
dpkg -P #删除包,包括配置文件
dpkg -A package #从软件包里面读取软件的信息
dpkg –update-avail #替代软件包的信息
dpkg –forget-old-unavail #删除Uninstall的软件包信息
dpkg –clear-avail #删除软件包的Avaliable信息
dpkg -C #查找只有部分安装的软件包信息
dpkg –compare-versions ver1 op ver2 #比较同一个包的不同版本之间的差别
dpkg -b directory [filename] #建立一个deb文件
dpkg -c filename #显示一个Deb文件的目录
dpkg -p package #显示包的具体信息
dpkg -S filename-search-pattern #搜索指定包里面的文件(模糊查询)
dpkg -L package #显示一个包安装到系统里面的文件目录信息
dpkg -s package #报告指定包的状态信息
dpkg -l #显示所有已经安装的Deb包,同时显示版本号以及简短说明
dpkg -l | grep ssh 查看包安装情况