From 30b7175702ea411825f8625838d1a7a63faf30fc Mon Sep 17 00:00:00 2001 From: Eric Coissac Date: Sun, 16 Nov 2025 14:56:03 +0100 Subject: [PATCH] Make cleaning --- .gitignore | 3 +- jupyterhub_volumes/course/unix.ipynb | 897 -- .../course/unix_exercises_bash.ipynb | 517 +- jupyterhub_volumes/web/index.html | 1 + jupyterhub_volumes/web/obidoc/404.html | 56 + ...32731130386f71b58f011468f20d0056fe6b78.css | 1 + .../web/obidoc/categories/index.html | 1590 +++ .../web/obidoc/categories/index.xml | 11 + .../web/obidoc/categories/page/1/index.html | 9 + .../web/obidoc/commands/index.html | 1590 +++ .../web/obidoc/commands/index.xml | 11 + .../web/obidoc/commands/page/1/index.html | 9 + ...ebd8c2cf5f239d4d93c283e55c00f2f8d30746.css | 1 + .../web/obidoc/docs/about/index.html | 1589 +++ .../obidoc/docs/commands/advanced/index.html | 1530 +++ .../obidoc/docs/commands/advanced/index.xml | 12 + .../docs/commands/alignments/index.html | 1530 +++ .../obidoc/docs/commands/alignments/index.xml | 12 + .../obipairing/exact-alignment/index.html | 1982 ++++ .../obipairing/exact-alignment/index.xml | 11 + .../obipairing/exact-alignment/match.json | 106 + .../obipairing/exact-alignment/mismatch.json | 106 + .../exact-alignment/pairing_score.qmd | 149 + .../obipairing/fasta-like/fasta_dotplot.png | Bin 0 -> 27222 bytes .../obipairing/fasta-like/index.html | 2095 ++++ .../obipairing/fasta-like/index.xml | 11 + .../obidoc/docs/commands/basics/index.html | 1530 +++ .../web/obidoc/docs/commands/basics/index.xml | 12 + .../docs/commands/demultiplexing/index.html | 1530 +++ .../docs/commands/demultiplexing/index.xml | 12 + .../docs/commands/experimental/index.html | 1530 +++ .../docs/commands/experimental/index.xml | 12 + .../web/obidoc/docs/commands/index.html | 1530 +++ .../web/obidoc/docs/commands/index.xml | 19 + .../obidoc/docs/commands/options/index.html | 1753 +++ .../obidoc/docs/commands/options/index.xml | 12 + .../docs/commands/options/two_sequences.fasta | 6 + .../obidoc/docs/commands/others/index.html | 1530 +++ .../web/obidoc/docs/commands/others/index.xml | 12 + .../web/obidoc/docs/commands/tags/index.html | 1719 +++ .../obidoc/docs/commands/taxonomy/index.html | 1530 +++ .../obidoc/docs/commands/taxonomy/index.xml | 12 + .../docs/cookbook/ecoprimers/ecoPCRFormat | 604 + .../docs/cookbook/ecoprimers/index.html | 2606 +++++ .../obidoc/docs/cookbook/ecoprimers/index.xml | 11 + .../docs/cookbook/ecoprimers/ncbi-ftp.png | Bin 0 -> 171741 bytes .../obidoc/docs/cookbook/illumina/Makefile | 103 + .../obidoc/docs/cookbook/illumina/index.html | 2812 +++++ .../obidoc/docs/cookbook/illumina/index.xml | 11 + .../docs/cookbook/illumina/length-plot.png | Bin 0 -> 16552 bytes .../illumina/results/unidentified.fastq | 4724 ++++++++ .../results/wolf_assembled_1_percent.fasta | 26 + .../wolf_assembled_assigned_simple.fasta | 5864 ++++++++++ ...wolf_assembled_assigned_simple_clean.fasta | 2140 ++++ .../results/wolf_assembled_no_short.fasta | 24 + .../results/wolf_assembled_no_singleton.fasta | 329 + .../results/wolf_assembled_taxo.fasta | 24 + .../illumina/results/wolf_final.fasta | 24 + .../illumina/results/wolf_final_motus.csv | 9 + .../results/wolf_final_occurrency.csv | 6 + .../illumina/results/wolf_minimal.fasta | 24 + .../docs/cookbook/illumina/variants-plot.png | Bin 0 -> 17270 bytes .../illumina/wolf_data/db_v05_r117.fasta.gz | Bin 0 -> 426263 bytes .../wolf_data/wolf_diet_ngsfilter.csv | 8 + .../web/obidoc/docs/cookbook/index.html | 1530 +++ .../web/obidoc/docs/cookbook/index.xml | 12 + .../docs/cookbook/local_genbank/Makefile | 102 + .../docs/cookbook/local_genbank/index.html | 1919 ++++ .../docs/cookbook/local_genbank/index.xml | 11 + .../obidoc/docs/cookbook/minion/index.html | 1552 +++ .../web/obidoc/docs/cookbook/minion/index.xml | 12 + .../docs/cookbook/reference_db/index.html | 1702 +++ .../docs/cookbook/reference_db/index.xml | 12 + .../web/obidoc/docs/file_format/index.html | 1530 +++ .../web/obidoc/docs/file_format/index.xml | 11 + .../sequence_files/annotations/index.html | 1552 +++ .../sequence_files/annotations/index.xml | 11 + .../file_format/sequence_files/csv/index.html | 1678 +++ .../file_format/sequence_files/csv/index.xml | 11 + .../sequence_files/csv/two_sequences.fasta | 6 + .../sequence_files/csv/two_sequences.fastq | 8 + .../file_format/sequence_files/index.html | 1530 +++ .../docs/file_format/sequence_files/index.xml | 11 + .../csv_taxdump/betula_subtaxo.csv | 30 + .../taxonomy_file/csv_taxdump/index.html | 1789 +++ .../taxonomy_file/csv_taxdump/index.xml | 11 + .../docs/file_format/taxonomy_file/index.html | 1530 +++ .../docs/file_format/taxonomy_file/index.xml | 11 + .../taxonomy_file/ncbi_taxdump/index.html | 1777 +++ .../taxonomy_file/ncbi_taxdump/index.xml | 11 + jupyterhub_volumes/web/obidoc/docs/index.html | 1530 +++ jupyterhub_volumes/web/obidoc/docs/index.xml | 19 + .../web/obidoc/docs/installation/index.html | 1638 +++ .../web/obidoc/docs/installation/index.xml | 12 + .../obidoc/docs/patterns/dnagrep/index.html | 1638 +++ .../web/obidoc/docs/patterns/index.html | 1530 +++ .../web/obidoc/docs/patterns/index.xml | 25 + .../obidoc/docs/patterns/regular/index.html | 2129 ++++ .../web/obidoc/docs/principles/forward.fastq | 16 + .../docs/principles/four_sequences.fasta | 12 + .../web/obidoc/docs/principles/index.html | 2111 ++++ .../web/obidoc/docs/principles/index.xml | 11 + .../obidoc/docs/principles/result_R1.fasta | 16 + .../obidoc/docs/principles/result_R2.fasta | 16 + .../web/obidoc/docs/principles/reverse.fastq | 16 + .../docs/principles/two_sequences.fasta | 6 + .../docs/principles/two_sequences_comp.fasta | 6 + .../docs/programming/expression/index.html | 2208 ++++ .../docs/programming/expression/index.xml | 11 + .../web/obidoc/docs/programming/index.html | 1530 +++ .../web/obidoc/docs/programming/index.xml | 12 + .../obidoc/docs/programming/lua/example.lua | 17 + .../docs/programming/lua/extrem_quality.lua | 59 + .../obidoc/docs/programming/lua/index.html | 1835 ++++ .../web/obidoc/docs/programming/lua/index.xml | 12 + .../obitools_classes/biosequence/index.html | 1754 +++ .../obitools_classes/biosequence/index.xml | 11 + .../biosequenceslice/index.html | 1652 +++ .../biosequenceslice/index.xml | 11 + .../lua/obitools_classes/index.html | 1530 +++ .../lua/obitools_classes/index.xml | 11 + .../lua/obitools_classes/mutex/index.html | 1602 +++ .../lua/obitools_classes/mutex/index.xml | 11 + .../lua/obitools_classes/taxon/index.html | 1576 +++ .../lua/obitools_classes/taxon/index.xml | 11 + .../lua/obitools_classes/taxonomy/index.html | 1576 +++ .../lua/obitools_classes/taxonomy/index.xml | 11 + ...a8928a2db291153eefaa03f0e1091def0f94a.json | 1 + ...f517221387fc625ffb68ee140d605b3c5b68058.js | 1 + .../obidoc/examples/obipairing/forward.fastq | 16 + .../obidoc/examples/obipairing/paired.fastq | 16 + .../obidoc/examples/obipairing/reverse.fastq | 16 + jupyterhub_volumes/web/obidoc/favicon.png | Bin 0 -> 2529 bytes jupyterhub_volumes/web/obidoc/favicon.svg | 1 + .../v27/d6lIkaiiRdih4SpP_SQvzBTu39g.woff2 | Bin 0 -> 9348 bytes .../v27/d6lIkaiiRdih4SpP_ScvzBTu39hchw.woff2 | Bin 0 -> 7484 bytes .../v27/d6lIkaiiRdih4SpP_SgvzBTu39hchw.woff2 | Bin 0 -> 4144 bytes .../v27/d6lIkaiiRdih4SpP_SovzBTu39hchw.woff2 | Bin 0 -> 24192 bytes .../fonts/roboto-mono-v13-latin-regular.woff | Bin 0 -> 15160 bytes .../fonts/roboto-mono-v13-latin-regular.woff2 | Bin 0 -> 12312 bytes .../obidoc/fonts/roboto-v27-latin-700.woff | Bin 0 -> 20396 bytes .../obidoc/fonts/roboto-v27-latin-700.woff2 | Bin 0 -> 15828 bytes .../fonts/roboto-v27-latin-regular.woff | Bin 0 -> 20332 bytes .../fonts/roboto-v27-latin-regular.woff2 | Bin 0 -> 15688 bytes .../web/obidoc/formats/csv/index.html | 1600 +++ .../web/obidoc/formats/csv/index.xml | 11 + .../obidoc/formats/csv/two_sequences.fasta | 6 + .../web/obidoc/formats/embl/index.html | 1774 +++ .../web/obidoc/formats/embl/index.xml | 11 + .../web/obidoc/formats/embl/sample.embl | 54 + .../web/obidoc/formats/embl/sample.fasta | 3 + .../web/obidoc/formats/fasta/index.html | 1775 +++ .../web/obidoc/formats/fasta/index.xml | 11 + .../formats/fasta/two_sequences_obi2.fasta | 6 + .../formats/fasta/two_sequences_obi4.fasta | 6 + .../web/obidoc/formats/fastq/index.html | 1878 ++++ .../web/obidoc/formats/fastq/index.xml | 11 + .../web/obidoc/formats/fastq/quality.png | Bin 0 -> 64063 bytes .../formats/fastq/two_sequences_obi2.fastq | 9 + .../formats/fastq/two_sequences_obi4.fastq | 8 + .../web/obidoc/formats/genbank/index.html | 1752 +++ .../web/obidoc/formats/genbank/index.xml | 11 + .../web/obidoc/formats/genbank/sample.fasta | 3 + .../web/obidoc/formats/genbank/sample.gb | 40 + .../web/obidoc/formats/json/index.html | 1816 +++ .../web/obidoc/formats/json/index.xml | 11 + .../obidoc/formats/json/json_example.fasta | 6 + .../obidoc/formats/json/json_example.fastq | 8 + .../web/obidoc/formats/json/json_example.json | 36 + .../formats/json/json_example_qual.json | 36 + jupyterhub_volumes/web/obidoc/fuse.min.js | 9 + jupyterhub_volumes/web/obidoc/hugo-cite.css | 49 + jupyterhub_volumes/web/obidoc/index.html | 1547 +++ jupyterhub_volumes/web/obidoc/index.xml | 40 + .../web/obidoc/katex/auto-render.min.js | 1 + .../obidoc/katex/fonts/KaTeX_AMS-Regular.ttf | Bin 0 -> 63632 bytes .../obidoc/katex/fonts/KaTeX_AMS-Regular.woff | Bin 0 -> 33516 bytes .../katex/fonts/KaTeX_AMS-Regular.woff2 | Bin 0 -> 28076 bytes .../katex/fonts/KaTeX_Caligraphic-Bold.ttf | Bin 0 -> 12368 bytes .../katex/fonts/KaTeX_Caligraphic-Bold.woff | Bin 0 -> 7716 bytes .../katex/fonts/KaTeX_Caligraphic-Bold.woff2 | Bin 0 -> 6912 bytes .../katex/fonts/KaTeX_Caligraphic-Regular.ttf | Bin 0 -> 12344 bytes .../fonts/KaTeX_Caligraphic-Regular.woff | Bin 0 -> 7656 bytes .../fonts/KaTeX_Caligraphic-Regular.woff2 | Bin 0 -> 6908 bytes .../obidoc/katex/fonts/KaTeX_Fraktur-Bold.ttf | Bin 0 -> 19584 bytes .../katex/fonts/KaTeX_Fraktur-Bold.woff | Bin 0 -> 13296 bytes .../katex/fonts/KaTeX_Fraktur-Bold.woff2 | Bin 0 -> 11348 bytes .../katex/fonts/KaTeX_Fraktur-Regular.ttf | Bin 0 -> 19572 bytes .../katex/fonts/KaTeX_Fraktur-Regular.woff | Bin 0 -> 13208 bytes .../katex/fonts/KaTeX_Fraktur-Regular.woff2 | Bin 0 -> 11316 bytes .../obidoc/katex/fonts/KaTeX_Main-Bold.ttf | Bin 0 -> 51336 bytes .../obidoc/katex/fonts/KaTeX_Main-Bold.woff | Bin 0 -> 29912 bytes .../obidoc/katex/fonts/KaTeX_Main-Bold.woff2 | Bin 0 -> 25324 bytes .../katex/fonts/KaTeX_Main-BoldItalic.ttf | Bin 0 -> 32968 bytes .../katex/fonts/KaTeX_Main-BoldItalic.woff | Bin 0 -> 19412 bytes .../katex/fonts/KaTeX_Main-BoldItalic.woff2 | Bin 0 -> 16780 bytes .../obidoc/katex/fonts/KaTeX_Main-Italic.ttf | Bin 0 -> 33580 bytes .../obidoc/katex/fonts/KaTeX_Main-Italic.woff | Bin 0 -> 19676 bytes .../katex/fonts/KaTeX_Main-Italic.woff2 | Bin 0 -> 16988 bytes .../obidoc/katex/fonts/KaTeX_Main-Regular.ttf | Bin 0 -> 53580 bytes .../katex/fonts/KaTeX_Main-Regular.woff | Bin 0 -> 30772 bytes .../katex/fonts/KaTeX_Main-Regular.woff2 | Bin 0 -> 26272 bytes .../katex/fonts/KaTeX_Math-BoldItalic.ttf | Bin 0 -> 31196 bytes .../katex/fonts/KaTeX_Math-BoldItalic.woff | Bin 0 -> 18668 bytes .../katex/fonts/KaTeX_Math-BoldItalic.woff2 | Bin 0 -> 16400 bytes .../obidoc/katex/fonts/KaTeX_Math-Italic.ttf | Bin 0 -> 31308 bytes .../obidoc/katex/fonts/KaTeX_Math-Italic.woff | Bin 0 -> 18748 bytes .../katex/fonts/KaTeX_Math-Italic.woff2 | Bin 0 -> 16440 bytes .../katex/fonts/KaTeX_SansSerif-Bold.ttf | Bin 0 -> 24504 bytes .../katex/fonts/KaTeX_SansSerif-Bold.woff | Bin 0 -> 14408 bytes .../katex/fonts/KaTeX_SansSerif-Bold.woff2 | Bin 0 -> 12216 bytes .../katex/fonts/KaTeX_SansSerif-Italic.ttf | Bin 0 -> 22364 bytes .../katex/fonts/KaTeX_SansSerif-Italic.woff | Bin 0 -> 14112 bytes .../katex/fonts/KaTeX_SansSerif-Italic.woff2 | Bin 0 -> 12028 bytes .../katex/fonts/KaTeX_SansSerif-Regular.ttf | Bin 0 -> 19436 bytes .../katex/fonts/KaTeX_SansSerif-Regular.woff | Bin 0 -> 12316 bytes .../katex/fonts/KaTeX_SansSerif-Regular.woff2 | Bin 0 -> 10344 bytes .../katex/fonts/KaTeX_Script-Regular.ttf | Bin 0 -> 16648 bytes .../katex/fonts/KaTeX_Script-Regular.woff | Bin 0 -> 10588 bytes .../katex/fonts/KaTeX_Script-Regular.woff2 | Bin 0 -> 9644 bytes .../katex/fonts/KaTeX_Size1-Regular.ttf | Bin 0 -> 12228 bytes .../katex/fonts/KaTeX_Size1-Regular.woff | Bin 0 -> 6496 bytes .../katex/fonts/KaTeX_Size1-Regular.woff2 | Bin 0 -> 5468 bytes .../katex/fonts/KaTeX_Size2-Regular.ttf | Bin 0 -> 11508 bytes .../katex/fonts/KaTeX_Size2-Regular.woff | Bin 0 -> 6188 bytes .../katex/fonts/KaTeX_Size2-Regular.woff2 | Bin 0 -> 5208 bytes .../katex/fonts/KaTeX_Size3-Regular.ttf | Bin 0 -> 7588 bytes .../katex/fonts/KaTeX_Size3-Regular.woff | Bin 0 -> 4420 bytes .../katex/fonts/KaTeX_Size3-Regular.woff2 | Bin 0 -> 3624 bytes .../katex/fonts/KaTeX_Size4-Regular.ttf | Bin 0 -> 10364 bytes .../katex/fonts/KaTeX_Size4-Regular.woff | Bin 0 -> 5980 bytes .../katex/fonts/KaTeX_Size4-Regular.woff2 | Bin 0 -> 4928 bytes .../katex/fonts/KaTeX_Typewriter-Regular.ttf | Bin 0 -> 27556 bytes .../katex/fonts/KaTeX_Typewriter-Regular.woff | Bin 0 -> 16028 bytes .../fonts/KaTeX_Typewriter-Regular.woff2 | Bin 0 -> 13568 bytes .../web/obidoc/katex/katex.min.css | 1 + .../web/obidoc/katex/katex.min.js | 1 + jupyterhub_volumes/web/obidoc/manifest.json | 15 + .../obidoc/obitools/obiannotate/empty.fasta | 10 + .../obitools/obiannotate/five_tags.fasta | 10 + .../obidoc/obitools/obiannotate/index.html | 2369 ++++ .../web/obidoc/obitools/obiannotate/index.xml | 12 + .../obidoc/obitools/obiclean/13a_F730603.svg | 3605 ++++++ .../web/obidoc/obitools/obiclean/index.html | 2316 ++++ .../web/obidoc/obitools/obiclean/index.xml | 12 + .../obiclean/sample-graph/13a_F730603.gml | 9735 +++++++++++++++++ .../obitools/obiclean/wolf_clean.fasta.gz | Bin 0 -> 315909 bytes .../obitools/obiclean/wolf_clean_R1.fasta.gz | Bin 0 -> 346549 bytes .../obiclean/wolf_clean_chimera.fasta.gz | Bin 0 -> 321702 bytes .../obiclean/wolf_clean_chimera_head.fasta.gz | Bin 0 -> 158953 bytes .../obitools/obiclean/wolf_ratio_R1.csv.gz | Bin 0 -> 6355 bytes .../obitools/obiclean/wolf_uniq.fasta.gz | Bin 0 -> 200449 bytes .../web/obidoc/obitools/obicleandb/index.html | 1930 ++++ .../web/obidoc/obitools/obicleandb/index.xml | 12 + .../obidoc/obitools/obicomplement/index.html | 1952 ++++ .../obidoc/obitools/obicomplement/index.xml | 12 + .../obidoc/obitools/obiconsensus/index.html | 1932 ++++ .../obidoc/obitools/obiconsensus/index.xml | 12 + .../web/obidoc/obitools/obiconvert/index.html | 2040 ++++ .../web/obidoc/obitools/obiconvert/index.xml | 12 + .../web/obidoc/obitools/obicount/index.html | 1806 +++ .../web/obidoc/obitools/obicount/index.xml | 12 + .../obitools/obicount/two_sequences.fasta | 6 + .../web/obidoc/obitools/obicsv/index.html | 1982 ++++ .../web/obidoc/obitools/obicsv/index.xml | 12 + .../web/obidoc/obitools/obidemerge/index.html | 1947 ++++ .../web/obidoc/obitools/obidemerge/index.xml | 12 + .../obidoc/obitools/obidistribute/index.html | 1980 ++++ .../obidoc/obitools/obidistribute/index.xml | 12 + .../obidoc/obitools/obigrep/five_ids.fasta | 10 + .../obidoc/obitools/obigrep/five_tags.fasta | 10 + .../web/obidoc/obitools/obigrep/forward.fastq | 16 + .../web/obidoc/obitools/obigrep/index.html | 2815 +++++ .../web/obidoc/obitools/obigrep/index.xml | 12 + .../web/obidoc/obitools/obigrep/reverse.fastq | 16 + .../web/obidoc/obitools/obigrep/seqAB.txt | 2 + .../obidoc/obitools/obigrep/six_invalid.fasta | 12 + .../obitools/obigrep/some_uniq_seq.fasta | 9 + .../obidoc/obitools/obigrep/start_t_R1.fastq | 12 + .../obidoc/obitools/obigrep/start_t_R2.fastq | 12 + .../obitools/obigrep/start_t_and_R1.fastq | 8 + .../obitools/obigrep/start_t_and_R2.fastq | 8 + .../obitools/obigrep/start_t_andnot_R1.fastq | 4 + .../obitools/obigrep/start_t_andnot_R2.fastq | 4 + .../obitools/obigrep/start_t_or_R1.fastq | 16 + .../obitools/obigrep/start_t_or_R2.fastq | 16 + .../obitools/obigrep/start_t_rev_R1.fastq | 12 + .../obitools/obigrep/start_t_rev_R2.fastq | 12 + .../obitools/obigrep/start_t_xor_R1.fastq | 8 + .../obitools/obigrep/start_t_xor_R2.fastq | 8 + .../obidoc/obitools/obigrep/three_def.fasta | 6 + .../web/obidoc/obitools/obijoin/index.html | 1988 ++++ .../web/obidoc/obitools/obijoin/index.xml | 12 + .../obidoc/obitools/obilandmark/index.html | 1923 ++++ .../web/obidoc/obitools/obilandmark/index.xml | 12 + .../web/obidoc/obitools/obimatrix/index.html | 1928 ++++ .../web/obidoc/obitools/obimatrix/index.xml | 12 + .../obidoc/obitools/obimicrosat/index.html | 1932 ++++ .../web/obidoc/obitools/obimicrosat/index.xml | 12 + .../obidoc/obitools/obimultiplex/index.html | 2143 ++++ .../obidoc/obitools/obimultiplex/index.xml | 12 + .../obitools/obimultiplex/samples_extra.csv | 5 + .../obitools/obimultiplex/samples_simple.csv | 5 + .../obitools/obimultiplex/wolf_4seq.fastq | 16 + .../obitools/obimultiplex/wolf_4seq_bad.fastq | 4 + .../obimultiplex/wolf_4seq_extra.fastq | 12 + .../obimultiplex/wolf_4seq_simple.fastq | 12 + .../obidoc/obitools/obipairing/forward.fastq | 16 + .../web/obidoc/obitools/obipairing/index.html | 2223 ++++ .../web/obidoc/obitools/obipairing/index.xml | 12 + .../obidoc/obitools/obipairing/paired.fastq | 16 + .../obipairing/paired_alignment.fastq | 8 + .../obitools/obipairing/paired_exact.fastq | 16 + .../obitools/obipairing/paired_join.fastq | 8 + .../obidoc/obitools/obipairing/reverse.fastq | 16 + .../web/obidoc/obitools/obipcr/index.html | 2047 ++++ .../web/obidoc/obitools/obipcr/index.xml | 12 + .../web/obidoc/obitools/obirefidx/index.html | 1907 ++++ .../web/obidoc/obitools/obirefidx/index.xml | 12 + .../web/obidoc/obitools/obiscript/index.html | 2156 ++++ .../web/obidoc/obitools/obiscript/index.xml | 12 + .../web/obidoc/obitools/obisplit/index.html | 1959 ++++ .../web/obidoc/obitools/obisplit/index.xml | 12 + .../web/obidoc/obitools/obisummary/index.html | 1916 ++++ .../web/obidoc/obitools/obisummary/index.xml | 12 + .../web/obidoc/obitools/obitag/index.html | 1954 ++++ .../web/obidoc/obitools/obitag/index.xml | 12 + .../web/obidoc/obitools/obitagpcr/index.html | 2025 ++++ .../web/obidoc/obitools/obitagpcr/index.xml | 12 + .../obidoc/obitools/obitaxonomy/index.html | 1823 +++ .../web/obidoc/obitools/obitaxonomy/index.xml | 12 + .../web/obidoc/obitools/obiuniq/index.html | 1968 ++++ .../web/obidoc/obitools/obiuniq/index.xml | 12 + .../web/obidoc/obitools_logo.jpg | Bin 0 -> 205661 bytes jupyterhub_volumes/web/obidoc/sitemap.xml | 203 + .../web/obidoc/svg/calendar.svg | 1 + jupyterhub_volumes/web/obidoc/svg/edit.svg | 1 + jupyterhub_volumes/web/obidoc/svg/menu.svg | 1 + jupyterhub_volumes/web/obidoc/svg/toc.svg | 1 + .../web/obidoc/svg/translate.svg | 1 + jupyterhub_volumes/web/obidoc/sw.js | 51 + ...99fb26ba9043ea7c7a4c706138c91d9051b285e.js | 1 + jupyterhub_volumes/web/obidoc/tags/index.html | 1590 +++ jupyterhub_volumes/web/obidoc/tags/index.xml | 11 + .../web/obidoc/tags/page/1/index.html | 9 + obijupyterhub/Dockerfile | 5 +- obijupyterhub/Dockerfile.hub | 2 +- obijupyterhub/jupyterhub_templates/login.html | 112 + start-jupyterhub.sh | 4 +- tools/generate_pdf_galleries.py | 2 +- web_src/.gitignore | 1 + .../00_Computers/unix/commande-tube.svg | 148 - .../00_Computers/unix/commande.svg | 167 - .../05_Lectures/00_Computers/unix/fs-link.svg | 3245 ------ .../00_Computers/unix/fs-spdir.svg | 2341 ---- web_src/05_Lectures/00_Computers/unix/fs.svg | 55 - .../00_Computers/unix/gnome-fs-directory.svg | 343 - .../00_Computers/unix/gnome-fs-home.svg | 350 - .../00_Computers/unix/gnome-fs-regular.svg | 260 - .../00_Computers/unix/gnome-fs-slink.svg | 306 - .../00_Computers/unix/lecture_unix.qmd | 1397 --- .../00_Computers/unix/ls-stdout.svg | 320 - .../05_Lectures/00_Computers/unix/pipe.svg | 495 - .../05_Lectures/00_Computers/unix/process.svg | 116 - .../00_Computers/unix/shell-inout.svg | 294 - .../05_Lectures/00_Computers/unix/slides.qmd | 172 +- .../Biodiversity_indices/Slides.qmd | 7 +- 367 files changed, 170866 insertions(+), 11173 deletions(-) delete mode 100644 jupyterhub_volumes/course/unix.ipynb create mode 100644 jupyterhub_volumes/web/obidoc/404.html create mode 100644 jupyterhub_volumes/web/obidoc/book.min.5fd7b8e2d1c0ae15da279c52ff32731130386f71b58f011468f20d0056fe6b78.css create mode 100644 jupyterhub_volumes/web/obidoc/categories/index.html create mode 100644 jupyterhub_volumes/web/obidoc/categories/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/categories/page/1/index.html create mode 100644 jupyterhub_volumes/web/obidoc/commands/index.html create mode 100644 jupyterhub_volumes/web/obidoc/commands/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/commands/page/1/index.html create mode 100644 jupyterhub_volumes/web/obidoc/css/vendors/admonitions.5c73bad2903e7d2d44ad118370ebd8c2cf5f239d4d93c283e55c00f2f8d30746.css create mode 100644 jupyterhub_volumes/web/obidoc/docs/about/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/commands/advanced/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/commands/advanced/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/commands/alignments/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/commands/alignments/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/commands/alignments/obipairing/exact-alignment/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/commands/alignments/obipairing/exact-alignment/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/commands/alignments/obipairing/exact-alignment/match.json create mode 100644 jupyterhub_volumes/web/obidoc/docs/commands/alignments/obipairing/exact-alignment/mismatch.json create mode 100644 jupyterhub_volumes/web/obidoc/docs/commands/alignments/obipairing/exact-alignment/pairing_score.qmd create mode 100644 jupyterhub_volumes/web/obidoc/docs/commands/alignments/obipairing/fasta-like/fasta_dotplot.png create mode 100644 jupyterhub_volumes/web/obidoc/docs/commands/alignments/obipairing/fasta-like/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/commands/alignments/obipairing/fasta-like/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/commands/basics/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/commands/basics/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/commands/demultiplexing/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/commands/demultiplexing/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/commands/experimental/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/commands/experimental/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/commands/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/commands/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/commands/options/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/commands/options/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/commands/options/two_sequences.fasta create mode 100644 jupyterhub_volumes/web/obidoc/docs/commands/others/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/commands/others/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/commands/tags/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/commands/taxonomy/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/commands/taxonomy/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/ecoprimers/ecoPCRFormat create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/ecoprimers/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/ecoprimers/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/ecoprimers/ncbi-ftp.png create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/illumina/Makefile create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/illumina/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/illumina/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/illumina/length-plot.png create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/illumina/results/unidentified.fastq create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/illumina/results/wolf_assembled_1_percent.fasta create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/illumina/results/wolf_assembled_assigned_simple.fasta create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/illumina/results/wolf_assembled_assigned_simple_clean.fasta create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/illumina/results/wolf_assembled_no_short.fasta create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/illumina/results/wolf_assembled_no_singleton.fasta create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/illumina/results/wolf_assembled_taxo.fasta create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/illumina/results/wolf_final.fasta create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/illumina/results/wolf_final_motus.csv create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/illumina/results/wolf_final_occurrency.csv create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/illumina/results/wolf_minimal.fasta create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/illumina/variants-plot.png create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/illumina/wolf_data/db_v05_r117.fasta.gz create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/illumina/wolf_data/wolf_diet_ngsfilter.csv create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/local_genbank/Makefile create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/local_genbank/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/local_genbank/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/minion/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/minion/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/reference_db/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/cookbook/reference_db/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/file_format/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/file_format/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/file_format/sequence_files/annotations/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/file_format/sequence_files/annotations/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/file_format/sequence_files/csv/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/file_format/sequence_files/csv/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/file_format/sequence_files/csv/two_sequences.fasta create mode 100644 jupyterhub_volumes/web/obidoc/docs/file_format/sequence_files/csv/two_sequences.fastq create mode 100644 jupyterhub_volumes/web/obidoc/docs/file_format/sequence_files/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/file_format/sequence_files/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/file_format/taxonomy_file/csv_taxdump/betula_subtaxo.csv create mode 100644 jupyterhub_volumes/web/obidoc/docs/file_format/taxonomy_file/csv_taxdump/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/file_format/taxonomy_file/csv_taxdump/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/file_format/taxonomy_file/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/file_format/taxonomy_file/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/file_format/taxonomy_file/ncbi_taxdump/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/file_format/taxonomy_file/ncbi_taxdump/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/installation/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/installation/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/patterns/dnagrep/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/patterns/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/patterns/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/patterns/regular/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/principles/forward.fastq create mode 100644 jupyterhub_volumes/web/obidoc/docs/principles/four_sequences.fasta create mode 100644 jupyterhub_volumes/web/obidoc/docs/principles/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/principles/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/principles/result_R1.fasta create mode 100644 jupyterhub_volumes/web/obidoc/docs/principles/result_R2.fasta create mode 100644 jupyterhub_volumes/web/obidoc/docs/principles/reverse.fastq create mode 100644 jupyterhub_volumes/web/obidoc/docs/principles/two_sequences.fasta create mode 100644 jupyterhub_volumes/web/obidoc/docs/principles/two_sequences_comp.fasta create mode 100644 jupyterhub_volumes/web/obidoc/docs/programming/expression/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/programming/expression/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/programming/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/programming/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/programming/lua/example.lua create mode 100644 jupyterhub_volumes/web/obidoc/docs/programming/lua/extrem_quality.lua create mode 100644 jupyterhub_volumes/web/obidoc/docs/programming/lua/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/programming/lua/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/programming/lua/obitools_classes/biosequence/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/programming/lua/obitools_classes/biosequence/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/programming/lua/obitools_classes/biosequenceslice/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/programming/lua/obitools_classes/biosequenceslice/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/programming/lua/obitools_classes/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/programming/lua/obitools_classes/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/programming/lua/obitools_classes/mutex/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/programming/lua/obitools_classes/mutex/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/programming/lua/obitools_classes/taxon/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/programming/lua/obitools_classes/taxon/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/docs/programming/lua/obitools_classes/taxonomy/index.html create mode 100644 jupyterhub_volumes/web/obidoc/docs/programming/lua/obitools_classes/taxonomy/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/en.search-data.min.e571d1941bd272c74276d255c81a8928a2db291153eefaa03f0e1091def0f94a.json create mode 100644 jupyterhub_volumes/web/obidoc/en.search.min.4da51bdd2d833922fdbc0e19df517221387fc625ffb68ee140d605b3c5b68058.js create mode 100644 jupyterhub_volumes/web/obidoc/examples/obipairing/forward.fastq create mode 100644 jupyterhub_volumes/web/obidoc/examples/obipairing/paired.fastq create mode 100644 jupyterhub_volumes/web/obidoc/examples/obipairing/reverse.fastq create mode 100644 jupyterhub_volumes/web/obidoc/favicon.png create mode 100644 jupyterhub_volumes/web/obidoc/favicon.svg create mode 100644 jupyterhub_volumes/web/obidoc/fonts/cousine/v27/d6lIkaiiRdih4SpP_SQvzBTu39g.woff2 create mode 100644 jupyterhub_volumes/web/obidoc/fonts/cousine/v27/d6lIkaiiRdih4SpP_ScvzBTu39hchw.woff2 create mode 100644 jupyterhub_volumes/web/obidoc/fonts/cousine/v27/d6lIkaiiRdih4SpP_SgvzBTu39hchw.woff2 create mode 100644 jupyterhub_volumes/web/obidoc/fonts/cousine/v27/d6lIkaiiRdih4SpP_SovzBTu39hchw.woff2 create mode 100644 jupyterhub_volumes/web/obidoc/fonts/roboto-mono-v13-latin-regular.woff create mode 100644 jupyterhub_volumes/web/obidoc/fonts/roboto-mono-v13-latin-regular.woff2 create mode 100644 jupyterhub_volumes/web/obidoc/fonts/roboto-v27-latin-700.woff create mode 100644 jupyterhub_volumes/web/obidoc/fonts/roboto-v27-latin-700.woff2 create mode 100644 jupyterhub_volumes/web/obidoc/fonts/roboto-v27-latin-regular.woff create mode 100644 jupyterhub_volumes/web/obidoc/fonts/roboto-v27-latin-regular.woff2 create mode 100644 jupyterhub_volumes/web/obidoc/formats/csv/index.html create mode 100644 jupyterhub_volumes/web/obidoc/formats/csv/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/formats/csv/two_sequences.fasta create mode 100644 jupyterhub_volumes/web/obidoc/formats/embl/index.html create mode 100644 jupyterhub_volumes/web/obidoc/formats/embl/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/formats/embl/sample.embl create mode 100644 jupyterhub_volumes/web/obidoc/formats/embl/sample.fasta create mode 100644 jupyterhub_volumes/web/obidoc/formats/fasta/index.html create mode 100644 jupyterhub_volumes/web/obidoc/formats/fasta/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/formats/fasta/two_sequences_obi2.fasta create mode 100644 jupyterhub_volumes/web/obidoc/formats/fasta/two_sequences_obi4.fasta create mode 100644 jupyterhub_volumes/web/obidoc/formats/fastq/index.html create mode 100644 jupyterhub_volumes/web/obidoc/formats/fastq/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/formats/fastq/quality.png create mode 100644 jupyterhub_volumes/web/obidoc/formats/fastq/two_sequences_obi2.fastq create mode 100644 jupyterhub_volumes/web/obidoc/formats/fastq/two_sequences_obi4.fastq create mode 100644 jupyterhub_volumes/web/obidoc/formats/genbank/index.html create mode 100644 jupyterhub_volumes/web/obidoc/formats/genbank/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/formats/genbank/sample.fasta create mode 100644 jupyterhub_volumes/web/obidoc/formats/genbank/sample.gb create mode 100644 jupyterhub_volumes/web/obidoc/formats/json/index.html create mode 100644 jupyterhub_volumes/web/obidoc/formats/json/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/formats/json/json_example.fasta create mode 100644 jupyterhub_volumes/web/obidoc/formats/json/json_example.fastq create mode 100644 jupyterhub_volumes/web/obidoc/formats/json/json_example.json create mode 100644 jupyterhub_volumes/web/obidoc/formats/json/json_example_qual.json create mode 100644 jupyterhub_volumes/web/obidoc/fuse.min.js create mode 100644 jupyterhub_volumes/web/obidoc/hugo-cite.css create mode 100644 jupyterhub_volumes/web/obidoc/index.html create mode 100644 jupyterhub_volumes/web/obidoc/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/katex/auto-render.min.js create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_AMS-Regular.ttf create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_AMS-Regular.woff create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_AMS-Regular.woff2 create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Caligraphic-Bold.ttf create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Caligraphic-Bold.woff create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Caligraphic-Bold.woff2 create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Caligraphic-Regular.ttf create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Caligraphic-Regular.woff create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Caligraphic-Regular.woff2 create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Fraktur-Bold.ttf create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Fraktur-Bold.woff create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Fraktur-Bold.woff2 create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Fraktur-Regular.ttf create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Fraktur-Regular.woff create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Fraktur-Regular.woff2 create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Main-Bold.ttf create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Main-Bold.woff create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Main-Bold.woff2 create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Main-BoldItalic.ttf create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Main-BoldItalic.woff create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Main-BoldItalic.woff2 create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Main-Italic.ttf create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Main-Italic.woff create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Main-Italic.woff2 create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Main-Regular.ttf create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Main-Regular.woff create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Main-Regular.woff2 create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Math-BoldItalic.ttf create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Math-BoldItalic.woff create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Math-BoldItalic.woff2 create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Math-Italic.ttf create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Math-Italic.woff create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Math-Italic.woff2 create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_SansSerif-Bold.ttf create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_SansSerif-Bold.woff create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_SansSerif-Bold.woff2 create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_SansSerif-Italic.ttf create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_SansSerif-Italic.woff create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_SansSerif-Italic.woff2 create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_SansSerif-Regular.ttf create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_SansSerif-Regular.woff create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_SansSerif-Regular.woff2 create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Script-Regular.ttf create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Script-Regular.woff create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Script-Regular.woff2 create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Size1-Regular.ttf create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Size1-Regular.woff create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Size1-Regular.woff2 create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Size2-Regular.ttf create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Size2-Regular.woff create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Size2-Regular.woff2 create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Size3-Regular.ttf create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Size3-Regular.woff create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Size3-Regular.woff2 create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Size4-Regular.ttf create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Size4-Regular.woff create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Size4-Regular.woff2 create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Typewriter-Regular.ttf create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Typewriter-Regular.woff create mode 100644 jupyterhub_volumes/web/obidoc/katex/fonts/KaTeX_Typewriter-Regular.woff2 create mode 100644 jupyterhub_volumes/web/obidoc/katex/katex.min.css create mode 100644 jupyterhub_volumes/web/obidoc/katex/katex.min.js create mode 100644 jupyterhub_volumes/web/obidoc/manifest.json create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obiannotate/empty.fasta create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obiannotate/five_tags.fasta create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obiannotate/index.html create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obiannotate/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obiclean/13a_F730603.svg create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obiclean/index.html create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obiclean/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obiclean/sample-graph/13a_F730603.gml create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obiclean/wolf_clean.fasta.gz create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obiclean/wolf_clean_R1.fasta.gz create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obiclean/wolf_clean_chimera.fasta.gz create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obiclean/wolf_clean_chimera_head.fasta.gz create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obiclean/wolf_ratio_R1.csv.gz create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obiclean/wolf_uniq.fasta.gz create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obicleandb/index.html create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obicleandb/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obicomplement/index.html create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obicomplement/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obiconsensus/index.html create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obiconsensus/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obiconvert/index.html create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obiconvert/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obicount/index.html create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obicount/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obicount/two_sequences.fasta create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obicsv/index.html create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obicsv/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obidemerge/index.html create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obidemerge/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obidistribute/index.html create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obidistribute/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obigrep/five_ids.fasta create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obigrep/five_tags.fasta create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obigrep/forward.fastq create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obigrep/index.html create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obigrep/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obigrep/reverse.fastq create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obigrep/seqAB.txt create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obigrep/six_invalid.fasta create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obigrep/some_uniq_seq.fasta create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obigrep/start_t_R1.fastq create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obigrep/start_t_R2.fastq create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obigrep/start_t_and_R1.fastq create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obigrep/start_t_and_R2.fastq create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obigrep/start_t_andnot_R1.fastq create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obigrep/start_t_andnot_R2.fastq create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obigrep/start_t_or_R1.fastq create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obigrep/start_t_or_R2.fastq create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obigrep/start_t_rev_R1.fastq create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obigrep/start_t_rev_R2.fastq create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obigrep/start_t_xor_R1.fastq create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obigrep/start_t_xor_R2.fastq create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obigrep/three_def.fasta create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obijoin/index.html create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obijoin/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obilandmark/index.html create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obilandmark/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obimatrix/index.html create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obimatrix/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obimicrosat/index.html create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obimicrosat/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obimultiplex/index.html create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obimultiplex/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obimultiplex/samples_extra.csv create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obimultiplex/samples_simple.csv create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obimultiplex/wolf_4seq.fastq create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obimultiplex/wolf_4seq_bad.fastq create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obimultiplex/wolf_4seq_extra.fastq create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obimultiplex/wolf_4seq_simple.fastq create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obipairing/forward.fastq create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obipairing/index.html create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obipairing/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obipairing/paired.fastq create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obipairing/paired_alignment.fastq create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obipairing/paired_exact.fastq create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obipairing/paired_join.fastq create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obipairing/reverse.fastq create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obipcr/index.html create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obipcr/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obirefidx/index.html create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obirefidx/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obiscript/index.html create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obiscript/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obisplit/index.html create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obisplit/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obisummary/index.html create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obisummary/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obitag/index.html create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obitag/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obitagpcr/index.html create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obitagpcr/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obitaxonomy/index.html create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obitaxonomy/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obiuniq/index.html create mode 100644 jupyterhub_volumes/web/obidoc/obitools/obiuniq/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/obitools_logo.jpg create mode 100644 jupyterhub_volumes/web/obidoc/sitemap.xml create mode 100644 jupyterhub_volumes/web/obidoc/svg/calendar.svg create mode 100644 jupyterhub_volumes/web/obidoc/svg/edit.svg create mode 100644 jupyterhub_volumes/web/obidoc/svg/menu.svg create mode 100644 jupyterhub_volumes/web/obidoc/svg/toc.svg create mode 100644 jupyterhub_volumes/web/obidoc/svg/translate.svg create mode 100644 jupyterhub_volumes/web/obidoc/sw.js create mode 100644 jupyterhub_volumes/web/obidoc/sw.min.32af8eafce4180aa1c5dea66d99fb26ba9043ea7c7a4c706138c91d9051b285e.js create mode 100644 jupyterhub_volumes/web/obidoc/tags/index.html create mode 100644 jupyterhub_volumes/web/obidoc/tags/index.xml create mode 100644 jupyterhub_volumes/web/obidoc/tags/page/1/index.html create mode 100644 obijupyterhub/jupyterhub_templates/login.html delete mode 100644 web_src/05_Lectures/00_Computers/unix/commande-tube.svg delete mode 100644 web_src/05_Lectures/00_Computers/unix/commande.svg delete mode 100644 web_src/05_Lectures/00_Computers/unix/fs-link.svg delete mode 100644 web_src/05_Lectures/00_Computers/unix/fs-spdir.svg delete mode 100644 web_src/05_Lectures/00_Computers/unix/fs.svg delete mode 100644 web_src/05_Lectures/00_Computers/unix/gnome-fs-directory.svg delete mode 100644 web_src/05_Lectures/00_Computers/unix/gnome-fs-home.svg delete mode 100644 web_src/05_Lectures/00_Computers/unix/gnome-fs-regular.svg delete mode 100644 web_src/05_Lectures/00_Computers/unix/gnome-fs-slink.svg delete mode 100644 web_src/05_Lectures/00_Computers/unix/lecture_unix.qmd delete mode 100644 web_src/05_Lectures/00_Computers/unix/ls-stdout.svg delete mode 100644 web_src/05_Lectures/00_Computers/unix/pipe.svg delete mode 100644 web_src/05_Lectures/00_Computers/unix/process.svg delete mode 100644 web_src/05_Lectures/00_Computers/unix/shell-inout.svg diff --git a/.gitignore b/.gitignore index 0efccc7..966373d 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,5 @@ /web_src/**/*_files /web_src/**/*_cache /.luarc.json -*.log \ No newline at end of file +/sandbox +*.log diff --git a/jupyterhub_volumes/course/unix.ipynb b/jupyterhub_volumes/course/unix.ipynb deleted file mode 100644 index 2f60fa3..0000000 --- a/jupyterhub_volumes/course/unix.ipynb +++ /dev/null @@ -1,897 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "30438c30", - "metadata": {}, - "source": [ - "# Unix Essentials — Bash Practice Notebook\n", - "\n", - "This notebook contains 50 small Bash exercises grouped by topic.\n", - "Each exercise includes a hidden solution that can be revealed in Jupyter." - ] - }, - { - "cell_type": "markdown", - "id": "39d711f9", - "metadata": {}, - "source": [ - "## Series 1 — Paths and Directories" - ] - }, - { - "cell_type": "markdown", - "id": "6fb7335e", - "metadata": {}, - "source": [ - "### Exercise 1.1 — Show your current working directory" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2b8575f3", - "metadata": {}, - "outputs": [], - "source": [ - "# your work here\n", - "pwd" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "21f63bb0", - "metadata": { - "jupyter": { - "outputs_hidden": true, - "source_hidden": true - } - }, - "outputs": [], - "source": [ - "# Solution\n", - "pwd" - ] - }, - { - "cell_type": "markdown", - "id": "61a624bf", - "metadata": {}, - "source": [ - "### Exercise 1.2 — Create a new directory named `testdir`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4a4df387", - "metadata": {}, - "outputs": [], - "source": [ - "# your work here\n", - "mkdir testdir" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2b5cfbca", - "metadata": { - "jupyter": { - "outputs_hidden": true, - "source_hidden": true - } - }, - "outputs": [], - "source": [ - "# Solution\n", - "mkdir testdir" - ] - }, - { - "cell_type": "markdown", - "id": "2dccbb61", - "metadata": {}, - "source": [ - "### Exercise 1.3 — Move into `testdir` using a relative path" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "fb73ca3c", - "metadata": {}, - "outputs": [], - "source": [ - "# your work here\n", - "cd testdir" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ba670a20", - "metadata": { - "jupyter": { - "outputs_hidden": true, - "source_hidden": true - } - }, - "outputs": [], - "source": [ - "# Solution\n", - "cd testdir" - ] - }, - { - "cell_type": "markdown", - "id": "4f7e5817", - "metadata": {}, - "source": [ - "### Exercise 1.4 — Create two subdirectories `a` and `b` in one command" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "30be8f44", - "metadata": {}, - "outputs": [], - "source": [ - "# your work here\n", - "mkdir a b" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "caf92714", - "metadata": { - "jupyter": { - "outputs_hidden": true, - "source_hidden": true - } - }, - "outputs": [], - "source": [ - "# Solution\n", - "mkdir a b" - ] - }, - { - "cell_type": "markdown", - "id": "edec9041", - "metadata": {}, - "source": [ - "### Exercise 1.5 — Return to the parent directory using `..`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "32a0f1df", - "metadata": {}, - "outputs": [], - "source": [ - "# your work here\n", - "cd .." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2a0aa92f", - "metadata": { - "jupyter": { - "outputs_hidden": true, - "source_hidden": true - } - }, - "outputs": [], - "source": [ - "# Solution\n", - "cd .." - ] - }, - { - "cell_type": "markdown", - "id": "31917159", - "metadata": {}, - "source": [ - "### Exercise 1.6 — Create nested directories `one/two/three` in a single command" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c0a313c3", - "metadata": {}, - "outputs": [], - "source": [ - "# your work here\n", - "mkdir -p one/two/three" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4af63dce", - "metadata": { - "jupyter": { - "outputs_hidden": true, - "source_hidden": true - } - }, - "outputs": [], - "source": [ - "# Solution\n", - "mkdir -p one/two/three" - ] - }, - { - "cell_type": "markdown", - "id": "24ee949e", - "metadata": {}, - "source": [ - "### Exercise 1.7 — List the absolute path of the current directory" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8258fff7", - "metadata": {}, - "outputs": [], - "source": [ - "# your work here\n", - "pwd" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a6a062b2", - "metadata": { - "jupyter": { - "outputs_hidden": true, - "source_hidden": true - } - }, - "outputs": [], - "source": [ - "# Solution\n", - "pwd" - ] - }, - { - "cell_type": "markdown", - "id": "6d724d3e", - "metadata": {}, - "source": [ - "### Exercise 1.8 — Create a directory using an absolute path" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5f497f7c", - "metadata": {}, - "outputs": [], - "source": [ - "# your work here\n", - "mkdir /tmp/mydir" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1d1d4e27", - "metadata": { - "jupyter": { - "outputs_hidden": true, - "source_hidden": true - } - }, - "outputs": [], - "source": [ - "# Solution\n", - "mkdir /tmp/mydir" - ] - }, - { - "cell_type": "markdown", - "id": "0a4cbe5b", - "metadata": {}, - "source": [ - "### Exercise 1.9 — Display both `.` and `..` directories with `ls -a`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7d962a9f", - "metadata": {}, - "outputs": [], - "source": [ - "# your work here\n", - "ls -a" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "91994de2", - "metadata": { - "jupyter": { - "outputs_hidden": true, - "source_hidden": true - } - }, - "outputs": [], - "source": [ - "# Solution\n", - "ls -a" - ] - }, - { - "cell_type": "markdown", - "id": "e147ff34", - "metadata": {}, - "source": [ - "### Exercise 1.10 — Remove the directory `/tmp/mydir`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "dcae28e3", - "metadata": {}, - "outputs": [], - "source": [ - "# your work here\n", - "rmdir /tmp/mydir" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1a000f14", - "metadata": { - "jupyter": { - "outputs_hidden": true, - "source_hidden": true - } - }, - "outputs": [], - "source": [ - "# Solution\n", - "rmdir /tmp/mydir" - ] - }, - { - "cell_type": "markdown", - "id": "578548f7", - "metadata": {}, - "source": [ - "## Series 2 — File Manipulation" - ] - }, - { - "cell_type": "markdown", - "id": "813140d5", - "metadata": {}, - "source": [ - "### Exercise 2.1 — Create an empty file named `notes.txt`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "08385872", - "metadata": {}, - "outputs": [], - "source": [ - "touch notes.txt" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a474ad37", - "metadata": { - "jupyter": { - "outputs_hidden": true, - "source_hidden": true - } - }, - "outputs": [], - "source": [ - "# Solution\n", - "touch notes.txt" - ] - }, - { - "cell_type": "markdown", - "id": "6e918f3d", - "metadata": {}, - "source": [ - "### Exercise 2.2 — Copy `notes.txt` to `backup.txt`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "faf85985", - "metadata": {}, - "outputs": [], - "source": [ - "cp notes.txt backup.txt" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4d3e54d5", - "metadata": { - "jupyter": { - "outputs_hidden": true, - "source_hidden": true - } - }, - "outputs": [], - "source": [ - "# Solution\n", - "cp notes.txt backup.txt" - ] - }, - { - "cell_type": "markdown", - "id": "2c924f2e", - "metadata": {}, - "source": [ - "### Exercise 2.3 — Rename `backup.txt` to `archive.txt`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2d4adeb4", - "metadata": {}, - "outputs": [], - "source": [ - "mv backup.txt archive.txt" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2c62e70f", - "metadata": { - "jupyter": { - "outputs_hidden": true, - "source_hidden": true - } - }, - "outputs": [], - "source": [ - "# Solution\n", - "mv backup.txt archive.txt" - ] - }, - { - "cell_type": "markdown", - "id": "c9e525a7", - "metadata": {}, - "source": [ - "### Exercise 2.4 — Create 3 files and remove one with `rm`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3ef53a3a", - "metadata": {}, - "outputs": [], - "source": [ - "touch a.txt b.txt c.txt\n", - "rm b.txt" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "55e07074", - "metadata": { - "jupyter": { - "outputs_hidden": true, - "source_hidden": true - } - }, - "outputs": [], - "source": [ - "# Solution\n", - "touch a.txt b.txt c.txt\n", - "rm b.txt" - ] - }, - { - "cell_type": "markdown", - "id": "b5a406b4", - "metadata": {}, - "source": [ - "### Exercise 2.5 — Remove a directory recursively" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2c819a49", - "metadata": {}, - "outputs": [], - "source": [ - "mkdir -p tmpdir/sub\n", - "rm -rf tmpdir" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b958a668", - "metadata": { - "jupyter": { - "outputs_hidden": true, - "source_hidden": true - } - }, - "outputs": [], - "source": [ - "# Solution\n", - "mkdir -p tmpdir/sub\n", - "rm -rf tmpdir" - ] - }, - { - "cell_type": "markdown", - "id": "9aa4996e", - "metadata": {}, - "source": [ - "## Series 3 — Redirections and Pipes" - ] - }, - { - "cell_type": "markdown", - "id": "ada90797", - "metadata": {}, - "source": [ - "### Exercise 3.1 — Save the output of `ls` to a file `list.txt`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "25afa75b", - "metadata": {}, - "outputs": [], - "source": [ - "ls > list.txt" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "80ca4767", - "metadata": { - "jupyter": { - "outputs_hidden": true, - "source_hidden": true - } - }, - "outputs": [], - "source": [ - "# Solution\n", - "ls > list.txt" - ] - }, - { - "cell_type": "markdown", - "id": "61c3bff6", - "metadata": {}, - "source": [ - "### Exercise 3.2 — Append the date to `list.txt`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b7849f15", - "metadata": {}, - "outputs": [], - "source": [ - "date >> list.txt" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "83b08fe6", - "metadata": { - "jupyter": { - "outputs_hidden": true, - "source_hidden": true - } - }, - "outputs": [], - "source": [ - "# Solution\n", - "date >> list.txt" - ] - }, - { - "cell_type": "markdown", - "id": "600edcaa", - "metadata": {}, - "source": [ - "### Exercise 3.3 — Count lines of `list.txt` with a pipe" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "37e859f4", - "metadata": {}, - "outputs": [], - "source": [ - "cat list.txt | wc -l" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d1429a1c", - "metadata": { - "jupyter": { - "outputs_hidden": true, - "source_hidden": true - } - }, - "outputs": [], - "source": [ - "# Solution\n", - "cat list.txt | wc -l" - ] - }, - { - "cell_type": "markdown", - "id": "a901cf34", - "metadata": {}, - "source": [ - "### Exercise 3.4 — Redirect error messages to a file" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f2c1d530", - "metadata": {}, - "outputs": [], - "source": [ - "ls /fakepath 2> errors.txt" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "66c68bc4", - "metadata": { - "jupyter": { - "outputs_hidden": true, - "source_hidden": true - } - }, - "outputs": [], - "source": [ - "# Solution\n", - "ls /fakepath 2> errors.txt" - ] - }, - { - "cell_type": "markdown", - "id": "72e5eca4", - "metadata": {}, - "source": [ - "## Series 4 — Viewing Results" - ] - }, - { - "cell_type": "markdown", - "id": "dd7cbf2e", - "metadata": {}, - "source": [ - "### Exercise 4.1 — Display the first 5 lines of `/etc/passwd`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "195c0f25", - "metadata": {}, - "outputs": [], - "source": [ - "head -5 /etc/passwd" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "72dc0297", - "metadata": { - "jupyter": { - "outputs_hidden": true, - "source_hidden": true - } - }, - "outputs": [], - "source": [ - "# Solution\n", - "head -5 /etc/passwd" - ] - }, - { - "cell_type": "markdown", - "id": "227ebdf8", - "metadata": {}, - "source": [ - "### Exercise 4.2 — Show the last 3 lines of `/etc/passwd`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3a829074", - "metadata": {}, - "outputs": [], - "source": [ - "tail -3 /etc/passwd" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e66f1752", - "metadata": { - "jupyter": { - "outputs_hidden": true, - "source_hidden": true - } - }, - "outputs": [], - "source": [ - "# Solution\n", - "tail -3 /etc/passwd" - ] - }, - { - "cell_type": "markdown", - "id": "826cbb41", - "metadata": {}, - "source": [ - "### Exercise 4.3 — Use `grep` to show lines containing 'root'" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "df9a877b", - "metadata": {}, - "outputs": [], - "source": [ - "grep root /etc/passwd" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5ed43d3d", - "metadata": { - "jupyter": { - "outputs_hidden": true, - "source_hidden": true - } - }, - "outputs": [], - "source": [ - "# Solution\n", - "grep root /etc/passwd" - ] - }, - { - "cell_type": "markdown", - "id": "a6c2f0a8", - "metadata": {}, - "source": [ - "## Series 5 — Process Management" - ] - }, - { - "cell_type": "markdown", - "id": "333ab7c1", - "metadata": {}, - "source": [ - "### Exercise 5.1 — List current processes" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "41dc9dfb", - "metadata": {}, - "outputs": [], - "source": [ - "ps" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c0f28455", - "metadata": { - "jupyter": { - "outputs_hidden": true, - "source_hidden": true - } - }, - "outputs": [], - "source": [ - "# Solution\n", - "ps" - ] - }, - { - "cell_type": "markdown", - "id": "c2d37e8f", - "metadata": {}, - "source": [ - "### Exercise 5.2 — Display dynamic process list with `top`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7931c9aa", - "metadata": {}, - "outputs": [], - "source": [ - "top" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "947570cf", - "metadata": { - "jupyter": { - "outputs_hidden": true, - "source_hidden": true - } - }, - "outputs": [], - "source": [ - "# Solution\n", - "top" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Bash", - "language": "bash", - "name": "bash" - }, - "language_info": { - "name": "bash" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/jupyterhub_volumes/course/unix_exercises_bash.ipynb b/jupyterhub_volumes/course/unix_exercises_bash.ipynb index 7784d09..b67dd48 100644 --- a/jupyterhub_volumes/course/unix_exercises_bash.ipynb +++ b/jupyterhub_volumes/course/unix_exercises_bash.ipynb @@ -4,7 +4,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Unix Essentials \u2014 Bash Practice Notebook\n\n", + "# Unix Essentials — Bash Practice Notebook\n", + "\n", "This notebook contains 50 short exercises grouped in 5 series.\n", "Each exercise has a hidden solution for self-assessment." ] @@ -13,14 +14,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Series 1 \u2013 Path Manipulation\n\nFocus: `pwd`, `cd`, `mkdir`, `.`, `..`, relative and absolute paths." + "## Series 1 – Path Manipulation\n", + "\n", + "Focus: `pwd`, `cd`, `mkdir`, `.`, `..`, relative and absolute paths." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 1.1 \u2013 Show current directory" + "### Exercise 1.1 – Show current directory" ] }, { @@ -37,20 +40,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\npwd" + "# Solution\n", + "pwd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 1.2 \u2013 Create a directory named `work`" + "### Exercise 1.2 – Create a directory named `work`" ] }, { @@ -67,20 +71,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\nmkdir work" + "# Solution\n", + "mkdir work" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 1.3 \u2013 Change to the `work` directory" + "### Exercise 1.3 – Change to the `work` directory" ] }, { @@ -97,20 +102,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\ncd work" + "# Solution\n", + "cd work" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 1.4 \u2013 Create two subdirectories `data` and `logs`" + "### Exercise 1.4 – Create two subdirectories `data` and `logs`" ] }, { @@ -127,20 +133,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\nmkdir data logs" + "# Solution\n", + "mkdir data logs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 1.5 \u2013 Move back to the parent directory" + "### Exercise 1.5 – Move back to the parent directory" ] }, { @@ -157,20 +164,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\ncd .." + "# Solution\n", + "cd .." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 1.6 \u2013 Create nested directories `project/src` in one command" + "### Exercise 1.6 – Create nested directories `project/src` in one command" ] }, { @@ -187,20 +195,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\nmkdir -p project/src" + "# Solution\n", + "mkdir -p project/src" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 1.7 \u2013 Display the absolute path" + "### Exercise 1.7 – Display the absolute path" ] }, { @@ -217,20 +226,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\npwd" + "# Solution\n", + "pwd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 1.8 \u2013 List all including hidden ones" + "### Exercise 1.8 – List all including hidden ones" ] }, { @@ -247,20 +257,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\nls -a" + "# Solution\n", + "ls -a" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 1.9 \u2013 Create directory using absolute path `/tmp/test1`" + "### Exercise 1.9 – Create directory using absolute path `/tmp/test1`" ] }, { @@ -277,20 +288,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\nmkdir /tmp/test1" + "# Solution\n", + "mkdir /tmp/test1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 1.10 \u2013 Remove directory `/tmp/test1`" + "### Exercise 1.10 – Remove directory `/tmp/test1`" ] }, { @@ -307,27 +319,30 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\nrmdir /tmp/test1" + "# Solution\n", + "rmdir /tmp/test1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Series 2 \u2013 File Manipulation\n\nFocus: `rm`, `rm -rf`, `rmdir`, `cp`, `mv`." + "## Series 2 – File Manipulation\n", + "\n", + "Focus: `rm`, `rm -rf`, `rmdir`, `cp`, `mv`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 2.1 \u2013 Create an empty file `a.txt`" + "### Exercise 2.1 – Create an empty file `a.txt`" ] }, { @@ -344,20 +359,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\ntouch a.txt" + "# Solution\n", + "touch a.txt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 2.2 \u2013 Copy `a.txt` to `b.txt`" + "### Exercise 2.2 – Copy `a.txt` to `b.txt`" ] }, { @@ -374,20 +390,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\ncp a.txt b.txt" + "# Solution\n", + "cp a.txt b.txt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 2.3 \u2013 Rename `b.txt` to `c.txt`" + "### Exercise 2.3 – Rename `b.txt` to `c.txt`" ] }, { @@ -404,20 +421,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\nmv b.txt c.txt" + "# Solution\n", + "mv b.txt c.txt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 2.4 \u2013 Move `c.txt` to `/tmp/`" + "### Exercise 2.4 – Move `c.txt` to `/tmp/`" ] }, { @@ -434,20 +452,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\nmv c.txt /tmp/" + "# Solution\n", + "mv c.txt /tmp/" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 2.5 \u2013 Create a folder `tempdir`" + "### Exercise 2.5 – Create a folder `tempdir`" ] }, { @@ -464,20 +483,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\nmkdir tempdir" + "# Solution\n", + "mkdir tempdir" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 2.6 \u2013 Create files `x.txt`, `y.txt` in it" + "### Exercise 2.6 – Create files `x.txt`, `y.txt` in it" ] }, { @@ -494,20 +514,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\ntouch tempdir/x.txt tempdir/y.txt" + "# Solution\n", + "touch tempdir/x.txt tempdir/y.txt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 2.7 \u2013 Remove `y.txt`" + "### Exercise 2.7 – Remove `y.txt`" ] }, { @@ -524,20 +545,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\nrm tempdir/y.txt" + "# Solution\n", + "rm tempdir/y.txt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 2.8 \u2013 Remove non-empty folder `tempdir` recursively" + "### Exercise 2.8 – Remove non-empty folder `tempdir` recursively" ] }, { @@ -554,20 +576,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\nrm -rf tempdir" + "# Solution\n", + "rm -rf tempdir" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 2.9 \u2013 Create and remove empty folder `delete_me`" + "### Exercise 2.9 – Create and remove empty folder `delete_me`" ] }, { @@ -584,20 +607,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\nmkdir delete_me && rmdir delete_me" + "# Solution\n", + "mkdir delete_me && rmdir delete_me" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 2.10 \u2013 Create file with text using echo" + "### Exercise 2.10 – Create file with text using echo" ] }, { @@ -614,27 +638,30 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\necho 'hello world' > greeting.txt" + "# Solution\n", + "echo 'hello world' > greeting.txt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Series 3 \u2013 Redirections and Pipes\n\nFocus: Redirect input/output, combine with pipes." + "## Series 3 – Redirections and Pipes\n", + "\n", + "Focus: Redirect input/output, combine with pipes." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 3.1 \u2013 Save `ls` output to file" + "### Exercise 3.1 – Save `ls` output to file" ] }, { @@ -651,20 +678,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\nls > list.txt" + "# Solution\n", + "ls > list.txt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 3.2 \u2013 Append date to `list.txt`" + "### Exercise 3.2 – Append date to `list.txt`" ] }, { @@ -681,20 +709,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\ndate >> list.txt" + "# Solution\n", + "date >> list.txt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 3.3 \u2013 View first 5 lines of `list.txt`" + "### Exercise 3.3 – View first 5 lines of `list.txt`" ] }, { @@ -711,20 +740,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\nhead -5 list.txt" + "# Solution\n", + "head -5 list.txt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 3.4 \u2013 Count lines using pipe" + "### Exercise 3.4 – Count lines using pipe" ] }, { @@ -741,20 +771,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\ncat list.txt | wc -l" + "# Solution\n", + "cat list.txt | wc -l" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 3.5 \u2013 Redirect errors to `errors.txt`" + "### Exercise 3.5 – Redirect errors to `errors.txt`" ] }, { @@ -771,20 +802,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\nls /fake 2> errors.txt" + "# Solution\n", + "ls /fake 2> errors.txt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 3.6 \u2013 Redirect both output and errors" + "### Exercise 3.6 – Redirect both output and errors" ] }, { @@ -801,20 +833,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\nls /fake > all.txt 2>&1" + "# Solution\n", + "ls /fake > all.txt 2>&1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 3.7 \u2013 Use pipe to sort `list.txt`" + "### Exercise 3.7 – Use pipe to sort `list.txt`" ] }, { @@ -831,20 +864,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\ncat list.txt | sort" + "# Solution\n", + "cat list.txt | sort" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 3.8 \u2013 Combine commands with `| grep`" + "### Exercise 3.8 – Combine commands with `| grep`" ] }, { @@ -861,20 +895,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\nls /etc | grep conf" + "# Solution\n", + "ls /etc | grep conf" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 3.9 \u2013 Use input redirection `<` to count words" + "### Exercise 3.9 – Use input redirection `<` to count words" ] }, { @@ -891,20 +926,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\nwc -w < list.txt" + "# Solution\n", + "wc -w < list.txt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 3.10 \u2013 Chain three commands" + "### Exercise 3.10 – Chain three commands" ] }, { @@ -921,27 +957,30 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\ncat list.txt | sort | uniq" + "# Solution\n", + "cat list.txt | sort | uniq" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Series 4 \u2013 Viewing Results\n\nFocus: `head`, `tail`, `cat`, `grep`, `less`." + "## Series 4 – Viewing Results\n", + "\n", + "Focus: `head`, `tail`, `cat`, `grep`, `less`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 4.1 \u2013 Display first 10 lines of `/etc/passwd`" + "### Exercise 4.1 – Display first 10 lines of `/etc/passwd`" ] }, { @@ -958,20 +997,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\nhead /etc/passwd" + "# Solution\n", + "head /etc/passwd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 4.2 \u2013 Show last 5 lines of `/etc/passwd`" + "### Exercise 4.2 – Show last 5 lines of `/etc/passwd`" ] }, { @@ -988,20 +1028,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\ntail -5 /etc/passwd" + "# Solution\n", + "tail -5 /etc/passwd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 4.3 \u2013 View complete file `/etc/hostname`" + "### Exercise 4.3 – View complete file `/etc/hostname`" ] }, { @@ -1018,20 +1059,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\ncat /etc/hostname" + "# Solution\n", + "cat /etc/hostname" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 4.4 \u2013 Search for 'root' in `/etc/passwd`" + "### Exercise 4.4 – Search for 'root' in `/etc/passwd`" ] }, { @@ -1048,20 +1090,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\ngrep root /etc/passwd" + "# Solution\n", + "grep root /etc/passwd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 4.5 \u2013 Count matches of 'bash' in `/etc/passwd`" + "### Exercise 4.5 – Count matches of 'bash' in `/etc/passwd`" ] }, { @@ -1078,20 +1121,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\ngrep -c bash /etc/passwd" + "# Solution\n", + "grep -c bash /etc/passwd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 4.6 \u2013 Show line numbers with `grep`" + "### Exercise 4.6 – Show line numbers with `grep`" ] }, { @@ -1108,20 +1152,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\ngrep -n bash /etc/passwd" + "# Solution\n", + "grep -n bash /etc/passwd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 4.7 \u2013 Invert match to exclude 'bash'" + "### Exercise 4.7 – Invert match to exclude 'bash'" ] }, { @@ -1138,20 +1183,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\ngrep -v bash /etc/passwd" + "# Solution\n", + "grep -v bash /etc/passwd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 4.8 \u2013 Use `less` to browse `/etc/services`" + "### Exercise 4.8 – Use `tail` to see the 5 last lines of `/etc/services`" ] }, { @@ -1168,20 +1214,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\nless /etc/services" + "# Solution\n", + "tail -5 /etc/services" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 4.9 \u2013 Concatenate multiple small files" + "### Exercise 4.9 – Concatenate multiple small files" ] }, { @@ -1198,20 +1245,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\ncat a.txt greeting.txt > merged.txt" + "# Solution\n", + "cat a.txt greeting.txt > merged.txt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 4.10 \u2013 Show sorted unique words from `list.txt`" + "### Exercise 4.10 – Show sorted unique words from `list.txt`" ] }, { @@ -1228,27 +1276,30 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\ncat list.txt | tr ' ' '\\n' | sort | uniq" + "# Solution\n", + "cat list.txt | tr ' ' '\\n' | sort | uniq" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Series 5 \u2013 Process Management\n\nFocus: `ps`, `kill`, `ctrl-c`, `ctrl-z`, `top`." + "## Series 5 – Process Management\n", + "\n", + "Focus: `ps`, `kill`, `ctrl-c`, `ctrl-z`, `top`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 5.1 \u2013 List processes" + "### Exercise 5.1 – List processes" ] }, { @@ -1265,20 +1316,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\nps" + "# Solution\n", + "ps" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 5.2 \u2013 Show detailed process tree" + "### Exercise 5.2 – Show detailed process tree" ] }, { @@ -1295,20 +1347,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\nps aux" + "# Solution\n", + "ps aux" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 5.3 \u2013 Find your shell PID" + "### Exercise 5.3 – Find your shell PID" ] }, { @@ -1325,20 +1378,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\necho $$" + "# Solution\n", + "echo $$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 5.4 \u2013 Launch sleep in background" + "### Exercise 5.4 – Launch sleep in background" ] }, { @@ -1355,20 +1409,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\nsleep 60 &" + "# Solution\n", + "sleep 60 &" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 5.5 \u2013 List background jobs" + "### Exercise 5.5 – List background jobs" ] }, { @@ -1385,20 +1440,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\njobs" + "# Solution\n", + "jobs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 5.6 \u2013 Bring job to foreground" + "### Exercise 5.6 – Bring job to foreground" ] }, { @@ -1415,20 +1471,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\nfg" + "# Solution\n", + "fg" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 5.7 \u2013 Stop a process by PID" + "### Exercise 5.7 – Stop a process by PID" ] }, { @@ -1445,20 +1502,21 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\nkill " + "# Solution\n", + "kill " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise 5.8 \u2013 Force kill a process" + "### Exercise 5.8 – Force kill a process" ] }, { @@ -1475,73 +1533,14 @@ "execution_count": null, "metadata": { "jupyter": { - "source_hidden": true, - "outputs_hidden": true + "outputs_hidden": true, + "source_hidden": true } }, "outputs": [], "source": [ - "# Solution\nkill -9 " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 5.9 \u2013 Display dynamic processes" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# your work here" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "jupyter": { - "source_hidden": true, - "outputs_hidden": true - } - }, - "outputs": [], - "source": [ - "# Solution\ntop" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercise 5.10 \u2013 Exit `top` with `q` key" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# your work here" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "jupyter": { - "source_hidden": true, - "outputs_hidden": true - } - }, - "outputs": [], - "source": [ - "# Solution\n# press q in top" + "# Solution\n", + "kill -9 " ] } ], @@ -1557,4 +1556,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/jupyterhub_volumes/web/index.html b/jupyterhub_volumes/web/index.html index aed6471..1cf3636 100644 --- a/jupyterhub_volumes/web/index.html +++ b/jupyterhub_volumes/web/index.html @@ -115,6 +115,7 @@