ls
查询目录中的内容。
语法:
ls [选项] [文件或目录]
选项:
-a 显示所有文件,包括隐藏文件;
-l 显示详细信息;
-d 查看目录属性;
-h 人性化显示文件大小;
-S 按照文件大小排序;
-i 显示inode。
示例:显示当前目录下面占用最大的前十个文件
ls -alhS | head
文件权限
-rw-r--r--
-表示文件类型(-实体文件 l软连接文件 d文件夹)
rw-表示所有者
r--表示所属组
r--表示其他人
r代表读权限;w代表写权限;x代表执行权限。
配合chmod命令,改变文件权限。通常,r用4表示,w用2表示,x用1表示。如下示例:
chmod 700 <file> # 表示文件所有者具有读写执行权限
chmod 600 <file> # 表示文件所有者具有读写权限
chmod 500 <file> # 表示文件所有者具有读和执行权限
另外,使用chmod命令时,还可以使用+ -进行权限的改写操作。其中,u表示user,g表示group, o表示others. 如下示例:
⇒ touch guagua
⇒ ls -l guagua
-rw-r--r-- 1 DQ staff 0 7 20 20:09 guagua
⇒ chmod u-rw guagua # 对user减少读写权限
⇒ ls -l guagua
----r--r-- 1 DQ staff 0 7 20 20:09 guagua
⇒ chmod o+rwx guagua # 对others增加读写执行权限
⇒ ls -l guagua
----r--rwx 1 DQ staff 0 7 20 20:09 guagua
cd
cd ~或者cd 进入家目录
cd - 进入上次的目录
cd .. 进入上级目录
cp
复制文件
cp [选项] [原文件或目录] [目标目录]
选项:
-r 复制目录;
-p 连带文件属性复制;
-d 若源文件是链接文件,则复制链接属性;
-a 全复制,相当于-pdr。
ln
链接命令
ln -s [原文件] [目标文件]
选项:
-s 创建软链接,无-s,则创建硬链接。
硬链接特征:
1.拥有相同的i节点和存储block块,可以看做是同一个文件;
2.可以通过i节点识别;
3.不能跨分区;
4.不能针对目录使用。
5.修改原文件或者硬链接文件,另一个文件也被相等的修改。
软链接特征:
1.类似Windows的快捷方式;
2.拥有自己的i节点和block块,但是数据块中只保存原文件的文件名和i节点号,并没有实际的文件数据;
3.修改任意文件,另一个文件随之改变;
4.删除原文件,软链接不能使用;
5.在使用软链接的命令时,原文件要使用完整(绝对)路径。
locate
文件搜索,在后台数据库中按文件名搜索,搜索速度更快。
locate 文件名
locate命令搜索的后台数据库为/var/lib/mlocate(CentOS 6.3)
更新数据库:updatedb**。
命令搜索
1.whereis
whereis 命令名
搜索命令所在路径及帮助文档所在位置。
选项:
-b: 只查找可执行文件;
-m: 只查找帮助文件。
2.which
which 命令名
搜索命令所在路径及别名。
find
搜索文件
find [搜索范围] [搜索条件]
示例:
搜索~/Desktop/Linux
目录及其子目录下的txt文件:find ~/Desktop/Linux -name '*.txt'
。
注意'*.txt'
要加''号,否则搜索不出结果。
其他搜索:
find <fpath> -iname <file> 不区分大小写搜索
find <fpath> -user root 按照所有者搜索
find <fpath> -nouser 查找没有所有者的文件
find <fpath> <time类型> <time区间>
其中:time类型可以为atime,表示文件访问时间;ctime表示改变文件属性时间;mtime表示修改文件内容时间。time区间示例:-10表示10天内修改的文件;10表示刚好10天前的当天修改的文件;+10表示10天前修改的文件。
find <fpath> -size 25k 查找文件大小是25KB的文件
-25k 小于25KB的文件;
25k 等于25KB的文件;
+25k 大于25KB的文件。
注意:按照k搜索,k小写;按照M搜索,M大写。
find <fpath> -inum 262422 查找i节点是262422的文件
find <fpath> -size +20k -a -size -50k 查找fpath目录及其子目录下,大于20KB并且小于50KB的文件。
-a 表示and,逻辑与,两个条件都满足;
-o 表示or,逻辑或,两个条件满足一个即可。
find <fpath> -size +20k -a -size -50k -exec ls -lh {} ; 查找fpath目录及其子目录下,大于20KB并且小于50KB的文件,并且显示详细信息。
-exec/-ok 命令 {} ;,对搜索结果执行操作。
grep
搜索字符串命令。
grep [选项] <字符串> <文件名>
在文件当中匹配符合条件的字符串。
选项:
-i 忽略大小写;
-v 排除指定字符串。
find命令与grep命令的区别
find 在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符(*?[]
)匹配,通配符为完全匹配;
grep 在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式为包含匹配。
man
帮助命令
man <命令名>
主要的帮助命令为:
1 User Commands: 查看命令的帮助
2 System Calls: 查看可被内核调用的函数的帮助
3 C Library Functions: 查看函数和库函数(C)的帮助
4 Devices and Special Files: 查看特殊文件的帮助(主要是/dev目录下的文件)
5 File Formats and Conventions: 查看配置文件的帮助
6 Games et. Al.: 查看游戏的帮助
7 Miscellanea: 查看其它杂项的帮助
8 System Administration tools and Deamons: 查看系统管理员可用命令的帮助
查看命令拥有哪个级别的帮助
man -f <命令名>
相当于命令whatis
,如搜寻man -f passwd
,结果如下:
passwd(1) - modify a user's password
passwd(1ssl) - compute password hashes
passwd(5), master.passwd(5) - format of the password file
slapd-passwd(5) - /etc/passwd backend to slap
因此,可以进一步查询man 1 passwd
或者man 5 passwd
,则会分别显示出passwd的不同帮助文档。
查看与命令所有相关的帮助
man -k <命令名>
相当于命令apropos
,如搜寻man -k passwd
,结果如下:
CURLOPT_KEYPASSWD(3) - set passphrase to private key
SSL_CTX_set_default_passwd_cb(3ssl), SSL_CTX_set_default_passwd_cb_userdata(3ssl) - set passwd callback for encrypted PEM file handling
chkpasswd(8) - verifies user password against various systems
firmwarepasswd(8) - tool for setting and removing firmware passwords on a system
htpasswd(1) - Manage user files for basic authentication
kpasswd(1) - Kerberos 5 password changing program
kpasswdd(8) - Kerberos 5 password changing server
ldappasswd(1) - change the password of an LDAP entry
passwd(1) - modify a user's password
passwd(1ssl) - compute password hashes
passwd(5), master.passwd(5) - format of the password file
slapd-passwd(5) - /etc/passwd backend to slapd
slappasswd(8) - OpenLDAP password utility
查询技巧
在帮助文档中输入/<字符串>,如/-d
,则会搜索出文档中所有包含-d的字符串,按键n
跳转至下一处,按键p
跳转至上一处。
其他帮助命令
1 <命令名> --help
如ls --help
2 help <命令名>
只能获取shell内部自带的命令的帮助,如help cd
。(注释:mac下不可用)
3 info <命令名>
获取详细命令的帮助
操作选项:
回车:进入子帮助页面(带有*
号标记)
u:进入上层页面
n:进入下一个帮助小节
p:进入上一个帮助小节
q:退出
常用快捷键
ctrl+c 强制终止当前命令
ctrl+l 清屏
ctrl+a 光标移动到命令行首
ctrl+e 光标移动到命令行尾
ctrl+u 从光标所在位置删除到行首
ctrl+z 把命令放入后台(并不是终止程序命令)
ctrl+r 在历史命令中搜索
touch
创建文件。
连续创建多个文件可用如下命令,如连续创建10个文件
touch love_{1..10}_gua.txt
du
查看目录的容量。
du -h # 以对人类友好的方式显示
du -d [0|1|2|3...] # 显示查询的目录深度
⇒ du -h -d 0 # 显示当前目录容量
248K .
⇒ du -h -d 1 # 显示更深一层目录容量
100K ./dq
36K ./gua
36K ./gua 2
36K ./gua 3
248K .
&&与||
通常情况下,&&表示逻辑与,||表示逻辑或。在Linux的shell中,就我个人理解,&&和||的用法为:
a && b 只有当a为真时,即返回值为0时(echo ?=!0),b才执行
aptitude
查看已安装的程序文件信息
aptitude show <program>
例如:aptitude show python3将显示以下信息:
软件包: python3
状态: 已安装
自动安装: 否
Multi-Arch: allowed
版本号: 3.5.1-3
优先级: 重要
部分: python
维护者: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
体系: amd64
未压缩尺寸: 68.6 k
依赖于: python3.5 (>= 3.5.1-2~), libpython3-stdlib (= 3.5.1-3), dh-python
预依赖于: python3-minimal (= 3.5.1-3)
建议: python3-doc (>= 3.5.1-3), python3-tk (>= 3.5.1-2~), python3-venv (>=
3.5.1-3)
冲突: python3:i386
代替: python3-minimal (< 3.1.2-2), python3-minimal:i386 (< 3.1.2-2)
提供: python3-profiler, python3-profiler:any, python3-profiler:i386, python3:any
(= 3.5.1-3)
描述: interactive high-level object-oriented language (default python3 version)
Python
是一种交互式、面向对象的高级语言;它带有从网络编程、系统管理,到声音和图像处理
的各式类库。
This package is a dependency package, which depends on Debian's default Python
3 version (currently v3.5).
主页: http://www.python.org/
反引号(`)
在一串命令中,在反引号(`)之内的命令将会被先执行,而其执行出来的结果将作为外部的输入信息。
示例:
ls -l
locate crontab
结果如下:
dh@virtual-machine:~$ ls -lh `locate crontab`
-rw-r--r-- 1 root root 401 12月 29 2014 /etc/anacrontab
-rw-r--r-- 1 root root 722 4月 6 2016 /etc/crontab
-rw-rw-r-- 1 dh dh 89 4月 18 2018 /home/dh/crontab.tmp
-rwxr-sr-x 1 root crontab 36K 4月 6 2016 /usr/bin/crontab
-rw-r--r-- 1 root root 1.2K 5月 18 2016 /usr/share/bash-completion/completions/crontab
-rw-r--r-- 1 root root 28K 4月 6 2016 /usr/share/doc/cron/examples/crontab2english.pl
-rw-r--r-- 1 root root 2.5K 4月 6 2016 /usr/share/man/man1/crontab.1.gz
-rw-r--r-- 1 root root 892 12月 29 2014 /usr/share/man/man5/anacrontab.5.gz
-rw-r--r-- 1 root root 5.6K 4月 6 2016 /usr/share/man/man5/crontab.5.gz
-rw-r--r-- 1 root root 2.5K 6月 11 23:07 /usr/share/vim/vim74/syntax/crontab.vim
此时使用ls -lh $(locate crontab)
能达到同样效果,但是locate crontab | ls -lh
却不行。
此外,$()
和${}
的区别如下,容易被搞混:
$()
:这个小括号里放的是命令,和``反引号作用一样,执行这个命令;
${}
:这里面放的是变量,用来引用的。
创建指定大小的文件
dd if=/dev/zero of=gua bs=1K count=777
如上,创建了一个大小为777kb,文件名为gua的空文件。
获取当前文件夹下文件的绝对路径
ls $PWD/<文件名>