内容简介:简单的做法是使用shell的which命令找出相关的二进制程序是否已经在搜索路径中。如果which没有找到要找的命令,使用whereis,该命令搜索更大范围的系统目录,与shell的搜索路径无关。locate的数据库通常由upgradedb命令定期更新,这条命令由cron来运行。因此,执行一次locate的结果不是总能反映出文件系统最新的变化。locate的搜索不止针对命令或软件包,而是能找到任何类型的文件。例如查找文件signal.h
书架上的这块大部头书在5.1的时候终于有时间来学习了,本文将长期更新,记录UNIX/Linux系统管理技术手册学习中的疑问与解答。该书在豆瓣评分颇高, UNIX/Linux系统管理技术手册 .勘误表在本文最后,如有疑问欢迎留言讨论。
笔记中实际操作的系统来自于ubuntu,运行在一款古董级的hp笔记本上。
判断软件是否已经安装
简单的做法是使用 shell 的which命令找出相关的二进制程序是否已经在搜索路径中。
root@52coder:~# which gcc /usr/bin/gcc
如果which没有找到要找的命令,使用whereis,该命令搜索更大范围的系统目录,与shell的搜索路径无关。
root@52coder:~# whereis gcc gcc: /usr/bin/gcc /usr/lib/gcc /usr/share/man/man1/gcc.1.gz
locate的数据库通常由upgradedb命令定期更新,这条命令由cron来运行。因此,执行一次locate的结果不是总能反映出文件系统最新的变化。locate的搜索不止针对命令或软件包,而是能找到任何类型的文件。例如查找文件signal.h
root@52coder:~# locate signal.h /root/PR/cl_ev/source/include/cl_ev_signal.h /root/PR/lualibs/source/ldap/openldap-2.4.23/include/ac/signal.h /root/PR/lualibs/thirdpart/luaposix/luaposix-34.0.4/doc/modules/posix.signal.html /root/PR/thirdpart/ldap/source/openldap-2.4.23/include/ac/signal.h /usr/include/signal.h /usr/include/asm-generic/signal.h /usr/include/boost/signal.hpp /usr/include/boost/process/detail/posix/signal.hpp /usr/include/boost/signals2/preprocessed_signal.hpp /usr/include/boost/signals2/signal.hpp /usr/include/boost/signals2/variadic_signal.hpp /usr/include/linux/signal.h /usr/include/x86_64-linux-gnu/asm/signal.h /usr/include/x86_64-linux-gnu/sys/signal.h /usr/src/linux-headers-5.0.0-13/arch/alpha/include/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/alpha/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/arc/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/arm/include/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/arm/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/arm64/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/h8300/include/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/h8300/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/hexagon/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/ia64/include/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/ia64/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/m68k/include/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/m68k/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/mips/include/asm/compat-signal.h /usr/src/linux-headers-5.0.0-13/arch/mips/include/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/mips/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/nios2/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/parisc/include/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/parisc/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/powerpc/include/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/powerpc/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/s390/include/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/s390/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/sh/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/sparc/include/asm/compat_signal.h /usr/src/linux-headers-5.0.0-13/arch/sparc/include/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/sparc/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/x86/include/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/x86/include/asm/fpu/signal.h /usr/src/linux-headers-5.0.0-13/arch/x86/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/xtensa/include/asm/signal.h /usr/src/linux-headers-5.0.0-13/arch/xtensa/include/uapi/asm/signal.h /usr/src/linux-headers-5.0.0-13/include/asm-generic/audit_signal.h /usr/src/linux-headers-5.0.0-13/include/asm-generic/signal.h /usr/src/linux-headers-5.0.0-13/include/linux/signal.h /usr/src/linux-headers-5.0.0-13/include/linux/sched/signal.h /usr/src/linux-headers-5.0.0-13/include/trace/events/signal.h /usr/src/linux-headers-5.0.0-13/include/uapi/asm-generic/signal.h /usr/src/linux-headers-5.0.0-13/include/uapi/linux/signal.h
ubuntu中查询是否已安装软件:
root@52coder:~# dpkg -l | grep gcc ii gcc 4:8.3.0-1ubuntu3 amd64 GNU C compiler ii gcc-8 8.3.0-6ubuntu1 amd64 GNU C compiler ii gcc-8-base:amd64 8.3.0-6ubuntu1 amd64 GCC, the GNU Compiler Collection (base package) ii gcc-9-base:amd64 9-20190402-1ubuntu1 amd64 GCC, the GNU Compiler Collection (base package) ii libgcc-8-dev:amd64 8.3.0-6ubuntu1 amd64 GCC support library (development files) ii libgcc1:amd64 1:9-20190402-1ubuntu1 amd64 GCC support library
redhat中查询是否已安装软件:
rom -q | grep gcc
安装软件
使用源码安装软件时一般是使用./configure make make install三条命令
./configure --help查看所有的配置选项,另一个有用的配置选项是--prefix=directory,这个选项可以把软件安装到/usr/local之外的其它目录。root@52coder:~/valgrind-3.15.0# ./configure --help `configure' configures Valgrind 3.15.0 to adapt to many kinds of systems. Usage: ./configure [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print `checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for `--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or `..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [/usr/local] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, `make install' will install all the files in `/usr/local/bin', `/usr/local/lib' etc. You can specify an installation prefix other than `/usr/local' using `--prefix', for instance `--prefix=$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/valgrind] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-only64bit do a 64-bit only build --enable-only32bit do a 32-bit only build --enable-inner enables self-hosting --enable-ubsan enables the undefined behaviour sanitiser --enable-lto enables building with link time optimisation --enable-tls platform supports TLS Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-tmpdir=PATH Specify path for temporary files --with-mpicc= Specify name of MPI2-ised C compiler Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a nonstandard directory <lib dir> LIBS libraries to pass to the linker, e.g. -l<library> CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if you have headers in a nonstandard directory <include dir> CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags LTO_RANLIB Library indexer command for link time optimisation AR Archiver command LTO_AR Archiver command for link time optimisation CCAS assembler compiler command (defaults to CC) CCASFLAGS assembler compiler flags (defaults to CFLAGS) Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to <valgrind-users@lists.sourceforge.net>.
常用快捷键
回到命令行尾。
标准错误重定向
在搜索文件的时候使用find / -name core,通常会出现很多"permission denied"这样的错误消息,从而把真正的结果给淹没在混乱的输出中。要消除所有出错的消息,可以使用如下命令:
find / -name core 2> /dev/null
sort命令
sort -t: -k3,3 -n /etc/group
对/etc/group文件的内容按照由冒号分割的第三个域即组ID进行排序,-n选项指定按照整数排序。
对sort命令的详细解释及例子参考 Linux sort commandgrep命令
grep命令有许多选项,这包括:打印匹配的行数-c,匹配时忽略大小写-i,打印不匹配的行-v,打印匹配的文件的名字-l.
勘误表
p27 2.1.4常见的过滤命令上面的例子
root@52coder:~# echo "There are `wc -l /etc/passwd` lines in the passwd file." There are 45 /etc/passwd lines in the passwd file. root@52coder:~# echo "There are `cat /etc/passwd | wc -l` lines in the passwd file." There are 45 lines in the passwd file.
以上所述就是小编给大家介绍的《UNIX/Linux系统管理技术手册》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 作业收缴系统设计手册(自写开源小系统)
- 作业收缴系统使用手册(自写开源小系统)
- 救火必备!问题排查与系统优化手册
- MySQL™ 参考手册(关于本手册)
- LLVM 程序员手册 —— LLVM 4.0 文档(非常非常完整的手册)
- [译]Python手册——模块
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Practical Algorithms for Programmers
Andrew Binstock、John Rex / Addison-Wesley Professional / 1995-06-29 / USD 39.99
Most algorithm books today are either academic textbooks or rehashes of the same tired set of algorithms. Practical Algorithms for Programmers is the first book to give complete code implementations o......一起来看看 《Practical Algorithms for Programmers》 这本书的介绍吧!