DarkMatter in Cyberspace
  • Home
  • Categories
  • Tags
  • Archives

Linux常用命令笔记


  • apt-get install/remove 安装/卸载软件;* cat 显示文本文件;

  • aspell 交互式拼写检查命令;

  • basename 两种用法:1. 去掉路径,返回文件名:basename /foo/bar -> bar;

  • 去掉后缀,返回文件名:basename foo.bar .bar -> foo

  • cat 显示文件内容,例如"cat /proc/cpuinfo"可以查看CPU信息;有用的几个选项: -A: 显示不可见字符;-n显示行号,-s将相邻的多个空行合并为一个空行 (只针对显示内容,不影响原文件内容);

  • cd 改变目录;

  • chmod 修改文件属性,chmod user/group/other/all +/- read/write/execute filename, 例如chmod u+x file1是只给file1的user赋予执行权限; 参考How to Set File Permissions Using `chmod'

  • chown 变更文件(或目录)的拥有者(或所属群组), 例如root用户执行"chown godu:root -R ./ArtifactRepo"表示将当前目录下的 ArtifactRepo目录及子目录所有权变更给godu用户和root用户组;

  • comm 比较文件,适于比较短的文件间做比较;

  • cp 拷贝文件;cp -r src_folder dst_folder 拷贝目录;

  • cut 截取文件每一行中的一部分,"-c"以字符为单位,"-f" 以域为单位 (要求以tab为分隔符,空格无效);"-d"指定域的分隔符;

  • date 显示系统日期和时间,使用-s参数可以设置日期和时间:date -s "2 OCT 2006 18:00:00"

  • df 显示磁盘使用情况,例如"df -h $HOME"是显示用户主目录的已用和可用的磁盘空间;

  • diff 比较两个文件或者目录,"-c"采用context格式,"-u"采用unified格式;

  • dmidecode 显示硬件设备信息;

  • dpkg 包管理,dpkg -l 列出所有已安装包;dpkg -l 查询 的情况(是否安装,版本等);dpkg -i 安装包;dpkg -r 卸载包;dpkg -P 完全卸载(purge);

  • du -sh : 查看文件夹占用的磁盘空间大小('s' stands for summary, 'h' stands for human readable),要打印某目录下所有项目(目录和文件)尺寸汇总:du -sh *, 如果只打印目录:du -h --max-depth=1 <folderName>; 将以上汇总按尺寸大小升序(从小到大)排列:du -s * | sort -n, 降序排列:du -s * | sort -rn (r stands for reverse), 排序时不要加-h选项(它会导致排序错误,例如5M会被排在6k之前); List largest 10 folders in current folder: du -s *|sort -rn|head

  • env 列出环境变量

  • exit 退出;

  • expand 将文件中的tab转换为spaces;

  • export 将变量定义为环境变量(仅用于bash,格式为export VAR_NAME=var_value);

  • find 查找文件,最常用格式:find -name , 例如查找当前目录下名为test的文件和目录:find . -name test,详见 Linux查找文件命令find

  • free 查看系统memory使用情况,第一行(Mem)是考虑了内核缓冲后的使用率, 第二行("-/+ buffer/cache")才是软件使用的内存;

  • genisoimage 将光盘制作为ISO文件,类似的还有dvdbackup,但需要安装,用dd也可以, 但据说可能会出错,因为没有错误校验;

  • grep 从文件中查找字符串, grep -c <regex>表示计算出现的次数, 参考笔记" Replace a String in Multiple Files in a Directory on Linux "; grep -P "\d" <filename>: 使用PCRE格式的正则表达式; grep -F <regex>: 正则表达式内所有字符均不转义;

  • gzip/gunzip 压缩/解压缩gz文件;

  • hdparm 获取或者设置硬件信息;

  • hwinfo 类似于lshw, Ubuntu上需要安装:apt-get install hwinfo, 内容十分庞杂,或者叫详细;

  • inxi -Fx: 显示易于阅读的设备信息,格式最易于阅读; inxi -I: 系统总内存和已使用内存,总进程数,运行时间等; inxi -N: 显示网卡信息; inxi -tx cm: 显示实时CPU和内存使用情况; inxi -r: 显示软件源;

  • iostat 显示系统磁盘当前的IO状况(Ubuntu,CentOS支持,Red Hat不支持)

  • ip 查询IP相关信息,ip addr=ifconfig, 其他还有ip route 和 ip link;

  • less 查看文本文件内容,或者压缩文件(如zip, tar.gz, jar, war等)的内部结构, 操作类似于只读版vi,如用/查找,j, k, gg, G浏览等;

  • ln 创建文件链接(link),一般创建的是软链接(symbolic link), 在target_dir目录下创建src_file1,src_file2等文件的软链接:ln -s src_file1 src_file2 ... [target_dir], 最常用的格式是在目标目录下运行"ln -s src_file", 就在当前目录下创建了一个与src_file同名的软链接(src_file可以是绝对路径或者相对路径), or give the link a new name: cd $target_dir; ln -s /source/to/link new_link_name

  • ls 显示当前目录下内容,可用选项:-d: 显示目录(而不是目录中的内容); -R: 显示所有子目录中的内容,类似于tree,但不写成树状; -m: 目录项之间用逗号做分隔符(而不是换行符),主要用于向其他程序做管道输入;

  • lsb_release -a 显示操作系统的distro ID和版本号,而不仅是uname提供的内核情况, 此指令适用于Ubuntu,CentOS和Redhat,Redhat还可以用"cat /etc/redhat-release"查看distro ID;

  • lsblk -f 显示块设备信息,用于确定未mount的USB设备卷标、硬盘分区信息等;

  • lscpu 显示CPU相关信息;

  • lshw 列出硬件信息,比hwinfo精炼一些;

  • lsof 列出打开的文件,-p可以指定某个进程打开的文件,-u指定用户打开的文件, -c某个命令打开的文件,-i显示打开的网络端口,-i :22显示谁连接了22端口, -i tcp显示所有打开的TCP连接,-a -u bvt -i显示bvt用户打开的所有网络端口, 其中-a表示后面的-u bvt与-i两个参数间是AND关系; Ref: A Unix Utility You Should Know About: lsof and Finding open files with lsof

  • lspci 显示PCI硬件设备信息,为Gentoo等Linux内核内核安装驱动时有用;

  • lsusb 显示USB总线信息;

  • mkdir 新建文件夹,-p指令可以用来建立多级目录,配合{},可以一次建立一个目录树, 例如mkdir -p godu/{bin/{bin1,bin2},lib/{lib1,lib2}} 可以建立一个3层目录树(用tree或者ls -R指令查看结果);

  • more 分屏显示文件内容;

  • mount 用来挂载设备,如果没有参数则显示当前已挂载的设备;

  • mpstat 显示系统cpu当前状态(CentOS和Redhat支持)

  • netstat 显示某个进程使用了哪个端口,或者某个端口被哪个进程使用, 例如"netstat -tupln|grep :1527"可以查询所有包含1527的进程-端口关系;

  • rm 删除文件(和目录),例如删除当前目录下有一个tcp_rpc子目录, 删除其中所有.gitignore文件(包括所有子目录):"rm -ri tcp_rpc/*/.git", 其中选项r表示包含所有子目录,i表示删除前询问;

  • rm -r folder_name 删除目录(如果子目录很多需要手工确认删除,可以用rm -rfv强制删除);

  • passwd 修改密码;

  • paste 将多个文件的对应行连接在一起, 例如paste -d '-' file1 file2将file1的第一行与file2的第一行以'-'连接,后面各行依此类推;

  • pgrep 根据指定规则找出进程PID,相当于ps -ef| grep ..., -l列出进程名,-lf列出完整进程名;

  • pkill 关闭符合指定规则的PID,相当于"pgrep ...|xargs kill";

  • ps 显示进程信息;

  • pwdx [PID] 显示[PID]指定进程的当前工作目录,可以先用ps命令查到进程的PID,再用这个命令找工作目录;

  • rename 更改文件名。例如将所有.mkd文件扩展名改为.md:rename 's/\.mkd$/\.md/' *.mkd

  • rsync: rsync [options] src dst,

    • "-r": recursive, if src is a directory, "rsync -r src dst" means "src" itself with all things in it will be copied to dst, while "rsync -r src/ dst" will copy all things under "src" except "src" itself to "dst";

    • "-C": If you want avoid copy ".svn" or ".git" folder;

    • "-u" means update, if the file in dst is newer than that in src, it will not be copied;

    • "-a" means archive, keep the meta data (modify date and time, etc) of src files when copy, equals to "-rlptgoD";

    • "-t" keep the modification time of original files;

    • "-v" means verbose;

    • "--delete" means delete files in destination folder which not exist in source folder;

    • "-p" means keep permissions between src and dst;

    • "-l" copy symlinks as symlinks;

  • script 开始将屏幕输出记录到中,输入exit结束日志记录;

  • setenv csh中定义环境变量,格式为setenv VAR_NAME var_value(与bash的export不同,变量名与值之间是空格而非等号);

  • sort 以行为单位排序,"-n" 数字排序,例如du -s <target_path> | sort -n可以按文件夹大小排序; -k指定排序的项,例如下面需要对多个文件夹(Common, Element, Service)下的子目录汇总后按文件名排序, 由于文件名是第9项(默认以空格或者tab为分割符,可以用"-t"指定其他分隔符),所以sort的选项设置为"-k 9,9":

    drwxrwxr-x 7 bvt bvt 4096 Nov 12 10:24 datasource_core $ ll Common Element Service | sort -k 9,9

sort支持用多个-k选项对多个域做不同种类的排序,下面的命令首先对第一个域做字母排序,然后对第二个域做数字排序:

sort -k 1,1 -k 2n distros.txt
  • source .profile 载入环境变量;

  • stat 显示文件详细信息

  • su 参考 Switch User Command in Linux

  • sudo passwd 在新装好系统中为root设置密码;

  • tar -zxvf或者gzip -d加tar -xvf解压缩;

  • tee 将stdin的内容同时重定向到stdout和文件中:ls /usr/bin|tee ls.txt|grep zip

  • time 计算程序运行时间,输出中的total值是时钟时间,还有一个/usr/bin/time -p 指令输出的"real"值是实际的时钟时间;实例见 Calculate PI in 3 Languages Dynamically ;

  • top 具体功能以及与prstat的关系待查;

  • touch 更改文件的最后修改时间,-r <filename>:设置为的时间; -d <timeString>:从字符串读取时间,可以是相对时间,这二者连用, 可以实现“将A文件的时间设为比B文件早两天”这样的效果:

    touch -r fileB -d '-2 days' fileA

  • tr 字符变换,例如将多行文本汇总到一行,以逗号分隔:cat | tr '\n' ','

  • tree 用树状结构显示文件夹,-L 3表示只显示最上面3层目录;-d表示只显示目录,不显示文件;

  • type 显示命令类型,有shell builtin(如type自身),shell function(如cd),以及外部命令,显示命令文件路径;

  • uptime 系统已经运行的时间、用户数、CPU负载量,与top指令的第一行输出相同;

  • whereis 查找可执行文件和文档的位置, 例如Shell中无法执行ifconfig时用whereis可以找到ifconfig所在的路径;

  • which 显示命令在PATH环境变量中第一个出现的位置, 尤其适用于一个命令在PATH中有多个版本,可以用which确定当前执行版本的完整路径;

  • who: list all users logged onto the host

  • whois: get the owner information of a domain, for example: whois boco.com.cn

  • xargs

  • xxd: 以16进制显示文件内容,与UltraEdit的Hex模式类似;

  • zip: zip <file_name> -r <folder_name>



Published

May 5, 2010

Last Updated

May 5, 2010

Category

Tech

Tags

  • command 2
  • linux 158
  • shell 46

Contact

  • Powered by Pelican. Theme: Elegant by Talha Mansoor